From a1126cdde26a20d4ecb8b35e71bf938fc40b3e78 Mon Sep 17 00:00:00 2001 From: yeahsilver Date: Mon, 18 Jan 2021 16:32:04 +0900 Subject: [PATCH 1/3] Fix location of Line Chart --- .../UserInterfaceState.xcuserstate | Bin 0 -> 35171 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 24 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 14 ++++++++++ .../SwiftUICharts/LineChart/LineView.swift | 10 +++++--- .../LineChart/MagnifierRect.swift | 6 ++--- 5 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 .swiftpm/xcode/package.xcworkspace/xcuserdata/heoyeeun.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 .swiftpm/xcode/xcuserdata/heoyeeun.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 .swiftpm/xcode/xcuserdata/heoyeeun.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/heoyeeun.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/heoyeeun.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..3c35393cb615ac25b19d5ce5f3e1a8efd921e58e GIT binary patch literal 35171 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 literal 0 HcmV?d00001 diff --git a/.swiftpm/xcode/xcuserdata/heoyeeun.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/.swiftpm/xcode/xcuserdata/heoyeeun.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 00000000..bf0e1092 --- /dev/null +++ b/.swiftpm/xcode/xcuserdata/heoyeeun.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/.swiftpm/xcode/xcuserdata/heoyeeun.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/heoyeeun.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..4bd21c21 --- /dev/null +++ b/.swiftpm/xcode/xcuserdata/heoyeeun.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + SwiftUICharts.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Sources/SwiftUICharts/LineChart/LineView.swift b/Sources/SwiftUICharts/LineChart/LineView.swift index e485405a..914398c5 100644 --- a/Sources/SwiftUICharts/LineChart/LineView.swift +++ b/Sources/SwiftUICharts/LineChart/LineView.swift @@ -53,7 +53,7 @@ public struct LineView: View { .font(.callout) .foregroundColor(self.colorScheme == .dark ? self.darkModeStyle.legendTextColor : self.style.legendTextColor) } - }.offset(x: 0, y: 20) + }.offset(x: 0, y: 0) ZStack{ GeometryReader{ reader in Rectangle() @@ -65,7 +65,7 @@ public struct LineView: View { .animation(Animation.easeOut(duration: 1).delay(1)) } Line(data: self.data, - frame: .constant(CGRect(x: 0, y: 0, width: reader.frame(in: .local).width - 30, height: reader.frame(in: .local).height)), + frame: .constant(CGRect(x: 0, y: 0, width: reader.frame(in: .local).width - 30, height: reader.frame(in: .local).height + 30)), touchLocation: self.$indicatorLocation, showIndicator: self.$hideHorizontalLines, minDataValue: .constant(nil), @@ -73,7 +73,7 @@ public struct LineView: View { showBackground: false, gradient: self.style.gradientColor ) - .offset(x: 30, y: -20) + .offset(x: 42.5, y: 0) .onAppear(){ self.showLegend = true } @@ -91,7 +91,7 @@ public struct LineView: View { .gesture(DragGesture() .onChanged({ value in self.dragLocation = value.location - self.indicatorLocation = CGPoint(x: max(value.location.x-30,0), y: 32) + self.indicatorLocation = CGPoint(x: max(value.location.x-40,0), y: 32) self.opacity = 1 self.closestPoint = self.getClosestDataPoint(toPoint: value.location, width: geometry.frame(in: .local).size.width-30, height: 240) self.hideHorizontalLines = true @@ -126,6 +126,8 @@ struct LineView_Previews: PreviewProvider { LineView(data: [282.502, 284.495, 283.51, 285.019, 285.197, 286.118, 288.737, 288.455, 289.391, 287.691, 285.878, 286.46, 286.252, 284.652, 284.129, 284.188], title: "Full chart", style: Styles.lineChartStyleOne) + LineView(data: [60, 55, 50, 50], title: "Full chart", style: Styles.lineChartStyleOne) + } } } diff --git a/Sources/SwiftUICharts/LineChart/MagnifierRect.swift b/Sources/SwiftUICharts/LineChart/MagnifierRect.swift index 4d3fd869..2a8b360c 100644 --- a/Sources/SwiftUICharts/LineChart/MagnifierRect.swift +++ b/Sources/SwiftUICharts/LineChart/MagnifierRect.swift @@ -15,15 +15,15 @@ public struct MagnifierRect: View { ZStack{ Text("\(self.currentNumber, specifier: valueSpecifier)") .font(.system(size: 18, weight: .bold)) - .offset(x: 0, y:-110) + .offset(x: 0, y: -140) .foregroundColor(self.colorScheme == .dark ? Color.white : Color.black) if (self.colorScheme == .dark ){ RoundedRectangle(cornerRadius: 16) .stroke(Color.white, lineWidth: self.colorScheme == .dark ? 2 : 0) - .frame(width: 60, height: 260) + .frame(width: 60, height: 300) }else{ RoundedRectangle(cornerRadius: 16) - .frame(width: 60, height: 280) + .frame(width: 60, height: 320) .foregroundColor(Color.white) .shadow(color: Colors.LegendText, radius: 12, x: 0, y: 6 ) .blendMode(.multiply) From d5b34708ae0ca75166db983f426998474d586292 Mon Sep 17 00:00:00 2001 From: Yeeun Heo <39258902+yeahsilver@users.noreply.github.com> Date: Wed, 15 Jun 2022 14:29:22 -0400 Subject: [PATCH 2/3] =?UTF-8?q?feat:=202.=20Torch=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2-Torch/2_Torch.ipynb | 288 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) create mode 100644 2-Torch/2_Torch.ipynb diff --git a/2-Torch/2_Torch.ipynb b/2-Torch/2_Torch.ipynb new file mode 100644 index 00000000..673b8780 --- /dev/null +++ b/2-Torch/2_Torch.ipynb @@ -0,0 +1,288 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "2-Torch.ipynb", + "provenance": [], + "collapsed_sections": [], + "authorship_tag": "ABX9TyO2++j2Vl9IkiftMUZZamDl" + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# 2. Torch 사용법" + ], + "metadata": { + "id": "d-3QvxIZzXx4" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Torch\n", + ": facebook에서 제공하는 딥러닝 도구로서, numpy와 효율적인 연동을 지원하는 편리한 도구\n", + "\n", + "- pytorch의 기본적인 data structure: tensor\n", + "- tensor: **2차원 이상의 array**이며 matrix, vector의 일반화된 객체이다\n", + " - vector: 1차원 tensor\n", + " - matrix: 2차원 tensor\n", + " - RGB: 3차원 tensor\n", + "\n" + ], + "metadata": { + "id": "HmE9vW-Fzepn" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Numpy\n", + ": 다차원 배열을 쉽게 처리하고 효율적으로 사용할 수 있도록 지원하는 파이썬의 패캐지\n", + "\n", + "- Numpy를 사용하는 이유는 무엇일까?\n", + " - 컴퓨터는 0과 1 밖에 이해할 수 없음. + 데이터를 숫자의 데이터로 볼 수 있음
\n", + " => 컴퓨터가 이해할 수 있도록 데이터를 숫자 형식으로 변환
\n", + " => 효율적으로 배열을 저장하고 조작하기 위해 만들어진 패키지 == Numpy
" + ], + "metadata": { + "id": "WnmdpDg70vr-" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Tensor 생성" + ], + "metadata": { + "id": "3FN5ZZMk1vwC" + } + }, + { + "cell_type": "code", + "source": [ + "import torch" + ], + "metadata": { + "id": "iOym4MpqzWhQ" + }, + "execution_count": 5, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "#### Array의 tensor 생성" + ], + "metadata": { + "id": "BgQo2uag2aR0" + } + }, + { + "cell_type": "code", + "source": [ + "V_data = [1., 2., 3.] # float 형태의 vector 생성\n", + "V = torch.tensor(V_data) # vector를 tensor로 만들기\n", + "print(V)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "I6_-oKSX1uKr", + "outputId": "0ca1592c-fc2b-4394-bfd2-2399616e3346" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([1., 2., 3.])\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Matrix의 tensor 생성" + ], + "metadata": { + "id": "jpEhGvx62d6Q" + } + }, + { + "cell_type": "code", + "source": [ + "M_data = [[1., 2., 3.], [4., 5., 6.]] # flot 형태의 matrix 생성\n", + "M = torch.tensor(M_data) # matrix를 tensor로 만들기 \n", + "print(M)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "341kxeeJ2gXL", + "outputId": "e0fb245a-b082-463a-eafd-10956b23619f" + }, + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([[1., 2., 3.],\n", + " [4., 5., 6.]])\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Tensor 슬라이싱 및 인덱싱" + ], + "metadata": { + "id": "G9nS1VwH3CxG" + } + }, + { + "cell_type": "code", + "source": [ + "print(\"==== 인덱싱 ====\")\n", + "print(\"V = \", V)\n", + "print(\"V[0] =\", V[0])\n", + "print(\"M = \", M)\n", + "print(\"M[0]\", M[0])\n", + "print(\"M[0][0]\", M[0][0])\n", + "print(\"\\n\")\n", + "print(\"==== 슬라이싱 ====\")\n", + "print(\"M[:,0]\", M[:,0])" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XVAcZhiz3IxQ", + "outputId": "32ee23cd-e7b9-4cef-9a34-396c25b2550f" + }, + "execution_count": 22, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "==== 인덱싱 ====\n", + "V = tensor([1., 2., 3.])\n", + "V[0] = tensor(1.)\n", + "M = tensor([[1., 2., 3.],\n", + " [4., 5., 6.]])\n", + "M[0] tensor([1., 2., 3.])\n", + "M[0][0] tensor(1.)\n", + "\n", + "\n", + "==== 슬라이싱 ====\n", + "M[:,0] tensor([1., 4.])\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## 데이터 타입\n", + "tensor의 기본적인 타입: float
\n", + "데이터 타입을 int, double로 바꾸면 datatype이 같이 출력" + ], + "metadata": { + "id": "FFlRalTS4ABW" + } + }, + { + "cell_type": "code", + "source": [ + "x_data = torch.tensor([1., 2., 3.], dtype=torch.double)\n", + "print(x_data)\n", + "\n", + "y_data = torch.tensor([1., 2., 3.], dtype=torch.int)\n", + "print(y_data)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9Aa5JJe44CPZ", + "outputId": "d7799a3f-f202-42a4-d351-c32e218eabdf" + }, + "execution_count": 26, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([1., 2., 3.], dtype=torch.float64)\n", + "tensor([1, 2, 3], dtype=torch.int32)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## 가우시안 N(0, 1) 생성\n", + "tensor를 0 ~ 1 사이의 값으로 랜덤하게 생성한다
\n", + "가우시안 분포인 만큼 평균과 표준편차를 이용해 분포를 변경할 수 있다." + ], + "metadata": { + "id": "JNEJIkOj4plp" + } + }, + { + "cell_type": "code", + "source": [ + "x = torch.randn((3, 4, 5)) # 4행 5열의 matrix를 3개 생성\n", + "print(x)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "keBblJO641rX", + "outputId": "cbdbd76f-d813-4973-dce0-b36da4d82ec5" + }, + "execution_count": 27, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tensor([[[ 1.2021, -0.9456, -0.8249, -0.9530, 1.6120],\n", + " [-0.2300, 0.6870, -0.3944, 0.7063, 1.2062],\n", + " [ 0.6949, -0.1663, 2.2758, -0.3043, -1.2322],\n", + " [ 0.1712, 0.4423, 0.9707, -0.2349, 1.2608]],\n", + "\n", + " [[-1.3586, 0.4789, -0.0512, -0.4862, -1.3730],\n", + " [ 0.0304, -0.1692, -1.7513, -0.7019, 0.1418],\n", + " [-0.9333, -1.1728, 1.0924, -1.3813, 1.8609],\n", + " [-0.0064, 0.4476, 0.4433, 0.2641, 0.6308]],\n", + "\n", + " [[ 0.3572, -0.1435, 0.6831, -0.2478, -0.1579],\n", + " [-0.5053, 0.1056, 0.1940, -0.2029, -0.5433],\n", + " [-1.0774, -1.3988, 0.3739, -1.4813, 0.0348],\n", + " [ 0.4219, -0.3261, 1.7257, -1.4565, 0.8948]]])\n" + ] + } + ] + } + ] +} \ No newline at end of file From 192eba777a89bc3746914f2f9a385631c153dd7f Mon Sep 17 00:00:00 2001 From: Yeeun Heo <39258902+yeahsilver@users.noreply.github.com> Date: Wed, 15 Jun 2022 14:30:02 -0400 Subject: [PATCH 3/3] Delete 2_Torch.ipynb --- 2-Torch/2_Torch.ipynb | 288 ------------------------------------------ 1 file changed, 288 deletions(-) delete mode 100644 2-Torch/2_Torch.ipynb diff --git a/2-Torch/2_Torch.ipynb b/2-Torch/2_Torch.ipynb deleted file mode 100644 index 673b8780..00000000 --- a/2-Torch/2_Torch.ipynb +++ /dev/null @@ -1,288 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "2-Torch.ipynb", - "provenance": [], - "collapsed_sections": [], - "authorship_tag": "ABX9TyO2++j2Vl9IkiftMUZZamDl" - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "# 2. Torch 사용법" - ], - "metadata": { - "id": "d-3QvxIZzXx4" - } - }, - { - "cell_type": "markdown", - "source": [ - "### Torch\n", - ": facebook에서 제공하는 딥러닝 도구로서, numpy와 효율적인 연동을 지원하는 편리한 도구\n", - "\n", - "- pytorch의 기본적인 data structure: tensor\n", - "- tensor: **2차원 이상의 array**이며 matrix, vector의 일반화된 객체이다\n", - " - vector: 1차원 tensor\n", - " - matrix: 2차원 tensor\n", - " - RGB: 3차원 tensor\n", - "\n" - ], - "metadata": { - "id": "HmE9vW-Fzepn" - } - }, - { - "cell_type": "markdown", - "source": [ - "### Numpy\n", - ": 다차원 배열을 쉽게 처리하고 효율적으로 사용할 수 있도록 지원하는 파이썬의 패캐지\n", - "\n", - "- Numpy를 사용하는 이유는 무엇일까?\n", - " - 컴퓨터는 0과 1 밖에 이해할 수 없음. + 데이터를 숫자의 데이터로 볼 수 있음
\n", - " => 컴퓨터가 이해할 수 있도록 데이터를 숫자 형식으로 변환
\n", - " => 효율적으로 배열을 저장하고 조작하기 위해 만들어진 패키지 == Numpy
" - ], - "metadata": { - "id": "WnmdpDg70vr-" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Tensor 생성" - ], - "metadata": { - "id": "3FN5ZZMk1vwC" - } - }, - { - "cell_type": "code", - "source": [ - "import torch" - ], - "metadata": { - "id": "iOym4MpqzWhQ" - }, - "execution_count": 5, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "#### Array의 tensor 생성" - ], - "metadata": { - "id": "BgQo2uag2aR0" - } - }, - { - "cell_type": "code", - "source": [ - "V_data = [1., 2., 3.] # float 형태의 vector 생성\n", - "V = torch.tensor(V_data) # vector를 tensor로 만들기\n", - "print(V)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "I6_-oKSX1uKr", - "outputId": "0ca1592c-fc2b-4394-bfd2-2399616e3346" - }, - "execution_count": 6, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "tensor([1., 2., 3.])\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Matrix의 tensor 생성" - ], - "metadata": { - "id": "jpEhGvx62d6Q" - } - }, - { - "cell_type": "code", - "source": [ - "M_data = [[1., 2., 3.], [4., 5., 6.]] # flot 형태의 matrix 생성\n", - "M = torch.tensor(M_data) # matrix를 tensor로 만들기 \n", - "print(M)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "341kxeeJ2gXL", - "outputId": "e0fb245a-b082-463a-eafd-10956b23619f" - }, - "execution_count": 7, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "tensor([[1., 2., 3.],\n", - " [4., 5., 6.]])\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Tensor 슬라이싱 및 인덱싱" - ], - "metadata": { - "id": "G9nS1VwH3CxG" - } - }, - { - "cell_type": "code", - "source": [ - "print(\"==== 인덱싱 ====\")\n", - "print(\"V = \", V)\n", - "print(\"V[0] =\", V[0])\n", - "print(\"M = \", M)\n", - "print(\"M[0]\", M[0])\n", - "print(\"M[0][0]\", M[0][0])\n", - "print(\"\\n\")\n", - "print(\"==== 슬라이싱 ====\")\n", - "print(\"M[:,0]\", M[:,0])" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "XVAcZhiz3IxQ", - "outputId": "32ee23cd-e7b9-4cef-9a34-396c25b2550f" - }, - "execution_count": 22, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "==== 인덱싱 ====\n", - "V = tensor([1., 2., 3.])\n", - "V[0] = tensor(1.)\n", - "M = tensor([[1., 2., 3.],\n", - " [4., 5., 6.]])\n", - "M[0] tensor([1., 2., 3.])\n", - "M[0][0] tensor(1.)\n", - "\n", - "\n", - "==== 슬라이싱 ====\n", - "M[:,0] tensor([1., 4.])\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## 데이터 타입\n", - "tensor의 기본적인 타입: float
\n", - "데이터 타입을 int, double로 바꾸면 datatype이 같이 출력" - ], - "metadata": { - "id": "FFlRalTS4ABW" - } - }, - { - "cell_type": "code", - "source": [ - "x_data = torch.tensor([1., 2., 3.], dtype=torch.double)\n", - "print(x_data)\n", - "\n", - "y_data = torch.tensor([1., 2., 3.], dtype=torch.int)\n", - "print(y_data)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "9Aa5JJe44CPZ", - "outputId": "d7799a3f-f202-42a4-d351-c32e218eabdf" - }, - "execution_count": 26, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "tensor([1., 2., 3.], dtype=torch.float64)\n", - "tensor([1, 2, 3], dtype=torch.int32)\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## 가우시안 N(0, 1) 생성\n", - "tensor를 0 ~ 1 사이의 값으로 랜덤하게 생성한다
\n", - "가우시안 분포인 만큼 평균과 표준편차를 이용해 분포를 변경할 수 있다." - ], - "metadata": { - "id": "JNEJIkOj4plp" - } - }, - { - "cell_type": "code", - "source": [ - "x = torch.randn((3, 4, 5)) # 4행 5열의 matrix를 3개 생성\n", - "print(x)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "keBblJO641rX", - "outputId": "cbdbd76f-d813-4973-dce0-b36da4d82ec5" - }, - "execution_count": 27, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "tensor([[[ 1.2021, -0.9456, -0.8249, -0.9530, 1.6120],\n", - " [-0.2300, 0.6870, -0.3944, 0.7063, 1.2062],\n", - " [ 0.6949, -0.1663, 2.2758, -0.3043, -1.2322],\n", - " [ 0.1712, 0.4423, 0.9707, -0.2349, 1.2608]],\n", - "\n", - " [[-1.3586, 0.4789, -0.0512, -0.4862, -1.3730],\n", - " [ 0.0304, -0.1692, -1.7513, -0.7019, 0.1418],\n", - " [-0.9333, -1.1728, 1.0924, -1.3813, 1.8609],\n", - " [-0.0064, 0.4476, 0.4433, 0.2641, 0.6308]],\n", - "\n", - " [[ 0.3572, -0.1435, 0.6831, -0.2478, -0.1579],\n", - " [-0.5053, 0.1056, 0.1940, -0.2029, -0.5433],\n", - " [-1.0774, -1.3988, 0.3739, -1.4813, 0.0348],\n", - " [ 0.4219, -0.3261, 1.7257, -1.4565, 0.8948]]])\n" - ] - } - ] - } - ] -} \ No newline at end of file