diff --git a/Prj-iOS/Resource/README.md b/Prj-iOS/Resource/README.md
old mode 100644
new mode 100755
diff --git a/Prj-iOS/lpr/.gitignore b/Prj-iOS/lpr/.gitignore
new file mode 100755
index 0000000..ec9e31b
--- /dev/null
+++ b/Prj-iOS/lpr/.gitignore
@@ -0,0 +1,3 @@
+.DS_Store
+Pods/
+.clang-format
diff --git a/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.44 PM.png b/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.44 PM.png
new file mode 100755
index 0000000..4f5befc
Binary files /dev/null and b/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.44 PM.png differ
diff --git a/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.53 PM.png b/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.53 PM.png
new file mode 100755
index 0000000..c6028ea
Binary files /dev/null and b/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.53 PM.png differ
diff --git a/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.44.04 PM.png b/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.44.04 PM.png
new file mode 100755
index 0000000..b3fa038
Binary files /dev/null and b/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.44.04 PM.png differ
diff --git a/Prj-iOS/lpr/Podfile b/Prj-iOS/lpr/Podfile
new file mode 100755
index 0000000..00459e4
--- /dev/null
+++ b/Prj-iOS/lpr/Podfile
@@ -0,0 +1,8 @@
+platform :ios, '10.1'
+
+target "lpr" do
+
+pod 'OpenCV', '~> 3.4.2'
+pod 'Masonry'
+
+end
diff --git a/Prj-iOS/lpr/Podfile.lock b/Prj-iOS/lpr/Podfile.lock
new file mode 100755
index 0000000..e4511f2
--- /dev/null
+++ b/Prj-iOS/lpr/Podfile.lock
@@ -0,0 +1,20 @@
+PODS:
+ - Masonry (1.1.0)
+ - OpenCV (3.4.2)
+
+DEPENDENCIES:
+ - Masonry
+ - OpenCV (~> 3.4.2)
+
+SPEC REPOS:
+ https://github.com/cocoapods/specs.git:
+ - Masonry
+ - OpenCV
+
+SPEC CHECKSUMS:
+ Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
+ OpenCV: 452909747854c92e0f59670961ed5131f5286cb5
+
+PODFILE CHECKSUM: 94db02cda76a5ac6371a03e6e2ca4e9035fc0da6
+
+COCOAPODS: 1.5.3
diff --git a/Prj-iOS/lpr/README.md b/Prj-iOS/lpr/README.md
new file mode 100755
index 0000000..404c617
--- /dev/null
+++ b/Prj-iOS/lpr/README.md
@@ -0,0 +1,4 @@
+
+Depency Library:
+- Masonry, 1.1.0
+- OpenCV, 3.4.2
diff --git a/Prj-iOS/lpr/Resource/CharacterRecognization.caffemodel b/Prj-iOS/lpr/Resource/CharacterRecognization.caffemodel
new file mode 100755
index 0000000..d424408
Binary files /dev/null and b/Prj-iOS/lpr/Resource/CharacterRecognization.caffemodel differ
diff --git a/Prj-iOS/lpr/Resource/CharacterRecognization.prototxt b/Prj-iOS/lpr/Resource/CharacterRecognization.prototxt
new file mode 100755
index 0000000..91aa29e
--- /dev/null
+++ b/Prj-iOS/lpr/Resource/CharacterRecognization.prototxt
@@ -0,0 +1,123 @@
+input: "data"
+input_dim: 1
+input_dim: 1
+input_dim: 30
+input_dim: 14
+layer {
+ name: "conv2d_1"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv2d_1"
+ convolution_param {
+ num_output: 32
+ bias_term: true
+ pad: 0
+ kernel_size: 3
+ stride: 1
+ }
+}
+layer {
+ name: "activation_1"
+ type: "ReLU"
+ bottom: "conv2d_1"
+ top: "activation_1"
+}
+layer {
+ name: "max_pooling2d_1"
+ type: "Pooling"
+ bottom: "activation_1"
+ top: "max_pooling2d_1"
+ pooling_param {
+ pool: MAX
+ kernel_size: 2
+ stride: 2
+ pad: 0
+ }
+}
+layer {
+ name: "conv2d_2"
+ type: "Convolution"
+ bottom: "max_pooling2d_1"
+ top: "conv2d_2"
+ convolution_param {
+ num_output: 64
+ bias_term: true
+ pad: 0
+ kernel_size: 3
+ stride: 1
+ }
+}
+layer {
+ name: "activation_2"
+ type: "ReLU"
+ bottom: "conv2d_2"
+ top: "activation_2"
+}
+layer {
+ name: "max_pooling2d_2"
+ type: "Pooling"
+ bottom: "activation_2"
+ top: "max_pooling2d_2"
+ pooling_param {
+ pool: MAX
+ kernel_size: 2
+ stride: 2
+ pad: 0
+ }
+}
+layer {
+ name: "conv2d_3"
+ type: "Convolution"
+ bottom: "max_pooling2d_2"
+ top: "conv2d_3"
+ convolution_param {
+ num_output: 128
+ bias_term: true
+ pad: 0
+ kernel_size: 2
+ stride: 1
+ }
+}
+layer {
+ name: "activation_3"
+ type: "ReLU"
+ bottom: "conv2d_3"
+ top: "activation_3"
+}
+layer {
+ name: "flatten_1"
+ type: "Flatten"
+ bottom: "activation_3"
+ top: "flatten_1"
+}
+layer {
+ name: "dense_1"
+ type: "InnerProduct"
+ bottom: "flatten_1"
+ top: "dense_1"
+ inner_product_param {
+ num_output: 256
+ }
+}
+layer {
+ name: "relu2"
+ type: "ReLU"
+ bottom: "dense_1"
+ top: "relu2"
+}
+layer {
+ name: "dense2"
+ type: "InnerProduct"
+ bottom: "relu2"
+ top: "dense2"
+ inner_product_param {
+ num_output: 65
+ }
+}
+
+layer {
+ name: "prob"
+ type: "Softmax"
+ bottom: "dense2"
+ top: "prob"
+}
\ No newline at end of file
diff --git a/Prj-iOS/lpr/Resource/HorizonalFinemapping.caffemodel b/Prj-iOS/lpr/Resource/HorizonalFinemapping.caffemodel
new file mode 100755
index 0000000..1af5863
Binary files /dev/null and b/Prj-iOS/lpr/Resource/HorizonalFinemapping.caffemodel differ
diff --git a/Prj-iOS/lpr/Resource/HorizonalFinemapping.prototxt b/Prj-iOS/lpr/Resource/HorizonalFinemapping.prototxt
new file mode 100755
index 0000000..21726dd
--- /dev/null
+++ b/Prj-iOS/lpr/Resource/HorizonalFinemapping.prototxt
@@ -0,0 +1,95 @@
+input: "data"
+input_dim: 1
+input_dim: 3
+input_dim: 16
+input_dim: 66
+layer {
+ name: "conv1"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv1"
+ convolution_param {
+ num_output: 10
+ bias_term: true
+ pad: 0
+ kernel_size: 3
+ stride: 1
+ }
+}
+layer {
+ name: "relu1"
+ type: "ReLU"
+ bottom: "conv1"
+ top: "conv1"
+}
+layer {
+ name: "max_pooling2d_3"
+ type: "Pooling"
+ bottom: "conv1"
+ top: "max_pooling2d_3"
+ pooling_param {
+ pool: MAX
+ kernel_size: 2
+ stride: 2
+ pad: 0
+ }
+}
+layer {
+ name: "conv2"
+ type: "Convolution"
+ bottom: "max_pooling2d_3"
+ top: "conv2"
+ convolution_param {
+ num_output: 16
+ bias_term: true
+ pad: 0
+ kernel_size: 3
+ stride: 1
+ }
+}
+layer {
+ name: "relu2"
+ type: "ReLU"
+ bottom: "conv2"
+ top: "conv2"
+}
+layer {
+ name: "conv3"
+ type: "Convolution"
+ bottom: "conv2"
+ top: "conv3"
+ convolution_param {
+ num_output: 32
+ bias_term: true
+ pad: 0
+ kernel_size: 3
+ stride: 1
+ }
+}
+layer {
+ name: "relu3"
+ type: "ReLU"
+ bottom: "conv3"
+ top: "conv3"
+}
+layer {
+ name: "flatten_2"
+ type: "Flatten"
+ bottom: "conv3"
+ top: "flatten_2"
+}
+layer {
+ name: "dense"
+ type: "InnerProduct"
+ bottom: "flatten_2"
+ top: "dense"
+ inner_product_param {
+ num_output: 2
+ }
+}
+layer {
+ name: "relu4"
+ type: "ReLU"
+ bottom: "dense"
+ top: "dense"
+}
diff --git a/Prj-iOS/lpr/Resource/SegmenationFree-Inception.caffemodel b/Prj-iOS/lpr/Resource/SegmenationFree-Inception.caffemodel
new file mode 100755
index 0000000..311ee17
Binary files /dev/null and b/Prj-iOS/lpr/Resource/SegmenationFree-Inception.caffemodel differ
diff --git a/Prj-iOS/lpr/Resource/SegmenationFree-Inception.prototxt b/Prj-iOS/lpr/Resource/SegmenationFree-Inception.prototxt
new file mode 100755
index 0000000..8419763
--- /dev/null
+++ b/Prj-iOS/lpr/Resource/SegmenationFree-Inception.prototxt
@@ -0,0 +1,454 @@
+input: "data"
+input_dim: 1
+input_dim: 3
+input_dim: 160
+input_dim: 40
+layer {
+ name: "conv0"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv0"
+ convolution_param {
+ num_output: 32
+ bias_term: true
+ pad_h: 1
+ pad_w: 1
+ kernel_h: 3
+ kernel_w: 3
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "bn0"
+ type: "BatchNorm"
+ bottom: "conv0"
+ top: "bn0"
+ batch_norm_param {
+ moving_average_fraction: 0.99
+ eps: 0.001
+ }
+}
+layer {
+ name: "bn0_scale"
+ type: "Scale"
+ bottom: "bn0"
+ top: "bn0"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu0"
+ type: "ReLU"
+ bottom: "bn0"
+ top: "bn0"
+}
+layer {
+ name: "pool0"
+ type: "Pooling"
+ bottom: "bn0"
+ top: "pool0"
+ pooling_param {
+ pool: MAX
+ kernel_h: 2
+ kernel_w: 2
+ stride_h: 2
+ stride_w: 2
+ pad_h: 0
+ pad_w: 0
+ }
+}
+layer {
+ name: "conv1"
+ type: "Convolution"
+ bottom: "pool0"
+ top: "conv1"
+ convolution_param {
+ num_output: 64
+ bias_term: true
+ pad_h: 1
+ pad_w: 1
+ kernel_h: 3
+ kernel_w: 3
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "bn1"
+ type: "BatchNorm"
+ bottom: "conv1"
+ top: "bn1"
+ batch_norm_param {
+ moving_average_fraction: 0.99
+ eps: 0.001
+ }
+}
+layer {
+ name: "bn1_scale"
+ type: "Scale"
+ bottom: "bn1"
+ top: "bn1"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu1"
+ type: "ReLU"
+ bottom: "bn1"
+ top: "bn1"
+}
+layer {
+ name: "pool1"
+ type: "Pooling"
+ bottom: "bn1"
+ top: "pool1"
+ pooling_param {
+ pool: MAX
+ kernel_h: 2
+ kernel_w: 2
+ stride_h: 2
+ stride_w: 2
+ pad_h: 0
+ pad_w: 0
+ }
+}
+layer {
+ name: "conv2"
+ type: "Convolution"
+ bottom: "pool1"
+ top: "conv2"
+ convolution_param {
+ num_output: 128
+ bias_term: true
+ pad_h: 1
+ pad_w: 1
+ kernel_h: 3
+ kernel_w: 3
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "bn2"
+ type: "BatchNorm"
+ bottom: "conv2"
+ top: "bn2"
+ batch_norm_param {
+ moving_average_fraction: 0.99
+ eps: 0.001
+ }
+}
+layer {
+ name: "bn2_scale"
+ type: "Scale"
+ bottom: "bn2"
+ top: "bn2"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu2"
+ type: "ReLU"
+ bottom: "bn2"
+ top: "bn2"
+}
+layer {
+ name: "pool2"
+ type: "Pooling"
+ bottom: "bn2"
+ top: "pool2"
+ pooling_param {
+ pool: MAX
+ kernel_h: 2
+ kernel_w: 2
+ stride_h: 2
+ stride_w: 2
+ pad_h: 0
+ pad_w: 0
+ }
+}
+layer {
+ name: "conv2d_1"
+ type: "Convolution"
+ bottom: "pool2"
+ top: "conv2d_1"
+ convolution_param {
+ num_output: 256
+ bias_term: true
+ pad_h: 0
+ pad_w: 0
+ kernel_h: 1
+ kernel_w: 5
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "batch_normalization_1"
+ type: "BatchNorm"
+ bottom: "conv2d_1"
+ top: "batch_normalization_1"
+ batch_norm_param {
+ moving_average_fraction: 0.99
+ eps: 0.001
+ }
+}
+layer {
+ name: "batch_normalization_1_scale"
+ type: "Scale"
+ bottom: "batch_normalization_1"
+ top: "batch_normalization_1"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "activation_1"
+ type: "ReLU"
+ bottom: "batch_normalization_1"
+ top: "batch_normalization_1"
+}
+layer {
+ name: "conv2d_2"
+ type: "Convolution"
+ bottom: "batch_normalization_1"
+ top: "conv2d_2"
+ convolution_param {
+ num_output: 256
+ bias_term: true
+ pad_h: 3
+ pad_w: 0
+ kernel_h: 7
+ kernel_w: 1
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "conv2d_3"
+ type: "Convolution"
+ bottom: "batch_normalization_1"
+ top: "conv2d_3"
+ convolution_param {
+ num_output: 256
+ bias_term: true
+ pad_h: 2
+ pad_w: 0
+ kernel_h: 5
+ kernel_w: 1
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "conv2d_4"
+ type: "Convolution"
+ bottom: "batch_normalization_1"
+ top: "conv2d_4"
+ convolution_param {
+ num_output: 256
+ bias_term: true
+ pad_h: 1
+ pad_w: 0
+ kernel_h: 3
+ kernel_w: 1
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "conv2d_5"
+ type: "Convolution"
+ bottom: "batch_normalization_1"
+ top: "conv2d_5"
+ convolution_param {
+ num_output: 256
+ bias_term: true
+ pad_h: 0
+ pad_w: 0
+ kernel_h: 1
+ kernel_w: 1
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "batch_normalization_2"
+ type: "BatchNorm"
+ bottom: "conv2d_2"
+ top: "batch_normalization_2"
+ batch_norm_param {
+ moving_average_fraction: 0.99
+ eps: 0.001
+ }
+}
+layer {
+ name: "batch_normalization_2_scale"
+ type: "Scale"
+ bottom: "batch_normalization_2"
+ top: "batch_normalization_2"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "batch_normalization_3"
+ type: "BatchNorm"
+ bottom: "conv2d_3"
+ top: "batch_normalization_3"
+ batch_norm_param {
+ moving_average_fraction: 0.99
+ eps: 0.001
+ }
+}
+layer {
+ name: "batch_normalization_3_scale"
+ type: "Scale"
+ bottom: "batch_normalization_3"
+ top: "batch_normalization_3"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "batch_normalization_4"
+ type: "BatchNorm"
+ bottom: "conv2d_4"
+ top: "batch_normalization_4"
+ batch_norm_param {
+ moving_average_fraction: 0.99
+ eps: 0.001
+ }
+}
+layer {
+ name: "batch_normalization_4_scale"
+ type: "Scale"
+ bottom: "batch_normalization_4"
+ top: "batch_normalization_4"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "batch_normalization_5"
+ type: "BatchNorm"
+ bottom: "conv2d_5"
+ top: "batch_normalization_5"
+ batch_norm_param {
+ moving_average_fraction: 0.99
+ eps: 0.001
+ }
+}
+layer {
+ name: "batch_normalization_5_scale"
+ type: "Scale"
+ bottom: "batch_normalization_5"
+ top: "batch_normalization_5"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "activation_2"
+ type: "ReLU"
+ bottom: "batch_normalization_2"
+ top: "batch_normalization_2"
+}
+layer {
+ name: "activation_3"
+ type: "ReLU"
+ bottom: "batch_normalization_3"
+ top: "batch_normalization_3"
+}
+layer {
+ name: "activation_4"
+ type: "ReLU"
+ bottom: "batch_normalization_4"
+ top: "batch_normalization_4"
+}
+layer {
+ name: "activation_5"
+ type: "ReLU"
+ bottom: "batch_normalization_5"
+ top: "batch_normalization_5"
+}
+layer {
+ name: "concatenate_1"
+ type: "Concat"
+ bottom: "batch_normalization_2"
+ bottom: "batch_normalization_3"
+ bottom: "batch_normalization_4"
+ bottom: "batch_normalization_5"
+ top: "concatenate_1"
+ concat_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv_1024_11"
+ type: "Convolution"
+ bottom: "concatenate_1"
+ top: "conv_1024_11"
+ convolution_param {
+ num_output: 1024
+ bias_term: true
+ pad_h: 0
+ pad_w: 0
+ kernel_h: 1
+ kernel_w: 1
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "batch_normalization_6"
+ type: "BatchNorm"
+ bottom: "conv_1024_11"
+ top: "batch_normalization_6"
+ batch_norm_param {
+ moving_average_fraction: 0.99
+ eps: 0.001
+ }
+}
+layer {
+ name: "batch_normalization_6_scale"
+ type: "Scale"
+ bottom: "batch_normalization_6"
+ top: "batch_normalization_6"
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "activation_6"
+ type: "ReLU"
+ bottom: "batch_normalization_6"
+ top: "batch_normalization_6"
+}
+layer {
+ name: "conv_class_11"
+ type: "Convolution"
+ bottom: "batch_normalization_6"
+ top: "conv_class_11"
+ convolution_param {
+ num_output: 84
+ bias_term: true
+ pad_h: 0
+ pad_w: 0
+ kernel_h: 1
+ kernel_w: 1
+ stride_h: 1
+ stride_w: 1
+ }
+}
+layer {
+ name: "prob"
+ type: "Softmax"
+ bottom: "conv_class_11"
+ top: "prob"
+}
+
diff --git a/Prj-iOS/lpr/Resource/Segmentation.caffemodel b/Prj-iOS/lpr/Resource/Segmentation.caffemodel
new file mode 100755
index 0000000..208269d
Binary files /dev/null and b/Prj-iOS/lpr/Resource/Segmentation.caffemodel differ
diff --git a/Prj-iOS/lpr/Resource/Segmentation.prototxt b/Prj-iOS/lpr/Resource/Segmentation.prototxt
new file mode 100755
index 0000000..45c6829
--- /dev/null
+++ b/Prj-iOS/lpr/Resource/Segmentation.prototxt
@@ -0,0 +1,114 @@
+input: "data"
+input_dim: 1
+input_dim: 1
+input_dim: 22
+input_dim: 22
+layer {
+ name: "conv2d_12"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv2d_12"
+ convolution_param {
+ num_output: 16
+ bias_term: true
+ pad: 0
+ kernel_size: 3
+ stride: 1
+ }
+}
+layer {
+ name: "activation_18"
+ type: "ReLU"
+ bottom: "conv2d_12"
+ top: "activation_18"
+}
+layer {
+ name: "max_pooling2d_10"
+ type: "Pooling"
+ bottom: "activation_18"
+ top: "max_pooling2d_10"
+ pooling_param {
+ pool: MAX
+ kernel_size: 2
+ stride: 2
+ pad: 0
+ }
+}
+layer {
+ name: "conv2d_13"
+ type: "Convolution"
+ bottom: "max_pooling2d_10"
+ top: "conv2d_13"
+ convolution_param {
+ num_output: 16
+ bias_term: true
+ pad: 0
+ kernel_size: 3
+ stride: 1
+ }
+}
+layer {
+ name: "activation_19"
+ type: "ReLU"
+ bottom: "conv2d_13"
+ top: "activation_19"
+}
+layer {
+ name: "max_pooling2d_11"
+ type: "Pooling"
+ bottom: "activation_19"
+ top: "max_pooling2d_11"
+ pooling_param {
+ pool: MAX
+ kernel_size: 2
+ stride: 2
+ pad: 0
+ }
+}
+layer {
+ name: "flatten_6"
+ type: "Flatten"
+ bottom: "max_pooling2d_11"
+ top: "flatten_6"
+}
+layer {
+ name: "dense_9"
+ type: "InnerProduct"
+ bottom: "flatten_6"
+ top: "dense_9"
+ inner_product_param {
+ num_output: 256
+ }
+}
+layer {
+ name: "dropout_9"
+ type: "Dropout"
+ bottom: "dense_9"
+ top: "dropout_9"
+ dropout_param {
+ dropout_ratio: 0.5
+ }
+}
+layer {
+ name: "activation_20"
+ type: "ReLU"
+ bottom: "dropout_9"
+ top: "activation_20"
+}
+layer {
+ name: "dense_10"
+ type: "InnerProduct"
+ bottom: "activation_20"
+ top: "dense_10"
+ inner_product_param {
+ num_output: 3
+ }
+}
+
+
+ layer {
+ name: "prob"
+ type: "Softmax"
+ bottom: "dense_10"
+ top: "prob"
+}
\ No newline at end of file
diff --git a/Prj-iOS/lpr/Resource/cascade.xml b/Prj-iOS/lpr/Resource/cascade.xml
new file mode 100755
index 0000000..277775b
--- /dev/null
+++ b/Prj-iOS/lpr/Resource/cascade.xml
@@ -0,0 +1,12117 @@
+
+
+
+ BOOST
+ HAAR
+ 13
+ 51
+
+ GAB
+ 9.9900001287460327e-001
+ 5.0000000000000000e-001
+ 9.4999999999999996e-001
+ 1
+ 100
+
+ 0
+ 1
+ ALL
+ 20
+
+
+ <_>
+ 8
+ -1.9158077239990234e+000
+
+ <_>
+
+ 0 -1 344 -8.1478752195835114e-002
+
+ 6.2639594078063965e-001 -8.1564724445343018e-001
+ <_>
+
+ 0 -1 701 -1.2957378290593624e-002
+
+ 7.7114331722259521e-001 -4.9504086375236511e-001
+ <_>
+
+ 0 -1 687 -9.2470366507768631e-003
+
+ 8.1202191114425659e-001 -2.8070560097694397e-001
+ <_>
+
+ 0 -1 614 1.2374955229461193e-002
+
+ -2.5367051362991333e-001 7.3795551061630249e-001
+ <_>
+
+ 0 -1 299 -4.7858944162726402e-003
+
+ 7.1150565147399902e-001 -3.0462509393692017e-001
+ <_>
+
+ 0 -1 297 3.8920845836400986e-003
+
+ -2.8375166654586792e-001 7.3174893856048584e-001
+ <_>
+
+ 0 -1 814 -8.8258963078260422e-003
+
+ 7.5333666801452637e-001 -1.9880458712577820e-001
+ <_>
+
+ 0 -1 845 -6.7375516518950462e-003
+
+ 7.5299704074859619e-001 -2.3570337891578674e-001
+
+ <_>
+ 12
+ -2.2599112987518311e+000
+
+ <_>
+
+ 0 -1 577 -1.4449171721935272e-002
+
+ 5.5890566110610962e-001 -7.6307392120361328e-001
+ <_>
+
+ 0 -1 364 -3.8289055228233337e-002
+
+ 5.1702296733856201e-001 -5.7946079969406128e-001
+ <_>
+
+ 0 -1 124 -1.4895259402692318e-002
+
+ 6.1277741193771362e-001 -3.2827928662300110e-001
+ <_>
+
+ 0 -1 579 8.3044255152344704e-003
+
+ -3.3253005146980286e-001 7.2171914577484131e-001
+ <_>
+
+ 0 -1 314 6.0594235546886921e-003
+
+ -3.2760250568389893e-001 4.9508789181709290e-001
+ <_>
+
+ 0 -1 699 -6.8011749535799026e-003
+
+ 6.6238498687744141e-001 -2.4112002551555634e-001
+ <_>
+
+ 0 -1 295 -1.1183910071849823e-002
+
+ 7.1757602691650391e-001 -2.0989039540290833e-001
+ <_>
+
+ 0 -1 767 1.3139605522155762e-002
+
+ -1.8845251202583313e-001 6.7252415418624878e-001
+ <_>
+
+ 0 -1 689 -6.1739999800920486e-003
+
+ 6.3675141334533691e-001 -2.4877758324146271e-001
+ <_>
+
+ 0 -1 230 -9.2421043664216995e-003
+
+ 6.5140277147293091e-001 -2.1352872252464294e-001
+ <_>
+
+ 0 -1 48 -1.0526084899902344e-001
+
+ -9.0194213390350342e-001 1.8239501118659973e-001
+ <_>
+
+ 0 -1 281 1.2764739990234375e-001
+
+ 1.6771897673606873e-001 -7.7668786048889160e-001
+
+ <_>
+ 14
+ -2.6526770591735840e+000
+
+ <_>
+
+ 0 -1 829 -1.3842798769474030e-002
+
+ 4.1735208034515381e-001 -7.4295550584793091e-001
+ <_>
+
+ 0 -1 97 1.4765590429306030e-002
+
+ -5.1845699548721313e-001 5.0078016519546509e-001
+ <_>
+
+ 0 -1 21 3.1671046745032072e-003
+
+ -3.2739469408988953e-001 5.1253867149353027e-001
+ <_>
+
+ 0 -1 812 -9.5202140510082245e-003
+
+ 7.1236211061477661e-001 -2.3344238102436066e-001
+ <_>
+
+ 0 -1 703 -1.2149499729275703e-002
+
+ 6.4311891794204712e-001 -2.5991156697273254e-001
+ <_>
+
+ 0 -1 385 -1.0172967612743378e-001
+
+ -7.3093742132186890e-001 2.3339104652404785e-001
+ <_>
+
+ 0 -1 858 -6.2750680372118950e-003
+
+ 6.4128917455673218e-001 -2.3738093674182892e-001
+ <_>
+
+ 0 -1 518 1.5905253589153290e-002
+
+ -2.3312157392501831e-001 5.6561905145645142e-001
+ <_>
+
+ 0 -1 873 -5.6511810980737209e-003
+
+ 6.3098442554473877e-001 -2.2128470242023468e-001
+ <_>
+
+ 0 -1 229 1.0334834456443787e-002
+
+ -1.6205528378486633e-001 7.1688497066497803e-001
+ <_>
+
+ 0 -1 373 -1.4500595629215240e-002
+
+ 5.2634650468826294e-001 -2.5339555740356445e-001
+ <_>
+
+ 0 -1 720 8.4515195339918137e-003
+
+ -1.9005575776100159e-001 6.2645190954208374e-001
+ <_>
+
+ 0 -1 519 1.6612716019153595e-002
+
+ -1.9349065423011780e-001 6.6134274005889893e-001
+ <_>
+
+ 0 -1 561 1.0179553180932999e-002
+
+ -1.9179263710975647e-001 6.1396795511245728e-001
+
+ <_>
+ 16
+ -2.2411971092224121e+000
+
+ <_>
+
+ 0 -1 344 -9.5315366983413696e-002
+
+ 2.0634920895099640e-001 -7.6994550228118896e-001
+ <_>
+
+ 0 -1 577 -1.1904314160346985e-002
+
+ 4.6030580997467041e-001 -4.5124572515487671e-001
+ <_>
+
+ 0 -1 736 8.0967023968696594e-003
+
+ -2.9279080033302307e-001 5.1358801126480103e-001
+ <_>
+
+ 0 -1 766 -1.4768393710255623e-002
+
+ 6.9709998369216919e-001 -1.9789521396160126e-001
+ <_>
+
+ 0 -1 332 -7.3709283024072647e-003
+
+ 6.4356821775436401e-001 -1.9384047389030457e-001
+ <_>
+
+ 0 -1 331 7.4571794830262661e-003
+
+ -2.0553122460842133e-001 6.7929607629776001e-001
+ <_>
+
+ 0 -1 943 5.8717206120491028e-003
+
+ -1.9075798988342285e-001 6.3178658485412598e-001
+ <_>
+
+ 0 -1 563 -6.3720787875354290e-003
+
+ 6.1133956909179688e-001 -1.9197526574134827e-001
+ <_>
+
+ 0 -1 185 -1.7508253455162048e-002
+
+ 5.5003905296325684e-001 -2.0409923791885376e-001
+ <_>
+
+ 0 -1 539 -4.2271558195352554e-003
+
+ 5.9483224153518677e-001 -2.0080061256885529e-001
+ <_>
+
+ 0 -1 919 5.0116949714720249e-003
+
+ -1.8873518705368042e-001 5.8758223056793213e-001
+ <_>
+
+ 0 -1 298 8.4183514118194580e-002
+
+ 1.9158974289894104e-001 -7.3058295249938965e-001
+ <_>
+
+ 0 -1 776 4.5591969974339008e-003
+
+ -2.1568548679351807e-001 5.4940956830978394e-001
+ <_>
+
+ 0 -1 776 -3.6774221807718277e-003
+
+ 6.5714693069458008e-001 -2.3908025026321411e-001
+ <_>
+
+ 0 -1 844 1.3156082481145859e-002
+
+ -1.6889381408691406e-001 5.4372692108154297e-001
+ <_>
+
+ 0 -1 508 1.2298718094825745e-002
+
+ -1.7204846441745758e-001 5.3114622831344604e-001
+
+ <_>
+ 20
+ -2.3278577327728271e+000
+
+ <_>
+
+ 0 -1 684 -4.2540580034255981e-002
+
+ 2.4365724623203278e-001 -7.2478657960891724e-001
+ <_>
+
+ 0 -1 317 -2.1006479859352112e-002
+
+ 3.9405155181884766e-001 -5.1031738519668579e-001
+ <_>
+
+ 0 -1 13 1.2750471010804176e-002
+
+ -2.6155433058738708e-001 5.3219014406204224e-001
+ <_>
+
+ 0 -1 12 -1.0928934812545776e-001
+
+ -7.9762983322143555e-001 1.6522131860256195e-001
+ <_>
+
+ 0 -1 742 -8.2451943308115005e-003
+
+ 6.1570894718170166e-001 -1.6545474529266357e-001
+ <_>
+
+ 0 -1 651 -6.1263595707714558e-003
+
+ 6.5689104795455933e-001 -1.6943360865116119e-001
+ <_>
+
+ 0 -1 650 5.0333887338638306e-003
+
+ -1.9622130692005157e-001 5.7385104894638062e-001
+ <_>
+
+ 0 -1 34 1.0666935704648495e-002
+
+ -2.1881586313247681e-001 4.5024806261062622e-001
+ <_>
+
+ 0 -1 291 -1.0632696561515331e-002
+
+ 6.3769024610519409e-001 -1.6428084671497345e-001
+ <_>
+
+ 0 -1 237 -1.4020981267094612e-002
+
+ 6.1583393812179565e-001 -1.6708594560623169e-001
+ <_>
+
+ 0 -1 765 1.2589931488037109e-002
+
+ -2.0485720038414001e-001 4.7809442877769470e-001
+ <_>
+
+ 0 -1 753 -1.3003132306039333e-002
+
+ 6.5572524070739746e-001 -1.6035726666450500e-001
+ <_>
+
+ 0 -1 222 -5.7425271719694138e-002
+
+ -8.2782661914825439e-001 1.4296714961528778e-001
+ <_>
+
+ 0 -1 833 -3.7263054400682449e-003
+
+ 4.9777820706367493e-001 -2.1036401391029358e-001
+ <_>
+
+ 0 -1 825 1.2980616651475430e-002
+
+ -1.7779336869716644e-001 6.1292153596878052e-001
+ <_>
+
+ 0 -1 276 -3.4886042121797800e-003
+
+ 4.1184583306312561e-001 -2.0970273017883301e-001
+ <_>
+
+ 0 -1 813 -1.1452829465270042e-002
+
+ 5.6084501743316650e-001 -1.5244032442569733e-001
+ <_>
+
+ 0 -1 321 3.7844986654818058e-003
+
+ -2.8913837671279907e-001 2.7224406599998474e-001
+ <_>
+
+ 0 -1 876 -4.7596222721040249e-003
+
+ 5.2785235643386841e-001 -1.5034112334251404e-001
+ <_>
+
+ 0 -1 896 -1.7377159092575312e-003
+
+ 5.5644094944000244e-001 -2.0121455192565918e-001
+
+ <_>
+ 28
+ -2.3750255107879639e+000
+
+ <_>
+
+ 0 -1 347 -1.0104553401470184e-001
+
+ 1.3032685220241547e-001 -7.3142945766448975e-001
+ <_>
+
+ 0 -1 596 -1.8494745716452599e-002
+
+ 5.6178814172744751e-001 -3.3690422773361206e-001
+ <_>
+
+ 0 -1 629 1.0897371917963028e-002
+
+ -2.6694682240486145e-001 4.6661883592605591e-001
+ <_>
+
+ 0 -1 839 8.4953904151916504e-003
+
+ -2.0583645999431610e-001 4.6663123369216919e-001
+ <_>
+
+ 0 -1 44 6.3092201948165894e-002
+
+ 1.2652839720249176e-001 -7.4331611394882202e-001
+ <_>
+
+ 0 -1 305 -4.8850802704691887e-003
+
+ 5.1036185026168823e-001 -1.7127794027328491e-001
+ <_>
+
+ 0 -1 295 -1.2086534872651100e-002
+
+ 5.3874844312667847e-001 -1.7047831416130066e-001
+ <_>
+
+ 0 -1 163 -4.0194295346736908e-002
+
+ 6.0334587097167969e-001 -1.8293543159961700e-001
+ <_>
+
+ 0 -1 265 -9.7945984452962875e-003
+
+ 4.8900371789932251e-001 -1.7746040225028992e-001
+ <_>
+
+ 0 -1 597 6.7133754491806030e-003
+
+ -1.8603576719760895e-001 4.9050629138946533e-001
+ <_>
+
+ 0 -1 128 1.5135381370782852e-002
+
+ 1.5555633604526520e-001 -6.6330802440643311e-001
+ <_>
+
+ 0 -1 480 7.4470564723014832e-003
+
+ 1.2465479969978333e-001 -6.3456755876541138e-001
+ <_>
+
+ 0 -1 559 -1.7742723226547241e-002
+
+ 4.8904901742935181e-001 -1.6264849901199341e-001
+ <_>
+
+ 0 -1 821 -1.5695080161094666e-002
+
+ 4.1306030750274658e-001 -1.9036959111690521e-001
+ <_>
+
+ 0 -1 819 -4.3798778206110001e-003
+
+ 4.8768985271453857e-001 -1.5558160841464996e-001
+ <_>
+
+ 0 -1 836 -4.8424974083900452e-003
+
+ 4.6657896041870117e-001 -1.6847038269042969e-001
+ <_>
+
+ 0 -1 90 7.4649546295404434e-003
+
+ -1.7167872190475464e-001 4.3042477965354919e-001
+ <_>
+
+ 0 -1 883 5.1524871960282326e-003
+
+ -1.4530055224895477e-001 4.7056230902671814e-001
+ <_>
+
+ 0 -1 890 9.8812151700258255e-003
+
+ -1.4264582097530365e-001 5.0057184696197510e-001
+ <_>
+
+ 0 -1 393 -3.0181273818016052e-002
+
+ -6.5408444404602051e-001 1.0674032568931580e-001
+ <_>
+
+ 0 -1 694 9.2962123453617096e-003
+
+ -1.4381234347820282e-001 4.9470436573028564e-001
+ <_>
+
+ 0 -1 77 -7.6252631843090057e-003
+
+ -5.2033776044845581e-001 1.3706678152084351e-001
+ <_>
+
+ 0 -1 801 -1.1497072875499725e-002
+
+ 3.4252560138702393e-001 -1.9132094085216522e-001
+ <_>
+
+ 0 -1 670 -4.4177635572850704e-003
+
+ 4.6443006396293640e-001 -1.3389693200588226e-001
+ <_>
+
+ 0 -1 647 -2.4282713420689106e-003
+
+ 4.1310977935791016e-001 -1.3224220275878906e-001
+ <_>
+
+ 0 -1 686 1.0079141706228256e-002
+
+ -1.3342842459678650e-001 5.5696302652359009e-001
+ <_>
+
+ 0 -1 570 3.5632357001304626e-002
+
+ 9.1464981436729431e-002 -7.0863521099090576e-001
+ <_>
+
+ 0 -1 840 -1.9085695967078209e-003
+
+ 2.6823535561561584e-001 -1.9665902853012085e-001
+
+ <_>
+ 34
+ -2.5052807331085205e+000
+
+ <_>
+
+ 0 -1 268 1.5469970181584358e-002
+
+ -6.7369276285171509e-001 3.0393996834754944e-001
+ <_>
+
+ 0 -1 700 -2.2830318659543991e-002
+
+ 4.9829742312431335e-001 -3.5193654894828796e-001
+ <_>
+
+ 0 -1 521 1.8841657787561417e-002
+
+ -2.1037499606609344e-001 4.8866468667984009e-001
+ <_>
+
+ 0 -1 262 1.1541565880179405e-002
+
+ -1.8598809838294983e-001 5.2916365861892700e-001
+ <_>
+
+ 0 -1 219 -2.4122973904013634e-002
+
+ 5.2869701385498047e-001 -1.6163693368434906e-001
+ <_>
+
+ 0 -1 6 1.4711560681462288e-002
+
+ -2.5017279386520386e-001 3.2298168540000916e-001
+ <_>
+
+ 0 -1 520 -1.5706669539213181e-002
+
+ 5.0967657566070557e-001 -1.5732303261756897e-001
+ <_>
+
+ 0 -1 948 -4.1158739477396011e-003
+
+ 4.9462157487869263e-001 -1.2155625224113464e-001
+ <_>
+
+ 0 -1 770 -1.0694706812500954e-002
+
+ 6.1407995223999023e-001 -1.2956763803958893e-001
+ <_>
+
+ 0 -1 387 -3.6484465003013611e-002
+
+ 3.1439977884292603e-001 -2.2812500596046448e-001
+ <_>
+
+ 0 -1 345 5.4322574287652969e-002
+
+ -8.7467961013317108e-002 7.1243762969970703e-001
+ <_>
+
+ 0 -1 250 -8.9914854615926743e-003
+
+ 3.7887179851531982e-001 -1.7758503556251526e-001
+ <_>
+
+ 0 -1 52 1.5299601480364799e-002
+
+ 1.5142892301082611e-001 -5.4104751348495483e-001
+ <_>
+
+ 0 -1 792 -6.0345130041241646e-003
+
+ 3.8750106096267700e-001 -1.7849484086036682e-001
+ <_>
+
+ 0 -1 610 -2.0873975008726120e-003
+
+ -5.5879276990890503e-001 1.3142852485179901e-001
+ <_>
+
+ 0 -1 642 -2.0619889255613089e-003
+
+ -5.1919680833816528e-001 1.0321786254644394e-001
+ <_>
+
+ 0 -1 259 3.6544300615787506e-002
+
+ -1.6965624690055847e-001 3.9208900928497314e-001
+ <_>
+
+ 0 -1 382 1.4528267784044147e-003
+
+ -3.4218248724937439e-001 1.8518145382404327e-001
+ <_>
+
+ 0 -1 196 -2.6956547051668167e-002
+
+ -8.3279663324356079e-001 7.7962644398212433e-002
+ <_>
+
+ 0 -1 533 -1.0518556460738182e-002
+
+ 4.5597425103187561e-001 -1.4934070408344269e-001
+ <_>
+
+ 0 -1 740 5.4534617811441422e-003
+
+ -1.5347433090209961e-001 3.5846599936485291e-001
+ <_>
+
+ 0 -1 534 -5.6011183187365532e-003
+
+ 3.6314359307289124e-001 -1.5886513888835907e-001
+ <_>
+
+ 0 -1 927 1.0399374179542065e-002
+
+ -1.1159978061914444e-001 4.9891829490661621e-001
+ <_>
+
+ 0 -1 41 2.6076715439558029e-002
+
+ -2.1667334437370300e-001 2.5659701228141785e-001
+ <_>
+
+ 0 -1 715 -7.3732812888920307e-003
+
+ 5.8327084779739380e-001 -1.0727929323911667e-001
+ <_>
+
+ 0 -1 882 -5.6875580921769142e-003
+
+ 4.0847277641296387e-001 -1.2561751902103424e-001
+ <_>
+
+ 0 -1 891 1.3321589678525925e-002
+
+ -1.2537255883216858e-001 4.4824957847595215e-001
+ <_>
+
+ 0 -1 168 -1.8619614839553833e-001
+
+ -7.1703630685806274e-001 7.7993653714656830e-002
+ <_>
+
+ 0 -1 190 3.3796064555644989e-002
+
+ -1.3172915577888489e-001 4.1404765844345093e-001
+ <_>
+
+ 0 -1 530 4.0178038179874420e-003
+
+ -1.8571788072586060e-001 2.7401688694953918e-001
+ <_>
+
+ 0 -1 555 1.6669608652591705e-002
+
+ 7.5644508004188538e-002 -6.8869042396545410e-001
+ <_>
+
+ 0 -1 406 4.7584358602762222e-002
+
+ 8.2619942724704742e-002 -5.8818364143371582e-001
+ <_>
+
+ 0 -1 537 2.5073587894439697e-003
+
+ -1.4251622557640076e-001 3.3965954184532166e-001
+ <_>
+
+ 0 -1 638 1.4513431116938591e-002
+
+ -1.4366999268531799e-001 3.2603174448013306e-001
+
+ <_>
+ 42
+ -2.4546041488647461e+000
+
+ <_>
+
+ 0 -1 340 -9.4746887683868408e-002
+
+ 1.1788145639002323e-002 -7.5736826658248901e-001
+ <_>
+
+ 0 -1 577 -1.5985764563083649e-002
+
+ 3.4271994233131409e-001 -3.7916901707649231e-001
+ <_>
+
+ 0 -1 630 1.9708804786205292e-002
+
+ -2.2393602132797241e-001 4.9053853750228882e-001
+ <_>
+
+ 0 -1 96 1.6178630292415619e-002
+
+ -2.0412905514240265e-001 3.4104099869728088e-001
+ <_>
+
+ 0 -1 319 1.0606624186038971e-001
+
+ -1.0737416148185730e-001 6.7443412542343140e-001
+ <_>
+
+ 0 -1 83 -6.7316116765141487e-003
+
+ 3.4080076217651367e-001 -2.2706831991672516e-001
+ <_>
+
+ 0 -1 634 4.0689492598176003e-003
+
+ -1.4782951772212982e-001 4.1778662800788879e-001
+ <_>
+
+ 0 -1 686 -1.3378994539380074e-002
+
+ 6.8167924880981445e-001 -1.0507009923458099e-001
+ <_>
+
+ 0 -1 786 -1.8129471689462662e-002
+
+ 5.0995999574661255e-001 -1.3223616778850555e-001
+ <_>
+
+ 0 -1 646 -8.9250747114419937e-003
+
+ 5.0829160213470459e-001 -1.0886437445878983e-001
+ <_>
+
+ 0 -1 711 6.1906888149678707e-003
+
+ -1.1881013214588165e-001 4.9430772662162781e-001
+ <_>
+
+ 0 -1 575 -3.4704633057117462e-002
+
+ -6.8778192996978760e-001 9.2318676412105560e-002
+ <_>
+
+ 0 -1 189 -9.7849890589714050e-003
+
+ 2.0124578475952148e-001 -2.8525698184967041e-001
+ <_>
+
+ 0 -1 479 1.4655515551567078e-003
+
+ 1.0351686179637909e-001 -6.3454014062881470e-001
+ <_>
+
+ 0 -1 513 -3.5405270755290985e-002
+
+ -7.6147061586380005e-001 6.0781378298997879e-002
+ <_>
+
+ 0 -1 23 9.1620441526174545e-003
+
+ 8.2090407609939575e-002 -5.3804397583007813e-001
+ <_>
+
+ 0 -1 838 6.7096878774464130e-003
+
+ -1.1302943527698517e-001 4.6365195512771606e-001
+ <_>
+
+ 0 -1 820 -1.0268911719322205e-002
+
+ 5.8097857236862183e-001 -1.0859654098749161e-001
+ <_>
+
+ 0 -1 441 2.9750142246484756e-002
+
+ 9.3299955129623413e-002 -5.4268807172775269e-001
+ <_>
+
+ 0 -1 726 -5.5990684777498245e-003
+
+ 4.9949660897254944e-001 -1.0594012588262558e-001
+ <_>
+
+ 0 -1 714 4.8061953857541084e-003
+
+ -1.1477116495370865e-001 4.3569833040237427e-001
+ <_>
+
+ 0 -1 637 -4.0460027754306793e-002
+
+ -7.7711206674575806e-001 7.3132880032062531e-002
+ <_>
+
+ 0 -1 53 4.5344540849328041e-003
+
+ -1.6310065984725952e-001 3.0750447511672974e-001
+ <_>
+
+ 0 -1 479 -1.4339694753289223e-003
+
+ -5.2921229600906372e-001 8.8739573955535889e-002
+ <_>
+
+ 0 -1 396 -4.5565411448478699e-002
+
+ -7.4928385019302368e-001 4.8912040889263153e-002
+ <_>
+
+ 0 -1 330 -8.3342632278800011e-003
+
+ 4.6582534909248352e-001 -1.0161897540092468e-001
+ <_>
+
+ 0 -1 834 -1.0381949134171009e-002
+
+ 3.0994066596031189e-001 -1.3267418742179871e-001
+ <_>
+
+ 0 -1 831 1.6984764486551285e-002
+
+ -9.9871687591075897e-002 4.9527561664581299e-001
+ <_>
+
+ 0 -1 376 -1.3278885744512081e-003
+
+ 3.6983770132064819e-001 -1.1738168448209763e-001
+ <_>
+
+ 0 -1 760 -3.1804253812879324e-003
+
+ -8.9759206771850586e-001 4.3921347707509995e-002
+ <_>
+
+ 0 -1 828 -1.9149896688759327e-003
+
+ 1.9146692752838135e-001 -2.0268803834915161e-001
+ <_>
+
+ 0 -1 841 -1.8405792070552707e-003
+
+ 2.1319428086280823e-001 -1.8382850289344788e-001
+ <_>
+
+ 0 -1 259 3.5366363823413849e-002
+
+ -1.2205254286527634e-001 3.0300119519233704e-001
+ <_>
+
+ 0 -1 354 -3.7630870938301086e-003
+
+ 3.0492320656776428e-001 -1.2932489812374115e-001
+ <_>
+
+ 0 -1 732 -1.1243980843573809e-003
+
+ -4.9750825762748718e-001 8.0560393631458282e-002
+ <_>
+
+ 0 -1 749 -2.2356058470904827e-003
+
+ -6.7946660518646240e-001 5.2887793630361557e-002
+ <_>
+
+ 0 -1 536 -2.2717624902725220e-002
+
+ 4.2686942219734192e-001 -1.0260385274887085e-001
+ <_>
+
+ 0 -1 280 9.2372611165046692e-002
+
+ 7.9670898616313934e-002 -5.2335608005523682e-001
+ <_>
+
+ 0 -1 658 -1.0431142151355743e-001
+
+ -7.4446302652359009e-001 4.6288352459669113e-002
+ <_>
+
+ 0 -1 944 7.4872868135571480e-003
+
+ -1.1977240443229675e-001 3.1791850924491882e-001
+ <_>
+
+ 0 -1 228 -2.4358350783586502e-002
+
+ 1.7944122850894928e-001 -2.0157346129417419e-001
+ <_>
+
+ 0 -1 47 4.9624212086200714e-002
+
+ -1.0701860487461090e-001 3.7854740023612976e-001
+
+ <_>
+ 50
+ -2.6502745151519775e+000
+
+ <_>
+
+ 0 -1 431 2.1381884813308716e-002
+
+ -7.6310330629348755e-001 -7.8235723078250885e-002
+ <_>
+
+ 0 -1 623 9.7743803635239601e-003
+
+ -3.8874423503875732e-001 2.9614463448524475e-001
+ <_>
+
+ 0 -1 19 2.9336847364902496e-002
+
+ -2.1392610669136047e-001 4.4257661700248718e-001
+ <_>
+
+ 0 -1 645 1.2054111808538437e-002
+
+ -1.2168737500905991e-001 6.5890479087829590e-001
+ <_>
+
+ 0 -1 392 1.1729352176189423e-002
+
+ -1.2235984951257706e-001 4.8555457592010498e-001
+ <_>
+
+ 0 -1 588 -1.0436945594847202e-003
+
+ -6.1764669418334961e-001 1.1390741914510727e-001
+ <_>
+
+ 0 -1 71 -2.5775061920285225e-002
+
+ -6.0323065519332886e-001 1.2372459471225739e-001
+ <_>
+
+ 0 -1 872 -4.0599796921014786e-003
+
+ 3.5508742928504944e-001 -1.9819863140583038e-001
+ <_>
+
+ 0 -1 643 -1.9134972244501114e-002
+
+ 4.7154670953750610e-001 -1.4655594527721405e-001
+ <_>
+
+ 0 -1 483 6.5218633972108364e-003
+
+ 1.2207052111625671e-001 -6.0890328884124756e-001
+ <_>
+
+ 0 -1 757 -1.4126582071185112e-002
+
+ 3.3305764198303223e-001 -1.8242211639881134e-001
+ <_>
+
+ 0 -1 565 -8.3793615922331810e-003
+
+ 4.6099957823753357e-001 -1.0809499770402908e-001
+ <_>
+
+ 0 -1 455 -1.2584301875904202e-003
+
+ -5.1634973287582397e-001 1.0520447790622711e-001
+ <_>
+
+ 0 -1 203 -5.1234811544418335e-002
+
+ -7.5237458944320679e-001 5.3416907787322998e-002
+ <_>
+
+ 0 -1 584 1.6728173941373825e-002
+
+ -1.4094479382038116e-001 3.8169395923614502e-001
+ <_>
+
+ 0 -1 184 -4.5198453590273857e-003
+
+ 3.0100575089454651e-001 -1.6970130801200867e-001
+ <_>
+
+ 0 -1 686 1.0796479880809784e-002
+
+ -1.1680302023887634e-001 4.6733006834983826e-001
+ <_>
+
+ 0 -1 860 5.4673422127962112e-003
+
+ -1.3090577721595764e-001 3.4922021627426147e-001
+ <_>
+
+ 0 -1 902 6.2447679229080677e-003
+
+ -1.0570991784334183e-001 4.4209754467010498e-001
+ <_>
+
+ 0 -1 892 -8.6985006928443909e-003
+
+ 4.4582247734069824e-001 -1.1208640784025192e-001
+ <_>
+
+ 0 -1 86 5.8012232184410095e-002
+
+ 5.6753028184175491e-002 -7.8348731994628906e-001
+ <_>
+
+ 0 -1 158 -1.9159330055117607e-002
+
+ 2.1710830926895142e-001 -2.1206925809383392e-001
+ <_>
+
+ 0 -1 346 1.4331589639186859e-001
+
+ -6.5506041049957275e-002 8.3924996852874756e-001
+ <_>
+
+ 0 -1 327 -7.4841668829321861e-003
+
+ 4.4598889350891113e-001 -8.4189794957637787e-002
+ <_>
+
+ 0 -1 585 -3.1711272895336151e-002
+
+ -6.8312811851501465e-001 6.7834347486495972e-002
+ <_>
+
+ 0 -1 543 -1.0442961938679218e-003
+
+ -5.5244719982147217e-001 6.7180506885051727e-002
+ <_>
+
+ 0 -1 806 7.9750344157218933e-003
+
+ -1.4685039222240448e-001 2.7911156415939331e-001
+ <_>
+
+ 0 -1 775 9.7797568887472153e-003
+
+ -1.0445457696914673e-001 3.9583787322044373e-001
+ <_>
+
+ 0 -1 552 1.3288496062159538e-002
+
+ -1.1733970791101456e-001 3.2855752110481262e-001
+ <_>
+
+ 0 -1 528 -1.5873706433922052e-003
+
+ -6.4394426345825195e-001 5.9831541031599045e-002
+ <_>
+
+ 0 -1 538 4.1341055184602737e-003
+
+ -1.4766456186771393e-001 2.6551467180252075e-001
+ <_>
+
+ 0 -1 75 4.7469654236920178e-004
+
+ -2.4220904707908630e-001 1.7033961415290833e-001
+ <_>
+
+ 0 -1 780 1.6357531771063805e-002
+
+ -7.4449680745601654e-002 5.1059716939926147e-001
+ <_>
+
+ 0 -1 512 -3.0519803985953331e-002
+
+ -6.1357855796813965e-001 6.4341634511947632e-002
+ <_>
+
+ 0 -1 388 7.8287199139595032e-002
+
+ -9.1953203082084656e-002 4.5058310031890869e-001
+ <_>
+
+ 0 -1 426 2.6628788560628891e-002
+
+ -1.2955492734909058e-001 2.6968446373939514e-001
+ <_>
+
+ 0 -1 187 4.6231731772422791e-002
+
+ -8.5953183472156525e-002 4.0568628907203674e-001
+ <_>
+
+ 0 -1 248 -2.1837819367647171e-003
+
+ 2.9953801631927490e-001 -1.1820212751626968e-001
+ <_>
+
+ 0 -1 551 -7.5804558582603931e-004
+
+ -3.7147358059883118e-001 9.4888158142566681e-002
+ <_>
+
+ 0 -1 557 1.9615942612290382e-002
+
+ 7.7175915241241455e-002 -4.4386270642280579e-001
+ <_>
+
+ 0 -1 758 2.4940725415945053e-003
+
+ -1.3974383473396301e-001 2.5393635034561157e-001
+ <_>
+
+ 0 -1 363 2.0674080587923527e-003
+
+ -1.6579771041870117e-001 2.1392273902893066e-001
+ <_>
+
+ 0 -1 307 -7.3546944186091423e-003
+
+ 3.6300283670425415e-001 -9.0012907981872559e-002
+ <_>
+
+ 0 -1 822 -4.5008827000856400e-003
+
+ 2.7234289050102234e-001 -1.1618893593549728e-001
+ <_>
+
+ 0 -1 863 2.6555648073554039e-003
+
+ -1.3339768350124359e-001 2.3308847844600677e-001
+ <_>
+
+ 0 -1 713 6.8732965737581253e-003
+
+ 5.5398836731910706e-002 -5.7269740104675293e-001
+ <_>
+
+ 0 -1 541 -1.3697329908609390e-002
+
+ 2.9575833678245544e-001 -1.1314996331930161e-001
+ <_>
+
+ 0 -1 499 3.1671333126723766e-003
+
+ -1.5514299273490906e-001 2.1296086907386780e-001
+ <_>
+
+ 0 -1 74 3.9301186800003052e-002
+
+ 3.7740129977464676e-002 -8.7064558267593384e-001
+ <_>
+
+ 0 -1 438 5.0326753407716751e-003
+
+ 3.8631703704595566e-002 -6.6628092527389526e-001
+
+ <_>
+ 37
+ -2.2784059047698975e+000
+
+ <_>
+
+ 0 -1 284 -6.8839386105537415e-002
+
+ 3.8505528122186661e-002 -7.2149914503097534e-001
+ <_>
+
+ 0 -1 622 4.6330597251653671e-003
+
+ -2.7918994426727295e-001 5.7365530729293823e-001
+ <_>
+
+ 0 -1 769 -2.2597890347242355e-002
+
+ 5.4445463418960571e-001 -1.5445226430892944e-001
+ <_>
+
+ 0 -1 651 8.1817107275128365e-003
+
+ -1.3576838374137878e-001 5.7550191879272461e-001
+ <_>
+
+ 0 -1 663 1.9931606948375702e-002
+
+ -8.6917184293270111e-002 6.9753867387771606e-001
+ <_>
+
+ 0 -1 125 -1.6835592687129974e-002
+
+ 2.9909837245941162e-001 -2.1280159056186676e-001
+ <_>
+
+ 0 -1 811 1.3076540082693100e-002
+
+ -1.0236994922161102e-001 6.2949544191360474e-001
+ <_>
+
+ 0 -1 809 6.2367517966777086e-004
+
+ -2.5327861309051514e-001 2.4867674708366394e-001
+ <_>
+
+ 0 -1 609 1.2028571218252182e-003
+
+ 1.3679966330528259e-001 -6.4433771371841431e-001
+ <_>
+
+ 0 -1 272 1.3981487601995468e-002
+
+ -1.6557806730270386e-001 4.5303794741630554e-001
+ <_>
+
+ 0 -1 224 -1.5312875621020794e-002
+
+ 3.9820623397827148e-001 -1.4350801706314087e-001
+ <_>
+
+ 0 -1 502 -1.5315772034227848e-003
+
+ -4.6908026933670044e-001 1.1392414569854736e-001
+ <_>
+
+ 0 -1 586 -1.2515729293227196e-002
+
+ 4.2320749163627625e-001 -1.1944464594125748e-001
+ <_>
+
+ 0 -1 15 9.7349435091018677e-003
+
+ -2.1135130524635315e-001 2.4544763565063477e-001
+ <_>
+
+ 0 -1 578 8.9689850807189941e-002
+
+ 6.3219323754310608e-002 -6.4908504486083984e-001
+ <_>
+
+ 0 -1 683 -1.1183234862983227e-002
+
+ 4.5843327045440674e-001 -1.1428884416818619e-001
+ <_>
+
+ 0 -1 609 -1.3516875915229321e-003
+
+ -6.4720195531845093e-001 8.4523022174835205e-002
+ <_>
+
+ 0 -1 338 -3.5038506612181664e-003
+
+ 2.3362815380096436e-001 -2.2096297144889832e-001
+ <_>
+
+ 0 -1 676 -2.2360668517649174e-003
+
+ 3.7134209275245667e-001 -1.3087964057922363e-001
+ <_>
+
+ 0 -1 672 1.1475373059511185e-002
+
+ -9.9598348140716553e-002 4.7512599825859070e-001
+ <_>
+
+ 0 -1 693 -4.1206870228052139e-003
+
+ 3.7730529904365540e-001 -1.3486868143081665e-001
+ <_>
+
+ 0 -1 386 -1.0615207254886627e-002
+
+ 5.6163507699966431e-001 -8.6019508540630341e-002
+ <_>
+
+ 0 -1 912 1.3644450809806585e-003
+
+ 9.1222301125526428e-002 -5.7370740175247192e-001
+ <_>
+
+ 0 -1 211 -4.0528293699026108e-002
+
+ -7.1112531423568726e-001 5.6328568607568741e-002
+ <_>
+
+ 0 -1 598 -2.6628528721630573e-003
+
+ -5.7514446973800659e-001 6.4672872424125671e-002
+ <_>
+
+ 0 -1 804 1.6719421837478876e-003
+
+ -1.0937304049730301e-001 4.6537923812866211e-001
+ <_>
+
+ 0 -1 391 -7.5402572751045227e-002
+
+ -7.1920621395111084e-001 6.3679412007331848e-002
+ <_>
+
+ 0 -1 752 4.1434019804000854e-003
+
+ -1.2251268327236176e-001 3.5859704017639160e-001
+ <_>
+
+ 0 -1 656 1.0901679052039981e-003
+
+ 9.0319603681564331e-002 -4.9077373743057251e-001
+ <_>
+
+ 0 -1 548 9.7664669156074524e-003
+
+ -1.1890622228384018e-001 3.7789806723594666e-001
+ <_>
+
+ 0 -1 20 1.3128603994846344e-001
+
+ 9.1950289905071259e-002 -4.8608726263046265e-001
+ <_>
+
+ 0 -1 160 5.0870995037257671e-003
+
+ -3.0447667837142944e-001 1.5393695235252380e-001
+ <_>
+
+ 0 -1 695 1.1608509812504053e-003
+
+ 6.8402722477912903e-002 -5.7240855693817139e-001
+ <_>
+
+ 0 -1 463 -8.3964206278324127e-003
+
+ -5.6654578447341919e-001 6.1527676880359650e-002
+ <_>
+
+ 0 -1 853 -9.2788469046354294e-003
+
+ 5.3486818075180054e-001 -7.9918831586837769e-002
+ <_>
+
+ 0 -1 194 4.0858805179595947e-002
+
+ -6.0392327606678009e-002 5.3097963333129883e-001
+ <_>
+
+ 0 -1 875 1.1207645758986473e-002
+
+ -7.6901644468307495e-002 4.6894967555999756e-001
+
+ <_>
+ 43
+ -2.3281440734863281e+000
+
+ <_>
+
+ 0 -1 799 1.6143361106514931e-002
+
+ -5.9869056940078735e-001 5.8244681358337402e-001
+ <_>
+
+ 0 -1 316 -1.4507154002785683e-002
+
+ 2.7806228399276733e-001 -4.9415421485900879e-001
+ <_>
+
+ 0 -1 374 7.1883820928633213e-003
+
+ -2.1741701662540436e-001 3.9910879731178284e-001
+ <_>
+
+ 0 -1 601 -6.3224318437278271e-003
+
+ 4.9661168456077576e-001 -1.4284123480319977e-001
+ <_>
+
+ 0 -1 309 7.3951724916696548e-003
+
+ -1.3306735455989838e-001 5.4774791002273560e-001
+ <_>
+
+ 0 -1 620 5.7926801964640617e-003
+
+ -1.7347626388072968e-001 3.3524274826049805e-001
+ <_>
+
+ 0 -1 628 -8.1796385347843170e-003
+
+ 4.4341480731964111e-001 -1.1987159401178360e-001
+ <_>
+
+ 0 -1 644 3.1394532416015863e-003
+
+ -7.6400212943553925e-002 5.3360211849212646e-001
+ <_>
+
+ 0 -1 803 5.8109681122004986e-003
+
+ -1.1512878537178040e-001 4.4279125332832336e-001
+ <_>
+
+ 0 -1 787 -1.5480478759855032e-003
+
+ 4.6037110686302185e-001 -1.1494978517293930e-001
+ <_>
+
+ 0 -1 139 -3.2716423273086548e-002
+
+ -6.3845193386077881e-001 1.0197243094444275e-001
+ <_>
+
+ 0 -1 547 7.7531556598842144e-003
+
+ -2.0599687099456787e-001 2.4387344717979431e-001
+ <_>
+
+ 0 -1 312 1.0081732273101807e-001
+
+ -8.3307094871997833e-002 6.0089951753616333e-001
+ <_>
+
+ 0 -1 303 1.8065905198454857e-002
+
+ -8.5330262780189514e-002 5.1092010736465454e-001
+ <_>
+
+ 0 -1 227 1.2447070330381393e-002
+
+ 7.5348034501075745e-002 -7.0691746473312378e-001
+ <_>
+
+ 0 -1 26 1.1250283569097519e-002
+
+ -2.8157770633697510e-001 1.4611217379570007e-001
+ <_>
+
+ 0 -1 461 6.3989013433456421e-002
+
+ 5.5644407868385315e-002 -8.0775284767150879e-001
+ <_>
+
+ 0 -1 532 1.2037818320095539e-002
+
+ -1.6155177354812622e-001 2.6092258095741272e-001
+ <_>
+
+ 0 -1 531 -6.7794714123010635e-003
+
+ 4.1026043891906738e-001 -1.1167341470718384e-001
+ <_>
+
+ 0 -1 662 -6.8837543949484825e-003
+
+ 3.2057675719261169e-001 -1.2521778047084808e-001
+ <_>
+
+ 0 -1 568 -5.6298770941793919e-003
+
+ 3.7114644050598145e-001 -9.6118465065956116e-002
+ <_>
+
+ 0 -1 501 -1.4044784940779209e-002
+
+ 2.3923584818840027e-001 -1.4994344115257263e-001
+ <_>
+
+ 0 -1 209 -4.2415991425514221e-002
+
+ -7.0631259679794312e-001 5.3350944072008133e-002
+ <_>
+
+ 0 -1 633 1.1271872790530324e-003
+
+ -1.0572738200426102e-001 4.0252980589866638e-001
+ <_>
+
+ 0 -1 655 1.6750365030020475e-003
+
+ 6.3855156302452087e-002 -6.4757323265075684e-001
+ <_>
+
+ 0 -1 617 8.0223847180604935e-003
+
+ -1.3372656702995300e-001 3.1646871566772461e-001
+ <_>
+
+ 0 -1 302 -7.6437788084149361e-003
+
+ 3.6533179879188538e-001 -1.0963398963212967e-001
+ <_>
+
+ 0 -1 864 1.9589535077102482e-004
+
+ -1.8541762232780457e-001 1.9759687781333923e-001
+ <_>
+
+ 0 -1 235 -1.4239229494705796e-003
+
+ 2.4031755328178406e-001 -1.5697695314884186e-001
+ <_>
+
+ 0 -1 796 8.4227584302425385e-003
+
+ -8.4527194499969482e-002 4.2389118671417236e-001
+ <_>
+
+ 0 -1 797 -6.9234715774655342e-003
+
+ 3.8057762384414673e-001 -9.1416321694850922e-002
+ <_>
+
+ 0 -1 588 -1.8704653484746814e-003
+
+ -6.4613032341003418e-001 5.7689383625984192e-002
+ <_>
+
+ 0 -1 260 -2.7793958783149719e-002
+
+ 1.8243275582790375e-001 -1.8460384011268616e-001
+ <_>
+
+ 0 -1 780 -1.9853528589010239e-002
+
+ 7.5294703245162964e-001 -5.5559452623128891e-002
+ <_>
+
+ 0 -1 231 -9.3498677015304565e-002
+
+ -4.5725339651107788e-001 8.2762040197849274e-002
+ <_>
+
+ 0 -1 233 -5.1207490265369415e-002
+
+ -6.2534767389297485e-001 4.8502899706363678e-002
+ <_>
+
+ 0 -1 407 1.1575517710298300e-003
+
+ -1.9439546763896942e-001 1.6855290532112122e-001
+ <_>
+
+ 0 -1 24 -1.7103100195527077e-002
+
+ -5.6425410509109497e-001 5.8622561395168304e-002
+ <_>
+
+ 0 -1 731 -1.7147272592410445e-003
+
+ -4.4655910134315491e-001 6.4384043216705322e-002
+ <_>
+
+ 0 -1 704 -2.4417929351329803e-002
+
+ -4.3452578783035278e-001 7.0416867733001709e-002
+ <_>
+
+ 0 -1 572 3.7648410070687532e-003
+
+ -9.9933244287967682e-002 3.3911246061325073e-001
+ <_>
+
+ 0 -1 353 -1.0104919783771038e-002
+
+ 3.4629023075103760e-001 -8.8539779186248779e-002
+ <_>
+
+ 0 -1 712 5.0981063395738602e-003
+
+ 5.5100377649068832e-002 -6.0317450761795044e-001
+
+ <_>
+ 50
+ -2.3480093479156494e+000
+
+ <_>
+
+ 0 -1 343 -3.9326027035713196e-002
+
+ 1.5673981979489326e-002 -7.0409429073333740e-001
+ <_>
+
+ 0 -1 465 -8.4042851813137531e-004
+
+ 2.2963143885135651e-001 -4.5338386297225952e-001
+ <_>
+
+ 0 -1 768 1.2317419983446598e-002
+
+ -2.4286352097988129e-001 3.4696686267852783e-001
+ <_>
+
+ 0 -1 799 1.2345131486654282e-002
+
+ -1.2295535951852798e-001 5.7723248004913330e-001
+ <_>
+
+ 0 -1 334 -1.0166198946535587e-002
+
+ 3.6376756429672241e-001 -1.5697406232357025e-001
+ <_>
+
+ 0 -1 2 1.6935718012973666e-003
+
+ -1.6952106356620789e-001 3.3476638793945313e-001
+ <_>
+
+ 0 -1 355 2.4814529344439507e-002
+
+ -5.2621126174926758e-002 6.6913032531738281e-001
+ <_>
+
+ 0 -1 595 -7.9641379415988922e-003
+
+ 4.5105281472206116e-001 -1.0256277024745941e-001
+ <_>
+
+ 0 -1 923 -8.0780440475791693e-004
+
+ 3.4726995229721069e-001 -1.4011415839195251e-001
+ <_>
+
+ 0 -1 886 -4.2634975165128708e-002
+
+ 3.9254909753799438e-001 -9.5705978572368622e-002
+ <_>
+
+ 0 -1 645 -1.1309007182717323e-002
+
+ 5.3030455112457275e-001 -9.1078959405422211e-002
+ <_>
+
+ 0 -1 660 -5.3997440263628960e-003
+
+ 4.4208008050918579e-001 -8.9016474783420563e-002
+ <_>
+
+ 0 -1 922 8.0034844577312469e-003
+
+ -7.7505834400653839e-002 4.6123340725898743e-001
+ <_>
+
+ 0 -1 70 -2.1929096430540085e-002
+
+ -5.1349323987960815e-001 8.5143901407718658e-002
+ <_>
+
+ 0 -1 457 -1.1585029773414135e-002
+
+ -5.9067147970199585e-001 5.3899347782135010e-002
+ <_>
+
+ 0 -1 940 1.5154580585658550e-002
+
+ 4.7417007386684418e-002 -6.2853425741195679e-001
+ <_>
+
+ 0 -1 425 3.6063842475414276e-002
+
+ 7.1829482913017273e-002 -5.8649080991744995e-001
+ <_>
+
+ 0 -1 377 -1.2515364214777946e-003
+
+ 1.8929110467433929e-001 -1.8165642023086548e-001
+ <_>
+
+ 0 -1 443 -1.1191211640834808e-002
+
+ -6.1874210834503174e-001 6.0382697731256485e-002
+ <_>
+
+ 0 -1 892 -1.0454729199409485e-002
+
+ 3.9079114794731140e-001 -9.7279526293277740e-002
+ <_>
+
+ 0 -1 474 -1.3280634302645922e-003
+
+ -4.3977957963943481e-001 8.6543120443820953e-002
+ <_>
+
+ 0 -1 884 -6.5715098753571510e-003
+
+ 3.8899809122085571e-001 -9.9507912993431091e-002
+ <_>
+
+ 0 -1 802 -4.8141209408640862e-003
+
+ 2.7240043878555298e-001 -1.1941614747047424e-001
+ <_>
+
+ 0 -1 611 -4.9042850732803345e-003
+
+ 3.4554582834243774e-001 -1.0440594702959061e-001
+ <_>
+
+ 0 -1 589 4.1131088510155678e-003
+
+ 6.2906242907047272e-002 -6.3577443361282349e-001
+ <_>
+
+ 0 -1 564 -1.4377808198332787e-002
+
+ 2.6160046458244324e-001 -1.3126534223556519e-001
+ <_>
+
+ 0 -1 659 -7.9730991274118423e-003
+
+ 2.8418624401092529e-001 -1.1802970618009567e-001
+ <_>
+
+ 0 -1 632 1.2750998139381409e-002
+
+ -1.2246144562959671e-001 2.9994803667068481e-001
+ <_>
+
+ 0 -1 550 1.2405896559357643e-003
+
+ 6.8871341645717621e-002 -4.7651088237762451e-001
+ <_>
+
+ 0 -1 864 1.9797214190475643e-004
+
+ -1.8686980009078979e-001 1.7104914784431458e-001
+ <_>
+
+ 0 -1 773 -5.9868812561035156e-002
+
+ -7.4281668663024902e-001 4.0871854871511459e-002
+ <_>
+
+ 0 -1 20 1.7117856442928314e-001
+
+ 3.9691232144832611e-002 -6.0849416255950928e-001
+ <_>
+
+ 0 -1 583 -6.0836132615804672e-003
+
+ 2.6707777380943298e-001 -1.1131492257118225e-001
+ <_>
+
+ 0 -1 37 -1.6043212264776230e-002
+
+ -7.1336209774017334e-001 4.1814558207988739e-002
+ <_>
+
+ 0 -1 721 -3.5733331460505724e-003
+
+ -5.9263443946838379e-001 4.1711769998073578e-002
+ <_>
+
+ 0 -1 251 4.8501053825020790e-003
+
+ -1.7411983013153076e-001 1.6949725151062012e-001
+ <_>
+
+ 0 -1 932 -2.4870643392205238e-003
+
+ 3.5093098878860474e-001 -8.0437563359737396e-002
+ <_>
+
+ 0 -1 679 5.4334278684109449e-004
+
+ 7.2410888969898224e-002 -4.1958642005920410e-001
+ <_>
+
+ 0 -1 399 -6.7315630614757538e-002
+
+ -6.9776558876037598e-001 3.6959640681743622e-002
+ <_>
+
+ 0 -1 848 -1.5508693642914295e-002
+
+ 4.7738686203956604e-001 -6.2411848455667496e-002
+ <_>
+
+ 0 -1 240 9.8924851045012474e-003
+
+ 3.8795292377471924e-002 -7.5121307373046875e-001
+ <_>
+
+ 0 -1 626 -1.9304422894492745e-003
+
+ -6.6471725702285767e-001 3.2116148620843887e-002
+ <_>
+
+ 0 -1 877 -1.0774823604151607e-003
+
+ 1.5463894605636597e-001 -1.6525565087795258e-001
+ <_>
+
+ 0 -1 938 2.0380350761115551e-003
+
+ -8.5884653031826019e-002 3.1941527128219604e-001
+ <_>
+
+ 0 -1 296 2.6121754199266434e-003
+
+ 4.5351639389991760e-002 -6.1592888832092285e-001
+ <_>
+
+ 0 -1 360 -2.4895587936043739e-002
+
+ 1.9662404060363770e-001 -1.3288022577762604e-001
+ <_>
+
+ 0 -1 540 9.4352923333644867e-003
+
+ -7.7825613319873810e-002 3.3150759339332581e-001
+ <_>
+
+ 0 -1 475 3.4190870821475983e-002
+
+ 4.5858692377805710e-002 -6.1435216665267944e-001
+ <_>
+
+ 0 -1 685 -5.5097185075283051e-002
+
+ -4.9892291426658630e-001 4.7548539936542511e-002
+ <_>
+
+ 0 -1 287 3.8485769182443619e-003
+
+ -2.1700088679790497e-001 1.1295168846845627e-001
+
+ <_>
+ 61
+ -2.4126377105712891e+000
+
+ <_>
+
+ 0 -1 344 -9.5382995903491974e-002
+
+ -4.5056518167257309e-002 -7.4383479356765747e-001
+ <_>
+
+ 0 -1 696 -1.7865713685750961e-002
+
+ 2.4200576543807983e-001 -3.4111279249191284e-001
+ <_>
+
+ 0 -1 66 -1.7819929867982864e-002
+
+ -5.8606600761413574e-001 1.0216028243303299e-001
+ <_>
+
+ 0 -1 369 1.1929270811378956e-002
+
+ -1.3082079589366913e-001 4.3198430538177490e-001
+ <_>
+
+ 0 -1 677 -2.1402675658464432e-002
+
+ -7.3706889152526855e-001 7.2057045996189117e-002
+ <_>
+
+ 0 -1 880 2.0411442965269089e-003
+
+ -1.9257834553718567e-001 2.6624691486358643e-001
+ <_>
+
+ 0 -1 560 -9.2984475195407867e-003
+
+ 3.9710593223571777e-001 -1.1857020854949951e-001
+ <_>
+
+ 0 -1 870 -4.1869636625051498e-003
+
+ 4.2139983177185059e-001 -1.1628517508506775e-001
+ <_>
+
+ 0 -1 173 1.0577079653739929e-001
+
+ 6.7847460508346558e-002 -7.5728106498718262e-001
+ <_>
+
+ 0 -1 458 2.3821401409804821e-003
+
+ -1.7424334585666656e-001 2.4778348207473755e-001
+ <_>
+
+ 0 -1 365 1.7058081924915314e-002
+
+ -1.0784839093685150e-001 4.7589403390884399e-001
+ <_>
+
+ 0 -1 607 8.4047149866819382e-003
+
+ -1.6299639642238617e-001 2.5596112012863159e-001
+ <_>
+
+ 0 -1 669 6.4883893355727196e-003
+
+ -1.0720382630825043e-001 3.8739699125289917e-001
+ <_>
+
+ 0 -1 719 1.3821164146065712e-002
+
+ -1.0847893357276917e-001 3.7734055519104004e-001
+ <_>
+
+ 0 -1 730 6.3344044610857964e-004
+
+ 1.0369951277971268e-001 -4.1177383065223694e-001
+ <_>
+
+ 0 -1 649 2.5448631495237350e-002
+
+ -1.0093591362237930e-001 4.0250420570373535e-001
+ <_>
+
+ 0 -1 628 -6.6858739592134953e-003
+
+ 3.2515993714332581e-001 -1.2071736156940460e-001
+ <_>
+
+ 0 -1 847 1.5770105645060539e-002
+
+ -8.7370425462722778e-002 4.2094638943672180e-001
+ <_>
+
+ 0 -1 442 -6.1724921688437462e-003
+
+ 3.5812416672706604e-001 -9.5346152782440186e-002
+ <_>
+
+ 0 -1 456 -2.5777951814234257e-003
+
+ -4.5544171333312988e-001 9.0092077851295471e-002
+ <_>
+
+ 0 -1 535 -2.6305086910724640e-002
+
+ -6.4864850044250488e-001 4.1219502687454224e-002
+ <_>
+
+ 0 -1 542 8.0740137491375208e-004
+
+ 4.7109395265579224e-002 -6.0955244302749634e-001
+ <_>
+
+ 0 -1 68 1.4135822653770447e-002
+
+ -1.9197317957878113e-001 1.6882354021072388e-001
+ <_>
+
+ 0 -1 294 -9.4971470534801483e-003
+
+ 3.6509966850280762e-001 -9.9222034215927124e-002
+ <_>
+
+ 0 -1 542 -7.4699660763144493e-004
+
+ -4.7985881567001343e-001 6.8735912442207336e-002
+ <_>
+
+ 0 -1 500 1.6889899969100952e-002
+
+ -1.3929726183414459e-001 2.3301121592521667e-001
+ <_>
+
+ 0 -1 779 2.3306370712816715e-003
+
+ -8.4623180329799652e-002 3.3656537532806396e-001
+ <_>
+
+ 0 -1 778 8.7781455367803574e-003
+
+ -1.1189370602369308e-001 2.9142591357231140e-001
+ <_>
+
+ 0 -1 99 -1.5908680856227875e-002
+
+ 1.9325265288352966e-001 -1.6028961539268494e-001
+ <_>
+
+ 0 -1 744 1.9255496561527252e-002
+
+ 7.6108239591121674e-002 -3.9211651682853699e-001
+ <_>
+
+ 0 -1 914 5.0490582361817360e-003
+
+ -8.9932329952716827e-002 3.1994494795799255e-001
+ <_>
+
+ 0 -1 603 -2.4455685634166002e-003
+
+ -6.3004231452941895e-001 4.6506922692060471e-002
+ <_>
+
+ 0 -1 89 6.4034629613161087e-003
+
+ -1.2222797423601151e-001 2.2714875638484955e-001
+ <_>
+
+ 0 -1 88 -3.1981021165847778e-003
+
+ 2.8711226582527161e-001 -1.0478579252958298e-001
+ <_>
+
+ 0 -1 732 1.7579109407961369e-003
+
+ 5.1840141415596008e-002 -5.7752221822738647e-001
+ <_>
+
+ 0 -1 526 -2.6384353637695313e-002
+
+ -7.5548434257507324e-001 3.1215203925967216e-002
+ <_>
+
+ 0 -1 482 1.3470241427421570e-001
+
+ 4.5115962624549866e-002 -4.8610612750053406e-001
+ <_>
+
+ 0 -1 855 -2.5868147611618042e-002
+
+ -4.9144035577774048e-001 5.0334099680185318e-002
+ <_>
+
+ 0 -1 164 1.0719317197799683e-001
+
+ -1.4267221093177795e-001 1.7969062924385071e-001
+ <_>
+
+ 0 -1 781 -1.5155045315623283e-002
+
+ 4.2710477113723755e-001 -6.6483244299888611e-002
+ <_>
+
+ 0 -1 728 -3.8210965692996979e-002
+
+ -6.1093688011169434e-001 4.7181066125631332e-002
+ <_>
+
+ 0 -1 257 1.7748951911926270e-002
+
+ -6.6903516650199890e-002 4.1605830192565918e-001
+ <_>
+
+ 0 -1 272 -1.3678016141057014e-002
+
+ 3.2274204492568970e-001 -8.7739549577236176e-002
+ <_>
+
+ 0 -1 81 1.4629539102315903e-002
+
+ -1.1059324443340302e-001 2.4449653923511505e-001
+ <_>
+
+ 0 -1 754 6.4607188105583191e-003
+
+ -8.1396102905273438e-002 3.1605172157287598e-001
+ <_>
+
+ 0 -1 574 -8.4974901983514428e-004
+
+ 1.5621511638164520e-001 -1.6912016272544861e-001
+ <_>
+
+ 0 -1 332 -6.4049977809190750e-003
+
+ 2.2254464030265808e-001 -1.1970910429954529e-001
+ <_>
+
+ 0 -1 410 4.8453146591782570e-003
+
+ -1.0080187022686005e-001 2.5552451610565186e-001
+ <_>
+
+ 0 -1 694 1.0576892644166946e-002
+
+ -7.1883767843246460e-002 3.2368022203445435e-001
+ <_>
+
+ 0 -1 652 -2.0271514076739550e-003
+
+ 2.1205350756645203e-001 -1.4773385226726532e-001
+ <_>
+
+ 0 -1 379 1.2130783870816231e-003
+
+ -2.2663643956184387e-001 1.0520290583372116e-001
+ <_>
+
+ 0 -1 419 -7.9384088516235352e-002
+
+ -4.4897699356079102e-001 4.9417987465858459e-002
+ <_>
+
+ 0 -1 31 4.3571349233388901e-003
+
+ 3.1063990667462349e-002 -6.9149738550186157e-001
+ <_>
+
+ 0 -1 750 1.9707549363374710e-003
+
+ 4.4843826442956924e-002 -4.5625826716423035e-001
+ <_>
+
+ 0 -1 788 6.2818843871355057e-003
+
+ -9.5382869243621826e-002 2.6746883988380432e-001
+ <_>
+
+ 0 -1 789 -1.3252656906843185e-002
+
+ 4.0820258855819702e-001 -6.0815874487161636e-002
+ <_>
+
+ 0 -1 60 5.0364276394248009e-003
+
+ 9.0342856943607330e-002 -2.5253733992576599e-001
+ <_>
+
+ 0 -1 492 8.9537240564823151e-003
+
+ 3.2092411071062088e-002 -7.0339488983154297e-001
+ <_>
+
+ 0 -1 546 6.8814970552921295e-002
+
+ -7.1046918630599976e-002 3.6507198214530945e-001
+ <_>
+
+ 0 -1 544 -1.2149440124630928e-002
+
+ 3.3089646697044373e-001 -6.6771849989891052e-002
+ <_>
+
+ 0 -1 50 1.9094728631898761e-003
+
+ -1.3490848243236542e-001 1.6960476338863373e-001
+
+ <_>
+ 72
+ -2.3490672111511230e+000
+
+ <_>
+
+ 0 -1 371 1.4795187860727310e-002
+
+ -7.0123827457427979e-001 -2.0484872162342072e-002
+ <_>
+
+ 0 -1 612 2.6377664878964424e-002
+
+ -3.5620382428169250e-001 2.4889869987964630e-001
+ <_>
+
+ 0 -1 165 -1.1034142225980759e-002
+
+ 2.0675517618656158e-001 -3.3259147405624390e-001
+ <_>
+
+ 0 -1 692 -9.2857871204614639e-003
+
+ 4.4594430923461914e-001 -1.4160791039466858e-001
+ <_>
+
+ 0 -1 313 1.1126287281513214e-001
+
+ -7.9181507229804993e-002 6.0241782665252686e-001
+ <_>
+
+ 0 -1 751 3.0388862360268831e-003
+
+ -1.9209611415863037e-001 2.5241580605506897e-001
+ <_>
+
+ 0 -1 874 -2.0801391452550888e-002
+
+ 4.0978202223777771e-001 -9.8037041723728180e-002
+ <_>
+
+ 0 -1 892 1.0280778631567955e-002
+
+ -9.6344605088233948e-002 4.6578553318977356e-001
+ <_>
+
+ 0 -1 894 -5.4509467445313931e-003
+
+ 3.7336015701293945e-001 -1.0564301162958145e-001
+ <_>
+
+ 0 -1 376 -1.8031136132776737e-003
+
+ 3.5322296619415283e-001 -1.2390857189893723e-001
+ <_>
+
+ 0 -1 763 -4.7199074178934097e-003
+
+ 4.1106048226356506e-001 -9.3251600861549377e-002
+ <_>
+
+ 0 -1 323 -6.1694663017988205e-003
+
+ 3.3520108461380005e-001 -1.2836365401744843e-001
+ <_>
+
+ 0 -1 83 -6.9639906287193298e-003
+
+ 2.1963912248611450e-001 -1.8814907968044281e-001
+ <_>
+
+ 0 -1 683 -1.2535721994936466e-002
+
+ 3.8960403203964233e-001 -9.2547819018363953e-002
+ <_>
+
+ 0 -1 690 -1.6924859955906868e-002
+
+ 3.6892804503440857e-001 -9.4779089093208313e-002
+ <_>
+
+ 0 -1 54 1.6596701461821795e-003
+
+ -1.9850541651248932e-001 1.8709312379360199e-001
+ <_>
+
+ 0 -1 55 2.7687277644872665e-002
+
+ 7.0031657814979553e-002 -4.7238609194755554e-001
+ <_>
+
+ 0 -1 120 -1.1841375380754471e-002
+
+ 2.6792368292808533e-001 -1.2015427649021149e-001
+ <_>
+
+ 0 -1 261 -1.1048562824726105e-002
+
+ 3.6024233698844910e-001 -1.0290746390819550e-001
+ <_>
+
+ 0 -1 7 -6.2395762652158737e-002
+
+ -5.7112109661102295e-001 6.2251534312963486e-002
+ <_>
+
+ 0 -1 115 1.6063985228538513e-001
+
+ -7.0866517722606659e-002 4.5665851235389709e-001
+ <_>
+
+ 0 -1 232 2.1094676852226257e-001
+
+ 4.6763692051172256e-002 -7.0770156383514404e-001
+ <_>
+
+ 0 -1 358 -3.6897901445627213e-003
+
+ 3.7905600666999817e-001 -8.1804625689983368e-002
+ <_>
+
+ 0 -1 434 1.9055651500821114e-002
+
+ -1.0166674852371216e-001 2.7208462357521057e-001
+ <_>
+
+ 0 -1 947 -2.0279071759432554e-003
+
+ 3.1354761123657227e-001 -8.6894899606704712e-002
+ <_>
+
+ 0 -1 571 1.0916183236986399e-003
+
+ 7.6082363724708557e-002 -3.2986941933631897e-001
+ <_>
+
+ 0 -1 405 -5.5616937577724457e-002
+
+ -5.0169217586517334e-001 4.7203768044710159e-002
+ <_>
+
+ 0 -1 600 -2.1859644912183285e-003
+
+ -4.1108477115631104e-001 5.6136883795261383e-002
+ <_>
+
+ 0 -1 422 6.1606548726558685e-002
+
+ 3.8405187427997589e-002 -6.3146471977233887e-001
+ <_>
+
+ 0 -1 562 4.4989854097366333e-002
+
+ -7.8799270093441010e-002 3.5685274004936218e-001
+ <_>
+
+ 0 -1 900 1.4128099195659161e-002
+
+ -5.1783677190542221e-002 4.5928877592086792e-001
+ <_>
+
+ 0 -1 503 -2.2787526249885559e-002
+
+ -4.2496410012245178e-001 5.9822574257850647e-002
+ <_>
+
+ 0 -1 82 1.0302955284714699e-002
+
+ -1.5051785111427307e-001 1.8300771713256836e-001
+ <_>
+
+ 0 -1 733 -1.7985476879402995e-003
+
+ -5.0104391574859619e-001 5.1810134202241898e-002
+ <_>
+
+ 0 -1 783 -1.0919184423983097e-003
+
+ 1.6831028461456299e-001 -1.5063883364200592e-001
+ <_>
+
+ 0 -1 221 6.8745255470275879e-002
+
+ 2.5853699073195457e-002 -8.8202834129333496e-001
+ <_>
+
+ 0 -1 92 8.0964900553226471e-003
+
+ -1.4373345673084259e-001 1.6309750080108643e-001
+ <_>
+
+ 0 -1 669 -9.0615758672356606e-003
+
+ 4.4120463728904724e-001 -5.8328684419393539e-002
+ <_>
+
+ 0 -1 780 1.5157302841544151e-002
+
+ -6.2339264899492264e-002 3.7585461139678955e-001
+ <_>
+
+ 0 -1 852 -9.6248798072338104e-003
+
+ 3.3618140220642090e-001 -7.2854258120059967e-002
+ <_>
+
+ 0 -1 264 -2.6485668495297432e-003
+
+ -3.6842566728591919e-001 7.0426821708679199e-002
+ <_>
+
+ 0 -1 793 -2.5783948600292206e-002
+
+ -4.3915954232215881e-001 4.4346898794174194e-002
+ <_>
+
+ 0 -1 691 3.8045123219490051e-002
+
+ 2.0367870107293129e-002 -9.1361635923385620e-001
+ <_>
+
+ 0 -1 885 6.5762884914875031e-003
+
+ -7.7705778181552887e-002 2.7798372507095337e-001
+ <_>
+
+ 0 -1 527 1.4522124081850052e-002
+
+ -1.5169607102870941e-001 1.6986666619777679e-001
+ <_>
+
+ 0 -1 263 -2.9386302456259727e-002
+
+ 1.5261377394199371e-001 -1.4140434563159943e-001
+ <_>
+
+ 0 -1 252 -1.8363123759627342e-002
+
+ 5.7111293077468872e-001 -4.9465496093034744e-002
+ <_>
+
+ 0 -1 674 -5.1241345703601837e-002
+
+ -5.5350369215011597e-001 4.6895623207092285e-002
+ <_>
+
+ 0 -1 277 2.9151788912713528e-003
+
+ -9.0461745858192444e-002 2.4859617650508881e-001
+ <_>
+
+ 0 -1 749 1.7963855061680079e-003
+
+ 4.5411933213472366e-002 -5.4377090930938721e-001
+ <_>
+
+ 0 -1 198 4.7771027311682701e-003
+
+ -1.8385021388530731e-001 1.1213029175996780e-001
+ <_>
+
+ 0 -1 850 -1.1631837114691734e-003
+
+ 1.9307336211204529e-001 -1.0863032937049866e-001
+ <_>
+
+ 0 -1 739 -6.7155435681343079e-003
+
+ 3.4966903924942017e-001 -5.8376740664243698e-002
+ <_>
+
+ 0 -1 195 -6.6494196653366089e-002
+
+ 3.4874725341796875e-001 -5.7571310549974442e-002
+ <_>
+
+ 0 -1 750 -1.8951734527945518e-003
+
+ -5.0567263364791870e-001 4.2631916701793671e-002
+ <_>
+
+ 0 -1 832 -4.3506296351552010e-003
+
+ -5.0467538833618164e-001 3.8686964660882950e-002
+ <_>
+
+ 0 -1 725 5.5216029286384583e-003
+
+ -8.3722010254859924e-002 2.5723373889923096e-001
+ <_>
+
+ 0 -1 727 1.4174621552228928e-002
+
+ -5.2497696131467819e-002 4.3525427579879761e-001
+ <_>
+
+ 0 -1 25 1.1252675205469131e-002
+
+ -1.3312049210071564e-001 1.6167336702346802e-001
+ <_>
+
+ 0 -1 67 7.9240947961807251e-003
+
+ -1.1959484219551086e-001 1.6835211217403412e-001
+ <_>
+
+ 0 -1 784 1.0558717185631394e-003
+
+ -1.2297991663217545e-001 1.5906786918640137e-001
+ <_>
+
+ 0 -1 615 4.5906797051429749e-002
+
+ 3.6611214280128479e-002 -5.4427564144134521e-001
+ <_>
+
+ 0 -1 702 -9.5631275326013565e-003
+
+ 2.2376507520675659e-001 -9.2235445976257324e-002
+ <_>
+
+ 0 -1 290 -1.7671093344688416e-002
+
+ -6.2817609310150146e-001 3.3949319273233414e-002
+ <_>
+
+ 0 -1 764 -1.7188221681863070e-003
+
+ 2.0224046707153320e-001 -1.0232327878475189e-001
+ <_>
+
+ 0 -1 367 1.5140373259782791e-002
+
+ -5.6504372507333755e-002 3.4895980358123779e-001
+ <_>
+
+ 0 -1 366 -2.8949489817023277e-002
+
+ 3.1860530376434326e-001 -6.4782403409481049e-002
+ <_>
+
+ 0 -1 937 1.1647377163171768e-002
+
+ -3.6289941519498825e-002 5.4892385005950928e-001
+ <_>
+
+ 0 -1 741 -7.8217741101980209e-003
+
+ 2.0226673781871796e-001 -9.2000789940357208e-002
+ <_>
+
+ 0 -1 800 -8.4432046860456467e-003
+
+ 1.7921546101570129e-001 -1.0415823757648468e-001
+ <_>
+
+ 0 -1 854 -1.5566672198474407e-002
+
+ 3.9981749653816223e-001 -5.3077172487974167e-002
+ <_>
+
+ 0 -1 587 -1.2464943341910839e-002
+
+ 2.2552676498889923e-001 -9.0897649526596069e-002
+
+ <_>
+ 77
+ -2.2761957645416260e+000
+
+ <_>
+
+ 0 -1 402 -2.0046032965183258e-002
+
+ 2.7538803219795227e-001 -6.1105114221572876e-001
+ <_>
+
+ 0 -1 430 9.1837458312511444e-003
+
+ -4.0790805220603943e-001 2.0902955532073975e-001
+ <_>
+
+ 0 -1 21 4.2203110642731190e-003
+
+ -2.1331593394279480e-001 2.8156790137290955e-001
+ <_>
+
+ 0 -1 673 -1.4000188559293747e-002
+
+ 5.4547309875488281e-001 -9.6670299768447876e-002
+ <_>
+
+ 0 -1 926 -7.1464567445218563e-003
+
+ 4.6416798233985901e-001 -9.1218575835227966e-002
+ <_>
+
+ 0 -1 389 -1.0070230066776276e-001
+
+ -6.6349637508392334e-001 7.1100234985351563e-002
+ <_>
+
+ 0 -1 95 1.0696215555071831e-002
+
+ -1.9745405018329620e-001 2.0773608982563019e-001
+ <_>
+
+ 0 -1 149 -3.5202980041503906e-002
+
+ -7.6735103130340576e-001 5.0265740603208542e-002
+ <_>
+
+ 0 -1 311 7.4009604752063751e-002
+
+ -7.4828110635280609e-002 5.6469208002090454e-001
+ <_>
+
+ 0 -1 849 3.9156894199550152e-003
+
+ -1.3954170048236847e-001 2.7583837509155273e-001
+ <_>
+
+ 0 -1 335 -5.3920033387839794e-003
+
+ 3.0497005581855774e-001 -1.1606794595718384e-001
+ <_>
+
+ 0 -1 861 3.7412224337458611e-003
+
+ -7.9430311918258667e-002 4.4621026515960693e-001
+ <_>
+
+ 0 -1 868 7.1699996478855610e-003
+
+ -1.0092698037624359e-001 3.4257224202156067e-001
+ <_>
+
+ 0 -1 256 2.1885338425636292e-001
+
+ 5.8548614382743835e-002 -6.5264624357223511e-001
+ <_>
+
+ 0 -1 771 -5.3951903246343136e-003
+
+ 2.4228222668170929e-001 -1.3535094261169434e-001
+ <_>
+
+ 0 -1 695 -1.1738229077309370e-003
+
+ -4.7875782847404480e-001 6.8366907536983490e-002
+ <_>
+
+ 0 -1 666 2.1457400172948837e-002
+
+ -7.1118980646133423e-002 4.5637446641921997e-001
+ <_>
+
+ 0 -1 309 1.2115674093365669e-002
+
+ -5.8202955871820450e-002 4.6163806319236755e-001
+ <_>
+
+ 0 -1 273 -1.8007406964898109e-002
+
+ 3.2520860433578491e-001 -8.0533631145954132e-002
+ <_>
+
+ 0 -1 837 -1.2486811727285385e-002
+
+ 4.1279473900794983e-001 -5.1714207977056503e-002
+ <_>
+
+ 0 -1 820 -6.8574929609894753e-003
+
+ 2.6760685443878174e-001 -1.0764075815677643e-001
+ <_>
+
+ 0 -1 823 1.5099495649337769e-002
+
+ -7.4429087340831757e-002 4.6331611275672913e-001
+ <_>
+
+ 0 -1 418 5.6357895955443382e-003
+
+ 4.3343700468540192e-002 -6.8444931507110596e-001
+ <_>
+
+ 0 -1 496 -3.8149006664752960e-002
+
+ -5.0210982561111450e-001 4.6030189841985703e-002
+ <_>
+
+ 0 -1 488 6.9609917700290680e-002
+
+ -1.1487975716590881e-001 2.4527166783809662e-001
+ <_>
+
+ 0 -1 718 -1.4793819282203913e-003
+
+ -4.9200877547264099e-001 5.0612244755029678e-002
+ <_>
+
+ 0 -1 279 1.5615550801157951e-003
+
+ -1.4539672434329987e-001 1.8345473706722260e-001
+ <_>
+
+ 0 -1 444 -7.9339537769556046e-003
+
+ -6.9242167472839355e-001 3.2313633710145950e-002
+ <_>
+
+ 0 -1 69 3.8695998489856720e-002
+
+ 3.5442691296339035e-002 -5.8349174261093140e-001
+ <_>
+
+ 0 -1 27 3.4779291599988937e-002
+
+ -1.5399172902107239e-001 1.6672950983047485e-001
+ <_>
+
+ 0 -1 411 1.0367618873715401e-002
+
+ -1.0087994486093521e-001 2.7080667018890381e-001
+ <_>
+
+ 0 -1 924 -1.2352936901152134e-003
+
+ 2.6111871004104614e-001 -8.5407368838787079e-002
+ <_>
+
+ 0 -1 641 -3.8098993245512247e-003
+
+ -6.4659863710403442e-001 3.7423413246870041e-002
+ <_>
+
+ 0 -1 137 1.4491343870759010e-002
+
+ 1.9647786393761635e-002 -9.1479778289794922e-001
+ <_>
+
+ 0 -1 394 -8.3385318517684937e-002
+
+ -7.1166336536407471e-001 2.2575991228222847e-002
+ <_>
+
+ 0 -1 780 -1.9848600029945374e-002
+
+ 5.5954068899154663e-001 -4.1730873286724091e-002
+ <_>
+
+ 0 -1 241 -2.0697467029094696e-002
+
+ 3.3735945820808411e-001 -6.2523342669010162e-002
+ <_>
+
+ 0 -1 300 -1.1017382144927979e-002
+
+ 2.6414296030998230e-001 -1.0402554273605347e-001
+ <_>
+
+ 0 -1 78 2.7749380096793175e-003
+
+ -1.7511576414108276e-001 1.1715058237314224e-001
+ <_>
+
+ 0 -1 648 -1.5251778066158295e-002
+
+ 4.3819862604141235e-001 -4.5249339193105698e-002
+ <_>
+
+ 0 -1 108 1.1041477322578430e-002
+
+ 3.4502815455198288e-002 -6.0594552755355835e-001
+ <_>
+
+ 0 -1 112 -1.2095808982849121e-002
+
+ 2.3661912977695465e-001 -9.1371931135654449e-002
+ <_>
+
+ 0 -1 157 2.7025766670703888e-002
+
+ -8.9995227754116058e-002 2.4357070028781891e-001
+ <_>
+
+ 0 -1 253 2.0237984135746956e-002
+
+ -8.2986801862716675e-002 2.5786581635475159e-001
+ <_>
+
+ 0 -1 179 -2.5734171271324158e-002
+
+ -8.0328714847564697e-001 2.3963116109371185e-002
+ <_>
+
+ 0 -1 898 -7.0260283537209034e-003
+
+ 3.1706759333610535e-001 -6.8345665931701660e-002
+ <_>
+
+ 0 -1 785 8.9800115674734116e-003
+
+ -1.0068616271018982e-001 1.8837621808052063e-001
+ <_>
+
+ 0 -1 16 7.1165725588798523e-002
+
+ 2.9139470309019089e-002 -7.1776688098907471e-001
+ <_>
+
+ 0 -1 491 1.2540835887193680e-002
+
+ 2.8786318376660347e-002 -5.7155269384384155e-001
+ <_>
+
+ 0 -1 686 1.4826809987425804e-002
+
+ -5.3431484848260880e-002 3.7567591667175293e-001
+ <_>
+
+ 0 -1 756 -2.0885471254587173e-002
+
+ -5.5986213684082031e-001 3.5628255456686020e-002
+ <_>
+
+ 0 -1 395 -4.4493626803159714e-002
+
+ -6.0325270891189575e-001 2.8809506446123123e-002
+ <_>
+
+ 0 -1 469 -1.1605422478169203e-003
+
+ 1.3856917619705200e-001 -1.3231372833251953e-001
+ <_>
+
+ 0 -1 10 1.0227273404598236e-001
+
+ -6.3532300293445587e-002 3.1242474913597107e-001
+ <_>
+
+ 0 -1 134 -2.9290396720170975e-002
+
+ 1.9631637632846832e-001 -1.1773347854614258e-001
+ <_>
+
+ 0 -1 249 -2.7526013553142548e-002
+
+ -5.4162657260894775e-001 3.7284608930349350e-002
+ <_>
+
+ 0 -1 192 -6.8295732140541077e-002
+
+ -6.8661803007125854e-001 2.2030472755432129e-002
+ <_>
+
+ 0 -1 65 3.7252403795719147e-002
+
+ 1.4609245583415031e-002 -9.1920310258865356e-001
+ <_>
+
+ 0 -1 748 1.5438124537467957e-003
+
+ 3.9837431162595749e-002 -3.8516902923583984e-001
+ <_>
+
+ 0 -1 361 1.8146948888897896e-002
+
+ -8.1836819648742676e-002 2.2508986294269562e-001
+ <_>
+
+ 0 -1 153 -2.9618924017995596e-003
+
+ 1.7523658275604248e-001 -1.1428176611661911e-001
+ <_>
+
+ 0 -1 591 1.8150422722101212e-002
+
+ 3.3836413174867630e-002 -5.2116078138351440e-001
+ <_>
+
+ 0 -1 4 -3.3758711069822311e-002
+
+ 3.9958250522613525e-001 -4.5763287693262100e-002
+ <_>
+
+ 0 -1 79 -1.4841533266007900e-003
+
+ 1.6825924813747406e-001 -1.0908807814121246e-001
+ <_>
+
+ 0 -1 255 1.3028753455728292e-003
+
+ -1.0276191681623459e-001 1.8539939820766449e-001
+ <_>
+
+ 0 -1 920 1.0365190915763378e-002
+
+ -3.8271062076091766e-002 4.6489492058753967e-001
+ <_>
+
+ 0 -1 917 6.0222409665584564e-003
+
+ -6.5577961504459381e-002 2.7879896759986877e-001
+ <_>
+
+ 0 -1 105 1.0119758546352386e-001
+
+ -2.8418583795428276e-002 5.9041601419448853e-001
+ <_>
+
+ 0 -1 9 7.1856275200843811e-002
+
+ 2.8918648138642311e-002 -7.6654183864593506e-001
+ <_>
+
+ 0 -1 921 2.6606030762195587e-002
+
+ -6.2962368130683899e-002 3.0662769079208374e-001
+ <_>
+
+ 0 -1 384 1.5946386381983757e-002
+
+ -5.4566886276006699e-002 3.1234565377235413e-001
+ <_>
+
+ 0 -1 493 -8.2057155668735504e-003
+
+ 2.1779660880565643e-001 -8.3498664200305939e-002
+ <_>
+
+ 0 -1 270 1.2946184724569321e-002
+
+ 3.5179842263460159e-002 -5.1891100406646729e-001
+ <_>
+
+ 0 -1 141 -8.8035371154546738e-003
+
+ -4.6259808540344238e-001 3.4376677125692368e-002
+ <_>
+
+ 0 -1 477 -4.6518794260919094e-004
+
+ -2.6353842020034790e-001 6.2585823237895966e-002
+ <_>
+
+ 0 -1 743 2.4100966751575470e-002
+
+ 2.1097198128700256e-002 -7.4997889995574951e-001
+ <_>
+
+ 0 -1 170 -6.7410841584205627e-003
+
+ -8.7101519107818604e-001 1.3417764566838741e-002
+
+ <_>
+ 88
+ -2.2931215763092041e+000
+
+ <_>
+
+ 0 -1 400 -3.4661620855331421e-002
+
+ 2.1858149766921997e-001 -6.1113607883453369e-001
+ <_>
+
+ 0 -1 130 -8.0369092524051666e-002
+
+ 2.4827747046947479e-001 -3.6355212330818176e-001
+ <_>
+
+ 0 -1 911 2.5022951886057854e-003
+
+ -2.3158867657184601e-001 2.7031692862510681e-001
+ <_>
+
+ 0 -1 946 -6.8189981393516064e-003
+
+ 4.1294625401496887e-001 -1.2155807018280029e-001
+ <_>
+
+ 0 -1 459 3.2973052002489567e-003
+
+ -1.9231098890304565e-001 2.4345158040523529e-001
+ <_>
+
+ 0 -1 484 -6.6328542307019234e-003
+
+ -5.9019386768341064e-001 6.9055899977684021e-002
+ <_>
+
+ 0 -1 318 4.7803454101085663e-002
+
+ -5.1415871828794479e-002 5.9312266111373901e-001
+ <_>
+
+ 0 -1 350 1.3619948178529739e-002
+
+ -1.3920906186103821e-001 2.6931121945381165e-001
+ <_>
+
+ 0 -1 383 -3.7001757882535458e-003
+
+ -2.6682609319686890e-001 1.4955024421215057e-001
+ <_>
+
+ 0 -1 481 1.5951462090015411e-002
+
+ 3.0041305348277092e-002 -6.7943179607391357e-001
+ <_>
+
+ 0 -1 478 2.3432243615388870e-003
+
+ 4.9472317099571228e-002 -7.3165643215179443e-001
+ <_>
+
+ 0 -1 423 -4.0219593793153763e-003
+
+ -3.9633533358573914e-001 8.4367558360099792e-002
+ <_>
+
+ 0 -1 942 1.3890343718230724e-002
+
+ -1.1078495532274246e-001 3.0365592241287231e-001
+ <_>
+
+ 0 -1 777 -1.2505413033068180e-003
+
+ 2.0580539107322693e-001 -1.3080060482025146e-001
+ <_>
+
+ 0 -1 132 1.0764427483081818e-001
+
+ 7.7789157629013062e-002 -3.3906123042106628e-001
+ <_>
+
+ 0 -1 631 4.3811961077153683e-003
+
+ -1.1201550066471100e-001 2.5211933255195618e-001
+ <_>
+
+ 0 -1 686 -1.2142172083258629e-002
+
+ 3.7872961163520813e-001 -7.7070862054824829e-002
+ <_>
+
+ 0 -1 865 -4.4353669509291649e-003
+
+ 2.1270920336246490e-001 -1.2447933107614517e-001
+ <_>
+
+ 0 -1 619 1.4904401032254100e-003
+
+ 5.6515082716941833e-002 -5.1137989759445190e-001
+ <_>
+
+ 0 -1 792 -1.4859709888696671e-002
+
+ 4.4488805532455444e-001 -6.3839435577392578e-002
+ <_>
+
+ 0 -1 515 2.5369194336235523e-003
+
+ -1.4258751273155212e-001 1.8267530202865601e-001
+ <_>
+
+ 0 -1 558 -3.8392089772969484e-003
+
+ 2.3361504077911377e-001 -1.1508828401565552e-001
+ <_>
+
+ 0 -1 717 1.1982237920165062e-003
+
+ 4.8276327550411224e-002 -4.9198591709136963e-001
+ <_>
+
+ 0 -1 378 -1.8510858062654734e-003
+
+ 1.4056424796581268e-001 -1.6454231739044189e-001
+ <_>
+
+ 0 -1 918 -1.2120591476559639e-002
+
+ 3.7157261371612549e-001 -6.2530189752578735e-002
+ <_>
+
+ 0 -1 401 1.1447809636592865e-002
+
+ 4.1043214499950409e-002 -5.2705597877502441e-001
+ <_>
+
+ 0 -1 511 -1.4917021617293358e-002
+
+ 4.0471947193145752e-001 -5.6559596210718155e-002
+ <_>
+
+ 0 -1 472 3.1782940030097961e-002
+
+ 3.1669221818447113e-002 -7.1189236640930176e-001
+ <_>
+
+ 0 -1 204 2.8533251024782658e-003
+
+ -1.3680589199066162e-001 1.5116590261459351e-001
+ <_>
+
+ 0 -1 780 -2.0387873053550720e-002
+
+ 5.3041487932205200e-001 -3.6561626940965652e-002
+ <_>
+
+ 0 -1 225 1.6838125884532928e-002
+
+ -7.6846949756145477e-002 2.3742672801017761e-001
+ <_>
+
+ 0 -1 109 6.1867576092481613e-002
+
+ 3.4019146114587784e-002 -5.8948117494583130e-001
+ <_>
+
+ 0 -1 36 1.9018281251192093e-002
+
+ -8.8034287095069885e-002 2.8218820691108704e-001
+ <_>
+
+ 0 -1 288 9.3320291489362717e-003
+
+ 3.1055718660354614e-002 -6.0995835065841675e-001
+ <_>
+
+ 0 -1 553 -1.7446001293137670e-003
+
+ -3.1894925236701965e-001 5.7640552520751953e-002
+ <_>
+
+ 0 -1 497 -3.7551252171397209e-004
+
+ -2.9193779826164246e-001 6.5971598029136658e-002
+ <_>
+
+ 0 -1 906 -3.6254348233342171e-003
+
+ -5.2228099107742310e-001 3.2974440604448318e-002
+ <_>
+
+ 0 -1 49 3.1154025346040726e-003
+
+ 3.4256361424922943e-002 -4.9392226338386536e-001
+ <_>
+
+ 0 -1 761 -6.5814116969704628e-003
+
+ -8.5536497831344604e-001 1.7195183783769608e-002
+ <_>
+
+ 0 -1 154 3.6019994877278805e-004
+
+ -1.1677443981170654e-001 1.4939773082733154e-001
+ <_>
+
+ 0 -1 42 2.1521452814340591e-002
+
+ 6.1724990606307983e-002 -3.0582705140113831e-001
+ <_>
+
+ 0 -1 304 -3.1574545428156853e-003
+
+ 2.7675440907478333e-001 -7.9728044569492340e-002
+ <_>
+
+ 0 -1 608 6.8585420958697796e-003
+
+ -4.5498296618461609e-002 4.0476050972938538e-001
+ <_>
+
+ 0 -1 201 2.3597612977027893e-002
+
+ -6.8263813853263855e-002 2.7455106377601624e-001
+ <_>
+
+ 0 -1 182 4.1193626821041107e-002
+
+ 2.7521848678588867e-002 -7.5676482915878296e-001
+ <_>
+
+ 0 -1 133 -1.2081373482942581e-002
+
+ -6.3366323709487915e-001 2.1798284724354744e-002
+ <_>
+
+ 0 -1 716 -4.3834196403622627e-003
+
+ 2.2090788185596466e-001 -8.4348171949386597e-002
+ <_>
+
+ 0 -1 619 -9.1258285101503134e-004
+
+ -3.3701941370964050e-001 5.0720885396003723e-002
+ <_>
+
+ 0 -1 675 -8.5975639522075653e-003
+
+ 1.1742196232080460e-001 -1.5156917273998260e-001
+ <_>
+
+ 0 -1 904 -7.4663115665316582e-003
+
+ 4.0097141265869141e-001 -4.4417705386877060e-002
+ <_>
+
+ 0 -1 193 1.2276999652385712e-002
+
+ -7.3920600116252899e-002 2.5140073895454407e-001
+ <_>
+
+ 0 -1 283 -2.6504354551434517e-002
+
+ 1.3177506625652313e-001 -1.5368436276912689e-001
+ <_>
+
+ 0 -1 359 -2.9700677841901779e-002
+
+ -5.3993326425552368e-001 3.4572057425975800e-002
+ <_>
+
+ 0 -1 549 -1.0448409244418144e-002
+
+ 4.0107232332229614e-001 -4.6194877475500107e-002
+ <_>
+
+ 0 -1 274 5.0177536904811859e-003
+
+ -6.5788470208644867e-002 2.5757649540901184e-001
+ <_>
+
+ 0 -1 509 2.3238372057676315e-002
+
+ 2.3455925285816193e-002 -7.7699542045593262e-001
+ <_>
+
+ 0 -1 908 -4.9220167100429535e-002
+
+ 3.9117750525474548e-001 -4.7477778047323227e-002
+ <_>
+
+ 0 -1 936 -9.7046373412013054e-003
+
+ 3.3891412615776062e-001 -5.0453528761863708e-002
+ <_>
+
+ 0 -1 856 1.6913980245590210e-002
+
+ 4.0467191487550735e-002 -4.3838000297546387e-001
+ <_>
+
+ 0 -1 129 -7.5155749917030334e-002
+
+ -6.0346192121505737e-001 2.7455519884824753e-002
+ <_>
+
+ 0 -1 436 1.1202652007341385e-002
+
+ 2.4983508512377739e-002 -5.8596074581146240e-001
+ <_>
+
+ 0 -1 266 -3.9950847625732422e-002
+
+ -5.3495115041732788e-001 2.9331879690289497e-002
+ <_>
+
+ 0 -1 1 7.1143209934234619e-003
+
+ 3.1055316329002380e-002 -5.1785355806350708e-001
+ <_>
+
+ 0 -1 930 -2.7165055274963379e-002
+
+ 3.4092447161674500e-001 -4.8697970807552338e-002
+ <_>
+
+ 0 -1 135 1.5079226344823837e-002
+
+ -1.2215464562177658e-001 1.3460277020931244e-001
+ <_>
+
+ 0 -1 842 5.4478123784065247e-003
+
+ -9.0178862214088440e-002 1.9025686383247375e-001
+ <_>
+
+ 0 -1 381 -7.4798073619604111e-003
+
+ 2.4245217442512512e-001 -6.8944938480854034e-002
+ <_>
+
+ 0 -1 412 2.9248408973217010e-002
+
+ -8.9382030069828033e-002 1.9680260121822357e-001
+ <_>
+
+ 0 -1 613 -5.1055247895419598e-003
+
+ -4.0537586808204651e-001 4.3955769389867783e-002
+ <_>
+
+ 0 -1 417 -5.7464219629764557e-002
+
+ -7.8487586975097656e-001 1.8840260803699493e-002
+ <_>
+
+ 0 -1 682 -1.3099622447043657e-003
+
+ 1.2043049931526184e-001 -1.2602043151855469e-001
+ <_>
+
+ 0 -1 409 -1.0759031400084496e-002
+
+ 4.6101579070091248e-001 -3.9381790906190872e-002
+ <_>
+
+ 0 -1 440 -4.4700078666210175e-002
+
+ -4.9018231034278870e-001 3.9805438369512558e-002
+ <_>
+
+ 0 -1 697 2.6103520765900612e-002
+
+ 3.3186998218297958e-002 -4.4388863444328308e-001
+ <_>
+
+ 0 -1 722 -3.0565187335014343e-003
+
+ -3.1978246569633484e-001 4.8716515302658081e-002
+ <_>
+
+ 0 -1 113 6.5829858183860779e-002
+
+ 1.8730893731117249e-002 -7.3743104934692383e-001
+ <_>
+
+ 0 -1 57 2.5423550978302956e-003
+
+ 6.1064947396516800e-002 -2.3935855925083160e-001
+ <_>
+
+ 0 -1 755 -1.7830528318881989e-002
+
+ 3.3646425604820251e-001 -4.3943304568529129e-002
+ <_>
+
+ 0 -1 223 5.9305625036358833e-003
+
+ -6.8004354834556580e-002 2.1438401937484741e-001
+ <_>
+
+ 0 -1 156 -4.7256931662559509e-002
+
+ 2.3610806465148926e-001 -7.9913109540939331e-002
+ <_>
+
+ 0 -1 146 1.7100328579545021e-002
+
+ -4.8104494810104370e-002 3.4734794497489929e-001
+ <_>
+
+ 0 -1 174 -3.4349232912063599e-002
+
+ 1.6535361111164093e-001 -8.9516580104827881e-002
+ <_>
+
+ 0 -1 370 1.6256177332252264e-003
+
+ -7.9110637307167053e-002 1.9441387057304382e-001
+ <_>
+
+ 0 -1 724 -1.8217334523797035e-002
+
+ 4.5723637938499451e-001 -3.1193139031529427e-002
+ <_>
+
+ 0 -1 749 2.1156244911253452e-003
+
+ 2.7684733271598816e-002 -5.4580938816070557e-001
+ <_>
+
+ 0 -1 169 -2.6387263089418411e-002
+
+ 2.4881765246391296e-001 -5.7665079832077026e-002
+ <_>
+
+ 0 -1 18 4.5990861952304840e-002
+
+ -1.2064179033041000e-001 1.2435591220855713e-001
+ <_>
+
+ 0 -1 523 1.0681749880313873e-001
+
+ 5.0562918186187744e-002 -3.4403973817825317e-001
+
+ <_>
+ 85
+ -2.2744355201721191e+000
+
+ <_>
+
+ 0 -1 252 1.6897995024919510e-002
+
+ -6.9196498394012451e-001 -5.5616941303014755e-002
+ <_>
+
+ 0 -1 862 1.1701794341206551e-002
+
+ -2.7923116087913513e-001 3.9880016446113586e-001
+ <_>
+
+ 0 -1 618 2.7141885831952095e-002
+
+ 1.4071331918239594e-001 -4.8508083820343018e-001
+ <_>
+
+ 0 -1 949 -1.4755494194105268e-003
+
+ 3.7315878272056580e-001 -1.4565770328044891e-001
+ <_>
+
+ 0 -1 464 1.5615923330187798e-003
+
+ -9.6974156796932220e-002 3.6338686943054199e-001
+ <_>
+
+ 0 -1 292 -3.5046115517616272e-002
+
+ 6.5541946887969971e-001 -6.3480094075202942e-002
+ <_>
+
+ 0 -1 471 -2.7439640834927559e-003
+
+ -4.4147095084190369e-001 8.3881981670856476e-002
+ <_>
+
+ 0 -1 128 1.3140615075826645e-002
+
+ 6.2391642481088638e-002 -5.2230197191238403e-001
+ <_>
+
+ 0 -1 624 -2.3408148437738419e-002
+
+ -5.7339686155319214e-001 6.4651705324649811e-002
+ <_>
+
+ 0 -1 878 1.9269579788669944e-003
+
+ -1.3906709849834442e-001 2.6013106107711792e-001
+ <_>
+
+ 0 -1 510 9.1457850066944957e-004
+
+ 8.7518453598022461e-002 -4.9381819367408752e-001
+ <_>
+
+ 0 -1 76 -9.2652775347232819e-003
+
+ -4.3321701884269714e-001 5.2230410277843475e-002
+ <_>
+
+ 0 -1 437 -2.0753231365233660e-003
+
+ -5.0082236528396606e-001 6.1019111424684525e-002
+ <_>
+
+ 0 -1 791 1.9411731045693159e-003
+
+ -7.8411623835563660e-002 3.5945037007331848e-001
+ <_>
+
+ 0 -1 774 -1.2042262824252248e-003
+
+ 2.4952164292335510e-001 -1.1495979875326157e-001
+ <_>
+
+ 0 -1 428 4.5398853719234467e-002
+
+ 4.9534358084201813e-002 -5.7811236381530762e-001
+ <_>
+
+ 0 -1 243 1.6548346728086472e-002
+
+ 4.0716260671615601e-002 -5.4614287614822388e-001
+ <_>
+
+ 0 -1 747 -2.6393149048089981e-002
+
+ -6.4222121238708496e-001 3.5461250692605972e-002
+ <_>
+
+ 0 -1 315 -7.9056806862354279e-003
+
+ 2.7603831887245178e-001 -9.6884578466415405e-002
+ <_>
+
+ 0 -1 294 -8.6138453334569931e-003
+
+ 3.4293037652969360e-001 -9.2569984495639801e-002
+ <_>
+
+ 0 -1 220 1.2120688334107399e-002
+
+ 4.1071321815252304e-002 -5.9789633750915527e-001
+ <_>
+
+ 0 -1 213 -2.3794029839336872e-003
+
+ 1.7102584242820740e-001 -1.3294184207916260e-001
+ <_>
+
+ 0 -1 667 1.5191107988357544e-002
+
+ -5.9681247919797897e-002 3.9729467034339905e-001
+ <_>
+
+ 0 -1 497 -9.4484502915292978e-004
+
+ -4.9290084838867188e-001 4.8412941396236420e-002
+ <_>
+
+ 0 -1 110 -7.5291972607374191e-003
+
+ -4.4807717204093933e-001 4.6233657747507095e-002
+ <_>
+
+ 0 -1 226 2.0139738917350769e-002
+
+ -8.7880477309226990e-002 2.5611591339111328e-001
+ <_>
+
+ 0 -1 934 -6.2278993427753448e-003
+
+ 3.8167408108711243e-001 -5.7190407067537308e-002
+ <_>
+
+ 0 -1 485 -1.4294605702161789e-002
+
+ 2.2094787657260895e-001 -1.0475759208202362e-001
+ <_>
+
+ 0 -1 707 -5.4574096575379372e-003
+
+ 2.4806049466133118e-001 -8.7989374995231628e-002
+ <_>
+
+ 0 -1 928 1.1277779936790466e-002
+
+ -6.8190395832061768e-002 3.0197840929031372e-001
+ <_>
+
+ 0 -1 193 1.2542145326733589e-002
+
+ -7.4142687022686005e-002 2.5129452347755432e-001
+ <_>
+
+ 0 -1 161 -1.0840824991464615e-001
+
+ -6.1061251163482666e-001 3.2729376107454300e-002
+ <_>
+
+ 0 -1 403 1.5083145117387176e-003
+
+ -7.0102758705615997e-002 3.0823647975921631e-001
+ <_>
+
+ 0 -1 745 -6.4324252307415009e-002
+
+ -7.6457482576370239e-001 2.8049679473042488e-002
+ <_>
+
+ 0 -1 635 -1.0857153683900833e-002
+
+ 3.0212178826332092e-001 -6.9806925952434540e-002
+ <_>
+
+ 0 -1 93 5.6619346141815186e-002
+
+ -1.2564770877361298e-001 1.7084783315658569e-001
+ <_>
+
+ 0 -1 576 -2.4015609174966812e-002
+
+ -4.6767771244049072e-001 4.4055789709091187e-002
+ <_>
+
+ 0 -1 554 1.6571693122386932e-002
+
+ -1.5079098939895630e-001 1.3097193837165833e-001
+ <_>
+
+ 0 -1 452 -1.3210725039243698e-002
+
+ 4.0740290284156799e-001 -4.6674277633428574e-002
+ <_>
+
+ 0 -1 121 -9.6322391182184219e-003
+
+ -3.4347525238990784e-001 5.1074773073196411e-002
+ <_>
+
+ 0 -1 155 1.2867329642176628e-002
+
+ -9.5492877066135406e-002 1.9662295281887054e-001
+ <_>
+
+ 0 -1 915 2.5710439309477806e-002
+
+ 2.4007089436054230e-002 -7.1648633480072021e-001
+ <_>
+
+ 0 -1 116 -7.6815150678157806e-003
+
+ -6.2318617105484009e-001 2.3343794047832489e-002
+ <_>
+
+ 0 -1 709 -3.0568044167011976e-003
+
+ 1.6469573974609375e-001 -1.0857288539409637e-001
+ <_>
+
+ 0 -1 35 7.0850662887096405e-002
+
+ 2.7203138917684555e-002 -6.5618228912353516e-001
+ <_>
+
+ 0 -1 639 -1.9809347577393055e-003
+
+ -6.1460441350936890e-001 2.4520153179764748e-002
+ <_>
+
+ 0 -1 236 7.0611112751066685e-003
+
+ -7.4253976345062256e-002 2.5537955760955811e-001
+ <_>
+
+ 0 -1 186 3.0076294206082821e-003
+
+ -9.6944920718669891e-002 2.4430949985980988e-001
+ <_>
+
+ 0 -1 172 -3.0732229351997375e-002
+
+ -6.0257941484451294e-001 2.9267333447933197e-002
+ <_>
+
+ 0 -1 450 1.6364458948373795e-002
+
+ 2.3035932332277298e-002 -6.2698912620544434e-001
+ <_>
+
+ 0 -1 114 1.4988467097282410e-001
+
+ -4.8197094351053238e-002 3.9452686905860901e-001
+ <_>
+
+ 0 -1 197 -8.2194441929459572e-003
+
+ 1.0664895921945572e-001 -1.8545584380626678e-001
+ <_>
+
+ 0 -1 84 -8.2502886652946472e-003
+
+ 1.2596343457698822e-001 -1.4223846793174744e-001
+ <_>
+
+ 0 -1 73 1.3518449850380421e-002
+
+ 7.5415953993797302e-002 -2.6633748412132263e-001
+ <_>
+
+ 0 -1 446 -1.4376571401953697e-002
+
+ 3.4983170032501221e-001 -4.7824632376432419e-002
+ <_>
+
+ 0 -1 602 1.2734688818454742e-002
+
+ -5.0567589700222015e-002 3.5038754343986511e-001
+ <_>
+
+ 0 -1 857 -1.3710462953895330e-003
+
+ 1.8082229793071747e-001 -9.6974305808544159e-002
+ <_>
+
+ 0 -1 306 -2.6267360895872116e-002
+
+ 4.1006618738174438e-001 -4.0112689137458801e-002
+ <_>
+
+ 0 -1 59 2.1102664992213249e-002
+
+ 2.7978396043181419e-002 -5.8651155233383179e-001
+ <_>
+
+ 0 -1 909 -1.4474790543317795e-002
+
+ 3.6871808767318726e-001 -4.5918777585029602e-002
+ <_>
+
+ 0 -1 817 7.2440858930349350e-003
+
+ -7.5330309569835663e-002 2.0376025140285492e-001
+ <_>
+
+ 0 -1 815 1.0546022094786167e-002
+
+ -6.1415266245603561e-002 3.0458399653434753e-001
+ <_>
+
+ 0 -1 101 5.5407796055078506e-002
+
+ 2.5191115215420723e-002 -6.5944659709930420e-001
+ <_>
+
+ 0 -1 91 9.4949062913656235e-003
+
+ -1.5944498777389526e-001 1.0568149387836456e-001
+ <_>
+
+ 0 -1 925 -6.2020965851843357e-003
+
+ 2.7509790658950806e-001 -6.5234497189521790e-002
+ <_>
+
+ 0 -1 507 1.3317565619945526e-001
+
+ 2.2181767970323563e-002 -7.3483341932296753e-001
+ <_>
+
+ 0 -1 448 2.5796357076615095e-003
+
+ 1.9557425752282143e-002 -6.5313297510147095e-001
+ <_>
+
+ 0 -1 390 3.4660965204238892e-002
+
+ -5.1162503659725189e-002 3.2590973377227783e-001
+ <_>
+
+ 0 -1 30 9.5607116818428040e-002
+
+ -2.4739582091569901e-002 5.7837259769439697e-001
+ <_>
+
+ 0 -1 148 1.6605708748102188e-002
+
+ 5.7055354118347168e-002 -3.5466542840003967e-001
+ <_>
+
+ 0 -1 123 1.1670887470245361e-002
+
+ -8.0407410860061646e-002 1.9471745193004608e-001
+ <_>
+
+ 0 -1 208 1.0822312906384468e-002
+
+ 2.6732437312602997e-002 -5.8917897939682007e-001
+ <_>
+
+ 0 -1 708 2.7245271950960159e-002
+
+ 3.0616169795393944e-002 -4.8082390427589417e-001
+ <_>
+
+ 0 -1 217 -1.3694438338279724e-001
+
+ -4.8311397433280945e-001 3.3773597329854965e-002
+ <_>
+
+ 0 -1 899 -1.4758360339328647e-003
+
+ 2.5075155496597290e-001 -6.7788824439048767e-002
+ <_>
+
+ 0 -1 275 2.7167074382305145e-002
+
+ 2.5224637240171432e-002 -6.3691717386245728e-001
+ <_>
+
+ 0 -1 657 1.8945746123790741e-002
+
+ -5.7760879397392273e-002 2.6149269938468933e-001
+ <_>
+
+ 0 -1 102 1.2368987500667572e-001
+
+ -3.2363165169954300e-002 4.5130741596221924e-001
+ <_>
+
+ 0 -1 43 3.9710897952318192e-002
+
+ -3.0226422473788261e-002 4.6590203046798706e-001
+ <_>
+
+ 0 -1 136 -3.6290191113948822e-002
+
+ 3.6348423361778259e-001 -4.1874047368764877e-002
+ <_>
+
+ 0 -1 846 2.5501720607280731e-002
+
+ 3.5494077950716019e-002 -4.5727846026420593e-001
+ <_>
+
+ 0 -1 772 5.3392872214317322e-003
+
+ -6.0394711792469025e-002 2.5488924980163574e-001
+ <_>
+
+ 0 -1 950 7.9108221689239144e-004
+
+ 5.4109033197164536e-002 -2.7065926790237427e-001
+ <_>
+
+ 0 -1 929 -1.6701441258192062e-002
+
+ 4.8040628433227539e-001 -3.0404916033148766e-002
+ <_>
+
+ 0 -1 566 7.1975095197558403e-003
+
+ -7.0362947881221771e-002 1.9959311187267303e-001
+
+ <_>
+ 100
+ -2.2887177467346191e+000
+
+ <_>
+
+ 0 -1 286 -1.6051483154296875e-001
+
+ 9.3009121716022491e-002 -6.5350115299224854e-001
+ <_>
+
+ 0 -1 623 1.2457310222089291e-002
+
+ -3.1717920303344727e-001 2.3368784785270691e-001
+ <_>
+
+ 0 -1 29 2.3608796764165163e-003
+
+ -2.9248744249343872e-001 1.8054312467575073e-001
+ <_>
+
+ 0 -1 339 1.4379444532096386e-002
+
+ -5.7956293225288391e-002 7.6479458808898926e-001
+ <_>
+
+ 0 -1 871 6.8126469850540161e-003
+
+ -1.4748461544513702e-001 2.3818431794643402e-001
+ <_>
+
+ 0 -1 247 4.3051101267337799e-002
+
+ 8.7559670209884644e-002 -7.2269368171691895e-001
+ <_>
+
+ 0 -1 867 -5.0154160708189011e-002
+
+ 3.1918609142303467e-001 -1.3582608103752136e-001
+ <_>
+
+ 0 -1 212 -3.1796738039702177e-003
+
+ 2.7597072720527649e-001 -9.0522617101669312e-002
+ <_>
+
+ 0 -1 677 -1.2342665344476700e-002
+
+ -3.9158377051353455e-001 5.3565893322229385e-002
+ <_>
+
+ 0 -1 897 1.1861260049045086e-002
+
+ -6.1517983675003052e-002 3.6472269892692566e-001
+ <_>
+
+ 0 -1 252 -2.1985735744237900e-002
+
+ 6.5143728256225586e-001 -4.0598560124635696e-002
+ <_>
+
+ 0 -1 63 -1.2279948219656944e-002
+
+ 2.1631649136543274e-001 -1.2024078518152237e-001
+ <_>
+
+ 0 -1 640 8.2167033106088638e-003
+
+ -9.4497188925743103e-002 2.4828021228313446e-001
+ <_>
+
+ 0 -1 357 1.0111754760146141e-002
+
+ -3.3160492777824402e-002 6.2502938508987427e-001
+ <_>
+
+ 0 -1 924 -7.7025225618854165e-004
+
+ 2.3218974471092224e-001 -1.0222402960062027e-001
+ <_>
+
+ 0 -1 467 -1.4080689288675785e-003
+
+ 1.3447046279907227e-001 -1.6994857788085938e-001
+ <_>
+
+ 0 -1 140 1.0420590639114380e-002
+
+ 2.9845444485545158e-002 -7.5183397531509399e-001
+ <_>
+
+ 0 -1 356 1.3691674917936325e-002
+
+ 2.8088988736271858e-002 -5.7496672868728638e-001
+ <_>
+
+ 0 -1 155 1.7491653561592102e-002
+
+ -9.8534837365150452e-002 2.2351761162281036e-001
+ <_>
+
+ 0 -1 762 7.4883676134049892e-003
+
+ -9.7045794129371643e-002 2.0625646412372589e-001
+ <_>
+
+ 0 -1 104 -8.4146633744239807e-003
+
+ -4.8472663760185242e-001 4.1302844882011414e-002
+ <_>
+
+ 0 -1 342 3.0617808923125267e-002
+
+ -3.7334404885768890e-002 6.1179280281066895e-001
+ <_>
+
+ 0 -1 326 1.6346010379493237e-003
+
+ -1.8315000832080841e-001 1.0951925814151764e-001
+ <_>
+
+ 0 -1 901 -1.1816060170531273e-002
+
+ 3.0801647901535034e-001 -6.1308264732360840e-002
+ <_>
+
+ 0 -1 351 -1.0661455802619457e-002
+
+ 3.3249661326408386e-001 -5.0642840564250946e-002
+ <_>
+
+ 0 -1 84 -9.6190627664327621e-003
+
+ 1.3975782692432404e-001 -1.3763442635536194e-001
+ <_>
+
+ 0 -1 289 -1.2881286442279816e-002
+
+ 3.6742180585861206e-001 -5.0860747694969177e-002
+ <_>
+
+ 0 -1 824 1.3589482754468918e-002
+
+ -5.1274802535772324e-002 3.1885984539985657e-001
+ <_>
+
+ 0 -1 234 4.6852193772792816e-003
+
+ -7.2946086525917053e-002 2.5181108713150024e-001
+ <_>
+
+ 0 -1 432 1.9752513617277145e-002
+
+ -1.4621073007583618e-001 1.2726816534996033e-001
+ <_>
+
+ 0 -1 454 3.6341309547424316e-002
+
+ 2.4868825450539589e-002 -6.9947302341461182e-001
+ <_>
+
+ 0 -1 636 -1.1957485694438219e-003
+
+ 1.5675933659076691e-001 -1.1705233156681061e-001
+ <_>
+
+ 0 -1 40 -9.9432021379470825e-003
+
+ -3.4487789869308472e-001 4.9324721097946167e-002
+ <_>
+
+ 0 -1 269 6.0083293356001377e-003
+
+ 3.3568043261766434e-002 -4.3638321757316589e-001
+ <_>
+
+ 0 -1 14 9.6278168261051178e-002
+
+ 4.0310282260179520e-002 -3.9266702532768250e-001
+ <_>
+
+ 0 -1 154 4.3072472908534110e-004
+
+ -1.0427023470401764e-001 1.4397470653057098e-001
+ <_>
+
+ 0 -1 504 -4.7720400616526604e-003
+
+ -4.4805496931076050e-001 3.4855298697948456e-002
+ <_>
+
+ 0 -1 87 -1.0016669984906912e-003
+
+ 1.3649077713489532e-001 -1.2140301614999771e-001
+ <_>
+
+ 0 -1 254 2.3308012634515762e-002
+
+ 3.6392133682966232e-002 -4.5537215471267700e-001
+ <_>
+
+ 0 -1 802 -4.8546120524406433e-003
+
+ 1.5793082118034363e-001 -9.6185155212879181e-002
+ <_>
+
+ 0 -1 795 -6.5906550735235214e-003
+
+ 3.2166856527328491e-001 -4.9290131777524948e-002
+ <_>
+
+ 0 -1 126 -2.7226015925407410e-002
+
+ 2.8352561593055725e-001 -5.1984444260597229e-002
+ <_>
+
+ 0 -1 938 5.5622356012463570e-003
+
+ -3.3917389810085297e-002 4.3498530983924866e-001
+ <_>
+
+ 0 -1 534 -5.8775981888175011e-003
+
+ 1.7455618083477020e-001 -8.4790699183940887e-002
+ <_>
+
+ 0 -1 627 -1.1768937110900879e-003
+
+ -4.4403216242790222e-001 3.4572694450616837e-002
+ <_>
+
+ 0 -1 625 1.4337021857500076e-003
+
+ -8.8692568242549896e-002 1.6940893232822418e-001
+ <_>
+
+ 0 -1 51 1.3953970745205879e-002
+
+ 3.9221145212650299e-002 -3.8308286666870117e-001
+ <_>
+
+ 0 -1 106 5.3161740303039551e-002
+
+ -3.9227265864610672e-002 4.0637263655662537e-001
+ <_>
+
+ 0 -1 916 1.1670306324958801e-002
+
+ -6.2661647796630859e-002 2.2897149622440338e-001
+ <_>
+
+ 0 -1 524 -8.5611653048545122e-004
+
+ -3.1393322348594666e-001 4.4154506176710129e-002
+ <_>
+
+ 0 -1 362 3.1659279484301805e-003
+
+ -1.0416875034570694e-001 1.4386938512325287e-001
+ <_>
+
+ 0 -1 94 9.2105150222778320e-002
+
+ 2.5259945541620255e-002 -6.3980853557586670e-001
+ <_>
+
+ 0 -1 681 2.2438270971179008e-003
+
+ 2.9625944793224335e-002 -4.4926467537879944e-001
+ <_>
+
+ 0 -1 592 -1.4502200298011303e-002
+
+ 2.3043723404407501e-001 -6.8583212792873383e-002
+ <_>
+
+ 0 -1 17 3.1762875616550446e-002
+
+ -1.1820482462644577e-001 1.3017164170742035e-001
+ <_>
+
+ 0 -1 372 8.3491904661059380e-003
+
+ -5.4794549942016602e-002 3.0562251806259155e-001
+ <_>
+
+ 0 -1 945 1.1813377961516380e-002
+
+ -4.4218052178621292e-002 3.2657644152641296e-001
+ <_>
+
+ 0 -1 517 -4.3407902121543884e-003
+
+ 2.3012351989746094e-001 -6.2401693314313889e-002
+ <_>
+
+ 0 -1 835 -5.1777150481939316e-002
+
+ -4.2195704579353333e-001 3.3818338066339493e-002
+ <_>
+
+ 0 -1 573 9.5773371867835522e-004
+
+ -1.2982761859893799e-001 1.0589899122714996e-001
+ <_>
+
+ 0 -1 329 2.6355611626058817e-003
+
+ -1.1849098652601242e-001 1.2649086117744446e-001
+ <_>
+
+ 0 -1 738 -6.9736450910568237e-002
+
+ 5.4316484928131104e-001 -2.8468221426010132e-002
+ <_>
+
+ 0 -1 166 -4.1691556572914124e-002
+
+ 1.8529292941093445e-001 -7.9085260629653931e-002
+ <_>
+
+ 0 -1 72 3.0405964702367783e-002
+
+ -6.7499466240406036e-002 2.3227298259735107e-001
+ <_>
+
+ 0 -1 202 1.6526731848716736e-001
+
+ 2.3192871361970901e-002 -6.6413503885269165e-001
+ <_>
+
+ 0 -1 244 -7.9902745783329010e-003
+
+ 1.6699096560478210e-001 -8.0209225416183472e-002
+ <_>
+
+ 0 -1 435 -8.4093026816844940e-003
+
+ 3.8385570049285889e-001 -3.3093310892581940e-002
+ <_>
+
+ 0 -1 580 -6.2388582155108452e-003
+
+ 2.2031579911708832e-001 -5.9756781905889511e-002
+ <_>
+
+ 0 -1 416 2.2657278925180435e-002
+
+ 2.9750887304544449e-002 -4.3571525812149048e-001
+ <_>
+
+ 0 -1 245 -3.3273398876190186e-002
+
+ -7.2214579582214355e-001 1.7277766019105911e-002
+ <_>
+
+ 0 -1 805 -7.5985761359333992e-003
+
+ -4.8032435774803162e-001 2.3796260356903076e-002
+ <_>
+
+ 0 -1 490 1.4554752968251705e-002
+
+ 2.0614990964531898e-002 -5.7951718568801880e-001
+ <_>
+
+ 0 -1 348 -2.4409522302448750e-003
+
+ 1.5682564675807953e-001 -8.2513608038425446e-002
+ <_>
+
+ 0 -1 216 -2.7174502611160278e-002
+
+ -5.4916822910308838e-001 2.3511687293648720e-002
+ <_>
+
+ 0 -1 599 1.8674493767321110e-003
+
+ 3.5896647721529007e-002 -3.5593807697296143e-001
+ <_>
+
+ 0 -1 599 -1.7106164013966918e-003
+
+ -2.9658839106559753e-001 4.5083675533533096e-002
+ <_>
+
+ 0 -1 698 -1.2188366800546646e-001
+
+ -6.8481236696243286e-001 1.6469523310661316e-002
+ <_>
+
+ 0 -1 206 1.6452776268124580e-002
+
+ 1.6632448881864548e-002 -6.3031005859375000e-001
+ <_>
+
+ 0 -1 913 3.3029774203896523e-003
+
+ 5.2817359566688538e-002 -2.3288796842098236e-001
+ <_>
+
+ 0 -1 678 6.5974113531410694e-003
+
+ -5.9827085584402084e-002 2.2615881264209747e-001
+ <_>
+
+ 0 -1 947 -2.2020633332431316e-003
+
+ 2.2270961105823517e-001 -5.8337379246950150e-002
+ <_>
+
+ 0 -1 582 -8.9172367006540298e-003
+
+ 2.3682470619678497e-001 -5.5845208466053009e-002
+ <_>
+
+ 0 -1 100 -3.8233667612075806e-002
+
+ 1.9340702891349792e-001 -7.3905274271965027e-002
+ <_>
+
+ 0 -1 214 -5.8171510696411133e-002
+
+ -3.3873862028121948e-001 3.6934167146682739e-002
+ <_>
+
+ 0 -1 142 1.3129880651831627e-002
+
+ -5.7335916906595230e-002 2.4769510328769684e-001
+ <_>
+
+ 0 -1 606 -2.3510225117206573e-002
+
+ -7.3440921306610107e-001 2.1062126383185387e-002
+ <_>
+
+ 0 -1 180 -3.2106369733810425e-002
+
+ 1.9888436794281006e-001 -6.8882115185260773e-002
+ <_>
+
+ 0 -1 798 1.0653462260961533e-002
+
+ -3.1876940280199051e-002 3.7958627939224243e-001
+ <_>
+
+ 0 -1 325 2.5438904762268066e-002
+
+ -2.5426354259252548e-002 4.6004450321197510e-001
+ <_>
+
+ 0 -1 239 2.6357024908065796e-002
+
+ -4.9807246774435043e-002 2.5959959626197815e-001
+ <_>
+
+ 0 -1 525 5.6436131708323956e-003
+
+ -4.5353759080171585e-002 2.8858882188796997e-001
+ <_>
+
+ 0 -1 267 -4.3369065970182419e-003
+
+ 1.4867325127124786e-001 -8.8411331176757813e-002
+ <_>
+
+ 0 -1 215 -1.9298204779624939e-001
+
+ -5.3079867362976074e-001 2.5263534858822823e-002
+ <_>
+
+ 0 -1 734 5.7046163827180862e-002
+
+ 1.1847544461488724e-002 -8.2090246677398682e-001
+ <_>
+
+ 0 -1 352 4.9701407551765442e-002
+
+ 1.3225952163338661e-002 -6.8998688459396362e-001
+ <_>
+
+ 0 -1 278 -2.8292792849242687e-003
+
+ 1.7430420219898224e-001 -6.6152326762676239e-002
+ <_>
+
+ 0 -1 476 -1.4506326988339424e-002
+
+ -3.1870725750923157e-001 3.8834158331155777e-002
+ <_>
+
+ 0 -1 859 3.5564824938774109e-002
+
+ -5.6947514414787292e-002 2.1859169006347656e-001
+ <_>
+
+ 0 -1 98 2.0967530086636543e-002
+
+ -5.9812918305397034e-002 2.2214832901954651e-001
+ <_>
+
+ 0 -1 127 7.3756486177444458e-002
+
+ 2.5129400193691254e-002 -4.9916529655456543e-001
+
+ <_>
+ 100
+ -2.2359671592712402e+000
+
+ <_>
+
+ 0 -1 285 -9.3501225113868713e-002
+
+ -4.6586804091930389e-002 -7.2199982404708862e-001
+ <_>
+
+ 0 -1 238 4.9442616291344166e-003
+
+ -3.9842179417610168e-001 2.1402300894260406e-001
+ <_>
+
+ 0 -1 799 1.0407378897070885e-002
+
+ -1.3988684117794037e-001 3.9579308032989502e-001
+ <_>
+
+ 0 -1 322 -1.4162844978272915e-002
+
+ 6.4931660890579224e-001 -5.7302106171846390e-002
+ <_>
+
+ 0 -1 449 9.8008674103766680e-004
+
+ -1.7719046771526337e-001 2.0141038298606873e-001
+ <_>
+
+ 0 -1 218 1.4206364750862122e-002
+
+ -9.3258224427700043e-002 3.4144768118858337e-001
+ <_>
+
+ 0 -1 879 2.5848676450550556e-003
+
+ -1.4990748465061188e-001 2.2581319510936737e-001
+ <_>
+
+ 0 -1 22 8.0643901601433754e-003
+
+ -8.8275857269763947e-002 2.8663924336433411e-001
+ <_>
+
+ 0 -1 881 -8.6236204952001572e-003
+
+ 3.3490571379661560e-001 -8.2069411873817444e-002
+ <_>
+
+ 0 -1 723 1.2022950686514378e-002
+
+ -6.3569039106369019e-002 3.9191362261772156e-001
+ <_>
+
+ 0 -1 665 -1.5419950708746910e-002
+
+ 4.4637352228164673e-001 -6.6652692854404449e-002
+ <_>
+
+ 0 -1 735 -6.3524805009365082e-003
+
+ 1.8987259268760681e-001 -1.2892219424247742e-001
+ <_>
+
+ 0 -1 408 6.9541163742542267e-002
+
+ 4.3989829719066620e-002 -4.4642734527587891e-001
+ <_>
+
+ 0 -1 368 7.4983224272727966e-002
+
+ -5.2028596401214600e-002 5.7951992750167847e-001
+ <_>
+
+ 0 -1 486 2.0330501720309258e-003
+
+ -1.3492821156978607e-001 2.0830303430557251e-001
+ <_>
+
+ 0 -1 28 1.8707301467657089e-002
+
+ 3.0162446200847626e-002 -7.5620234012603760e-001
+ <_>
+
+ 0 -1 33 9.1869030147790909e-003
+
+ -1.5992332994937897e-001 1.3838322460651398e-001
+ <_>
+
+ 0 -1 473 -2.0068701356649399e-002
+
+ 4.9636912345886230e-001 -3.8212534040212631e-002
+ <_>
+
+ 0 -1 32 9.3690613284707069e-003
+
+ 2.7963882312178612e-002 -7.0575749874114990e-001
+ <_>
+
+ 0 -1 63 -9.2746205627918243e-003
+
+ 1.7214477062225342e-001 -1.1743877083063126e-001
+ <_>
+
+ 0 -1 671 -3.7561631761491299e-003
+
+ 1.9893965125083923e-001 -1.0429763048887253e-001
+ <_>
+
+ 0 -1 642 -2.8749569319188595e-003
+
+ -3.7584275007247925e-001 4.6344734728336334e-002
+ <_>
+
+ 0 -1 145 -1.1727647855877876e-002
+
+ -4.4696572422981262e-001 4.0343362838029861e-002
+ <_>
+
+ 0 -1 590 1.0945920832455158e-002
+
+ 5.6218206882476807e-002 -2.9916441440582275e-001
+ <_>
+
+ 0 -1 341 -1.2209227308630943e-002
+
+ 3.9286783337593079e-001 -4.2874403297901154e-002
+ <_>
+
+ 0 -1 447 -2.5397611781954765e-002
+
+ -3.8478189706802368e-001 4.3343432247638702e-002
+ <_>
+
+ 0 -1 746 -4.5675365254282951e-003
+
+ 2.3299069702625275e-001 -7.3202215135097504e-002
+ <_>
+
+ 0 -1 935 -6.0586854815483093e-003
+
+ 2.2465232014656067e-001 -7.7056594192981720e-002
+ <_>
+
+ 0 -1 131 1.5789955854415894e-002
+
+ -8.7083600461483002e-002 1.9742278754711151e-001
+ <_>
+
+ 0 -1 759 -1.7314129509031773e-003
+
+ 2.0412902534008026e-001 -8.9147895574569702e-002
+ <_>
+
+ 0 -1 939 7.3486715555191040e-003
+
+ -4.5228123664855957e-002 3.5152116417884827e-001
+ <_>
+
+ 0 -1 246 1.6278622671961784e-002
+
+ 5.0431668758392334e-002 -3.4917074441909790e-001
+ <_>
+
+ 0 -1 151 -4.9730124883353710e-003
+
+ 1.8474133312702179e-001 -9.4716101884841919e-002
+ <_>
+
+ 0 -1 334 1.3617072254419327e-002
+
+ -3.4493431448936462e-002 5.1511102914810181e-001
+ <_>
+
+ 0 -1 516 -3.5471074283123016e-002
+
+ -3.9388224482536316e-001 4.3496731668710709e-002
+ <_>
+
+ 0 -1 103 5.2554365247488022e-003
+
+ -1.2609277665615082e-001 1.2129900604486465e-001
+ <_>
+
+ 0 -1 489 -4.1965182870626450e-002
+
+ -6.2069499492645264e-001 2.4282006546854973e-002
+ <_>
+
+ 0 -1 61 9.6745520830154419e-002
+
+ 3.0231734737753868e-002 -4.6271669864654541e-001
+ <_>
+
+ 0 -1 661 -6.8811019882559776e-003
+
+ 2.8159707784652710e-001 -5.7276148349046707e-002
+ <_>
+
+ 0 -1 616 1.0784192010760307e-002
+
+ -4.8847943544387817e-002 3.2464641332626343e-001
+ <_>
+
+ 0 -1 466 -3.3961618319153786e-003
+
+ 4.0418368577957153e-001 -4.2481750249862671e-002
+ <_>
+
+ 0 -1 420 -6.9079827517271042e-003
+
+ 1.1404169350862503e-001 -1.2768752872943878e-001
+ <_>
+
+ 0 -1 167 1.4355555176734924e-001
+
+ -3.9203863590955734e-002 3.9233651757240295e-001
+ <_>
+
+ 0 -1 210 -3.5771834664046764e-003
+
+ 1.4706018567085266e-001 -1.3173283636569977e-001
+ <_>
+
+ 0 -1 439 3.0234435573220253e-002
+
+ 1.8946202471852303e-002 -8.0503576993942261e-001
+ <_>
+
+ 0 -1 567 7.8391470015048981e-004
+
+ 8.7953150272369385e-002 -1.6678945720195770e-001
+ <_>
+
+ 0 -1 42 -2.2085051983594894e-002
+
+ -3.8623884320259094e-001 4.2284723371267319e-002
+ <_>
+
+ 0 -1 818 -2.6205494999885559e-002
+
+ 1.6326524317264557e-001 -1.0225085169076920e-001
+ <_>
+
+ 0 -1 581 -9.5918308943510056e-003
+
+ 2.5218212604522705e-001 -6.0809265822172165e-002
+ <_>
+
+ 0 -1 242 -2.6144424453377724e-002
+
+ -6.9495695829391479e-001 2.2685619071125984e-002
+ <_>
+
+ 0 -1 424 9.2253191396594048e-003
+
+ -8.8936053216457367e-002 1.6087681055068970e-001
+ <_>
+
+ 0 -1 843 -3.1533516012132168e-003
+
+ 2.2563895583152771e-001 -6.3495889306068420e-002
+ <_>
+
+ 0 -1 56 -6.6996468231081963e-003
+
+ -2.4251624941825867e-001 6.1135187745094299e-002
+ <_>
+
+ 0 -1 282 -1.2584788724780083e-002
+
+ 2.9776036739349365e-001 -4.9212120473384857e-002
+ <_>
+
+ 0 -1 903 -4.2148698121309280e-003
+
+ 3.0259734392166138e-001 -4.4676482677459717e-002
+ <_>
+
+ 0 -1 653 -9.4317561015486717e-003
+
+ 1.1043215543031693e-001 -1.2356746196746826e-001
+ <_>
+
+ 0 -1 654 2.1886886097490788e-003
+
+ -6.1201002448797226e-002 2.2712202370166779e-001
+ <_>
+
+ 0 -1 398 2.4963401257991791e-002
+
+ 2.4292556568980217e-002 -5.4634368419647217e-001
+ <_>
+
+ 0 -1 205 -8.7548848241567612e-003
+
+ 2.5255405902862549e-001 -5.4619345813989639e-002
+ <_>
+
+ 0 -1 487 7.0049557834863663e-003
+
+ 3.9875753223896027e-002 -3.8009002804756165e-001
+ <_>
+
+ 0 -1 258 3.7140229251235723e-003
+
+ -9.3989297747612000e-002 1.5871012210845947e-001
+ <_>
+
+ 0 -1 565 -8.4969010204076767e-003
+
+ 2.0674896240234375e-001 -6.4190469682216644e-002
+ <_>
+
+ 0 -1 147 -5.0333619117736816e-002
+
+ 3.0274888873100281e-001 -4.3931342661380768e-002
+ <_>
+
+ 0 -1 80 7.2737382724881172e-003
+
+ -8.7947271764278412e-002 1.5312801301479340e-001
+ <_>
+
+ 0 -1 58 9.9609624594449997e-003
+
+ 4.6528778970241547e-002 -2.9576960206031799e-001
+ <_>
+
+ 0 -1 909 -1.3673231005668640e-002
+
+ 3.2159554958343506e-001 -4.6024739742279053e-002
+ <_>
+
+ 0 -1 460 2.4796918034553528e-002
+
+ 2.3450840264558792e-002 -6.3208627700805664e-001
+ <_>
+
+ 0 -1 790 -8.9704394340515137e-003
+
+ 1.7290446162223816e-001 -8.1694059073925018e-002
+ <_>
+
+ 0 -1 191 -2.3638601414859295e-003
+
+ 1.0641085356473923e-001 -1.2656879425048828e-001
+ <_>
+
+ 0 -1 45 -3.0800779350101948e-003
+
+ 1.4082619547843933e-001 -9.4026930630207062e-002
+ <_>
+
+ 0 -1 138 -1.0759308934211731e-002
+
+ -4.0597277879714966e-001 3.1949173659086227e-002
+ <_>
+
+ 0 -1 176 7.2143180295825005e-003
+
+ 1.2054420076310635e-002 -8.5538458824157715e-001
+ <_>
+
+ 0 -1 384 1.9637834280729294e-002
+
+ -4.5702952891588211e-002 3.0082041025161743e-001
+ <_>
+
+ 0 -1 181 -2.6587650179862976e-002
+
+ -4.8827502131462097e-001 2.5739965960383415e-002
+ <_>
+
+ 0 -1 429 -2.8913402929902077e-003
+
+ 1.5120062232017517e-001 -8.3084680140018463e-002
+ <_>
+
+ 0 -1 462 -1.7486744036432356e-004
+
+ -1.6527174413204193e-001 7.9318381845951080e-002
+ <_>
+
+ 0 -1 93 5.8025561273097992e-002
+
+ -9.3625135719776154e-002 1.3428705930709839e-001
+ <_>
+
+ 0 -1 895 7.7226985013112426e-004
+
+ 6.4624220132827759e-002 -1.9347991049289703e-001
+ <_>
+
+ 0 -1 506 -6.4398542046546936e-002
+
+ -8.3100390434265137e-001 1.3259679079055786e-002
+ <_>
+
+ 0 -1 794 2.7848746627569199e-002
+
+ 1.3673855923116207e-002 -7.1600478887557983e-001
+ <_>
+
+ 0 -1 308 -1.7273522913455963e-002
+
+ -6.1328560113906860e-001 1.7129577696323395e-002
+ <_>
+
+ 0 -1 117 2.2771380841732025e-002
+
+ 1.4634012244641781e-002 -6.9125133752822876e-001
+ <_>
+
+ 0 -1 155 1.7879681661725044e-002
+
+ -6.6493585705757141e-002 1.8808430433273315e-001
+ <_>
+
+ 0 -1 188 -7.5980871915817261e-003
+
+ 2.1208682656288147e-001 -6.9655627012252808e-002
+ <_>
+
+ 0 -1 468 8.3334632217884064e-003
+
+ -4.5091670006513596e-002 2.5533476471900940e-001
+ <_>
+
+ 0 -1 451 9.5366090536117554e-003
+
+ 3.3587828278541565e-002 -3.8594719767570496e-001
+ <_>
+
+ 0 -1 349 1.9022613763809204e-002
+
+ -4.2280010879039764e-002 3.0593034625053406e-001
+ <_>
+
+ 0 -1 522 3.6582566797733307e-002
+
+ -6.8928316235542297e-002 1.8224547803401947e-001
+ <_>
+
+ 0 -1 159 -2.5450623035430908e-001
+
+ -7.9693830013275146e-001 1.6522107645869255e-002
+ <_>
+
+ 0 -1 905 -5.8933448046445847e-002
+
+ 3.6613103747367859e-001 -3.7511564791202545e-002
+ <_>
+
+ 0 -1 64 8.5881188511848450e-002
+
+ 3.5934593528509140e-002 -3.7825050950050354e-001
+ <_>
+
+ 0 -1 810 -6.8585649132728577e-002
+
+ -5.4236054420471191e-001 2.0104518160223961e-002
+ <_>
+
+ 0 -1 529 4.8160655423998833e-003
+
+ -4.3085236102342606e-002 2.8620475530624390e-001
+ <_>
+
+ 0 -1 498 6.1599753098562360e-004
+
+ 5.0022143870592117e-002 -2.7295649051666260e-001
+ <_>
+
+ 0 -1 710 7.4446541257202625e-003
+
+ -6.7837722599506378e-002 1.9111913442611694e-001
+ <_>
+
+ 0 -1 333 1.3981198891997337e-002
+
+ 2.1413592621684074e-002 -6.2269157171249390e-001
+ <_>
+
+ 0 -1 941 -1.4853913336992264e-002
+
+ 4.0018329024314880e-001 -3.4097265452146530e-002
+ <_>
+
+ 0 -1 3 1.3497969135642052e-002
+
+ 3.0796987935900688e-002 -4.2009493708610535e-001
+ <_>
+
+ 0 -1 887 9.1592809185385704e-003
+
+ 3.0317120254039764e-002 -3.5625258088111877e-001
+ <_>
+
+ 0 -1 11 2.9643373563885689e-002
+
+ -1.1319724470376968e-001 1.0797596722841263e-001
+
+ <_>
+ 100
+ -2.0808603763580322e+000
+
+ <_>
+
+ 0 -1 284 -7.5377658009529114e-002
+
+ -1.0360029339790344e-001 -7.0443350076675415e-001
+ <_>
+
+ 0 -1 301 -4.6968553215265274e-003
+
+ 2.6461517810821533e-001 -2.6632103323936462e-001
+ <_>
+
+ 0 -1 851 4.5106429606676102e-003
+
+ -1.9236828386783600e-001 2.4530071020126343e-001
+ <_>
+
+ 0 -1 324 -1.3677397742867470e-002
+
+ 4.8842102289199829e-001 -7.8666172921657562e-002
+ <_>
+
+ 0 -1 621 8.4240939468145370e-003
+
+ -1.1324168741703033e-001 2.8638821840286255e-001
+ <_>
+
+ 0 -1 827 1.0163122788071632e-003
+
+ -1.7518180608749390e-001 1.6443368792533875e-001
+ <_>
+
+ 0 -1 375 3.2988777384161949e-003
+
+ -7.6549887657165527e-002 2.8202313184738159e-001
+ <_>
+
+ 0 -1 85 1.4450255781412125e-002
+
+ -1.4695851504802704e-001 1.9833040237426758e-001
+ <_>
+
+ 0 -1 328 5.9788756072521210e-002
+
+ -2.7597570791840553e-002 6.0443407297134399e-001
+ <_>
+
+ 0 -1 668 -4.0823942981660366e-003
+
+ 3.7376108765602112e-001 -6.6522486507892609e-002
+ <_>
+
+ 0 -1 651 9.4101820141077042e-003
+
+ -7.5030580163002014e-002 3.3643370866775513e-001
+ <_>
+
+ 0 -1 770 1.2895615771412849e-002
+
+ -6.6736064851284027e-002 3.4388977289199829e-001
+ <_>
+
+ 0 -1 0 1.8281452357769012e-003
+
+ -7.6577022671699524e-002 3.0855756998062134e-001
+ <_>
+
+ 0 -1 811 1.2842542491853237e-002
+
+ -6.6831089556217194e-002 3.5320571064949036e-001
+ <_>
+
+ 0 -1 556 2.6731539517641068e-002
+
+ 4.3738048523664474e-002 -5.4744714498519897e-001
+ <_>
+
+ 0 -1 593 -2.1810945123434067e-002
+
+ -4.9039456248283386e-001 3.5305779427289963e-002
+ <_>
+
+ 0 -1 397 1.4120168052613735e-003
+
+ -1.7367108166217804e-001 1.1572990566492081e-001
+ <_>
+
+ 0 -1 494 1.5707452548667789e-003
+
+ -1.1095841974020004e-001 1.6702808439731598e-001
+ <_>
+
+ 0 -1 869 -7.3387438897043467e-004
+
+ 1.8617554008960724e-001 -9.1079324483871460e-002
+ <_>
+
+ 0 -1 495 -6.4388057217001915e-004
+
+ -2.6845857501029968e-001 6.1447944492101669e-002
+ <_>
+
+ 0 -1 427 1.1414934694766998e-001
+
+ 2.0975470542907715e-002 -7.1357190608978271e-001
+ <_>
+
+ 0 -1 931 1.3404923956841230e-003
+
+ -9.0797364711761475e-002 1.8696101009845734e-001
+ <_>
+
+ 0 -1 46 2.3350983858108521e-002
+
+ 2.9028130695223808e-002 -5.2345710992813110e-001
+ <_>
+
+ 0 -1 143 1.5429967083036900e-002
+
+ -9.4941243529319763e-002 1.6368669271469116e-001
+ <_>
+
+ 0 -1 357 1.0943166911602020e-002
+
+ -3.1125182285904884e-002 5.9323889017105103e-001
+ <_>
+
+ 0 -1 705 2.6839743368327618e-003
+
+ -7.5778268277645111e-002 2.1814092993736267e-001
+ <_>
+
+ 0 -1 39 -6.2261838465929031e-003
+
+ -2.8783807158470154e-001 5.5791638791561127e-002
+ <_>
+
+ 0 -1 207 1.0724554955959320e-001
+
+ 2.4116434156894684e-002 -5.8035951852798462e-001
+ <_>
+
+ 0 -1 199 -6.5348353236913681e-003
+
+ -2.8312593698501587e-001 5.1936011761426926e-002
+ <_>
+
+ 0 -1 415 -1.1670710518956184e-003
+
+ -1.8463888764381409e-001 8.3705939352512360e-002
+ <_>
+
+ 0 -1 808 -1.4070876641198993e-003
+
+ 1.5036344528198242e-001 -1.0249616205692291e-001
+ <_>
+
+ 0 -1 122 -3.9912573993206024e-002
+
+ -3.8639402389526367e-001 3.9821352809667587e-002
+ <_>
+
+ 0 -1 413 1.0381672531366348e-002
+
+ -1.2079605460166931e-001 1.2945999205112457e-001
+ <_>
+
+ 0 -1 453 -9.9312573671340942e-002
+
+ 6.0750687122344971e-001 -2.8503781184554100e-002
+ <_>
+
+ 0 -1 816 1.0430534370243549e-002
+
+ -6.0343675315380096e-002 2.3242907226085663e-001
+ <_>
+
+ 0 -1 445 3.5891016013920307e-003
+
+ 4.1434522718191147e-002 -3.4602153301239014e-001
+ <_>
+
+ 0 -1 788 1.0015227831900120e-002
+
+ -5.6792665272951126e-002 2.6468506455421448e-001
+ <_>
+
+ 0 -1 749 -9.2321680858731270e-004
+
+ -3.1470552086830139e-001 4.6375431120395660e-002
+ <_>
+
+ 0 -1 384 2.0065717399120331e-002
+
+ -4.7381434589624405e-002 3.2506260275840759e-001
+ <_>
+
+ 0 -1 782 2.0691626705229282e-003
+
+ -8.8068872690200806e-002 1.7662553489208221e-001
+ <_>
+
+ 0 -1 150 -2.0592920482158661e-002
+
+ 2.1614389121532440e-001 -6.7837409675121307e-002
+ <_>
+
+ 0 -1 729 -2.5132454931735992e-002
+
+ 2.9875260591506958e-001 -5.0642240792512894e-002
+ <_>
+
+ 0 -1 893 1.6763649880886078e-002
+
+ -5.6825786828994751e-002 2.6688432693481445e-001
+ <_>
+
+ 0 -1 5 2.4304956197738647e-002
+
+ -7.3691956698894501e-002 1.8922545015811920e-001
+ <_>
+
+ 0 -1 604 5.2945837378501892e-003
+
+ -6.8203508853912354e-002 2.3238344490528107e-001
+ <_>
+
+ 0 -1 146 1.7194304615259171e-002
+
+ -4.1591234505176544e-002 3.3211585879325867e-001
+ <_>
+
+ 0 -1 119 -1.0534466244280338e-002
+
+ 2.0838305354118347e-001 -8.1538312137126923e-002
+ <_>
+
+ 0 -1 171 3.3360864967107773e-002
+
+ -6.7458741366863251e-002 2.5852772593498230e-001
+ <_>
+
+ 0 -1 183 4.6436764299869537e-002
+
+ 1.9892208278179169e-002 -8.1141030788421631e-001
+ <_>
+
+ 0 -1 8 -4.1056036949157715e-002
+
+ -4.9327704310417175e-001 2.3769956082105637e-002
+ <_>
+
+ 0 -1 514 -1.8552202731370926e-002
+
+ -5.7725781202316284e-001 2.1620772778987885e-002
+ <_>
+
+ 0 -1 310 -1.5498932916671038e-003
+
+ 1.3356749713420868e-001 -1.0274448245763779e-001
+ <_>
+
+ 0 -1 144 -1.2870179489254951e-002
+
+ -6.8844175338745117e-001 1.6567943617701530e-002
+ <_>
+
+ 0 -1 162 1.1060645803809166e-002
+
+ -6.5967611968517303e-002 2.0074956119060516e-001
+ <_>
+
+ 0 -1 737 -1.9628754816949368e-003
+
+ 1.7064040899276733e-001 -7.5410693883895874e-002
+ <_>
+
+ 0 -1 118 3.2771207392215729e-002
+
+ 1.7548711970448494e-002 -7.5103056430816650e-001
+ <_>
+
+ 0 -1 62 -5.6525086984038353e-004
+
+ 1.0811340808868408e-001 -1.1322978138923645e-001
+ <_>
+
+ 0 -1 920 6.6395318135619164e-003
+
+ -4.8233803361654282e-002 2.5985202193260193e-001
+ <_>
+
+ 0 -1 933 5.3288890048861504e-003
+
+ -5.8816779404878616e-002 2.0709130167961121e-001
+ <_>
+
+ 0 -1 30 9.5648169517517090e-002
+
+ -2.3178230971097946e-002 5.3592687845230103e-001
+ <_>
+
+ 0 -1 505 2.3851044476032257e-002
+
+ 3.9325568825006485e-002 -3.2090389728546143e-001
+ <_>
+
+ 0 -1 380 4.9215428531169891e-002
+
+ -8.0275781452655792e-002 2.1604713797569275e-001
+ <_>
+
+ 0 -1 404 5.1129907369613647e-002
+
+ 2.0917052403092384e-002 -6.7675739526748657e-001
+ <_>
+
+ 0 -1 470 -9.5789285842329264e-004
+
+ 1.3741976022720337e-001 -9.2351287603378296e-002
+ <_>
+
+ 0 -1 38 4.3797735124826431e-002
+
+ -5.2134189754724503e-002 2.3939897119998932e-001
+ <_>
+
+ 0 -1 177 -3.7566445767879486e-002
+
+ -5.0337618589401245e-001 3.2042562961578369e-002
+ <_>
+
+ 0 -1 293 -6.6379196941852570e-003
+
+ 2.3610880970954895e-001 -5.9629496186971664e-002
+ <_>
+
+ 0 -1 569 4.4785980135202408e-003
+
+ -6.9053784012794495e-002 1.8493640422821045e-001
+ <_>
+
+ 0 -1 680 -1.9650494214147329e-003
+
+ -5.0821167230606079e-001 2.3264253512024879e-002
+ <_>
+
+ 0 -1 826 -8.4884336683899164e-004
+
+ 1.7365188896656036e-001 -7.3235429823398590e-002
+ <_>
+
+ 0 -1 421 -5.7333573698997498e-002
+
+ -3.1190565228462219e-001 4.1780386120080948e-002
+ <_>
+
+ 0 -1 599 1.8632253631949425e-003
+
+ 3.1603202223777771e-002 -3.6946067214012146e-001
+ <_>
+
+ 0 -1 336 -2.0456001162528992e-002
+
+ 3.0203589797019958e-001 -4.1565753519535065e-002
+ <_>
+
+ 0 -1 938 5.5945245549082756e-003
+
+ -3.2002035528421402e-002 3.7638634443283081e-001
+ <_>
+
+ 0 -1 152 -1.8559835851192474e-002
+
+ 2.4045053124427795e-001 -5.1895260810852051e-002
+ <_>
+
+ 0 -1 706 -1.0816272348165512e-002
+
+ -4.1922396421432495e-001 3.0057143419981003e-002
+ <_>
+
+ 0 -1 717 -1.5897199045866728e-003
+
+ -3.8717699050903320e-001 2.7556220069527626e-002
+ <_>
+
+ 0 -1 337 -1.8832697533071041e-003
+
+ 1.8341954052448273e-001 -6.8402133882045746e-002
+ <_>
+
+ 0 -1 107 -6.8602010607719421e-002
+
+ -4.3040940165519714e-001 2.7811320498585701e-002
+ <_>
+
+ 0 -1 605 3.1656727194786072e-002
+
+ 1.4831826090812683e-002 -6.9200241565704346e-001
+ <_>
+
+ 0 -1 178 -1.1699689552187920e-002
+
+ -4.7378033399581909e-001 2.2049939259886742e-002
+ <_>
+
+ 0 -1 175 -4.9252226948738098e-002
+
+ 2.0226360857486725e-001 -5.8283366262912750e-002
+ <_>
+
+ 0 -1 200 -1.4749905094504356e-002
+
+ -6.3420587778091431e-001 1.7177773639559746e-002
+ <_>
+
+ 0 -1 594 1.3355823233723640e-002
+
+ -5.3626276552677155e-002 2.3158134520053864e-001
+ <_>
+
+ 0 -1 688 2.7912877500057220e-002
+
+ -3.2106213271617889e-002 3.9656600356101990e-001
+ <_>
+
+ 0 -1 433 -1.8341368064284325e-002
+
+ 3.0023518204689026e-001 -3.9390310645103455e-002
+ <_>
+
+ 0 -1 320 3.3382259309291840e-002
+
+ -5.0307501107454300e-002 2.3759432137012482e-001
+ <_>
+
+ 0 -1 414 2.2881597280502319e-002
+
+ 2.9198208823800087e-002 -4.3145897984504700e-001
+ <_>
+
+ 0 -1 271 1.7183616757392883e-001
+
+ 1.9492210820317268e-002 -5.7107782363891602e-001
+ <_>
+
+ 0 -1 889 4.3015915900468826e-002
+
+ 1.8091753125190735e-002 -5.8863103389739990e-001
+ <_>
+
+ 0 -1 545 -1.2893548235297203e-002
+
+ 1.4482001960277557e-001 -8.2013383507728577e-002
+ <_>
+
+ 0 -1 910 5.9737069532275200e-003
+
+ -7.2960324585437775e-002 1.6368763148784637e-001
+ <_>
+
+ 0 -1 664 1.1285657994449139e-002
+
+ -4.4454183429479599e-002 2.5658103823661804e-001
+ <_>
+
+ 0 -1 951 -9.9752098321914673e-004
+
+ -2.6904699206352234e-001 4.0726143866777420e-002
+ <_>
+
+ 0 -1 111 2.1743077784776688e-002
+
+ 1.7429182305932045e-002 -6.2877011299133301e-001
+ <_>
+
+ 0 -1 866 3.7145437672734261e-003
+
+ -8.1450186669826508e-002 1.3246190547943115e-001
+ <_>
+
+ 0 -1 888 -1.5904067084193230e-002
+
+ 3.2105255126953125e-001 -3.4731235355138779e-002
+ <_>
+
+ 0 -1 907 -2.6992281898856163e-002
+
+ -6.8835800886154175e-001 1.6344616189599037e-002
+ <_>
+
+ 0 -1 830 6.8261945853009820e-004
+
+ -1.1232791095972061e-001 9.8401591181755066e-002
+ <_>
+
+ 0 -1 807 -2.5938652455806732e-002
+
+ -5.0289982557296753e-001 2.3814825341105461e-002
+
+ <_>
+
+ <_>
+ 0 0 2 2 -1.
+ <_>
+ 1 0 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 1 6 -1.
+ <_>
+ 0 2 1 2 3.
+ 0
+ <_>
+
+ <_>
+ 0 0 2 4 -1.
+ <_>
+ 1 0 1 4 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 2 6 -1.
+ <_>
+ 0 2 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 0 0 8 7 -1.
+ <_>
+ 2 0 4 7 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 8 8 -1.
+ <_>
+ 2 0 4 8 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 6 13 -1.
+ <_>
+ 2 0 2 13 3.
+ 0
+ <_>
+
+ <_>
+ 0 0 12 13 -1.
+ <_>
+ 3 0 6 13 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 12 4 -1.
+ <_>
+ 4 0 4 4 3.
+ 0
+ <_>
+
+ <_>
+ 0 0 18 4 -1.
+ <_>
+ 6 0 6 4 3.
+ 0
+ <_>
+
+ <_>
+ 0 0 36 11 -1.
+ <_>
+ 12 0 12 11 3.
+ 0
+ <_>
+
+ <_>
+ 0 0 17 12 -1.
+ <_>
+ 0 4 17 4 3.
+ 0
+ <_>
+
+ <_>
+ 0 0 36 13 -1.
+ <_>
+ 18 0 18 13 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 22 2 -1.
+ <_>
+ 0 1 22 1 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 24 9 -1.
+ <_>
+ 0 3 24 3 3.
+ 0
+ <_>
+
+ <_>
+ 0 0 29 2 -1.
+ <_>
+ 0 1 29 1 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 34 2 -1.
+ <_>
+ 0 1 34 1 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 36 8 -1.
+ <_>
+ 0 2 36 4 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 42 6 -1.
+ <_>
+ 0 3 42 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 44 2 -1.
+ <_>
+ 0 1 44 1 2.
+ 0
+ <_>
+
+ <_>
+ 0 0 51 8 -1.
+ <_>
+ 0 2 51 4 2.
+ 0
+ <_>
+
+ <_>
+ 0 1 2 9 -1.
+ <_>
+ 1 1 1 9 2.
+ 0
+ <_>
+
+ <_>
+ 0 1 2 12 -1.
+ <_>
+ 1 1 1 12 2.
+ 0
+ <_>
+
+ <_>
+ 0 1 2 12 -1.
+ <_>
+ 0 7 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 0 1 8 10 -1.
+ <_>
+ 0 1 4 5 2.
+ <_>
+ 4 6 4 5 2.
+ 0
+ <_>
+
+ <_>
+ 0 1 7 12 -1.
+ <_>
+ 0 4 7 6 2.
+ 0
+ <_>
+
+ <_>
+ 0 1 12 12 -1.
+ <_>
+ 0 5 12 4 3.
+ 0
+ <_>
+
+ <_>
+ 0 1 17 12 -1.
+ <_>
+ 0 5 17 4 3.
+ 0
+ <_>
+
+ <_>
+ 0 2 6 2 -1.
+ <_>
+ 2 2 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 0 2 4 6 -1.
+ <_>
+ 2 2 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 0 2 20 7 -1.
+ <_>
+ 5 2 10 7 2.
+ 0
+ <_>
+
+ <_>
+ 0 3 1 4 -1.
+ <_>
+ 0 5 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 3 4 2 -1.
+ <_>
+ 1 3 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 3 6 9 -1.
+ <_>
+ 2 3 2 9 3.
+ 0
+ <_>
+
+ <_>
+ 0 3 4 10 -1.
+ <_>
+ 2 3 2 10 2.
+ 0
+ <_>
+
+ <_>
+ 0 3 6 10 -1.
+ <_>
+ 2 3 2 10 3.
+ 0
+ <_>
+
+ <_>
+ 0 3 9 3 -1.
+ <_>
+ 3 3 3 3 3.
+ 0
+ <_>
+
+ <_>
+ 0 3 3 9 -1.
+ <_>
+ 0 6 3 3 3.
+ 0
+ <_>
+
+ <_>
+ 0 3 9 6 -1.
+ <_>
+ 3 3 3 6 3.
+ 0
+ <_>
+
+ <_>
+ 0 3 8 4 -1.
+ <_>
+ 0 3 4 2 2.
+ <_>
+ 4 5 4 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 3 8 6 -1.
+ <_>
+ 0 3 4 3 2.
+ <_>
+ 4 6 4 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 3 16 10 -1.
+ <_>
+ 4 3 8 10 2.
+ 0
+ <_>
+
+ <_>
+ 0 3 10 6 -1.
+ <_>
+ 0 5 10 2 3.
+ 0
+ <_>
+
+ <_>
+ 0 3 16 8 -1.
+ <_>
+ 0 7 16 4 2.
+ 0
+ <_>
+
+ <_>
+ 0 3 51 8 -1.
+ <_>
+ 0 7 51 4 2.
+ 0
+ <_>
+
+ <_>
+ 0 4 3 3 -1.
+ <_>
+ 1 5 1 1 9.
+ 0
+ <_>
+
+ <_>
+ 0 4 3 9 -1.
+ <_>
+ 0 7 3 3 3.
+ 0
+ <_>
+
+ <_>
+ 0 4 20 7 -1.
+ <_>
+ 10 4 10 7 2.
+ 0
+ <_>
+
+ <_>
+ 0 4 34 9 -1.
+ <_>
+ 17 4 17 9 2.
+ 0
+ <_>
+
+ <_>
+ 0 5 1 4 -1.
+ <_>
+ 0 7 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 5 2 8 -1.
+ <_>
+ 1 5 1 8 2.
+ 0
+ <_>
+
+ <_>
+ 0 5 10 4 -1.
+ <_>
+ 0 7 10 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 5 22 6 -1.
+ <_>
+ 0 8 22 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 6 2 7 -1.
+ <_>
+ 1 6 1 7 2.
+ 0
+ <_>
+
+ <_>
+ 0 6 4 2 -1.
+ <_>
+ 2 6 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 6 6 5 -1.
+ <_>
+ 2 6 2 5 3.
+ 0
+ <_>
+
+ <_>
+ 0 6 3 6 -1.
+ <_>
+ 0 8 3 2 3.
+ 0
+ <_>
+
+ <_>
+ 0 6 4 6 -1.
+ <_>
+ 0 9 4 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 6 13 4 -1.
+ <_>
+ 0 8 13 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 6 14 4 -1.
+ <_>
+ 0 8 14 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 6 33 4 -1.
+ <_>
+ 0 8 33 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 6 44 6 -1.
+ <_>
+ 0 8 44 2 3.
+ 0
+ <_>
+
+ <_>
+ 0 7 1 6 -1.
+ <_>
+ 0 10 1 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 7 7 6 -1.
+ <_>
+ 0 10 7 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 7 25 6 -1.
+ <_>
+ 0 9 25 2 3.
+ 0
+ <_>
+
+ <_>
+ 0 7 32 3 -1.
+ <_>
+ 0 8 32 1 3.
+ 0
+ <_>
+
+ <_>
+ 0 8 12 5 -1.
+ <_>
+ 3 8 6 5 2.
+ 0
+ <_>
+
+ <_>
+ 0 8 12 2 -1.
+ <_>
+ 6 8 6 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 8 21 4 -1.
+ <_>
+ 7 8 7 4 3.
+ 0
+ <_>
+
+ <_>
+ 0 8 25 4 -1.
+ <_>
+ 0 9 25 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 9 15 4 -1.
+ <_>
+ 5 9 5 4 3.
+ 0
+ <_>
+
+ <_>
+ 0 9 28 4 -1.
+ <_>
+ 7 9 14 4 2.
+ 0
+ <_>
+
+ <_>
+ 0 9 28 4 -1.
+ <_>
+ 14 9 14 4 2.
+ 0
+ <_>
+
+ <_>
+ 0 9 46 2 -1.
+ <_>
+ 0 10 46 1 2.
+ 0
+ <_>
+
+ <_>
+ 0 9 50 2 -1.
+ <_>
+ 0 10 50 1 2.
+ 0
+ <_>
+
+ <_>
+ 0 10 6 3 -1.
+ <_>
+ 3 10 3 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 10 12 3 -1.
+ <_>
+ 3 10 6 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 10 10 3 -1.
+ <_>
+ 5 10 5 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 10 12 3 -1.
+ <_>
+ 6 10 6 3 2.
+ 0
+ <_>
+
+ <_>
+ 0 11 5 2 -1.
+ <_>
+ 0 12 5 1 2.
+ 0
+ <_>
+
+ <_>
+ 0 11 26 2 -1.
+ <_>
+ 13 11 13 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 11 28 2 -1.
+ <_>
+ 14 11 14 2 2.
+ 0
+ <_>
+
+ <_>
+ 0 11 42 2 -1.
+ <_>
+ 14 11 14 2 3.
+ 0
+ <_>
+
+ <_>
+ 0 11 19 2 -1.
+ <_>
+ 0 12 19 1 2.
+ 0
+ <_>
+
+ <_>
+ 0 11 23 2 -1.
+ <_>
+ 0 12 23 1 2.
+ 0
+ <_>
+
+ <_>
+ 1 0 5 12 -1.
+ <_>
+ 1 3 5 6 2.
+ 0
+ <_>
+
+ <_>
+ 1 0 15 4 -1.
+ <_>
+ 6 0 5 4 3.
+ 0
+ <_>
+
+ <_>
+ 1 0 14 1 -1.
+ <_>
+ 8 0 7 1 2.
+ 0
+ <_>
+
+ <_>
+ 1 0 8 2 -1.
+ <_>
+ 1 1 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 1 0 9 2 -1.
+ <_>
+ 1 1 9 1 2.
+ 0
+ <_>
+
+ <_>
+ 1 0 11 2 -1.
+ <_>
+ 1 1 11 1 2.
+ 0
+ <_>
+
+ <_>
+ 1 0 17 9 -1.
+ <_>
+ 1 3 17 3 3.
+ 0
+ <_>
+
+ <_>
+ 1 0 21 2 -1.
+ <_>
+ 1 1 21 1 2.
+ 0
+ <_>
+
+ <_>
+ 1 0 41 6 -1.
+ <_>
+ 1 3 41 3 2.
+ 0
+ <_>
+
+ <_>
+ 1 0 47 2 -1.
+ <_>
+ 1 1 47 1 2.
+ 0
+ <_>
+
+ <_>
+ 1 1 6 8 -1.
+ <_>
+ 3 1 2 8 3.
+ 0
+ <_>
+
+ <_>
+ 1 1 6 9 -1.
+ <_>
+ 3 1 2 9 3.
+ 0
+ <_>
+
+ <_>
+ 1 1 6 11 -1.
+ <_>
+ 3 1 2 11 3.
+ 0
+ <_>
+
+ <_>
+ 1 1 9 5 -1.
+ <_>
+ 4 1 3 5 3.
+ 0
+ <_>
+
+ <_>
+ 1 1 20 7 -1.
+ <_>
+ 6 1 10 7 2.
+ 0
+ <_>
+
+ <_>
+ 1 1 20 8 -1.
+ <_>
+ 6 1 10 8 2.
+ 0
+ <_>
+
+ <_>
+ 1 1 9 9 -1.
+ <_>
+ 1 4 9 3 3.
+ 0
+ <_>
+
+ <_>
+ 1 1 27 10 -1.
+ <_>
+ 10 1 9 10 3.
+ 0
+ <_>
+
+ <_>
+ 1 1 10 6 -1.
+ <_>
+ 1 3 10 2 3.
+ 0
+ <_>
+
+ <_>
+ 1 2 4 6 -1.
+ <_>
+ 1 2 2 3 2.
+ <_>
+ 3 5 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 1 2 20 8 -1.
+ <_>
+ 6 2 10 8 2.
+ 0
+ <_>
+
+ <_>
+ 1 2 13 10 -1.
+ <_>
+ 1 7 13 5 2.
+ 0
+ <_>
+
+ <_>
+ 1 2 34 7 -1.
+ <_>
+ 18 2 17 7 2.
+ 0
+ <_>
+
+ <_>
+ 1 3 4 3 -1.
+ <_>
+ 2 3 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 1 3 6 8 -1.
+ <_>
+ 3 3 2 8 3.
+ 0
+ <_>
+
+ <_>
+ 1 3 6 4 -1.
+ <_>
+ 1 3 3 2 2.
+ <_>
+ 4 5 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 1 3 6 8 -1.
+ <_>
+ 1 3 3 4 2.
+ <_>
+ 4 7 3 4 2.
+ 0
+ <_>
+
+ <_>
+ 1 3 6 5 -1.
+ <_>
+ 4 3 3 5 2.
+ 0
+ <_>
+
+ <_>
+ 1 3 15 3 -1.
+ <_>
+ 6 3 5 3 3.
+ 0
+ <_>
+
+ <_>
+ 1 3 36 9 -1.
+ <_>
+ 13 3 12 9 3.
+ 0
+ <_>
+
+ <_>
+ 1 3 36 10 -1.
+ <_>
+ 13 3 12 10 3.
+ 0
+ <_>
+
+ <_>
+ 1 4 4 2 -1.
+ <_>
+ 2 4 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 1 4 6 2 -1.
+ <_>
+ 3 4 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 1 4 6 3 -1.
+ <_>
+ 3 4 2 3 3.
+ 0
+ <_>
+
+ <_>
+ 1 4 6 4 -1.
+ <_>
+ 4 4 3 4 2.
+ 0
+ <_>
+
+ <_>
+ 1 4 6 6 -1.
+ <_>
+ 4 4 3 6 2.
+ 0
+ <_>
+
+ <_>
+ 1 4 9 4 -1.
+ <_>
+ 1 6 9 2 2.
+ 0
+ <_>
+
+ <_>
+ 1 5 12 3 -1.
+ <_>
+ 5 6 4 1 9.
+ 0
+ <_>
+
+ <_>
+ 1 7 16 6 -1.
+ <_>
+ 1 7 8 3 2.
+ <_>
+ 9 10 8 3 2.
+ 0
+ <_>
+
+ <_>
+ 1 11 46 2 -1.
+ <_>
+ 1 12 46 1 2.
+ 0
+ <_>
+
+ <_>
+ 1 11 50 2 -1.
+ <_>
+ 1 12 50 1 2.
+ 0
+ <_>
+
+ <_>
+ 1 12 50 1 -1.
+ <_>
+ 26 12 25 1 2.
+ 0
+ <_>
+
+ <_>
+ 2 0 6 13 -1.
+ <_>
+ 4 0 2 13 3.
+ 0
+ <_>
+
+ <_>
+ 2 0 24 3 -1.
+ <_>
+ 8 0 12 3 2.
+ 0
+ <_>
+
+ <_>
+ 2 0 12 10 -1.
+ <_>
+ 8 0 6 10 2.
+ 0
+ <_>
+
+ <_>
+ 2 0 33 11 -1.
+ <_>
+ 13 0 11 11 3.
+ 0
+ <_>
+
+ <_>
+ 2 0 20 2 -1.
+ <_>
+ 2 1 20 1 2.
+ 0
+ <_>
+
+ <_>
+ 2 0 48 12 -1.
+ <_>
+ 26 0 24 12 2.
+ 0
+ <_>
+
+ <_>
+ 2 1 4 6 -1.
+ <_>
+ 2 1 2 3 2.
+ <_>
+ 4 4 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 2 1 16 9 -1.
+ <_>
+ 10 1 8 9 2.
+ 0
+ <_>
+
+ <_>
+ 2 1 11 9 -1.
+ <_>
+ 2 4 11 3 3.
+ 0
+ <_>
+
+ <_>
+ 2 1 18 10 -1.
+ <_>
+ 2 6 18 5 2.
+ 0
+ <_>
+
+ <_>
+ 2 2 3 2 -1.
+ <_>
+ 3 3 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 2 3 16 1 -1.
+ <_>
+ 6 3 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 2 3 25 6 -1.
+ <_>
+ 2 6 25 3 2.
+ 0
+ <_>
+
+ <_>
+ 2 4 4 2 -1.
+ <_>
+ 3 4 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 2 5 2 8 -1.
+ <_>
+ 2 5 1 4 2.
+ <_>
+ 3 9 1 4 2.
+ 0
+ <_>
+
+ <_>
+ 2 5 6 4 -1.
+ <_>
+ 5 5 3 4 2.
+ 0
+ <_>
+
+ <_>
+ 2 5 10 8 -1.
+ <_>
+ 2 7 10 4 2.
+ 0
+ <_>
+
+ <_>
+ 2 7 4 6 -1.
+ <_>
+ 2 7 2 3 2.
+ <_>
+ 4 10 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 2 7 4 4 -1.
+ <_>
+ 2 9 4 2 2.
+ 0
+ <_>
+
+ <_>
+ 2 8 14 2 -1.
+ <_>
+ 9 8 7 2 2.
+ 0
+ <_>
+
+ <_>
+ 2 8 24 5 -1.
+ <_>
+ 14 8 12 5 2.
+ 0
+ <_>
+
+ <_>
+ 2 9 8 3 -1.
+ <_>
+ 6 9 4 3 2.
+ 0
+ <_>
+
+ <_>
+ 2 9 12 4 -1.
+ <_>
+ 6 9 4 4 3.
+ 0
+ <_>
+
+ <_>
+ 2 9 32 4 -1.
+ <_>
+ 2 9 16 2 2.
+ <_>
+ 18 11 16 2 2.
+ 0
+ <_>
+
+ <_>
+ 2 10 12 2 -1.
+ <_>
+ 2 10 6 1 2.
+ <_>
+ 8 11 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 2 11 38 1 -1.
+ <_>
+ 21 11 19 1 2.
+ 0
+ <_>
+
+ <_>
+ 2 12 32 1 -1.
+ <_>
+ 18 12 16 1 2.
+ 0
+ <_>
+
+ <_>
+ 3 0 1 2 -1.
+ <_>
+ 3 1 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 3 0 3 9 -1.
+ <_>
+ 4 3 1 3 9.
+ 0
+ <_>
+
+ <_>
+ 3 0 6 11 -1.
+ <_>
+ 5 0 2 11 3.
+ 0
+ <_>
+
+ <_>
+ 3 0 6 12 -1.
+ <_>
+ 5 0 2 12 3.
+ 0
+ <_>
+
+ <_>
+ 3 0 16 10 -1.
+ <_>
+ 11 0 8 10 2.
+ 0
+ <_>
+
+ <_>
+ 3 0 42 9 -1.
+ <_>
+ 17 3 14 3 9.
+ 0
+ <_>
+
+ <_>
+ 3 0 15 6 -1.
+ <_>
+ 3 3 15 3 2.
+ 0
+ <_>
+
+ <_>
+ 3 0 30 13 -1.
+ <_>
+ 18 0 15 13 2.
+ 0
+ <_>
+
+ <_>
+ 3 1 3 9 -1.
+ <_>
+ 4 1 1 9 3.
+ 0
+ <_>
+
+ <_>
+ 3 1 6 10 -1.
+ <_>
+ 5 1 2 10 3.
+ 0
+ <_>
+
+ <_>
+ 3 1 15 12 -1.
+ <_>
+ 8 5 5 4 9.
+ 0
+ <_>
+
+ <_>
+ 3 1 21 3 -1.
+ <_>
+ 10 1 7 3 3.
+ 0
+ <_>
+
+ <_>
+ 3 1 32 7 -1.
+ <_>
+ 11 1 16 7 2.
+ 0
+ <_>
+
+ <_>
+ 3 1 33 11 -1.
+ <_>
+ 14 1 11 11 3.
+ 0
+ <_>
+
+ <_>
+ 3 1 42 9 -1.
+ <_>
+ 17 4 14 3 9.
+ 0
+ <_>
+
+ <_>
+ 3 1 29 10 -1.
+ <_>
+ 3 6 29 5 2.
+ 0
+ <_>
+
+ <_>
+ 3 2 1 2 -1.
+ <_>
+ 3 2 1 1 2.
+ 1
+ <_>
+
+ <_>
+ 3 2 6 11 -1.
+ <_>
+ 5 2 2 11 3.
+ 0
+ <_>
+
+ <_>
+ 3 2 16 3 -1.
+ <_>
+ 7 2 8 3 2.
+ 0
+ <_>
+
+ <_>
+ 3 2 46 6 -1.
+ <_>
+ 3 5 46 3 2.
+ 0
+ <_>
+
+ <_>
+ 3 3 14 10 -1.
+ <_>
+ 10 3 7 10 2.
+ 0
+ <_>
+
+ <_>
+ 3 3 40 5 -1.
+ <_>
+ 13 3 20 5 2.
+ 0
+ <_>
+
+ <_>
+ 3 5 2 2 -1.
+ <_>
+ 4 5 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 3 5 16 5 -1.
+ <_>
+ 7 5 8 5 2.
+ 0
+ <_>
+
+ <_>
+ 3 5 16 2 -1.
+ <_>
+ 3 5 8 1 2.
+ <_>
+ 11 6 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 3 6 8 3 -1.
+ <_>
+ 7 6 4 3 2.
+ 0
+ <_>
+
+ <_>
+ 3 7 16 6 -1.
+ <_>
+ 11 7 8 6 2.
+ 0
+ <_>
+
+ <_>
+ 3 7 45 2 -1.
+ <_>
+ 3 8 45 1 2.
+ 0
+ <_>
+
+ <_>
+ 3 9 9 4 -1.
+ <_>
+ 6 9 3 4 3.
+ 0
+ <_>
+
+ <_>
+ 3 10 6 3 -1.
+ <_>
+ 5 11 2 1 9.
+ 0
+ <_>
+
+ <_>
+ 3 11 9 2 -1.
+ <_>
+ 3 12 9 1 2.
+ 0
+ <_>
+
+ <_>
+ 3 11 48 2 -1.
+ <_>
+ 3 12 48 1 2.
+ 0
+ <_>
+
+ <_>
+ 4 0 4 1 -1.
+ <_>
+ 4 0 2 1 2.
+ 1
+ <_>
+
+ <_>
+ 4 0 6 11 -1.
+ <_>
+ 6 0 2 11 3.
+ 0
+ <_>
+
+ <_>
+ 4 0 4 12 -1.
+ <_>
+ 4 3 4 6 2.
+ 0
+ <_>
+
+ <_>
+ 4 0 18 4 -1.
+ <_>
+ 10 0 6 4 3.
+ 0
+ <_>
+
+ <_>
+ 4 1 6 9 -1.
+ <_>
+ 6 1 2 9 3.
+ 0
+ <_>
+
+ <_>
+ 4 1 14 2 -1.
+ <_>
+ 11 1 7 2 2.
+ 0
+ <_>
+
+ <_>
+ 4 1 36 4 -1.
+ <_>
+ 22 1 18 4 2.
+ 0
+ <_>
+
+ <_>
+ 4 2 3 11 -1.
+ <_>
+ 5 2 1 11 3.
+ 0
+ <_>
+
+ <_>
+ 4 2 6 5 -1.
+ <_>
+ 6 2 2 5 3.
+ 0
+ <_>
+
+ <_>
+ 4 2 6 10 -1.
+ <_>
+ 6 2 2 10 3.
+ 0
+ <_>
+
+ <_>
+ 4 2 10 10 -1.
+ <_>
+ 4 2 5 5 2.
+ <_>
+ 9 7 5 5 2.
+ 0
+ <_>
+
+ <_>
+ 4 2 21 3 -1.
+ <_>
+ 11 2 7 3 3.
+ 0
+ <_>
+
+ <_>
+ 4 2 27 8 -1.
+ <_>
+ 4 4 27 4 2.
+ 0
+ <_>
+
+ <_>
+ 4 3 3 2 -1.
+ <_>
+ 5 4 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 4 3 2 6 -1.
+ <_>
+ 4 5 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 4 3 6 5 -1.
+ <_>
+ 6 3 2 5 3.
+ 0
+ <_>
+
+ <_>
+ 4 3 30 6 -1.
+ <_>
+ 14 5 10 2 9.
+ 0
+ <_>
+
+ <_>
+ 4 3 37 8 -1.
+ <_>
+ 4 5 37 4 2.
+ 0
+ <_>
+
+ <_>
+ 4 4 4 2 -1.
+ <_>
+ 5 5 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 4 4 4 2 -1.
+ <_>
+ 4 4 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 4 4 7 3 -1.
+ <_>
+ 4 5 7 1 3.
+ 0
+ <_>
+
+ <_>
+ 4 4 23 9 -1.
+ <_>
+ 4 7 23 3 3.
+ 0
+ <_>
+
+ <_>
+ 4 5 5 4 -1.
+ <_>
+ 4 7 5 2 2.
+ 0
+ <_>
+
+ <_>
+ 4 7 42 4 -1.
+ <_>
+ 4 8 42 2 2.
+ 0
+ <_>
+
+ <_>
+ 4 8 16 1 -1.
+ <_>
+ 12 8 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 4 9 24 4 -1.
+ <_>
+ 10 9 12 4 2.
+ 0
+ <_>
+
+ <_>
+ 4 10 10 2 -1.
+ <_>
+ 4 10 5 1 2.
+ <_>
+ 9 11 5 1 2.
+ 0
+ <_>
+
+ <_>
+ 4 10 7 2 -1.
+ <_>
+ 4 11 7 1 2.
+ 0
+ <_>
+
+ <_>
+ 5 0 16 8 -1.
+ <_>
+ 9 0 8 8 2.
+ 0
+ <_>
+
+ <_>
+ 5 0 24 13 -1.
+ <_>
+ 13 0 8 13 3.
+ 0
+ <_>
+
+ <_>
+ 5 1 8 12 -1.
+ <_>
+ 5 1 4 6 2.
+ <_>
+ 9 7 4 6 2.
+ 0
+ <_>
+
+ <_>
+ 5 1 36 12 -1.
+ <_>
+ 5 7 36 6 2.
+ 0
+ <_>
+
+ <_>
+ 5 2 3 10 -1.
+ <_>
+ 6 2 1 10 3.
+ 0
+ <_>
+
+ <_>
+ 5 2 6 6 -1.
+ <_>
+ 7 2 2 6 3.
+ 0
+ <_>
+
+ <_>
+ 5 2 3 6 -1.
+ <_>
+ 5 5 3 3 2.
+ 0
+ <_>
+
+ <_>
+ 5 2 12 9 -1.
+ <_>
+ 5 5 12 3 3.
+ 0
+ <_>
+
+ <_>
+ 5 2 34 8 -1.
+ <_>
+ 5 6 34 4 2.
+ 0
+ <_>
+
+ <_>
+ 5 3 3 6 -1.
+ <_>
+ 6 3 1 6 3.
+ 0
+ <_>
+
+ <_>
+ 5 3 6 4 -1.
+ <_>
+ 7 3 2 4 3.
+ 0
+ <_>
+
+ <_>
+ 5 3 4 5 -1.
+ <_>
+ 7 3 2 5 2.
+ 0
+ <_>
+
+ <_>
+ 5 3 4 6 -1.
+ <_>
+ 7 3 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 5 3 4 6 -1.
+ <_>
+ 5 6 4 3 2.
+ 0
+ <_>
+
+ <_>
+ 5 3 21 8 -1.
+ <_>
+ 12 3 7 8 3.
+ 0
+ <_>
+
+ <_>
+ 5 4 3 7 -1.
+ <_>
+ 6 4 1 7 3.
+ 0
+ <_>
+
+ <_>
+ 5 4 3 9 -1.
+ <_>
+ 6 4 1 9 3.
+ 0
+ <_>
+
+ <_>
+ 5 4 18 6 -1.
+ <_>
+ 11 6 6 2 9.
+ 0
+ <_>
+
+ <_>
+ 5 4 27 9 -1.
+ <_>
+ 14 7 9 3 9.
+ 0
+ <_>
+
+ <_>
+ 5 4 24 6 -1.
+ <_>
+ 17 4 12 6 2.
+ 0
+ <_>
+
+ <_>
+ 5 5 4 2 -1.
+ <_>
+ 6 5 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 5 5 2 3 -1.
+ <_>
+ 6 5 1 3 2.
+ 0
+ <_>
+
+ <_>
+ 5 5 3 4 -1.
+ <_>
+ 6 5 1 4 3.
+ 0
+ <_>
+
+ <_>
+ 5 5 4 7 -1.
+ <_>
+ 6 5 2 7 2.
+ 0
+ <_>
+
+ <_>
+ 5 5 4 2 -1.
+ <_>
+ 5 5 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 5 5 6 4 -1.
+ <_>
+ 7 5 2 4 3.
+ 0
+ <_>
+
+ <_>
+ 5 5 4 4 -1.
+ <_>
+ 5 7 4 2 2.
+ 0
+ <_>
+
+ <_>
+ 5 6 4 6 -1.
+ <_>
+ 6 6 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 5 6 12 2 -1.
+ <_>
+ 11 6 6 2 2.
+ 0
+ <_>
+
+ <_>
+ 5 7 3 6 -1.
+ <_>
+ 5 9 3 2 3.
+ 0
+ <_>
+
+ <_>
+ 5 7 6 6 -1.
+ <_>
+ 5 7 3 3 2.
+ <_>
+ 8 10 3 3 2.
+ 0
+ <_>
+
+ <_>
+ 5 7 6 6 -1.
+ <_>
+ 8 7 3 6 2.
+ 0
+ <_>
+
+ <_>
+ 5 7 12 6 -1.
+ <_>
+ 5 10 12 3 2.
+ 0
+ <_>
+
+ <_>
+ 5 9 9 4 -1.
+ <_>
+ 8 9 3 4 3.
+ 0
+ <_>
+
+ <_>
+ 5 10 6 2 -1.
+ <_>
+ 5 10 3 1 2.
+ <_>
+ 8 11 3 1 2.
+ 0
+ <_>
+
+ <_>
+ 5 10 20 3 -1.
+ <_>
+ 10 10 10 3 2.
+ 0
+ <_>
+
+ <_>
+ 5 11 16 2 -1.
+ <_>
+ 5 12 16 1 2.
+ 0
+ <_>
+
+ <_>
+ 6 0 2 6 -1.
+ <_>
+ 4 2 2 2 3.
+ 1
+ <_>
+
+ <_>
+ 6 0 12 1 -1.
+ <_>
+ 9 3 6 1 2.
+ 1
+ <_>
+
+ <_>
+ 6 0 3 6 -1.
+ <_>
+ 4 2 3 2 3.
+ 1
+ <_>
+
+ <_>
+ 6 0 6 5 -1.
+ <_>
+ 6 0 3 5 2.
+ 1
+ <_>
+
+ <_>
+ 6 0 8 2 -1.
+ <_>
+ 6 0 4 1 2.
+ <_>
+ 10 1 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 6 0 33 13 -1.
+ <_>
+ 17 0 11 13 3.
+ 0
+ <_>
+
+ <_>
+ 6 1 4 5 -1.
+ <_>
+ 7 1 2 5 2.
+ 0
+ <_>
+
+ <_>
+ 6 1 2 11 -1.
+ <_>
+ 7 1 1 11 2.
+ 0
+ <_>
+
+ <_>
+ 6 1 6 12 -1.
+ <_>
+ 8 1 2 12 3.
+ 0
+ <_>
+
+ <_>
+ 6 1 12 11 -1.
+ <_>
+ 12 1 6 11 2.
+ 0
+ <_>
+
+ <_>
+ 6 2 4 4 -1.
+ <_>
+ 7 2 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 6 2 3 7 -1.
+ <_>
+ 7 2 1 7 3.
+ 0
+ <_>
+
+ <_>
+ 6 2 12 10 -1.
+ <_>
+ 12 2 6 10 2.
+ 0
+ <_>
+
+ <_>
+ 6 3 1 6 -1.
+ <_>
+ 6 6 1 3 2.
+ 0
+ <_>
+
+ <_>
+ 6 3 3 8 -1.
+ <_>
+ 7 3 1 8 3.
+ 0
+ <_>
+
+ <_>
+ 6 3 37 6 -1.
+ <_>
+ 6 6 37 3 2.
+ 0
+ <_>
+
+ <_>
+ 6 4 3 4 -1.
+ <_>
+ 7 4 1 4 3.
+ 0
+ <_>
+
+ <_>
+ 6 4 8 2 -1.
+ <_>
+ 8 4 4 2 2.
+ 0
+ <_>
+
+ <_>
+ 6 4 3 4 -1.
+ <_>
+ 6 6 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 6 4 3 6 -1.
+ <_>
+ 6 6 3 2 3.
+ 0
+ <_>
+
+ <_>
+ 6 4 9 9 -1.
+ <_>
+ 9 7 3 3 9.
+ 0
+ <_>
+
+ <_>
+ 6 6 4 5 -1.
+ <_>
+ 7 6 2 5 2.
+ 0
+ <_>
+
+ <_>
+ 6 6 4 6 -1.
+ <_>
+ 7 6 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 6 9 6 4 -1.
+ <_>
+ 6 9 3 2 2.
+ <_>
+ 9 11 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 6 10 20 3 -1.
+ <_>
+ 11 10 10 3 2.
+ 0
+ <_>
+
+ <_>
+ 6 11 7 2 -1.
+ <_>
+ 6 12 7 1 2.
+ 0
+ <_>
+
+ <_>
+ 6 11 17 2 -1.
+ <_>
+ 6 12 17 1 2.
+ 0
+ <_>
+
+ <_>
+ 7 0 12 1 -1.
+ <_>
+ 10 0 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 7 0 4 2 -1.
+ <_>
+ 7 1 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 7 0 32 9 -1.
+ <_>
+ 23 0 16 9 2.
+ 0
+ <_>
+
+ <_>
+ 7 0 38 13 -1.
+ <_>
+ 26 0 19 13 2.
+ 0
+ <_>
+
+ <_>
+ 7 1 4 2 -1.
+ <_>
+ 8 2 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 7 1 16 10 -1.
+ <_>
+ 11 1 8 10 2.
+ 0
+ <_>
+
+ <_>
+ 7 1 15 6 -1.
+ <_>
+ 12 1 5 6 3.
+ 0
+ <_>
+
+ <_>
+ 7 1 15 8 -1.
+ <_>
+ 12 1 5 8 3.
+ 0
+ <_>
+
+ <_>
+ 7 1 15 11 -1.
+ <_>
+ 12 1 5 11 3.
+ 0
+ <_>
+
+ <_>
+ 7 1 7 6 -1.
+ <_>
+ 7 4 7 3 2.
+ 0
+ <_>
+
+ <_>
+ 7 2 1 4 -1.
+ <_>
+ 6 3 1 2 2.
+ 1
+ <_>
+
+ <_>
+ 7 2 4 2 -1.
+ <_>
+ 8 3 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 7 2 4 7 -1.
+ <_>
+ 8 3 2 7 2.
+ 1
+ <_>
+
+ <_>
+ 7 2 2 9 -1.
+ <_>
+ 8 2 1 9 2.
+ 0
+ <_>
+
+ <_>
+ 7 2 6 3 -1.
+ <_>
+ 9 3 2 1 9.
+ 0
+ <_>
+
+ <_>
+ 7 3 2 5 -1.
+ <_>
+ 8 3 1 5 2.
+ 0
+ <_>
+
+ <_>
+ 7 3 2 6 -1.
+ <_>
+ 8 3 1 6 2.
+ 0
+ <_>
+
+ <_>
+ 7 3 3 7 -1.
+ <_>
+ 8 3 1 7 3.
+ 0
+ <_>
+
+ <_>
+ 7 4 1 4 -1.
+ <_>
+ 7 5 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 7 4 3 7 -1.
+ <_>
+ 8 4 1 7 3.
+ 0
+ <_>
+
+ <_>
+ 7 4 28 9 -1.
+ <_>
+ 21 4 14 9 2.
+ 0
+ <_>
+
+ <_>
+ 7 5 3 6 -1.
+ <_>
+ 8 5 1 6 3.
+ 0
+ <_>
+
+ <_>
+ 7 5 4 6 -1.
+ <_>
+ 8 5 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 7 5 4 4 -1.
+ <_>
+ 7 5 2 2 2.
+ <_>
+ 9 7 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 7 6 3 3 -1.
+ <_>
+ 8 6 1 3 3.
+ 0
+ <_>
+
+ <_>
+ 7 6 3 6 -1.
+ <_>
+ 8 6 1 6 3.
+ 0
+ <_>
+
+ <_>
+ 7 10 4 2 -1.
+ <_>
+ 7 10 2 1 2.
+ <_>
+ 9 11 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 7 10 6 2 -1.
+ <_>
+ 7 11 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 7 11 36 2 -1.
+ <_>
+ 7 11 18 1 2.
+ <_>
+ 25 12 18 1 2.
+ 0
+ <_>
+
+ <_>
+ 8 0 3 2 -1.
+ <_>
+ 9 1 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 8 0 2 8 -1.
+ <_>
+ 8 0 1 8 2.
+ 1
+ <_>
+
+ <_>
+ 8 0 6 4 -1.
+ <_>
+ 8 0 3 2 2.
+ <_>
+ 11 2 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 8 0 8 2 -1.
+ <_>
+ 8 0 4 1 2.
+ <_>
+ 12 1 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 8 0 10 12 -1.
+ <_>
+ 13 0 5 12 2.
+ 0
+ <_>
+
+ <_>
+ 8 0 15 12 -1.
+ <_>
+ 13 0 5 12 3.
+ 0
+ <_>
+
+ <_>
+ 8 0 15 13 -1.
+ <_>
+ 13 0 5 13 3.
+ 0
+ <_>
+
+ <_>
+ 8 0 8 6 -1.
+ <_>
+ 8 3 8 3 2.
+ 0
+ <_>
+
+ <_>
+ 8 1 3 2 -1.
+ <_>
+ 9 2 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 8 1 12 3 -1.
+ <_>
+ 12 1 4 3 3.
+ 0
+ <_>
+
+ <_>
+ 8 1 8 6 -1.
+ <_>
+ 12 1 4 6 2.
+ 0
+ <_>
+
+ <_>
+ 8 1 15 4 -1.
+ <_>
+ 13 1 5 4 3.
+ 0
+ <_>
+
+ <_>
+ 8 1 15 12 -1.
+ <_>
+ 13 1 5 12 3.
+ 0
+ <_>
+
+ <_>
+ 8 1 8 10 -1.
+ <_>
+ 8 6 8 5 2.
+ 0
+ <_>
+
+ <_>
+ 8 1 10 8 -1.
+ <_>
+ 8 3 10 4 2.
+ 0
+ <_>
+
+ <_>
+ 8 2 4 3 -1.
+ <_>
+ 9 2 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 8 2 3 4 -1.
+ <_>
+ 9 2 1 4 3.
+ 0
+ <_>
+
+ <_>
+ 8 2 4 4 -1.
+ <_>
+ 9 2 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 8 2 6 2 -1.
+ <_>
+ 10 2 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 8 2 7 4 -1.
+ <_>
+ 8 4 7 2 2.
+ 0
+ <_>
+
+ <_>
+ 8 3 4 3 -1.
+ <_>
+ 9 3 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 8 4 10 9 -1.
+ <_>
+ 13 4 5 9 2.
+ 0
+ <_>
+
+ <_>
+ 8 5 23 2 -1.
+ <_>
+ 8 6 23 1 2.
+ 0
+ <_>
+
+ <_>
+ 8 6 3 1 -1.
+ <_>
+ 9 7 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 8 6 3 5 -1.
+ <_>
+ 9 6 1 5 3.
+ 0
+ <_>
+
+ <_>
+ 8 6 3 6 -1.
+ <_>
+ 9 6 1 6 3.
+ 0
+ <_>
+
+ <_>
+ 8 7 6 2 -1.
+ <_>
+ 11 7 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 8 9 4 4 -1.
+ <_>
+ 8 11 4 2 2.
+ 0
+ <_>
+
+ <_>
+ 8 10 8 2 -1.
+ <_>
+ 8 11 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 9 0 4 10 -1.
+ <_>
+ 10 0 2 10 2.
+ 0
+ <_>
+
+ <_>
+ 9 0 6 1 -1.
+ <_>
+ 11 0 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 9 0 6 3 -1.
+ <_>
+ 11 1 2 1 9.
+ 0
+ <_>
+
+ <_>
+ 9 0 4 4 -1.
+ <_>
+ 9 0 2 2 2.
+ <_>
+ 11 2 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 9 0 12 12 -1.
+ <_>
+ 13 0 4 12 3.
+ 0
+ <_>
+
+ <_>
+ 9 1 3 2 -1.
+ <_>
+ 10 2 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 9 1 12 2 -1.
+ <_>
+ 13 1 4 2 3.
+ 0
+ <_>
+
+ <_>
+ 9 1 12 4 -1.
+ <_>
+ 13 1 4 4 3.
+ 0
+ <_>
+
+ <_>
+ 9 1 12 11 -1.
+ <_>
+ 13 1 4 11 3.
+ 0
+ <_>
+
+ <_>
+ 9 1 8 12 -1.
+ <_>
+ 13 1 4 12 2.
+ 0
+ <_>
+
+ <_>
+ 9 1 12 12 -1.
+ <_>
+ 13 1 4 12 3.
+ 0
+ <_>
+
+ <_>
+ 9 2 12 10 -1.
+ <_>
+ 13 2 4 10 3.
+ 0
+ <_>
+
+ <_>
+ 9 3 4 8 -1.
+ <_>
+ 9 7 4 4 2.
+ 0
+ <_>
+
+ <_>
+ 9 3 6 8 -1.
+ <_>
+ 9 7 6 4 2.
+ 0
+ <_>
+
+ <_>
+ 9 4 33 4 -1.
+ <_>
+ 9 5 33 2 2.
+ 0
+ <_>
+
+ <_>
+ 9 5 4 6 -1.
+ <_>
+ 9 5 2 3 2.
+ <_>
+ 11 8 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 9 7 8 6 -1.
+ <_>
+ 9 9 8 2 3.
+ 0
+ <_>
+
+ <_>
+ 9 8 3 3 -1.
+ <_>
+ 10 9 1 1 9.
+ 0
+ <_>
+
+ <_>
+ 9 8 3 2 -1.
+ <_>
+ 10 9 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 9 8 8 4 -1.
+ <_>
+ 13 8 4 4 2.
+ 0
+ <_>
+
+ <_>
+ 9 8 20 1 -1.
+ <_>
+ 19 8 10 1 2.
+ 0
+ <_>
+
+ <_>
+ 9 9 2 4 -1.
+ <_>
+ 9 11 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 9 10 6 2 -1.
+ <_>
+ 9 10 3 1 2.
+ <_>
+ 12 11 3 1 2.
+ 0
+ <_>
+
+ <_>
+ 9 10 16 3 -1.
+ <_>
+ 13 10 8 3 2.
+ 0
+ <_>
+
+ <_>
+ 9 10 42 3 -1.
+ <_>
+ 30 10 21 3 2.
+ 0
+ <_>
+
+ <_>
+ 9 12 42 1 -1.
+ <_>
+ 23 12 14 1 3.
+ 0
+ <_>
+
+ <_>
+ 10 0 12 2 -1.
+ <_>
+ 10 0 6 1 2.
+ <_>
+ 16 1 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 10 0 8 2 -1.
+ <_>
+ 10 1 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 10 1 9 11 -1.
+ <_>
+ 13 1 3 11 3.
+ 0
+ <_>
+
+ <_>
+ 10 1 12 2 -1.
+ <_>
+ 14 1 4 2 3.
+ 0
+ <_>
+
+ <_>
+ 10 2 3 9 -1.
+ <_>
+ 11 5 1 3 9.
+ 0
+ <_>
+
+ <_>
+ 10 2 4 5 -1.
+ <_>
+ 11 2 2 5 2.
+ 0
+ <_>
+
+ <_>
+ 10 2 12 11 -1.
+ <_>
+ 13 2 6 11 2.
+ 0
+ <_>
+
+ <_>
+ 10 2 4 3 -1.
+ <_>
+ 9 3 4 1 3.
+ 1
+ <_>
+
+ <_>
+ 10 3 2 4 -1.
+ <_>
+ 10 3 1 2 2.
+ <_>
+ 11 5 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 10 4 8 1 -1.
+ <_>
+ 10 4 4 1 2.
+ 1
+ <_>
+
+ <_>
+ 10 6 4 4 -1.
+ <_>
+ 10 6 2 2 2.
+ <_>
+ 12 8 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 10 6 6 5 -1.
+ <_>
+ 13 6 3 5 2.
+ 0
+ <_>
+
+ <_>
+ 10 7 2 6 -1.
+ <_>
+ 10 9 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 10 9 2 3 -1.
+ <_>
+ 10 10 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 10 10 1 2 -1.
+ <_>
+ 10 11 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 10 11 3 2 -1.
+ <_>
+ 10 12 3 1 2.
+ 0
+ <_>
+
+ <_>
+ 10 11 6 2 -1.
+ <_>
+ 10 12 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 11 0 3 8 -1.
+ <_>
+ 11 4 3 4 2.
+ 0
+ <_>
+
+ <_>
+ 11 0 12 12 -1.
+ <_>
+ 15 0 4 12 3.
+ 0
+ <_>
+
+ <_>
+ 11 0 10 4 -1.
+ <_>
+ 11 0 5 2 2.
+ <_>
+ 16 2 5 2 2.
+ 0
+ <_>
+
+ <_>
+ 11 0 6 6 -1.
+ <_>
+ 11 3 6 3 2.
+ 0
+ <_>
+
+ <_>
+ 11 0 21 7 -1.
+ <_>
+ 18 0 7 7 3.
+ 0
+ <_>
+
+ <_>
+ 11 0 10 3 -1.
+ <_>
+ 10 1 10 1 3.
+ 1
+ <_>
+
+ <_>
+ 11 0 36 9 -1.
+ <_>
+ 29 0 18 9 2.
+ 0
+ <_>
+
+ <_>
+ 11 1 2 3 -1.
+ <_>
+ 10 2 2 1 3.
+ 1
+ <_>
+
+ <_>
+ 11 1 9 11 -1.
+ <_>
+ 14 1 3 11 3.
+ 0
+ <_>
+
+ <_>
+ 11 1 12 11 -1.
+ <_>
+ 15 1 4 11 3.
+ 0
+ <_>
+
+ <_>
+ 11 2 9 9 -1.
+ <_>
+ 14 5 3 3 9.
+ 0
+ <_>
+
+ <_>
+ 11 2 12 5 -1.
+ <_>
+ 14 2 6 5 2.
+ 0
+ <_>
+
+ <_>
+ 11 3 6 9 -1.
+ <_>
+ 13 6 2 3 9.
+ 0
+ <_>
+
+ <_>
+ 11 3 3 3 -1.
+ <_>
+ 10 4 3 1 3.
+ 1
+ <_>
+
+ <_>
+ 11 3 27 6 -1.
+ <_>
+ 11 6 27 3 2.
+ 0
+ <_>
+
+ <_>
+ 11 4 6 9 -1.
+ <_>
+ 13 7 2 3 9.
+ 0
+ <_>
+
+ <_>
+ 11 4 26 6 -1.
+ <_>
+ 11 7 26 3 2.
+ 0
+ <_>
+
+ <_>
+ 11 4 27 6 -1.
+ <_>
+ 11 7 27 3 2.
+ 0
+ <_>
+
+ <_>
+ 11 4 31 2 -1.
+ <_>
+ 11 5 31 1 2.
+ 0
+ <_>
+
+ <_>
+ 11 4 35 2 -1.
+ <_>
+ 11 5 35 1 2.
+ 0
+ <_>
+
+ <_>
+ 11 7 30 3 -1.
+ <_>
+ 21 8 10 1 9.
+ 0
+ <_>
+
+ <_>
+ 11 8 8 4 -1.
+ <_>
+ 13 8 4 4 2.
+ 0
+ <_>
+
+ <_>
+ 11 8 6 4 -1.
+ <_>
+ 11 10 6 2 2.
+ 0
+ <_>
+
+ <_>
+ 11 9 8 2 -1.
+ <_>
+ 13 9 4 2 2.
+ 0
+ <_>
+
+ <_>
+ 12 0 4 1 -1.
+ <_>
+ 14 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 12 0 16 5 -1.
+ <_>
+ 16 0 8 5 2.
+ 0
+ <_>
+
+ <_>
+ 12 0 16 13 -1.
+ <_>
+ 16 0 8 13 2.
+ 0
+ <_>
+
+ <_>
+ 12 0 18 5 -1.
+ <_>
+ 18 0 6 5 3.
+ 0
+ <_>
+
+ <_>
+ 12 0 7 2 -1.
+ <_>
+ 12 1 7 1 2.
+ 0
+ <_>
+
+ <_>
+ 12 1 6 12 -1.
+ <_>
+ 14 5 2 4 9.
+ 0
+ <_>
+
+ <_>
+ 12 1 10 2 -1.
+ <_>
+ 17 1 5 2 2.
+ 0
+ <_>
+
+ <_>
+ 12 2 2 3 -1.
+ <_>
+ 12 2 1 3 2.
+ 1
+ <_>
+
+ <_>
+ 12 2 9 2 -1.
+ <_>
+ 15 2 3 2 3.
+ 0
+ <_>
+
+ <_>
+ 12 2 12 4 -1.
+ <_>
+ 16 2 4 4 3.
+ 0
+ <_>
+
+ <_>
+ 12 2 28 2 -1.
+ <_>
+ 19 2 14 2 2.
+ 0
+ <_>
+
+ <_>
+ 12 3 6 2 -1.
+ <_>
+ 14 5 2 2 3.
+ 1
+ <_>
+
+ <_>
+ 12 4 4 5 -1.
+ <_>
+ 13 5 2 5 2.
+ 1
+ <_>
+
+ <_>
+ 12 4 4 3 -1.
+ <_>
+ 12 4 2 3 2.
+ 1
+ <_>
+
+ <_>
+ 12 4 6 6 -1.
+ <_>
+ 14 4 2 6 3.
+ 0
+ <_>
+
+ <_>
+ 12 4 5 2 -1.
+ <_>
+ 12 5 5 1 2.
+ 0
+ <_>
+
+ <_>
+ 12 4 18 9 -1.
+ <_>
+ 18 7 6 3 9.
+ 0
+ <_>
+
+ <_>
+ 12 5 6 5 -1.
+ <_>
+ 14 5 2 5 3.
+ 0
+ <_>
+
+ <_>
+ 12 5 18 6 -1.
+ <_>
+ 18 7 6 2 9.
+ 0
+ <_>
+
+ <_>
+ 12 7 21 3 -1.
+ <_>
+ 19 8 7 1 9.
+ 0
+ <_>
+
+ <_>
+ 12 12 6 1 -1.
+ <_>
+ 14 12 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 12 12 39 1 -1.
+ <_>
+ 25 12 13 1 3.
+ 0
+ <_>
+
+ <_>
+ 13 0 16 5 -1.
+ <_>
+ 17 0 8 5 2.
+ 0
+ <_>
+
+ <_>
+ 13 0 5 8 -1.
+ <_>
+ 11 2 5 4 2.
+ 1
+ <_>
+
+ <_>
+ 13 0 24 10 -1.
+ <_>
+ 19 0 12 10 2.
+ 0
+ <_>
+
+ <_>
+ 13 0 36 3 -1.
+ <_>
+ 22 0 18 3 2.
+ 0
+ <_>
+
+ <_>
+ 13 0 28 1 -1.
+ <_>
+ 27 0 14 1 2.
+ 0
+ <_>
+
+ <_>
+ 13 1 8 3 -1.
+ <_>
+ 17 1 4 3 2.
+ 0
+ <_>
+
+ <_>
+ 13 1 8 6 -1.
+ <_>
+ 17 1 4 6 2.
+ 0
+ <_>
+
+ <_>
+ 13 1 20 7 -1.
+ <_>
+ 18 1 10 7 2.
+ 0
+ <_>
+
+ <_>
+ 13 1 36 1 -1.
+ <_>
+ 31 1 18 1 2.
+ 0
+ <_>
+
+ <_>
+ 13 1 20 3 -1.
+ <_>
+ 13 2 20 1 3.
+ 0
+ <_>
+
+ <_>
+ 13 2 14 1 -1.
+ <_>
+ 20 2 7 1 2.
+ 0
+ <_>
+
+ <_>
+ 13 3 3 8 -1.
+ <_>
+ 13 5 3 4 2.
+ 0
+ <_>
+
+ <_>
+ 13 3 4 2 -1.
+ <_>
+ 13 4 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 13 4 5 2 -1.
+ <_>
+ 13 5 5 1 2.
+ 0
+ <_>
+
+ <_>
+ 13 5 4 3 -1.
+ <_>
+ 13 5 2 3 2.
+ 1
+ <_>
+
+ <_>
+ 13 5 24 6 -1.
+ <_>
+ 19 5 12 6 2.
+ 0
+ <_>
+
+ <_>
+ 13 5 32 6 -1.
+ <_>
+ 13 8 32 3 2.
+ 0
+ <_>
+
+ <_>
+ 13 6 1 3 -1.
+ <_>
+ 12 7 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 13 6 3 6 -1.
+ <_>
+ 13 8 3 2 3.
+ 0
+ <_>
+
+ <_>
+ 13 7 3 4 -1.
+ <_>
+ 13 9 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 13 8 6 2 -1.
+ <_>
+ 13 9 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 13 9 10 4 -1.
+ <_>
+ 18 9 5 4 2.
+ 0
+ <_>
+
+ <_>
+ 13 9 18 4 -1.
+ <_>
+ 19 9 6 4 3.
+ 0
+ <_>
+
+ <_>
+ 14 0 4 1 -1.
+ <_>
+ 15 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 14 0 1 8 -1.
+ <_>
+ 14 4 1 4 2.
+ 0
+ <_>
+
+ <_>
+ 14 0 1 12 -1.
+ <_>
+ 14 4 1 4 3.
+ 0
+ <_>
+
+ <_>
+ 14 0 1 12 -1.
+ <_>
+ 14 6 1 6 2.
+ 0
+ <_>
+
+ <_>
+ 14 0 8 4 -1.
+ <_>
+ 14 0 4 2 2.
+ <_>
+ 18 2 4 2 2.
+ 0
+ <_>
+
+ <_>
+ 14 0 12 6 -1.
+ <_>
+ 18 2 4 2 9.
+ 0
+ <_>
+
+ <_>
+ 14 0 16 4 -1.
+ <_>
+ 18 0 8 4 2.
+ 0
+ <_>
+
+ <_>
+ 14 1 1 4 -1.
+ <_>
+ 14 3 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 14 1 2 4 -1.
+ <_>
+ 14 2 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 14 1 2 12 -1.
+ <_>
+ 14 7 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 14 2 2 8 -1.
+ <_>
+ 14 4 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 14 2 2 9 -1.
+ <_>
+ 14 5 2 3 3.
+ 0
+ <_>
+
+ <_>
+ 14 2 18 4 -1.
+ <_>
+ 14 2 9 2 2.
+ <_>
+ 23 4 9 2 2.
+ 0
+ <_>
+
+ <_>
+ 14 3 12 9 -1.
+ <_>
+ 14 6 12 3 3.
+ 0
+ <_>
+
+ <_>
+ 14 4 2 1 -1.
+ <_>
+ 15 4 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 14 4 16 1 -1.
+ <_>
+ 22 4 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 14 5 2 4 -1.
+ <_>
+ 14 6 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 14 5 2 6 -1.
+ <_>
+ 14 8 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 14 5 3 4 -1.
+ <_>
+ 14 6 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 14 5 3 6 -1.
+ <_>
+ 14 8 3 3 2.
+ 0
+ <_>
+
+ <_>
+ 14 5 4 3 -1.
+ <_>
+ 13 6 4 1 3.
+ 1
+ <_>
+
+ <_>
+ 14 6 3 4 -1.
+ <_>
+ 14 8 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 14 7 3 2 -1.
+ <_>
+ 14 8 3 1 2.
+ 0
+ <_>
+
+ <_>
+ 14 8 2 3 -1.
+ <_>
+ 15 8 1 3 2.
+ 0
+ <_>
+
+ <_>
+ 14 8 9 2 -1.
+ <_>
+ 17 8 3 2 3.
+ 0
+ <_>
+
+ <_>
+ 14 8 6 4 -1.
+ <_>
+ 17 8 3 4 2.
+ 0
+ <_>
+
+ <_>
+ 14 9 2 2 -1.
+ <_>
+ 14 10 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 14 9 16 4 -1.
+ <_>
+ 18 9 8 4 2.
+ 0
+ <_>
+
+ <_>
+ 14 11 15 2 -1.
+ <_>
+ 19 11 5 2 3.
+ 0
+ <_>
+
+ <_>
+ 14 12 2 1 -1.
+ <_>
+ 15 12 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 14 12 3 1 -1.
+ <_>
+ 15 12 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 15 0 4 1 -1.
+ <_>
+ 16 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 15 0 10 2 -1.
+ <_>
+ 20 0 5 2 2.
+ 0
+ <_>
+
+ <_>
+ 15 0 15 2 -1.
+ <_>
+ 20 0 5 2 3.
+ 0
+ <_>
+
+ <_>
+ 15 0 33 9 -1.
+ <_>
+ 15 3 33 3 3.
+ 0
+ <_>
+
+ <_>
+ 15 1 1 12 -1.
+ <_>
+ 15 7 1 6 2.
+ 0
+ <_>
+
+ <_>
+ 15 1 2 6 -1.
+ <_>
+ 15 3 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 15 1 36 2 -1.
+ <_>
+ 33 1 18 2 2.
+ 0
+ <_>
+
+ <_>
+ 15 2 1 9 -1.
+ <_>
+ 15 5 1 3 3.
+ 0
+ <_>
+
+ <_>
+ 15 2 3 4 -1.
+ <_>
+ 15 4 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 15 2 9 9 -1.
+ <_>
+ 18 5 3 3 9.
+ 0
+ <_>
+
+ <_>
+ 15 2 24 6 -1.
+ <_>
+ 15 2 12 3 2.
+ <_>
+ 27 5 12 3 2.
+ 0
+ <_>
+
+ <_>
+ 15 3 4 3 -1.
+ <_>
+ 16 4 2 3 2.
+ 1
+ <_>
+
+ <_>
+ 15 3 4 6 -1.
+ <_>
+ 15 6 4 3 2.
+ 0
+ <_>
+
+ <_>
+ 15 4 3 4 -1.
+ <_>
+ 15 6 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 15 4 6 3 -1.
+ <_>
+ 14 5 6 1 3.
+ 1
+ <_>
+
+ <_>
+ 15 6 4 4 -1.
+ <_>
+ 15 6 2 2 2.
+ <_>
+ 17 8 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 15 8 1 3 -1.
+ <_>
+ 15 9 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 15 8 15 5 -1.
+ <_>
+ 20 8 5 5 3.
+ 0
+ <_>
+
+ <_>
+ 15 9 1 2 -1.
+ <_>
+ 15 10 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 15 9 2 2 -1.
+ <_>
+ 15 9 1 1 2.
+ <_>
+ 16 10 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 15 10 13 3 -1.
+ <_>
+ 15 11 13 1 3.
+ 0
+ <_>
+
+ <_>
+ 15 10 34 3 -1.
+ <_>
+ 15 11 34 1 3.
+ 0
+ <_>
+
+ <_>
+ 15 11 35 2 -1.
+ <_>
+ 15 12 35 1 2.
+ 0
+ <_>
+
+ <_>
+ 16 0 1 2 -1.
+ <_>
+ 16 0 1 1 2.
+ 1
+ <_>
+
+ <_>
+ 16 0 4 8 -1.
+ <_>
+ 16 0 2 8 2.
+ 1
+ <_>
+
+ <_>
+ 16 0 12 1 -1.
+ <_>
+ 19 0 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 16 0 6 6 -1.
+ <_>
+ 14 2 6 2 3.
+ 1
+ <_>
+
+ <_>
+ 16 0 26 4 -1.
+ <_>
+ 29 0 13 4 2.
+ 0
+ <_>
+
+ <_>
+ 16 1 18 12 -1.
+ <_>
+ 22 1 6 12 3.
+ 0
+ <_>
+
+ <_>
+ 16 1 18 2 -1.
+ <_>
+ 16 2 18 1 2.
+ 0
+ <_>
+
+ <_>
+ 16 2 4 5 -1.
+ <_>
+ 16 2 2 5 2.
+ 1
+ <_>
+
+ <_>
+ 16 3 1 2 -1.
+ <_>
+ 16 4 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 16 5 5 3 -1.
+ <_>
+ 15 6 5 1 3.
+ 1
+ <_>
+
+ <_>
+ 16 9 15 4 -1.
+ <_>
+ 21 9 5 4 3.
+ 0
+ <_>
+
+ <_>
+ 16 9 18 4 -1.
+ <_>
+ 22 9 6 4 3.
+ 0
+ <_>
+
+ <_>
+ 17 0 1 6 -1.
+ <_>
+ 15 2 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 17 0 6 2 -1.
+ <_>
+ 17 1 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 17 0 18 5 -1.
+ <_>
+ 23 0 6 5 3.
+ 0
+ <_>
+
+ <_>
+ 17 0 8 2 -1.
+ <_>
+ 17 1 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 17 0 11 4 -1.
+ <_>
+ 17 2 11 2 2.
+ 0
+ <_>
+
+ <_>
+ 17 0 16 3 -1.
+ <_>
+ 17 1 16 1 3.
+ 0
+ <_>
+
+ <_>
+ 17 0 17 3 -1.
+ <_>
+ 17 1 17 1 3.
+ 0
+ <_>
+
+ <_>
+ 17 0 19 2 -1.
+ <_>
+ 17 1 19 1 2.
+ 0
+ <_>
+
+ <_>
+ 17 0 20 4 -1.
+ <_>
+ 17 1 20 2 2.
+ 0
+ <_>
+
+ <_>
+ 17 0 32 8 -1.
+ <_>
+ 17 4 32 4 2.
+ 0
+ <_>
+
+ <_>
+ 17 4 1 2 -1.
+ <_>
+ 17 5 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 17 7 8 1 -1.
+ <_>
+ 21 7 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 17 7 21 3 -1.
+ <_>
+ 17 8 21 1 3.
+ 0
+ <_>
+
+ <_>
+ 17 7 28 6 -1.
+ <_>
+ 17 9 28 2 3.
+ 0
+ <_>
+
+ <_>
+ 18 0 3 1 -1.
+ <_>
+ 19 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 18 0 2 5 -1.
+ <_>
+ 18 0 1 5 2.
+ 1
+ <_>
+
+ <_>
+ 18 0 3 4 -1.
+ <_>
+ 18 2 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 18 0 11 2 -1.
+ <_>
+ 18 1 11 1 2.
+ 0
+ <_>
+
+ <_>
+ 18 0 18 3 -1.
+ <_>
+ 18 1 18 1 3.
+ 0
+ <_>
+
+ <_>
+ 18 1 17 2 -1.
+ <_>
+ 18 2 17 1 2.
+ 0
+ <_>
+
+ <_>
+ 18 2 4 4 -1.
+ <_>
+ 19 2 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 18 2 2 6 -1.
+ <_>
+ 16 4 2 2 3.
+ 1
+ <_>
+
+ <_>
+ 18 2 6 4 -1.
+ <_>
+ 20 2 2 4 3.
+ 0
+ <_>
+
+ <_>
+ 18 3 3 2 -1.
+ <_>
+ 19 3 1 2 3.
+ 0
+ <_>
+
+ <_>
+ 18 7 4 3 -1.
+ <_>
+ 19 7 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 18 8 4 2 -1.
+ <_>
+ 19 8 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 18 8 4 3 -1.
+ <_>
+ 19 8 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 18 10 27 3 -1.
+ <_>
+ 18 11 27 1 3.
+ 0
+ <_>
+
+ <_>
+ 19 0 2 1 -1.
+ <_>
+ 20 0 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 19 0 3 1 -1.
+ <_>
+ 20 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 19 0 3 8 -1.
+ <_>
+ 20 1 1 8 3.
+ 1
+ <_>
+
+ <_>
+ 19 1 3 6 -1.
+ <_>
+ 20 3 1 2 9.
+ 0
+ <_>
+
+ <_>
+ 19 1 9 12 -1.
+ <_>
+ 22 1 3 12 3.
+ 0
+ <_>
+
+ <_>
+ 19 1 17 2 -1.
+ <_>
+ 19 2 17 1 2.
+ 0
+ <_>
+
+ <_>
+ 19 3 6 2 -1.
+ <_>
+ 21 3 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 19 4 4 4 -1.
+ <_>
+ 19 4 2 2 2.
+ <_>
+ 21 6 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 19 12 2 1 -1.
+ <_>
+ 20 12 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 20 0 4 1 -1.
+ <_>
+ 21 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 20 0 4 11 -1.
+ <_>
+ 21 0 2 11 2.
+ 0
+ <_>
+
+ <_>
+ 20 0 6 1 -1.
+ <_>
+ 22 0 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 20 0 12 12 -1.
+ <_>
+ 24 0 4 12 3.
+ 0
+ <_>
+
+ <_>
+ 20 0 12 3 -1.
+ <_>
+ 26 0 6 3 2.
+ 0
+ <_>
+
+ <_>
+ 20 0 18 3 -1.
+ <_>
+ 26 0 6 3 3.
+ 0
+ <_>
+
+ <_>
+ 20 0 18 4 -1.
+ <_>
+ 29 0 9 4 2.
+ 0
+ <_>
+
+ <_>
+ 20 0 26 1 -1.
+ <_>
+ 33 0 13 1 2.
+ 0
+ <_>
+
+ <_>
+ 20 0 22 4 -1.
+ <_>
+ 20 1 22 2 2.
+ 0
+ <_>
+
+ <_>
+ 20 2 3 2 -1.
+ <_>
+ 21 3 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 20 3 4 8 -1.
+ <_>
+ 21 3 2 8 2.
+ 0
+ <_>
+
+ <_>
+ 20 4 3 9 -1.
+ <_>
+ 21 7 1 3 9.
+ 0
+ <_>
+
+ <_>
+ 20 5 3 5 -1.
+ <_>
+ 21 5 1 5 3.
+ 0
+ <_>
+
+ <_>
+ 20 5 4 8 -1.
+ <_>
+ 22 5 2 8 2.
+ 0
+ <_>
+
+ <_>
+ 20 6 3 2 -1.
+ <_>
+ 21 7 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 20 6 4 2 -1.
+ <_>
+ 21 7 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 20 6 24 6 -1.
+ <_>
+ 20 9 24 3 2.
+ 0
+ <_>
+
+ <_>
+ 20 8 4 2 -1.
+ <_>
+ 21 8 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 20 9 4 4 -1.
+ <_>
+ 20 9 2 2 2.
+ <_>
+ 22 11 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 20 9 18 4 -1.
+ <_>
+ 26 9 6 4 3.
+ 0
+ <_>
+
+ <_>
+ 20 12 4 1 -1.
+ <_>
+ 21 12 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 21 0 2 6 -1.
+ <_>
+ 21 0 1 3 2.
+ <_>
+ 22 3 1 3 2.
+ 0
+ <_>
+
+ <_>
+ 21 0 4 2 -1.
+ <_>
+ 21 1 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 21 0 28 1 -1.
+ <_>
+ 28 0 14 1 2.
+ 0
+ <_>
+
+ <_>
+ 21 0 21 4 -1.
+ <_>
+ 28 0 7 4 3.
+ 0
+ <_>
+
+ <_>
+ 21 0 14 5 -1.
+ <_>
+ 28 0 7 5 2.
+ 0
+ <_>
+
+ <_>
+ 21 1 4 11 -1.
+ <_>
+ 22 1 2 11 2.
+ 0
+ <_>
+
+ <_>
+ 21 2 25 9 -1.
+ <_>
+ 21 5 25 3 3.
+ 0
+ <_>
+
+ <_>
+ 21 3 4 9 -1.
+ <_>
+ 22 3 2 9 2.
+ 0
+ <_>
+
+ <_>
+ 21 3 6 1 -1.
+ <_>
+ 23 3 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 21 6 4 2 -1.
+ <_>
+ 22 7 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 21 7 3 2 -1.
+ <_>
+ 22 8 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 21 7 3 3 -1.
+ <_>
+ 22 8 1 3 3.
+ 1
+ <_>
+
+ <_>
+ 21 7 6 4 -1.
+ <_>
+ 23 7 2 4 3.
+ 0
+ <_>
+
+ <_>
+ 21 10 21 3 -1.
+ <_>
+ 28 10 7 3 3.
+ 0
+ <_>
+
+ <_>
+ 21 10 18 3 -1.
+ <_>
+ 21 11 18 1 3.
+ 0
+ <_>
+
+ <_>
+ 21 12 30 1 -1.
+ <_>
+ 36 12 15 1 2.
+ 0
+ <_>
+
+ <_>
+ 22 0 4 1 -1.
+ <_>
+ 23 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 22 0 8 1 -1.
+ <_>
+ 24 0 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 22 0 12 4 -1.
+ <_>
+ 25 0 6 4 2.
+ 0
+ <_>
+
+ <_>
+ 22 0 15 2 -1.
+ <_>
+ 27 0 5 2 3.
+ 0
+ <_>
+
+ <_>
+ 22 0 28 2 -1.
+ <_>
+ 36 0 14 2 2.
+ 0
+ <_>
+
+ <_>
+ 22 1 15 2 -1.
+ <_>
+ 27 1 5 2 3.
+ 0
+ <_>
+
+ <_>
+ 22 1 8 3 -1.
+ <_>
+ 21 2 8 1 3.
+ 1
+ <_>
+
+ <_>
+ 22 2 3 3 -1.
+ <_>
+ 23 2 1 3 3.
+ 0
+ <_>
+
+ <_>
+ 22 2 3 9 -1.
+ <_>
+ 23 2 1 9 3.
+ 0
+ <_>
+
+ <_>
+ 22 2 3 10 -1.
+ <_>
+ 23 2 1 10 3.
+ 0
+ <_>
+
+ <_>
+ 22 5 3 3 -1.
+ <_>
+ 22 6 3 1 3.
+ 0
+ <_>
+
+ <_>
+ 22 6 2 3 -1.
+ <_>
+ 22 7 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 22 7 2 3 -1.
+ <_>
+ 22 8 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 22 8 3 2 -1.
+ <_>
+ 23 8 1 2 3.
+ 0
+ <_>
+
+ <_>
+ 22 8 3 2 -1.
+ <_>
+ 23 9 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 22 8 2 2 -1.
+ <_>
+ 22 9 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 22 9 4 4 -1.
+ <_>
+ 22 9 2 2 2.
+ <_>
+ 24 11 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 22 9 9 2 -1.
+ <_>
+ 25 9 3 2 3.
+ 0
+ <_>
+
+ <_>
+ 22 9 6 4 -1.
+ <_>
+ 25 9 3 4 2.
+ 0
+ <_>
+
+ <_>
+ 22 9 9 4 -1.
+ <_>
+ 25 9 3 4 3.
+ 0
+ <_>
+
+ <_>
+ 22 10 6 2 -1.
+ <_>
+ 22 10 3 1 2.
+ <_>
+ 25 11 3 1 2.
+ 0
+ <_>
+
+ <_>
+ 23 0 3 1 -1.
+ <_>
+ 24 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 23 0 6 1 -1.
+ <_>
+ 25 0 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 23 0 4 4 -1.
+ <_>
+ 23 0 2 2 2.
+ <_>
+ 25 2 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 23 0 8 12 -1.
+ <_>
+ 25 0 4 12 2.
+ 0
+ <_>
+
+ <_>
+ 23 0 12 1 -1.
+ <_>
+ 26 0 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 23 0 21 2 -1.
+ <_>
+ 23 1 21 1 2.
+ 0
+ <_>
+
+ <_>
+ 23 2 12 10 -1.
+ <_>
+ 29 2 6 10 2.
+ 0
+ <_>
+
+ <_>
+ 23 3 4 2 -1.
+ <_>
+ 24 3 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 23 4 2 4 -1.
+ <_>
+ 22 5 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 23 4 12 9 -1.
+ <_>
+ 27 4 4 9 3.
+ 0
+ <_>
+
+ <_>
+ 23 5 1 3 -1.
+ <_>
+ 23 6 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 23 6 9 1 -1.
+ <_>
+ 26 6 3 1 3.
+ 0
+ <_>
+
+ <_>
+ 23 8 4 3 -1.
+ <_>
+ 24 8 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 23 9 4 1 -1.
+ <_>
+ 24 9 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 23 9 8 4 -1.
+ <_>
+ 25 9 4 4 2.
+ 0
+ <_>
+
+ <_>
+ 23 9 12 4 -1.
+ <_>
+ 26 9 6 4 2.
+ 0
+ <_>
+
+ <_>
+ 23 11 6 2 -1.
+ <_>
+ 23 11 3 1 2.
+ <_>
+ 26 12 3 1 2.
+ 0
+ <_>
+
+ <_>
+ 24 0 3 1 -1.
+ <_>
+ 25 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 24 0 4 1 -1.
+ <_>
+ 25 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 24 0 4 6 -1.
+ <_>
+ 24 0 2 3 2.
+ <_>
+ 26 3 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 24 0 17 2 -1.
+ <_>
+ 24 1 17 1 2.
+ 0
+ <_>
+
+ <_>
+ 24 0 22 2 -1.
+ <_>
+ 24 1 22 1 2.
+ 0
+ <_>
+
+ <_>
+ 24 1 4 4 -1.
+ <_>
+ 24 1 2 2 2.
+ <_>
+ 26 3 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 24 1 13 2 -1.
+ <_>
+ 24 2 13 1 2.
+ 0
+ <_>
+
+ <_>
+ 24 2 2 2 -1.
+ <_>
+ 24 2 1 1 2.
+ <_>
+ 25 3 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 24 6 6 1 -1.
+ <_>
+ 26 6 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 24 7 4 6 -1.
+ <_>
+ 24 7 2 3 2.
+ <_>
+ 26 10 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 24 8 2 5 -1.
+ <_>
+ 25 8 1 5 2.
+ 0
+ <_>
+
+ <_>
+ 24 9 15 4 -1.
+ <_>
+ 29 9 5 4 3.
+ 0
+ <_>
+
+ <_>
+ 24 10 27 3 -1.
+ <_>
+ 24 11 27 1 3.
+ 0
+ <_>
+
+ <_>
+ 25 0 3 1 -1.
+ <_>
+ 26 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 25 0 3 2 -1.
+ <_>
+ 26 1 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 25 0 4 1 -1.
+ <_>
+ 27 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 25 0 8 1 -1.
+ <_>
+ 27 0 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 25 0 26 3 -1.
+ <_>
+ 25 1 26 1 3.
+ 0
+ <_>
+
+ <_>
+ 25 1 2 4 -1.
+ <_>
+ 25 1 1 2 2.
+ <_>
+ 26 3 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 25 1 3 2 -1.
+ <_>
+ 26 2 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 25 2 3 2 -1.
+ <_>
+ 26 3 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 25 4 4 1 -1.
+ <_>
+ 26 4 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 25 4 4 6 -1.
+ <_>
+ 25 4 2 3 2.
+ <_>
+ 27 7 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 25 6 3 6 -1.
+ <_>
+ 26 8 1 2 9.
+ 0
+ <_>
+
+ <_>
+ 25 7 4 2 -1.
+ <_>
+ 26 7 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 25 8 4 2 -1.
+ <_>
+ 26 8 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 25 9 3 3 -1.
+ <_>
+ 26 9 1 3 3.
+ 0
+ <_>
+
+ <_>
+ 25 9 13 4 -1.
+ <_>
+ 25 11 13 2 2.
+ 0
+ <_>
+
+ <_>
+ 25 10 2 2 -1.
+ <_>
+ 25 11 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 26 0 3 1 -1.
+ <_>
+ 27 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 26 0 4 1 -1.
+ <_>
+ 27 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 26 0 1 12 -1.
+ <_>
+ 23 3 1 6 2.
+ 1
+ <_>
+
+ <_>
+ 26 0 18 13 -1.
+ <_>
+ 32 0 6 13 3.
+ 0
+ <_>
+
+ <_>
+ 26 0 18 2 -1.
+ <_>
+ 35 0 9 2 2.
+ 0
+ <_>
+
+ <_>
+ 26 2 1 6 -1.
+ <_>
+ 26 4 1 2 3.
+ 0
+ <_>
+
+ <_>
+ 26 2 2 2 -1.
+ <_>
+ 26 2 1 2 2.
+ 1
+ <_>
+
+ <_>
+ 26 2 3 2 -1.
+ <_>
+ 27 3 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 26 2 5 3 -1.
+ <_>
+ 25 3 5 1 3.
+ 1
+ <_>
+
+ <_>
+ 26 2 10 4 -1.
+ <_>
+ 26 3 10 2 2.
+ 0
+ <_>
+
+ <_>
+ 26 3 4 6 -1.
+ <_>
+ 26 3 2 3 2.
+ <_>
+ 28 6 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 26 3 5 3 -1.
+ <_>
+ 25 4 5 1 3.
+ 1
+ <_>
+
+ <_>
+ 26 4 4 6 -1.
+ <_>
+ 26 4 2 3 2.
+ <_>
+ 28 7 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 26 5 4 2 -1.
+ <_>
+ 26 5 2 1 2.
+ <_>
+ 28 6 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 26 5 4 4 -1.
+ <_>
+ 26 5 2 2 2.
+ <_>
+ 28 7 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 26 6 1 6 -1.
+ <_>
+ 26 8 1 2 3.
+ 0
+ <_>
+
+ <_>
+ 26 6 4 1 -1.
+ <_>
+ 28 6 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 26 7 4 3 -1.
+ <_>
+ 27 7 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 26 7 4 6 -1.
+ <_>
+ 26 7 2 3 2.
+ <_>
+ 28 10 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 26 7 18 6 -1.
+ <_>
+ 32 7 6 6 3.
+ 0
+ <_>
+
+ <_>
+ 26 7 17 6 -1.
+ <_>
+ 26 10 17 3 2.
+ 0
+ <_>
+
+ <_>
+ 26 8 3 1 -1.
+ <_>
+ 27 8 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 26 9 12 4 -1.
+ <_>
+ 29 9 6 4 2.
+ 0
+ <_>
+
+ <_>
+ 26 11 20 1 -1.
+ <_>
+ 36 11 10 1 2.
+ 0
+ <_>
+
+ <_>
+ 27 0 2 1 -1.
+ <_>
+ 28 0 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 27 0 3 1 -1.
+ <_>
+ 28 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 27 0 4 1 -1.
+ <_>
+ 29 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 27 0 18 2 -1.
+ <_>
+ 27 0 9 1 2.
+ <_>
+ 36 1 9 1 2.
+ 0
+ <_>
+
+ <_>
+ 27 1 3 3 -1.
+ <_>
+ 28 2 1 3 3.
+ 1
+ <_>
+
+ <_>
+ 27 1 6 11 -1.
+ <_>
+ 29 1 2 11 3.
+ 0
+ <_>
+
+ <_>
+ 27 1 14 10 -1.
+ <_>
+ 34 1 7 10 2.
+ 0
+ <_>
+
+ <_>
+ 27 2 3 2 -1.
+ <_>
+ 28 3 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 27 2 3 9 -1.
+ <_>
+ 28 2 1 9 3.
+ 0
+ <_>
+
+ <_>
+ 27 2 5 4 -1.
+ <_>
+ 26 3 5 2 2.
+ 1
+ <_>
+
+ <_>
+ 27 3 3 6 -1.
+ <_>
+ 28 3 1 6 3.
+ 0
+ <_>
+
+ <_>
+ 27 3 3 9 -1.
+ <_>
+ 28 3 1 9 3.
+ 0
+ <_>
+
+ <_>
+ 27 3 13 4 -1.
+ <_>
+ 27 5 13 2 2.
+ 0
+ <_>
+
+ <_>
+ 27 6 3 2 -1.
+ <_>
+ 28 7 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 27 7 3 2 -1.
+ <_>
+ 28 7 1 2 3.
+ 0
+ <_>
+
+ <_>
+ 27 7 3 2 -1.
+ <_>
+ 28 8 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 28 0 3 1 -1.
+ <_>
+ 29 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 28 0 4 12 -1.
+ <_>
+ 29 0 2 12 2.
+ 0
+ <_>
+
+ <_>
+ 28 0 10 3 -1.
+ <_>
+ 28 0 5 3 2.
+ 1
+ <_>
+
+ <_>
+ 28 0 15 13 -1.
+ <_>
+ 33 0 5 13 3.
+ 0
+ <_>
+
+ <_>
+ 28 1 2 10 -1.
+ <_>
+ 29 1 1 10 2.
+ 0
+ <_>
+
+ <_>
+ 28 1 4 11 -1.
+ <_>
+ 29 1 2 11 2.
+ 0
+ <_>
+
+ <_>
+ 28 2 4 10 -1.
+ <_>
+ 29 2 2 10 2.
+ 0
+ <_>
+
+ <_>
+ 28 2 7 3 -1.
+ <_>
+ 27 3 7 1 3.
+ 1
+ <_>
+
+ <_>
+ 28 3 4 9 -1.
+ <_>
+ 29 3 2 9 2.
+ 0
+ <_>
+
+ <_>
+ 28 3 23 8 -1.
+ <_>
+ 28 5 23 4 2.
+ 0
+ <_>
+
+ <_>
+ 28 4 1 6 -1.
+ <_>
+ 28 7 1 3 2.
+ 0
+ <_>
+
+ <_>
+ 28 4 3 6 -1.
+ <_>
+ 28 6 3 2 3.
+ 0
+ <_>
+
+ <_>
+ 28 5 4 2 -1.
+ <_>
+ 30 5 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 28 5 20 6 -1.
+ <_>
+ 28 8 20 3 2.
+ 0
+ <_>
+
+ <_>
+ 28 6 1 4 -1.
+ <_>
+ 27 7 1 2 2.
+ 1
+ <_>
+
+ <_>
+ 28 6 3 3 -1.
+ <_>
+ 29 7 1 3 3.
+ 1
+ <_>
+
+ <_>
+ 28 7 3 1 -1.
+ <_>
+ 29 8 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 28 7 4 3 -1.
+ <_>
+ 28 8 4 1 3.
+ 0
+ <_>
+
+ <_>
+ 28 7 12 2 -1.
+ <_>
+ 28 8 12 1 2.
+ 0
+ <_>
+
+ <_>
+ 28 8 2 1 -1.
+ <_>
+ 28 8 1 1 2.
+ 1
+ <_>
+
+ <_>
+ 28 8 3 1 -1.
+ <_>
+ 29 9 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 28 11 14 2 -1.
+ <_>
+ 28 11 7 1 2.
+ <_>
+ 35 12 7 1 2.
+ 0
+ <_>
+
+ <_>
+ 29 0 3 1 -1.
+ <_>
+ 30 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 29 0 4 1 -1.
+ <_>
+ 30 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 29 2 3 8 -1.
+ <_>
+ 30 2 1 8 3.
+ 0
+ <_>
+
+ <_>
+ 29 3 3 9 -1.
+ <_>
+ 30 3 1 9 3.
+ 0
+ <_>
+
+ <_>
+ 29 5 2 3 -1.
+ <_>
+ 29 6 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 29 5 3 4 -1.
+ <_>
+ 29 6 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 29 7 3 2 -1.
+ <_>
+ 30 8 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 29 7 3 3 -1.
+ <_>
+ 30 8 1 3 3.
+ 1
+ <_>
+
+ <_>
+ 29 8 4 2 -1.
+ <_>
+ 30 8 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 29 8 2 2 -1.
+ <_>
+ 29 8 1 2 2.
+ 1
+ <_>
+
+ <_>
+ 29 8 3 2 -1.
+ <_>
+ 30 9 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 29 9 15 4 -1.
+ <_>
+ 34 9 5 4 3.
+ 0
+ <_>
+
+ <_>
+ 29 11 22 2 -1.
+ <_>
+ 40 11 11 2 2.
+ 0
+ <_>
+
+ <_>
+ 29 12 2 1 -1.
+ <_>
+ 30 12 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 29 12 3 1 -1.
+ <_>
+ 30 12 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 30 0 3 1 -1.
+ <_>
+ 31 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 30 0 4 1 -1.
+ <_>
+ 31 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 30 0 9 2 -1.
+ <_>
+ 33 3 3 2 3.
+ 1
+ <_>
+
+ <_>
+ 30 0 20 3 -1.
+ <_>
+ 35 0 10 3 2.
+ 0
+ <_>
+
+ <_>
+ 30 0 16 2 -1.
+ <_>
+ 30 1 16 1 2.
+ 0
+ <_>
+
+ <_>
+ 30 1 4 2 -1.
+ <_>
+ 30 1 2 1 2.
+ <_>
+ 32 2 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 30 1 8 12 -1.
+ <_>
+ 32 1 4 12 2.
+ 0
+ <_>
+
+ <_>
+ 30 2 8 1 -1.
+ <_>
+ 32 2 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 30 2 6 2 -1.
+ <_>
+ 32 2 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 30 2 7 3 -1.
+ <_>
+ 29 3 7 1 3.
+ 1
+ <_>
+
+ <_>
+ 30 4 4 4 -1.
+ <_>
+ 31 4 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 30 6 3 4 -1.
+ <_>
+ 30 6 3 2 2.
+ 1
+ <_>
+
+ <_>
+ 30 7 12 6 -1.
+ <_>
+ 33 7 6 6 2.
+ 0
+ <_>
+
+ <_>
+ 30 8 18 3 -1.
+ <_>
+ 36 9 6 1 9.
+ 0
+ <_>
+
+ <_>
+ 30 9 4 2 -1.
+ <_>
+ 31 9 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 30 9 12 4 -1.
+ <_>
+ 33 9 6 4 2.
+ 0
+ <_>
+
+ <_>
+ 30 12 3 1 -1.
+ <_>
+ 31 12 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 31 0 3 1 -1.
+ <_>
+ 32 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 31 0 4 1 -1.
+ <_>
+ 32 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 31 0 5 2 -1.
+ <_>
+ 31 1 5 1 2.
+ 0
+ <_>
+
+ <_>
+ 31 0 12 2 -1.
+ <_>
+ 31 0 6 1 2.
+ <_>
+ 37 1 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 31 0 12 3 -1.
+ <_>
+ 31 1 12 1 3.
+ 0
+ <_>
+
+ <_>
+ 31 2 4 4 -1.
+ <_>
+ 31 2 2 2 2.
+ <_>
+ 33 4 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 31 3 3 9 -1.
+ <_>
+ 31 6 3 3 3.
+ 0
+ <_>
+
+ <_>
+ 31 3 8 2 -1.
+ <_>
+ 31 3 4 2 2.
+ 1
+ <_>
+
+ <_>
+ 31 5 3 6 -1.
+ <_>
+ 32 7 1 2 9.
+ 0
+ <_>
+
+ <_>
+ 31 7 3 3 -1.
+ <_>
+ 32 7 1 3 3.
+ 0
+ <_>
+
+ <_>
+ 31 9 2 4 -1.
+ <_>
+ 31 9 1 2 2.
+ <_>
+ 32 11 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 32 0 3 1 -1.
+ <_>
+ 33 0 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 32 0 3 2 -1.
+ <_>
+ 33 0 1 2 3.
+ 0
+ <_>
+
+ <_>
+ 32 0 3 3 -1.
+ <_>
+ 33 1 1 3 3.
+ 1
+ <_>
+
+ <_>
+ 32 0 3 4 -1.
+ <_>
+ 32 1 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 32 0 8 1 -1.
+ <_>
+ 36 0 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 32 0 17 3 -1.
+ <_>
+ 32 1 17 1 3.
+ 0
+ <_>
+
+ <_>
+ 32 0 17 4 -1.
+ <_>
+ 32 1 17 2 2.
+ 0
+ <_>
+
+ <_>
+ 32 0 18 3 -1.
+ <_>
+ 32 1 18 1 3.
+ 0
+ <_>
+
+ <_>
+ 32 0 19 3 -1.
+ <_>
+ 32 1 19 1 3.
+ 0
+ <_>
+
+ <_>
+ 32 1 3 6 -1.
+ <_>
+ 33 3 1 2 9.
+ 0
+ <_>
+
+ <_>
+ 32 1 3 2 -1.
+ <_>
+ 33 2 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 32 1 12 1 -1.
+ <_>
+ 36 1 4 1 3.
+ 0
+ <_>
+
+ <_>
+ 32 1 8 2 -1.
+ <_>
+ 32 1 4 1 2.
+ <_>
+ 36 2 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 32 1 19 9 -1.
+ <_>
+ 32 4 19 3 3.
+ 0
+ <_>
+
+ <_>
+ 32 2 2 2 -1.
+ <_>
+ 32 3 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 32 3 4 3 -1.
+ <_>
+ 33 3 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 32 7 4 2 -1.
+ <_>
+ 33 7 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 32 9 3 1 -1.
+ <_>
+ 33 9 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 32 9 3 3 -1.
+ <_>
+ 33 10 1 1 9.
+ 0
+ <_>
+
+ <_>
+ 32 11 3 2 -1.
+ <_>
+ 32 12 3 1 2.
+ 0
+ <_>
+
+ <_>
+ 33 0 3 3 -1.
+ <_>
+ 34 1 1 3 3.
+ 1
+ <_>
+
+ <_>
+ 33 0 3 4 -1.
+ <_>
+ 34 1 1 4 3.
+ 1
+ <_>
+
+ <_>
+ 33 0 12 1 -1.
+ <_>
+ 37 0 4 1 3.
+ 0
+ <_>
+
+ <_>
+ 33 0 16 1 -1.
+ <_>
+ 37 0 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 33 0 10 1 -1.
+ <_>
+ 38 0 5 1 2.
+ 0
+ <_>
+
+ <_>
+ 33 0 9 2 -1.
+ <_>
+ 33 1 9 1 2.
+ 0
+ <_>
+
+ <_>
+ 33 0 17 4 -1.
+ <_>
+ 33 1 17 2 2.
+ 0
+ <_>
+
+ <_>
+ 33 1 1 2 -1.
+ <_>
+ 33 2 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 33 1 3 2 -1.
+ <_>
+ 34 2 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 33 1 4 2 -1.
+ <_>
+ 34 2 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 33 1 17 2 -1.
+ <_>
+ 33 2 17 1 2.
+ 0
+ <_>
+
+ <_>
+ 33 2 1 3 -1.
+ <_>
+ 33 3 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 33 2 3 2 -1.
+ <_>
+ 34 3 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 33 2 13 9 -1.
+ <_>
+ 33 5 13 3 3.
+ 0
+ <_>
+
+ <_>
+ 33 5 3 3 -1.
+ <_>
+ 34 6 1 1 9.
+ 0
+ <_>
+
+ <_>
+ 33 5 1 8 -1.
+ <_>
+ 33 7 1 4 2.
+ 0
+ <_>
+
+ <_>
+ 33 6 3 1 -1.
+ <_>
+ 34 7 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 33 7 3 1 -1.
+ <_>
+ 34 8 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 33 7 4 4 -1.
+ <_>
+ 33 7 2 2 2.
+ <_>
+ 35 9 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 33 8 2 3 -1.
+ <_>
+ 32 9 2 1 3.
+ 1
+ <_>
+
+ <_>
+ 33 8 6 3 -1.
+ <_>
+ 35 8 2 3 3.
+ 0
+ <_>
+
+ <_>
+ 33 8 16 4 -1.
+ <_>
+ 33 10 16 2 2.
+ 0
+ <_>
+
+ <_>
+ 33 9 2 4 -1.
+ <_>
+ 33 11 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 33 9 4 4 -1.
+ <_>
+ 33 9 2 2 2.
+ <_>
+ 35 11 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 33 10 1 2 -1.
+ <_>
+ 33 11 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 34 0 1 3 -1.
+ <_>
+ 33 1 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 34 0 3 11 -1.
+ <_>
+ 35 0 1 11 3.
+ 0
+ <_>
+
+ <_>
+ 34 0 4 4 -1.
+ <_>
+ 34 0 2 4 2.
+ 1
+ <_>
+
+ <_>
+ 34 0 16 1 -1.
+ <_>
+ 38 0 8 1 2.
+ 0
+ <_>
+
+ <_>
+ 34 0 14 1 -1.
+ <_>
+ 41 0 7 1 2.
+ 0
+ <_>
+
+ <_>
+ 34 1 15 6 -1.
+ <_>
+ 39 1 5 6 3.
+ 0
+ <_>
+
+ <_>
+ 34 2 3 2 -1.
+ <_>
+ 35 3 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 34 2 3 8 -1.
+ <_>
+ 35 2 1 8 3.
+ 0
+ <_>
+
+ <_>
+ 34 3 4 4 -1.
+ <_>
+ 35 3 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 34 3 4 7 -1.
+ <_>
+ 35 3 2 7 2.
+ 0
+ <_>
+
+ <_>
+ 34 5 3 2 -1.
+ <_>
+ 35 6 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 34 5 4 2 -1.
+ <_>
+ 35 6 2 2 2.
+ 1
+ <_>
+
+ <_>
+ 34 5 3 4 -1.
+ <_>
+ 35 5 1 4 3.
+ 0
+ <_>
+
+ <_>
+ 34 5 6 8 -1.
+ <_>
+ 36 5 2 8 3.
+ 0
+ <_>
+
+ <_>
+ 34 6 3 1 -1.
+ <_>
+ 35 7 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 34 6 3 2 -1.
+ <_>
+ 35 7 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 34 6 6 5 -1.
+ <_>
+ 36 6 2 5 3.
+ 0
+ <_>
+
+ <_>
+ 34 7 4 2 -1.
+ <_>
+ 35 7 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 34 7 3 2 -1.
+ <_>
+ 35 8 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 34 7 4 3 -1.
+ <_>
+ 35 7 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 35 0 3 12 -1.
+ <_>
+ 36 0 1 12 3.
+ 0
+ <_>
+
+ <_>
+ 35 0 4 1 -1.
+ <_>
+ 37 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 35 0 12 1 -1.
+ <_>
+ 41 0 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 35 0 14 4 -1.
+ <_>
+ 35 0 7 2 2.
+ <_>
+ 42 2 7 2 2.
+ 0
+ <_>
+
+ <_>
+ 35 1 4 12 -1.
+ <_>
+ 36 1 2 12 2.
+ 0
+ <_>
+
+ <_>
+ 35 2 3 4 -1.
+ <_>
+ 36 3 1 4 3.
+ 1
+ <_>
+
+ <_>
+ 35 2 4 6 -1.
+ <_>
+ 36 2 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 35 4 3 3 -1.
+ <_>
+ 35 5 3 1 3.
+ 0
+ <_>
+
+ <_>
+ 35 5 2 4 -1.
+ <_>
+ 36 5 1 4 2.
+ 0
+ <_>
+
+ <_>
+ 35 5 4 7 -1.
+ <_>
+ 36 5 2 7 2.
+ 0
+ <_>
+
+ <_>
+ 35 5 15 5 -1.
+ <_>
+ 40 5 5 5 3.
+ 0
+ <_>
+
+ <_>
+ 35 7 3 1 -1.
+ <_>
+ 36 8 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 35 7 3 2 -1.
+ <_>
+ 36 8 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 35 8 2 2 -1.
+ <_>
+ 35 8 1 2 2.
+ 1
+ <_>
+
+ <_>
+ 35 10 15 3 -1.
+ <_>
+ 35 11 15 1 3.
+ 0
+ <_>
+
+ <_>
+ 35 11 5 2 -1.
+ <_>
+ 35 12 5 1 2.
+ 0
+ <_>
+
+ <_>
+ 35 11 6 2 -1.
+ <_>
+ 35 12 6 1 2.
+ 0
+ <_>
+
+ <_>
+ 36 0 14 1 -1.
+ <_>
+ 43 0 7 1 2.
+ 0
+ <_>
+
+ <_>
+ 36 1 4 2 -1.
+ <_>
+ 36 1 2 1 2.
+ <_>
+ 38 2 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 36 2 4 10 -1.
+ <_>
+ 37 2 2 10 2.
+ 0
+ <_>
+
+ <_>
+ 36 4 4 6 -1.
+ <_>
+ 37 4 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 36 4 3 6 -1.
+ <_>
+ 36 4 3 3 2.
+ 1
+ <_>
+
+ <_>
+ 36 4 6 3 -1.
+ <_>
+ 35 5 6 1 3.
+ 1
+ <_>
+
+ <_>
+ 36 6 3 3 -1.
+ <_>
+ 37 7 1 3 3.
+ 1
+ <_>
+
+ <_>
+ 36 9 4 2 -1.
+ <_>
+ 38 9 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 36 10 4 1 -1.
+ <_>
+ 37 10 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 36 10 6 3 -1.
+ <_>
+ 39 10 3 3 2.
+ 0
+ <_>
+
+ <_>
+ 37 0 2 3 -1.
+ <_>
+ 36 1 2 1 3.
+ 1
+ <_>
+
+ <_>
+ 37 0 4 4 -1.
+ <_>
+ 37 0 2 2 2.
+ <_>
+ 39 2 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 37 1 4 5 -1.
+ <_>
+ 38 2 2 5 2.
+ 1
+ <_>
+
+ <_>
+ 37 1 9 9 -1.
+ <_>
+ 37 4 9 3 3.
+ 0
+ <_>
+
+ <_>
+ 37 3 8 4 -1.
+ <_>
+ 37 5 8 2 2.
+ 0
+ <_>
+
+ <_>
+ 37 4 4 1 -1.
+ <_>
+ 38 4 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 37 4 4 4 -1.
+ <_>
+ 38 4 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 37 5 8 8 -1.
+ <_>
+ 39 5 4 8 2.
+ 0
+ <_>
+
+ <_>
+ 37 9 6 4 -1.
+ <_>
+ 37 9 3 2 2.
+ <_>
+ 40 11 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 37 10 4 2 -1.
+ <_>
+ 37 10 2 1 2.
+ <_>
+ 39 11 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 37 10 8 3 -1.
+ <_>
+ 39 10 4 3 2.
+ 0
+ <_>
+
+ <_>
+ 37 10 5 3 -1.
+ <_>
+ 37 11 5 1 3.
+ 0
+ <_>
+
+ <_>
+ 38 0 4 1 -1.
+ <_>
+ 40 0 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 38 1 12 2 -1.
+ <_>
+ 38 2 12 1 2.
+ 0
+ <_>
+
+ <_>
+ 38 4 6 1 -1.
+ <_>
+ 40 4 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 38 6 6 6 -1.
+ <_>
+ 40 8 2 2 9.
+ 0
+ <_>
+
+ <_>
+ 38 9 6 1 -1.
+ <_>
+ 40 9 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 38 11 1 2 -1.
+ <_>
+ 38 12 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 39 0 2 4 -1.
+ <_>
+ 39 1 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 39 0 10 3 -1.
+ <_>
+ 39 1 10 1 3.
+ 0
+ <_>
+
+ <_>
+ 39 1 11 2 -1.
+ <_>
+ 39 2 11 1 2.
+ 0
+ <_>
+
+ <_>
+ 39 4 4 4 -1.
+ <_>
+ 40 4 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 39 6 3 6 -1.
+ <_>
+ 40 8 1 2 9.
+ 0
+ <_>
+
+ <_>
+ 39 7 4 3 -1.
+ <_>
+ 40 7 2 3 2.
+ 0
+ <_>
+
+ <_>
+ 39 8 4 2 -1.
+ <_>
+ 40 8 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 39 11 12 2 -1.
+ <_>
+ 45 11 6 2 2.
+ 0
+ <_>
+
+ <_>
+ 40 0 1 3 -1.
+ <_>
+ 40 1 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 40 0 3 3 -1.
+ <_>
+ 40 1 3 1 3.
+ 0
+ <_>
+
+ <_>
+ 40 0 5 2 -1.
+ <_>
+ 40 1 5 1 2.
+ 0
+ <_>
+
+ <_>
+ 40 0 8 3 -1.
+ <_>
+ 40 1 8 1 3.
+ 0
+ <_>
+
+ <_>
+ 40 5 4 2 -1.
+ <_>
+ 42 5 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 40 6 4 1 -1.
+ <_>
+ 41 7 2 1 2.
+ 1
+ <_>
+
+ <_>
+ 40 8 4 2 -1.
+ <_>
+ 41 8 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 40 10 9 2 -1.
+ <_>
+ 40 11 9 1 2.
+ 0
+ <_>
+
+ <_>
+ 41 0 6 12 -1.
+ <_>
+ 43 0 2 12 3.
+ 0
+ <_>
+
+ <_>
+ 41 0 4 2 -1.
+ <_>
+ 41 1 4 1 2.
+ 0
+ <_>
+
+ <_>
+ 41 1 3 4 -1.
+ <_>
+ 42 2 1 4 3.
+ 1
+ <_>
+
+ <_>
+ 41 1 6 9 -1.
+ <_>
+ 41 4 6 3 3.
+ 0
+ <_>
+
+ <_>
+ 41 5 4 5 -1.
+ <_>
+ 42 5 2 5 2.
+ 0
+ <_>
+
+ <_>
+ 41 5 4 6 -1.
+ <_>
+ 42 5 2 6 2.
+ 0
+ <_>
+
+ <_>
+ 41 6 3 2 -1.
+ <_>
+ 42 7 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 41 6 4 5 -1.
+ <_>
+ 42 6 2 5 2.
+ 0
+ <_>
+
+ <_>
+ 41 7 3 1 -1.
+ <_>
+ 42 8 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 41 7 2 3 -1.
+ <_>
+ 41 8 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 41 8 3 1 -1.
+ <_>
+ 42 8 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 41 8 3 2 -1.
+ <_>
+ 42 9 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 41 8 4 4 -1.
+ <_>
+ 41 8 2 2 2.
+ <_>
+ 43 10 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 41 10 1 2 -1.
+ <_>
+ 41 11 1 1 2.
+ 0
+ <_>
+
+ <_>
+ 42 7 3 2 -1.
+ <_>
+ 43 8 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 42 7 3 3 -1.
+ <_>
+ 43 8 1 3 3.
+ 1
+ <_>
+
+ <_>
+ 42 8 2 2 -1.
+ <_>
+ 42 8 1 2 2.
+ 1
+ <_>
+
+ <_>
+ 42 9 2 4 -1.
+ <_>
+ 42 9 1 2 2.
+ <_>
+ 43 11 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 42 9 2 2 -1.
+ <_>
+ 42 9 1 2 2.
+ 1
+ <_>
+
+ <_>
+ 43 4 8 9 -1.
+ <_>
+ 47 4 4 9 2.
+ 0
+ <_>
+
+ <_>
+ 43 5 2 3 -1.
+ <_>
+ 43 6 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 43 5 4 4 -1.
+ <_>
+ 43 5 4 2 2.
+ 1
+ <_>
+
+ <_>
+ 43 5 8 8 -1.
+ <_>
+ 47 5 4 8 2.
+ 0
+ <_>
+
+ <_>
+ 43 7 3 3 -1.
+ <_>
+ 44 8 1 3 3.
+ 1
+ <_>
+
+ <_>
+ 43 9 8 2 -1.
+ <_>
+ 45 9 4 2 2.
+ 0
+ <_>
+
+ <_>
+ 43 10 8 3 -1.
+ <_>
+ 45 10 4 3 2.
+ 0
+ <_>
+
+ <_>
+ 43 12 3 1 -1.
+ <_>
+ 44 12 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 44 2 1 10 -1.
+ <_>
+ 44 7 1 5 2.
+ 0
+ <_>
+
+ <_>
+ 44 2 4 4 -1.
+ <_>
+ 44 2 2 2 2.
+ <_>
+ 46 4 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 44 2 5 6 -1.
+ <_>
+ 44 5 5 3 2.
+ 0
+ <_>
+
+ <_>
+ 44 4 6 2 -1.
+ <_>
+ 46 4 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 44 7 4 2 -1.
+ <_>
+ 45 7 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 44 7 4 4 -1.
+ <_>
+ 45 7 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 45 5 4 4 -1.
+ <_>
+ 46 5 2 4 2.
+ 0
+ <_>
+
+ <_>
+ 45 5 4 4 -1.
+ <_>
+ 45 5 2 2 2.
+ <_>
+ 47 7 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 45 6 6 3 -1.
+ <_>
+ 47 7 2 1 9.
+ 0
+ <_>
+
+ <_>
+ 45 8 6 1 -1.
+ <_>
+ 47 8 2 1 3.
+ 0
+ <_>
+
+ <_>
+ 46 0 1 3 -1.
+ <_>
+ 46 1 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 46 0 2 2 -1.
+ <_>
+ 46 1 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 46 0 2 4 -1.
+ <_>
+ 46 2 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 46 1 3 4 -1.
+ <_>
+ 46 2 3 2 2.
+ 0
+ <_>
+
+ <_>
+ 46 3 3 3 -1.
+ <_>
+ 47 4 1 1 9.
+ 0
+ <_>
+
+ <_>
+ 46 5 3 3 -1.
+ <_>
+ 47 6 1 1 9.
+ 0
+ <_>
+
+ <_>
+ 46 5 2 6 -1.
+ <_>
+ 46 7 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 46 6 3 6 -1.
+ <_>
+ 47 8 1 2 9.
+ 0
+ <_>
+
+ <_>
+ 47 0 2 2 -1.
+ <_>
+ 47 1 2 1 2.
+ 0
+ <_>
+
+ <_>
+ 47 1 1 4 -1.
+ <_>
+ 47 2 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 47 2 1 6 -1.
+ <_>
+ 47 4 1 2 3.
+ 0
+ <_>
+
+ <_>
+ 47 4 1 6 -1.
+ <_>
+ 47 6 1 2 3.
+ 0
+ <_>
+
+ <_>
+ 47 4 4 2 -1.
+ <_>
+ 49 4 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 47 4 2 6 -1.
+ <_>
+ 47 6 2 2 3.
+ 0
+ <_>
+
+ <_>
+ 47 8 3 1 -1.
+ <_>
+ 48 9 1 1 3.
+ 1
+ <_>
+
+ <_>
+ 47 9 1 4 -1.
+ <_>
+ 47 11 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 47 9 2 4 -1.
+ <_>
+ 47 11 2 2 2.
+ 0
+ <_>
+
+ <_>
+ 48 0 3 6 -1.
+ <_>
+ 48 3 3 3 2.
+ 0
+ <_>
+
+ <_>
+ 48 1 3 2 -1.
+ <_>
+ 49 2 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 48 1 3 12 -1.
+ <_>
+ 49 1 1 12 3.
+ 0
+ <_>
+
+ <_>
+ 48 5 3 7 -1.
+ <_>
+ 49 5 1 7 3.
+ 0
+ <_>
+
+ <_>
+ 48 5 3 8 -1.
+ <_>
+ 49 5 1 8 3.
+ 0
+ <_>
+
+ <_>
+ 48 6 3 2 -1.
+ <_>
+ 49 7 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 48 8 3 2 -1.
+ <_>
+ 49 9 1 2 3.
+ 1
+ <_>
+
+ <_>
+ 49 0 2 2 -1.
+ <_>
+ 50 0 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 49 0 2 8 -1.
+ <_>
+ 50 0 1 8 2.
+ 0
+ <_>
+
+ <_>
+ 49 11 2 2 -1.
+ <_>
+ 50 11 1 2 2.
+ 0
+ <_>
+
+ <_>
+ 50 1 1 3 -1.
+ <_>
+ 50 2 1 1 3.
+ 0
+ <_>
+
+ <_>
+ 50 4 1 3 -1.
+ <_>
+ 50 5 1 1 3.
+ 0
+
diff --git a/Prj-iOS/lpr/lpr.xcodeproj/project.pbxproj b/Prj-iOS/lpr/lpr.xcodeproj/project.pbxproj
new file mode 100755
index 0000000..4af42aa
--- /dev/null
+++ b/Prj-iOS/lpr/lpr.xcodeproj/project.pbxproj
@@ -0,0 +1,550 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 343B620D21997FC800D03830 /* SegmentationFreeRecognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 343B620C21997FC700D03830 /* SegmentationFreeRecognizer.cpp */; };
+ 343B6210219980FE00D03830 /* SegmenationFree-Inception.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 343B620E219980FD00D03830 /* SegmenationFree-Inception.caffemodel */; };
+ 343B6211219980FE00D03830 /* SegmenationFree-Inception.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 343B620F219980FE00D03830 /* SegmenationFree-Inception.prototxt */; };
+ 343B621521998AB200D03830 /* CameraViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 343B621421998AB200D03830 /* CameraViewController.mm */; };
+ 34ECFDD12182DD9300B162D4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFDD02182DD9300B162D4 /* AppDelegate.m */; };
+ 34ECFDD92182DD9400B162D4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFDD82182DD9400B162D4 /* Assets.xcassets */; };
+ 34ECFDDC2182DD9400B162D4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFDDA2182DD9400B162D4 /* LaunchScreen.storyboard */; };
+ 34ECFDDF2182DD9400B162D4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFDDE2182DD9400B162D4 /* main.m */; };
+ 34ECFE152182DEF500B162D4 /* PlateSegmentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE0D2182DEF500B162D4 /* PlateSegmentation.cpp */; };
+ 34ECFE162182DEF500B162D4 /* PlateDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE0E2182DEF500B162D4 /* PlateDetection.cpp */; };
+ 34ECFE172182DEF500B162D4 /* Pipeline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE0F2182DEF500B162D4 /* Pipeline.cpp */; };
+ 34ECFE182182DEF500B162D4 /* FastDeskew.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE102182DEF500B162D4 /* FastDeskew.cpp */; };
+ 34ECFE192182DEF500B162D4 /* Recognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE112182DEF500B162D4 /* Recognizer.cpp */; };
+ 34ECFE1A2182DEF500B162D4 /* FineMapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE122182DEF500B162D4 /* FineMapping.cpp */; };
+ 34ECFE1B2182DEF500B162D4 /* CNNRecognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE142182DEF500B162D4 /* CNNRecognizer.cpp */; };
+ 34ECFE242182DF2F00B162D4 /* HorizonalFinemapping.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE1D2182DF2E00B162D4 /* HorizonalFinemapping.caffemodel */; };
+ 34ECFE252182DF2F00B162D4 /* CharacterRecognization.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE1E2182DF2E00B162D4 /* CharacterRecognization.caffemodel */; };
+ 34ECFE262182DF2F00B162D4 /* cascade.xml in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE1F2182DF2E00B162D4 /* cascade.xml */; };
+ 34ECFE272182DF2F00B162D4 /* Segmentation.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE202182DF2E00B162D4 /* Segmentation.prototxt */; };
+ 34ECFE282182DF2F00B162D4 /* HorizonalFinemapping.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE212182DF2E00B162D4 /* HorizonalFinemapping.prototxt */; };
+ 34ECFE292182DF2F00B162D4 /* Segmentation.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE222182DF2E00B162D4 /* Segmentation.caffemodel */; };
+ 34ECFE2A2182DF2F00B162D4 /* CharacterRecognization.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE232182DF2E00B162D4 /* CharacterRecognization.prototxt */; };
+ 34ECFE2D2182E10700B162D4 /* RootViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE2C2182E10700B162D4 /* RootViewController.mm */; };
+ 34ECFE352182E56900B162D4 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ECFE342182E56900B162D4 /* AVFoundation.framework */; };
+ 34ECFE382182E5F100B162D4 /* Utility.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE372182E5F100B162D4 /* Utility.mm */; };
+ 34ECFE3A2182FAB700B162D4 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ECFE392182FAB700B162D4 /* CoreImage.framework */; };
+ A396A338993421DC89845E63 /* libPods-lpr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A33861A99BC945120023AC25 /* libPods-lpr.a */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 343B620B21997FC100D03830 /* SegmentationFreeRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegmentationFreeRecognizer.h; sourceTree = ""; };
+ 343B620C21997FC700D03830 /* SegmentationFreeRecognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SegmentationFreeRecognizer.cpp; sourceTree = ""; };
+ 343B620E219980FD00D03830 /* SegmenationFree-Inception.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SegmenationFree-Inception.caffemodel"; sourceTree = ""; };
+ 343B620F219980FE00D03830 /* SegmenationFree-Inception.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "SegmenationFree-Inception.prototxt"; sourceTree = ""; };
+ 343B621321998AB200D03830 /* CameraViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CameraViewController.h; path = lpr/CameraViewController.h; sourceTree = SOURCE_ROOT; };
+ 343B621421998AB200D03830 /* CameraViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CameraViewController.mm; path = lpr/CameraViewController.mm; sourceTree = SOURCE_ROOT; };
+ 34ECFDCC2182DD9300B162D4 /* lpr.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = lpr.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 34ECFDCF2182DD9300B162D4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
+ 34ECFDD02182DD9300B162D4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
+ 34ECFDD82182DD9400B162D4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 34ECFDDB2182DD9400B162D4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 34ECFDDD2182DD9400B162D4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 34ECFDDE2182DD9400B162D4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
+ 34ECFE032182DEF500B162D4 /* PlateSegmentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlateSegmentation.h; sourceTree = ""; };
+ 34ECFE042182DEF500B162D4 /* Recognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Recognizer.h; sourceTree = ""; };
+ 34ECFE052182DEF500B162D4 /* PlateDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlateDetection.h; sourceTree = ""; };
+ 34ECFE062182DEF500B162D4 /* PlateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlateInfo.h; sourceTree = ""; };
+ 34ECFE072182DEF500B162D4 /* FineMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FineMapping.h; sourceTree = ""; };
+ 34ECFE082182DEF500B162D4 /* niBlackThreshold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = niBlackThreshold.h; sourceTree = ""; };
+ 34ECFE092182DEF500B162D4 /* FastDeskew.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastDeskew.h; sourceTree = ""; };
+ 34ECFE0A2182DEF500B162D4 /* Pipeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pipeline.h; sourceTree = ""; };
+ 34ECFE0B2182DEF500B162D4 /* CNNRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNNRecognizer.h; sourceTree = ""; };
+ 34ECFE0D2182DEF500B162D4 /* PlateSegmentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlateSegmentation.cpp; sourceTree = ""; };
+ 34ECFE0E2182DEF500B162D4 /* PlateDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlateDetection.cpp; sourceTree = ""; };
+ 34ECFE0F2182DEF500B162D4 /* Pipeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Pipeline.cpp; sourceTree = ""; };
+ 34ECFE102182DEF500B162D4 /* FastDeskew.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FastDeskew.cpp; sourceTree = ""; };
+ 34ECFE112182DEF500B162D4 /* Recognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Recognizer.cpp; sourceTree = ""; };
+ 34ECFE122182DEF500B162D4 /* FineMapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FineMapping.cpp; sourceTree = ""; };
+ 34ECFE132182DEF500B162D4 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; };
+ 34ECFE142182DEF500B162D4 /* CNNRecognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CNNRecognizer.cpp; sourceTree = ""; };
+ 34ECFE1D2182DF2E00B162D4 /* HorizonalFinemapping.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = HorizonalFinemapping.caffemodel; sourceTree = ""; };
+ 34ECFE1E2182DF2E00B162D4 /* CharacterRecognization.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = CharacterRecognization.caffemodel; sourceTree = ""; };
+ 34ECFE1F2182DF2E00B162D4 /* cascade.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = cascade.xml; sourceTree = ""; };
+ 34ECFE202182DF2E00B162D4 /* Segmentation.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Segmentation.prototxt; sourceTree = ""; };
+ 34ECFE212182DF2E00B162D4 /* HorizonalFinemapping.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HorizonalFinemapping.prototxt; sourceTree = ""; };
+ 34ECFE222182DF2E00B162D4 /* Segmentation.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = Segmentation.caffemodel; sourceTree = ""; };
+ 34ECFE232182DF2E00B162D4 /* CharacterRecognization.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CharacterRecognization.prototxt; sourceTree = ""; };
+ 34ECFE2B2182E10700B162D4 /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; };
+ 34ECFE2C2182E10700B162D4 /* RootViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RootViewController.mm; sourceTree = ""; };
+ 34ECFE342182E56900B162D4 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+ 34ECFE362182E5F100B162D4 /* Utility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Utility.h; sourceTree = ""; };
+ 34ECFE372182E5F100B162D4 /* Utility.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Utility.mm; sourceTree = ""; };
+ 34ECFE392182FAB700B162D4 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; };
+ 66BAD4CEFABD6705C5100968 /* Pods-lpr.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-lpr.release.xcconfig"; path = "Pods/Target Support Files/Pods-lpr/Pods-lpr.release.xcconfig"; sourceTree = ""; };
+ A33861A99BC945120023AC25 /* libPods-lpr.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-lpr.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ E169020B9373AF28E9C472DD /* Pods-lpr.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-lpr.debug.xcconfig"; path = "Pods/Target Support Files/Pods-lpr/Pods-lpr.debug.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 34ECFDC92182DD9300B162D4 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 34ECFE3A2182FAB700B162D4 /* CoreImage.framework in Frameworks */,
+ 34ECFE352182E56900B162D4 /* AVFoundation.framework in Frameworks */,
+ A396A338993421DC89845E63 /* libPods-lpr.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 34ECFDC32182DD9300B162D4 = {
+ isa = PBXGroup;
+ children = (
+ 34ECFDCE2182DD9300B162D4 /* lpr */,
+ 34ECFE1C2182DF2E00B162D4 /* Resource */,
+ 34ECFDCD2182DD9300B162D4 /* Products */,
+ DE72138A4B42368326688C6A /* Pods */,
+ 97C4CF37B3E356C8641CE105 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 34ECFDCD2182DD9300B162D4 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 34ECFDCC2182DD9300B162D4 /* lpr.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 34ECFDCE2182DD9300B162D4 /* lpr */ = {
+ isa = PBXGroup;
+ children = (
+ 34ECFE012182DEF500B162D4 /* Source */,
+ 34ECFDCF2182DD9300B162D4 /* AppDelegate.h */,
+ 34ECFDD02182DD9300B162D4 /* AppDelegate.m */,
+ 34ECFDD82182DD9400B162D4 /* Assets.xcassets */,
+ 34ECFDDA2182DD9400B162D4 /* LaunchScreen.storyboard */,
+ 34ECFDDD2182DD9400B162D4 /* Info.plist */,
+ 34ECFDDE2182DD9400B162D4 /* main.m */,
+ 34ECFE2B2182E10700B162D4 /* RootViewController.h */,
+ 34ECFE2C2182E10700B162D4 /* RootViewController.mm */,
+ 343B621321998AB200D03830 /* CameraViewController.h */,
+ 343B621421998AB200D03830 /* CameraViewController.mm */,
+ 34ECFE362182E5F100B162D4 /* Utility.h */,
+ 34ECFE372182E5F100B162D4 /* Utility.mm */,
+ );
+ path = lpr;
+ sourceTree = "";
+ };
+ 34ECFE012182DEF500B162D4 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ 34ECFE022182DEF500B162D4 /* include */,
+ 34ECFE0C2182DEF500B162D4 /* src */,
+ );
+ path = Source;
+ sourceTree = "";
+ };
+ 34ECFE022182DEF500B162D4 /* include */ = {
+ isa = PBXGroup;
+ children = (
+ 343B620B21997FC100D03830 /* SegmentationFreeRecognizer.h */,
+ 34ECFE032182DEF500B162D4 /* PlateSegmentation.h */,
+ 34ECFE042182DEF500B162D4 /* Recognizer.h */,
+ 34ECFE052182DEF500B162D4 /* PlateDetection.h */,
+ 34ECFE062182DEF500B162D4 /* PlateInfo.h */,
+ 34ECFE072182DEF500B162D4 /* FineMapping.h */,
+ 34ECFE082182DEF500B162D4 /* niBlackThreshold.h */,
+ 34ECFE092182DEF500B162D4 /* FastDeskew.h */,
+ 34ECFE0A2182DEF500B162D4 /* Pipeline.h */,
+ 34ECFE0B2182DEF500B162D4 /* CNNRecognizer.h */,
+ );
+ path = include;
+ sourceTree = "";
+ };
+ 34ECFE0C2182DEF500B162D4 /* src */ = {
+ isa = PBXGroup;
+ children = (
+ 343B620C21997FC700D03830 /* SegmentationFreeRecognizer.cpp */,
+ 34ECFE0D2182DEF500B162D4 /* PlateSegmentation.cpp */,
+ 34ECFE0E2182DEF500B162D4 /* PlateDetection.cpp */,
+ 34ECFE0F2182DEF500B162D4 /* Pipeline.cpp */,
+ 34ECFE102182DEF500B162D4 /* FastDeskew.cpp */,
+ 34ECFE112182DEF500B162D4 /* Recognizer.cpp */,
+ 34ECFE122182DEF500B162D4 /* FineMapping.cpp */,
+ 34ECFE132182DEF500B162D4 /* util.h */,
+ 34ECFE142182DEF500B162D4 /* CNNRecognizer.cpp */,
+ );
+ path = src;
+ sourceTree = "";
+ };
+ 34ECFE1C2182DF2E00B162D4 /* Resource */ = {
+ isa = PBXGroup;
+ children = (
+ 343B620E219980FD00D03830 /* SegmenationFree-Inception.caffemodel */,
+ 343B620F219980FE00D03830 /* SegmenationFree-Inception.prototxt */,
+ 34ECFE1D2182DF2E00B162D4 /* HorizonalFinemapping.caffemodel */,
+ 34ECFE1E2182DF2E00B162D4 /* CharacterRecognization.caffemodel */,
+ 34ECFE1F2182DF2E00B162D4 /* cascade.xml */,
+ 34ECFE202182DF2E00B162D4 /* Segmentation.prototxt */,
+ 34ECFE212182DF2E00B162D4 /* HorizonalFinemapping.prototxt */,
+ 34ECFE222182DF2E00B162D4 /* Segmentation.caffemodel */,
+ 34ECFE232182DF2E00B162D4 /* CharacterRecognization.prototxt */,
+ );
+ path = Resource;
+ sourceTree = "";
+ };
+ 97C4CF37B3E356C8641CE105 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 34ECFE392182FAB700B162D4 /* CoreImage.framework */,
+ 34ECFE342182E56900B162D4 /* AVFoundation.framework */,
+ A33861A99BC945120023AC25 /* libPods-lpr.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ DE72138A4B42368326688C6A /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ E169020B9373AF28E9C472DD /* Pods-lpr.debug.xcconfig */,
+ 66BAD4CEFABD6705C5100968 /* Pods-lpr.release.xcconfig */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 34ECFDCB2182DD9300B162D4 /* lpr */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 34ECFDE22182DD9400B162D4 /* Build configuration list for PBXNativeTarget "lpr" */;
+ buildPhases = (
+ 12CCA15FA936D51F737FDEDF /* [CP] Check Pods Manifest.lock */,
+ 34ECFDC82182DD9300B162D4 /* Sources */,
+ 34ECFDC92182DD9300B162D4 /* Frameworks */,
+ 34ECFDCA2182DD9300B162D4 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = lpr;
+ productName = lpr;
+ productReference = 34ECFDCC2182DD9300B162D4 /* lpr.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 34ECFDC42182DD9300B162D4 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1000;
+ ORGANIZATIONNAME = lprSample;
+ TargetAttributes = {
+ 34ECFDCB2182DD9300B162D4 = {
+ CreatedOnToolsVersion = 10.0;
+ };
+ };
+ };
+ buildConfigurationList = 34ECFDC72182DD9300B162D4 /* Build configuration list for PBXProject "lpr" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 34ECFDC32182DD9300B162D4;
+ productRefGroup = 34ECFDCD2182DD9300B162D4 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 34ECFDCB2182DD9300B162D4 /* lpr */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 34ECFDCA2182DD9300B162D4 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 343B6210219980FE00D03830 /* SegmenationFree-Inception.caffemodel in Resources */,
+ 34ECFE2A2182DF2F00B162D4 /* CharacterRecognization.prototxt in Resources */,
+ 34ECFDDC2182DD9400B162D4 /* LaunchScreen.storyboard in Resources */,
+ 34ECFDD92182DD9400B162D4 /* Assets.xcassets in Resources */,
+ 34ECFE282182DF2F00B162D4 /* HorizonalFinemapping.prototxt in Resources */,
+ 34ECFE242182DF2F00B162D4 /* HorizonalFinemapping.caffemodel in Resources */,
+ 34ECFE272182DF2F00B162D4 /* Segmentation.prototxt in Resources */,
+ 34ECFE262182DF2F00B162D4 /* cascade.xml in Resources */,
+ 34ECFE292182DF2F00B162D4 /* Segmentation.caffemodel in Resources */,
+ 343B6211219980FE00D03830 /* SegmenationFree-Inception.prototxt in Resources */,
+ 34ECFE252182DF2F00B162D4 /* CharacterRecognization.caffemodel in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 12CCA15FA936D51F737FDEDF /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-lpr-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 34ECFDC82182DD9300B162D4 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 343B620D21997FC800D03830 /* SegmentationFreeRecognizer.cpp in Sources */,
+ 34ECFE1A2182DEF500B162D4 /* FineMapping.cpp in Sources */,
+ 34ECFE182182DEF500B162D4 /* FastDeskew.cpp in Sources */,
+ 34ECFE162182DEF500B162D4 /* PlateDetection.cpp in Sources */,
+ 34ECFDDF2182DD9400B162D4 /* main.m in Sources */,
+ 34ECFE382182E5F100B162D4 /* Utility.mm in Sources */,
+ 34ECFE2D2182E10700B162D4 /* RootViewController.mm in Sources */,
+ 34ECFE172182DEF500B162D4 /* Pipeline.cpp in Sources */,
+ 34ECFE152182DEF500B162D4 /* PlateSegmentation.cpp in Sources */,
+ 34ECFE1B2182DEF500B162D4 /* CNNRecognizer.cpp in Sources */,
+ 34ECFDD12182DD9300B162D4 /* AppDelegate.m in Sources */,
+ 343B621521998AB200D03830 /* CameraViewController.mm in Sources */,
+ 34ECFE192182DEF500B162D4 /* Recognizer.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 34ECFDDA2182DD9400B162D4 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 34ECFDDB2182DD9400B162D4 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 34ECFDE02182DD9400B162D4 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = (
+ "\"$(SRCROOT)/lpr/Source/incllude\"",
+ "\"$(SRCROOT)\"",
+ );
+ IPHONEOS_DEPLOYMENT_TARGET = 10.1;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ };
+ name = Debug;
+ };
+ 34ECFDE12182DD9400B162D4 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = (
+ "\"$(SRCROOT)/lpr/Source/incllude\"",
+ "\"$(SRCROOT)\"",
+ );
+ IPHONEOS_DEPLOYMENT_TARGET = 10.1;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 34ECFDE32182DD9400B162D4 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E169020B9373AF28E9C472DD /* Pods-lpr.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_CXX_LANGUAGE_STANDARD = "compiler-default";
+ CLANG_CXX_LIBRARY = "compiler-default";
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = YZGMTHK294;
+ ENABLE_BITCODE = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"${PODS_ROOT}/Headers/Public\"",
+ "\"${PODS_ROOT}/Headers/Public/OpenCV\"",
+ );
+ INFOPLIST_FILE = lpr/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.TongxingPay.IDCardRecognizeDemo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 34ECFDE42182DD9400B162D4 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 66BAD4CEFABD6705C5100968 /* Pods-lpr.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_CXX_LANGUAGE_STANDARD = "compiler-default";
+ CLANG_CXX_LIBRARY = "compiler-default";
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = YZGMTHK294;
+ ENABLE_BITCODE = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"${PODS_ROOT}/Headers/Public\"",
+ "\"${PODS_ROOT}/Headers/Public/OpenCV\"",
+ );
+ INFOPLIST_FILE = lpr/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.TongxingPay.IDCardRecognizeDemo;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 34ECFDC72182DD9300B162D4 /* Build configuration list for PBXProject "lpr" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 34ECFDE02182DD9400B162D4 /* Debug */,
+ 34ECFDE12182DD9400B162D4 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 34ECFDE22182DD9400B162D4 /* Build configuration list for PBXNativeTarget "lpr" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 34ECFDE32182DD9400B162D4 /* Debug */,
+ 34ECFDE42182DD9400B162D4 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 34ECFDC42182DD9300B162D4 /* Project object */;
+}
diff --git a/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100755
index 0000000..39e1b8b
--- /dev/null
+++ b/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100755
index 0000000..18d9810
--- /dev/null
+++ b/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate b/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100755
index 0000000..7314580
Binary files /dev/null and b/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/Prj-iOS/lpr/lpr.xcodeproj/xcuserdata/tbao.xcuserdatad/xcschemes/xcschememanagement.plist b/Prj-iOS/lpr/lpr.xcodeproj/xcuserdata/tbao.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100755
index 0000000..008c546
--- /dev/null
+++ b/Prj-iOS/lpr/lpr.xcodeproj/xcuserdata/tbao.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,19 @@
+
+
+
+
+ SchemeUserState
+
+ lpr.xcscheme
+
+ orderHint
+ 2
+
+ lpr.xcscheme_^#shared#^_
+
+ orderHint
+ 2
+
+
+
+
diff --git a/Prj-iOS/lpr/lpr.xcworkspace/contents.xcworkspacedata b/Prj-iOS/lpr/lpr.xcworkspace/contents.xcworkspacedata
new file mode 100755
index 0000000..d677399
--- /dev/null
+++ b/Prj-iOS/lpr/lpr.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/Prj-iOS/lpr/lpr.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Prj-iOS/lpr/lpr.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100755
index 0000000..18d9810
--- /dev/null
+++ b/Prj-iOS/lpr/lpr.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate b/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100755
index 0000000..a999c2c
Binary files /dev/null and b/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
new file mode 100755
index 0000000..37996a6
--- /dev/null
+++ b/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Prj-iOS/lpr/lpr/AppDelegate.h b/Prj-iOS/lpr/lpr/AppDelegate.h
new file mode 100755
index 0000000..8ef26f5
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/AppDelegate.h
@@ -0,0 +1,17 @@
+//
+// AppDelegate.h
+// lpr
+//
+// Created by baotim on 2018/10/26.
+// Copyright © 2018 lprSample. All rights reserved.
+//
+
+#import
+
+@interface AppDelegate : UIResponder
+
+@property (strong, nonatomic) UIWindow *window;
+
+
+@end
+
diff --git a/Prj-iOS/lpr/lpr/AppDelegate.m b/Prj-iOS/lpr/lpr/AppDelegate.m
new file mode 100755
index 0000000..e022066
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/AppDelegate.m
@@ -0,0 +1,55 @@
+//
+// AppDelegate.m
+// lpr
+//
+// Created by baotim on 2018/10/26.
+// Copyright © 2018 lprSample. All rights reserved.
+//
+
+#import "AppDelegate.h"
+#import "RootViewController.h"
+
+@interface AppDelegate ()
+
+@end
+
+@implementation AppDelegate
+
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+ // Override point for customization after application launch.
+ self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+ self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[RootViewController new]];
+ [self.window makeKeyAndVisible];
+ return YES;
+}
+
+
+- (void)applicationWillResignActive:(UIApplication *)application {
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
+}
+
+
+- (void)applicationDidEnterBackground:(UIApplication *)application {
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+
+- (void)applicationWillEnterForeground:(UIApplication *)application {
+ // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
+}
+
+
+- (void)applicationDidBecomeActive:(UIApplication *)application {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+}
+
+
+- (void)applicationWillTerminate:(UIApplication *)application {
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+
+@end
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/AppIcon.appiconset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100755
index 0000000..d8db8d6
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "size" : "1024x1024",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/Contents.json
new file mode 100755
index 0000000..da4a164
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/Contents.json
new file mode 100755
index 0000000..8ca20de
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "back_camera_btn@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "back_camera_btn@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@2x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@2x.png
new file mode 100755
index 0000000..41e7387
Binary files /dev/null and b/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@2x.png differ
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@3x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@3x.png
new file mode 100755
index 0000000..be4379d
Binary files /dev/null and b/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@3x.png differ
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/Contents.json
new file mode 100755
index 0000000..fc0efcf
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "flash_camera_btn@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "flash_camera_btn@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@2x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@2x.png
new file mode 100755
index 0000000..91027cd
Binary files /dev/null and b/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@2x.png differ
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@3x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@3x.png
new file mode 100755
index 0000000..e751b60
Binary files /dev/null and b/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@3x.png differ
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/Contents.json
new file mode 100755
index 0000000..7f06e8f
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "locker_btn_def@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "locker_btn_def@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@2x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@2x.png
new file mode 100755
index 0000000..daeadf0
Binary files /dev/null and b/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@2x.png differ
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@3x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@3x.png
new file mode 100755
index 0000000..2e05dae
Binary files /dev/null and b/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@3x.png differ
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/Contents.json
new file mode 100755
index 0000000..5fccab2
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "take_pic_btn@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "take_pic_btn@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@2x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@2x.png
new file mode 100755
index 0000000..fb47d20
Binary files /dev/null and b/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@2x.png differ
diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@3x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@3x.png
new file mode 100755
index 0000000..db0393b
Binary files /dev/null and b/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@3x.png differ
diff --git a/Prj-iOS/lpr/lpr/Base.lproj/LaunchScreen.storyboard b/Prj-iOS/lpr/lpr/Base.lproj/LaunchScreen.storyboard
new file mode 100755
index 0000000..bfa3612
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Prj-iOS/lpr/lpr/CameraViewController.h b/Prj-iOS/lpr/lpr/CameraViewController.h
new file mode 100755
index 0000000..8331b68
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/CameraViewController.h
@@ -0,0 +1,32 @@
+//
+// CameraViewController.h
+// lpr
+//
+// Created by baotim on 2018/10/26.
+// Copyright © 2018 lprSample. All rights reserved.
+//
+
+#ifdef __cplusplus
+#import
+#import
+#endif
+
+#ifdef __OBJC__
+#import
+#import
+#import
+#import
+#import
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef void(^ResultCallBack)(NSString *reuslt, UIImage *image);
+
+@interface CameraViewController : UIViewController
+
+@property(nonatomic, copy) ResultCallBack resultCB;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Prj-iOS/lpr/lpr/CameraViewController.mm b/Prj-iOS/lpr/lpr/CameraViewController.mm
new file mode 100755
index 0000000..ec285bf
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/CameraViewController.mm
@@ -0,0 +1,517 @@
+//
+// CameraViewController.m
+// lpr
+//
+// Created by baotim on 2018/10/26.
+// Copyright © 2018 lprSample. All rights reserved.
+//
+
+#import "CameraViewController.h"
+#import "Utility.h"
+#import "Pipeline.h"
+
+//屏幕的宽、高
+#define kScreenWidth [UIScreen mainScreen].bounds.size.width
+#define kScreenHeight [UIScreen mainScreen].bounds.size.height
+
+@interface CameraViewController ()
+{
+ AVCaptureSession *_session;
+ AVCaptureDeviceInput *_captureInput;
+ AVCaptureStillImageOutput *_captureOutput;
+ AVCaptureVideoPreviewLayer *_preview;
+ AVCaptureDevice *_device;
+
+ NSTimer *_timer; //定时器
+ BOOL _on; //闪光灯状态
+ BOOL _capture;//导航栏动画是否完成
+ BOOL _isFoucePixel;//是否相位对焦
+ CGRect _imgRect;//拍照裁剪
+ int _count;//每几帧识别
+ CGFloat _isLensChanged;//镜头位置
+
+ /*相位聚焦下镜头位置 镜头晃动 值不停的改变 */
+ CGFloat _isIOS8AndFoucePixelLensPosition;
+
+ /*
+ 控制识别速度,最小值为1!数值越大识别越慢。
+ 相机初始化时,设置默认值为1(不要改动),判断设备若为相位对焦时,设置此值为2(可以修改,最小为1,越大越慢)
+ 此值的功能是为了减小相位对焦下,因识别速度过快
+ 此值在相机初始化中设置,在相机代理中使用,用户若无特殊需求不用修改。
+ */
+ int _MaxFR;
+
+ cv::Mat source_image;
+}
+
+@property (assign, nonatomic) BOOL adjustingFocus;
+@property (nonatomic, retain) CALayer *customLayer;
+@property (nonatomic,assign) BOOL isProcessingImage;
+
+@property (nonatomic, strong) UIImage* image;
+
+@end
+
+@implementation CameraViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ // Do any additional setup after loading the view.
+ self.view.backgroundColor = [UIColor clearColor];
+
+ //初始化相机
+ [self initialize];
+
+ //创建相机界面控件
+ [self createCameraView];
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+ [super viewWillAppear:animated];
+
+ _capture = NO;
+ [self performSelector:@selector(changeCapture) withObject:nil afterDelay:0.4];
+ //不支持相位对焦情况下(iPhone6以后的手机支持相位对焦) 设置定时器 开启连续对焦
+ if (!_isFoucePixel) {
+ _timer = [NSTimer scheduledTimerWithTimeInterval:1.3 target:self selector:@selector(fouceMode) userInfo:nil repeats:YES];
+ }
+
+ AVCaptureDevice*camDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
+ int flags = NSKeyValueObservingOptionNew;
+ //注册通知
+ [camDevice addObserver:self forKeyPath:@"adjustingFocus" options:flags context:nil];
+ if (_isFoucePixel) {
+ [camDevice addObserver:self forKeyPath:@"lensPosition" options:flags context:nil];
+ }
+ [_session startRunning];
+}
+
+- (void)viewWillDisappear:(BOOL)animated {
+ [super viewWillDisappear:animated];
+ self.navigationController.navigationBarHidden = NO;
+}
+
+- (void)viewDidDisappear:(BOOL)animated {
+ [super viewDidDisappear:animated];
+
+ if (!_isFoucePixel) {
+ [_timer invalidate];
+ _timer = nil;
+ }
+ AVCaptureDevice*camDevice =[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
+ [camDevice removeObserver:self forKeyPath:@"adjustingFocus"];
+ if (_isFoucePixel) {
+ [camDevice removeObserver:self forKeyPath:@"lensPosition"];
+ }
+ [_session stopRunning];
+
+ _capture = NO;
+}
+
+- (void)changeCapture {
+ _capture = YES;
+}
+
+#pragma mark - Private Methods
+//初始化相机
+- (void)initialize {
+ //判断摄像头授权
+ AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
+ if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
+ self.view.backgroundColor = [UIColor blackColor];
+// UIAlertView * alt = [[UIAlertView alloc] initWithTitle:@"未获得授权使用摄像头" message:@"请在'设置-隐私-相机'打开" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
+// [alt show];
+ UIAlertController * alert = [UIAlertController
+ alertControllerWithTitle:@"未获得授权使用摄像头"
+ message:@"请在'设置-隐私-相机'打开"
+ preferredStyle:UIAlertControllerStyleAlert];
+
+
+ __weak typeof(self) weakSelf = self;
+ UIAlertAction* yesButton = [UIAlertAction
+ actionWithTitle:@"OK"
+ style:UIAlertActionStyleDefault
+ handler:^(UIAlertAction * action) {
+ //Handle your yes please button action here
+ [weakSelf.navigationController popViewControllerAnimated:YES];
+ }];
+
+
+ [alert addAction:yesButton];
+ [self presentViewController:alert animated:YES completion:nil];
+ return;
+ }
+
+ _MaxFR = 1;
+ //1.创建会话层
+ _session = [[AVCaptureSession alloc] init];
+ [_session setSessionPreset:AVCaptureSessionPreset1920x1080];
+
+ //2.创建、配置输入设备
+ NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
+ for (AVCaptureDevice *device in devices){
+ if (device.position == AVCaptureDevicePositionBack){
+ _device = device;
+ _captureInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
+ }
+ }
+ [_session addInput:_captureInput];
+
+ //2.创建视频流输出
+ AVCaptureVideoDataOutput *captureOutput = [[AVCaptureVideoDataOutput alloc] init];
+ captureOutput.alwaysDiscardsLateVideoFrames = YES;
+ dispatch_queue_t queue;
+ queue = dispatch_queue_create("cameraQueue", NULL);
+ [captureOutput setSampleBufferDelegate:self queue:queue];
+ NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey;
+ NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA];
+ NSDictionary* videoSettings = [NSDictionary dictionaryWithObject:value forKey:key];
+ [captureOutput setVideoSettings:videoSettings];
+ [_session addOutput:captureOutput];
+
+ //3.创建、配置静态拍照输出
+ _captureOutput = [[AVCaptureStillImageOutput alloc] init];
+ NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG,AVVideoCodecKey,nil];
+ [_captureOutput setOutputSettings:outputSettings];
+ [_session addOutput:_captureOutput];
+
+ //4.预览图层
+ _preview = [AVCaptureVideoPreviewLayer layerWithSession: _session];
+ _preview.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
+ _preview.videoGravity = AVLayerVideoGravityResizeAspectFill;
+ [self.view.layer addSublayer:_preview];
+
+ //判断是否相位对焦
+ if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
+ AVCaptureDeviceFormat *deviceFormat = _device.activeFormat;
+ if (deviceFormat.autoFocusSystem == AVCaptureAutoFocusSystemPhaseDetection){
+ _isFoucePixel = YES;
+ _MaxFR = 2;
+ }
+ }
+}
+
+- (void)createCameraView
+{
+ //设置覆盖层
+ CAShapeLayer *maskWithHole = [CAShapeLayer layer];
+ // Both frames are defined in the same coordinate system
+ CGRect biggerRect = self.view.bounds;
+ CGFloat offset = 1.0f;
+ if ([[UIScreen mainScreen] scale] >= 2) {
+ offset = 0.5;
+ }
+ CGRect smallFrame = CGRectMake(45, 100, 300, 500);
+ CGRect smallerRect = CGRectInset(smallFrame, -offset, -offset) ;
+ UIBezierPath *maskPath = [UIBezierPath bezierPath];
+ [maskPath moveToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))];
+ [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMaxY(biggerRect))];
+ [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMaxY(biggerRect))];
+ [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMinY(biggerRect))];
+ [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))];
+ [maskPath moveToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))];
+ [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMaxY(smallerRect))];
+ [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMaxY(smallerRect))];
+ [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMinY(smallerRect))];
+ [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))];
+ [maskWithHole setPath:[maskPath CGPath]];
+ [maskWithHole setFillRule:kCAFillRuleEvenOdd];
+ [maskWithHole setFillColor:[[UIColor colorWithWhite:0 alpha:0.35] CGColor]];
+ [self.view.layer addSublayer:maskWithHole];
+ [self.view.layer setMasksToBounds:YES];
+
+ /* 相机按钮 适配了iPhone和ipad 不同需求自行修改界面*/
+ //返回、闪光灯按钮
+ CGFloat backWidth = 35;
+ if (kScreenHeight>=1024) {
+ backWidth = 50;
+ }
+ CGFloat s = 80;
+ CGFloat s1 = 0;
+ if (kScreenHeight==480) {
+ s = 60;
+ s1 = 10;
+ }
+ UIButton *backBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth/16,kScreenWidth/16-s1, backWidth, backWidth)];
+ [backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
+ [backBtn setImage:[UIImage imageNamed:@"back_camera_btn"] forState:UIControlStateNormal];
+ backBtn.titleLabel.textAlignment = NSTextAlignmentLeft;
+ [self.view addSubview:backBtn];
+
+ UIButton *flashBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth-kScreenWidth/16-backWidth,kScreenWidth/16-s1, backWidth, backWidth)];
+ [flashBtn setImage:[UIImage imageNamed:@"flash_camera_btn"] forState:UIControlStateNormal];
+ [flashBtn addTarget:self action:@selector(modeBtn) forControlEvents:UIControlEventTouchUpInside];
+ [self.view addSubview:flashBtn];
+
+ //拍照视图 上拉按钮 拍照按钮
+ UIButton *upBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth/2-60, kScreenHeight-20, 120, 20)];
+ upBtn.tag = 1001;
+ [upBtn addTarget:self action:@selector(upBtn:) forControlEvents:UIControlEventTouchUpInside];
+ [upBtn setImage:[UIImage imageNamed:@"locker_btn_def"] forState:UIControlStateNormal];
+ [self.view addSubview:upBtn];
+
+ UIButton *photoBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth/2-30,kScreenHeight-s,60, 60)];
+ photoBtn.tag = 1000;
+ photoBtn.hidden = YES;
+ [photoBtn setImage:[UIImage imageNamed:@"take_pic_btn"] forState:UIControlStateNormal];
+ [photoBtn addTarget:self action:@selector(photoBtn) forControlEvents:UIControlEventTouchUpInside];
+ [photoBtn setTitleColor:[UIColor grayColor] forState:UIControlStateHighlighted];
+ [self.view addSubview:photoBtn];
+ [self.view bringSubviewToFront:photoBtn];
+}
+
+//隐藏状态栏
+- (UIStatusBarStyle)preferredStatusBarStyle{
+ return UIStatusBarStyleDefault;
+}
+- (BOOL)prefersStatusBarHidden{
+ return YES;
+}
+
+//对焦
+- (void)fouceMode
+{
+ NSError *error;
+ AVCaptureDevice *device = [self cameraWithPosition:AVCaptureDevicePositionBack];
+ if ([device isFocusModeSupported:AVCaptureFocusModeAutoFocus])
+ {
+ if ([device lockForConfiguration:&error]) {
+ CGPoint cameraPoint = [_preview captureDevicePointOfInterestForPoint:self.view.center];
+ [device setFocusPointOfInterest:cameraPoint];
+ [device setFocusMode:AVCaptureFocusModeAutoFocus];
+ [device unlockForConfiguration];
+ } else {
+ //NSLog(@"Error: %@", error);
+ }
+ }
+}
+
+- (AVCaptureDevice *)cameraWithPosition:(AVCaptureDevicePosition)position
+{
+ NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
+ for (AVCaptureDevice *device in devices){
+ if (device.position == position){
+ return device;
+ }
+ }
+ return nil;
+}
+
+- (NSString *)getPath:(NSString*)fileName
+{
+ NSString *bundlePath = [NSBundle mainBundle].bundlePath;
+ NSString *path = [bundlePath stringByAppendingPathComponent:fileName];
+ return path;
+}
+
+- (NSString *)simpleRecognition:(cv::Mat&)src
+{
+ NSString *path_1 = [self getPath:@"cascade.xml"];
+ NSString *path_2 = [self getPath:@"HorizonalFinemapping.prototxt"];
+ NSString *path_3 = [self getPath:@"HorizonalFinemapping.caffemodel"];
+ NSString *path_4 = [self getPath:@"Segmentation.prototxt"];
+ NSString *path_5 = [self getPath:@"Segmentation.caffemodel"];
+ NSString *path_6 = [self getPath:@"CharacterRecognization.prototxt"];
+ NSString *path_7 = [self getPath:@"CharacterRecognization.caffemodel"];
+ NSString *path_8 = [self getPath:@"SegmenationFree-Inception.prototxt"];
+ NSString *path_9 = [self getPath:@"SegmenationFree-Inception.caffemodel"];
+
+ std::string *cpath_1 = new std::string([path_1 UTF8String]);
+ std::string *cpath_2 = new std::string([path_2 UTF8String]);
+ std::string *cpath_3 = new std::string([path_3 UTF8String]);
+ std::string *cpath_4 = new std::string([path_4 UTF8String]);
+ std::string *cpath_5 = new std::string([path_5 UTF8String]);
+ std::string *cpath_6 = new std::string([path_6 UTF8String]);
+ std::string *cpath_7 = new std::string([path_7 UTF8String]);
+ std::string *cpath_8 = new std::string([path_8 UTF8String]);
+ std::string *cpath_9 = new std::string([path_9 UTF8String]);
+
+
+ pr::PipelinePR pr2 = pr::PipelinePR(*cpath_1, *cpath_2, *cpath_3, *cpath_4, *cpath_5, *cpath_6, *cpath_7, *cpath_8, *cpath_9);
+
+ std::vector list_res = pr2.RunPiplineAsImage(src, pr::SEGMENTATION_FREE_METHOD);
+ std::string concat_results = "";
+ for(auto one:list_res) {
+ if(one.confidence>0.7) {
+ concat_results += one.getPlateName()+",";
+ }
+ }
+
+ NSString *str = [NSString stringWithCString:concat_results.c_str() encoding:NSUTF8StringEncoding];
+ if (str.length > 0) {
+ str = [str substringToIndex:str.length-1];
+ str = [NSString stringWithFormat:@"%@",str];
+ } else {
+ str = [NSString stringWithFormat:@"未识别成功"];
+ }
+ NSLog(@"===> 识别结果 = %@", str);
+
+ return str;
+}
+
+#pragma mark - Actions
+//返回按钮按钮点击事件
+- (void)backAction
+{
+ [self dismissViewControllerAnimated:YES completion:nil];
+}
+
+//闪光灯按钮点击事件
+- (void)modeBtn
+{
+ if (![_device hasTorch]) {
+ //NSLog(@"no torch");
+ } else {
+ [_device lockForConfiguration:nil];
+ if (!_on) {
+ [_device setTorchMode: AVCaptureTorchModeOn];
+ _on = YES;
+ }else{
+ [_device setTorchMode: AVCaptureTorchModeOff];
+ _on = NO;
+ }
+ [_device unlockForConfiguration];
+ }
+}
+
+//上拉按钮点击事件
+- (void)upBtn:(UIButton *)upBtn
+{
+ UIButton *photoBtn = (UIButton *)[self.view viewWithTag:1000];
+ photoBtn.hidden = NO;
+ upBtn.hidden = YES;
+}
+
+//拍照按钮点击事件
+- (void)photoBtn
+{
+ self.isProcessingImage = YES;
+ //get connection
+ AVCaptureConnection *videoConnection = nil;
+ for (AVCaptureConnection *connection in _captureOutput.connections) {
+ for (AVCaptureInputPort *port in [connection inputPorts]) {
+ if ([[port mediaType] isEqual:AVMediaTypeVideo] ) {
+ videoConnection = connection;
+ break;
+ }
+ }
+ if (videoConnection) { break; }
+ }
+
+ //get UIImage
+ __weak typeof(self) weakSelf = self;
+ [_captureOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:
+ ^(CMSampleBufferRef imageSampleBuffer, NSError *error) {
+ if (imageSampleBuffer != NULL) {
+ //停止取景
+ [_session stopRunning];
+
+ NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
+ UIImage *tempImage = [[UIImage alloc] initWithData:imageData];
+
+ UIImage *temp_image = [Utility scaleAndRotateImageBackCamera:tempImage];
+ source_image = [Utility cvMatFromUIImage:temp_image];
+ NSString* text = [weakSelf simpleRecognition:source_image];
+
+ NSMutableDictionary* resultDict = [NSMutableDictionary new];
+ resultDict[@"image"] = temp_image;
+ resultDict[@"text"] = text;
+ [self performSelectorOnMainThread:@selector(readyToGetImage:) withObject:resultDict waitUntilDone:NO];
+ weakSelf.isProcessingImage = NO;
+ }
+ }];
+}
+
+//从摄像头缓冲区获取图像
+#pragma mark - AVCaptureSession delegate
+- (void)captureOutput:(AVCaptureOutput *)captureOutput
+didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
+ fromConnection:(AVCaptureConnection *)connection
+{
+ CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
+ CVPixelBufferLockBaseAddress(imageBuffer,0);
+ uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer);
+ size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
+ size_t width = CVPixelBufferGetWidth(imageBuffer);
+ size_t height = CVPixelBufferGetHeight(imageBuffer);
+
+ /*We unlock the image buffer*/
+ CVPixelBufferUnlockBaseAddress(imageBuffer,0);
+
+ /*Create a CGImageRef from the CVImageBufferRef*/
+ CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
+ CGContextRef newContext = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
+ CGImageRef newImage = CGBitmapContextCreateImage(newContext);
+
+ /*We release some components*/
+ CGContextRelease(newContext);
+ CGColorSpaceRelease(colorSpace);
+
+ /*We display the result on the image view (We need to change the orientation of the image so that the video is displayed correctly)*/
+ self.image = [UIImage imageWithCGImage:newImage scale:1.0 orientation:UIImageOrientationUp];
+ /*We relase the CGImageRef*/
+ CGImageRelease(newImage);
+
+ //检边识别
+ if (_capture == YES) { //导航栏动画完成
+ if (self.isProcessingImage==NO) { //点击拍照后 不去识别
+ if (!self.adjustingFocus) { //反差对焦下 非正在对焦状态(相位对焦下self.adjustingFocus此值不会改变)
+ if (_isLensChanged == _isIOS8AndFoucePixelLensPosition) {
+ _count++;
+ if (_count >= _MaxFR) {
+
+ //识别
+ UIImage *temp_image = [Utility scaleAndRotateImageBackCamera:self.image];
+ source_image = [Utility cvMatFromUIImage:temp_image];
+ NSString* text = [self simpleRecognition:source_image];
+
+ if (text.length == 7) { //识别成功
+ _count = 0;
+ // 停止取景
+ [_session stopRunning];
+ //设置震动
+ AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
+
+ NSMutableDictionary* resultDict = [NSMutableDictionary new];
+ resultDict[@"image"] = temp_image;
+ resultDict[@"text"] = text;
+
+ [self performSelectorOnMainThread:@selector(readyToGetImage:) withObject:resultDict waitUntilDone:NO];
+ }
+ }
+ } else {
+ _isLensChanged = _isIOS8AndFoucePixelLensPosition;
+ _count = 0;
+ }
+ }
+ }
+ }
+ CVPixelBufferUnlockBaseAddress(imageBuffer,0);
+}
+
+//找边成功开始拍照
+- (void)readyToGetImage:(NSDictionary *)resultDict
+{
+ [self dismissViewControllerAnimated:NO completion:^{
+ }];
+
+ if (self.resultCB) {
+ self.resultCB(resultDict[@"text"], resultDict[@"image"]);
+ }
+}
+
+- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context {
+
+ /*反差对焦 监听反差对焦此*/
+ if([keyPath isEqualToString:@"adjustingFocus"]){
+ self.adjustingFocus =[[change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1]];
+ }
+ /*监听相位对焦此*/
+ if([keyPath isEqualToString:@"lensPosition"]){
+ _isIOS8AndFoucePixelLensPosition =[[change objectForKey:NSKeyValueChangeNewKey] floatValue];
+ //NSLog(@"监听_isIOS8AndFoucePixelLensPosition == %f",_isIOS8AndFoucePixelLensPosition);
+ }
+}
+
+
+@end
diff --git a/Prj-iOS/lpr/lpr/Info.plist b/Prj-iOS/lpr/lpr/Info.plist
new file mode 100755
index 0000000..19d69a9
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Info.plist
@@ -0,0 +1,45 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ NSCameraUsageDescription
+ 欢迎使用相机
+ NSPhotoLibraryUsageDescription
+ 欢迎使用相册
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/Prj-iOS/lpr/lpr/RootViewController.h b/Prj-iOS/lpr/lpr/RootViewController.h
new file mode 100755
index 0000000..14da8d2
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/RootViewController.h
@@ -0,0 +1,26 @@
+//
+// RootViewController.h
+// lpr
+//
+// Created by baotim on 2018/10/26.
+// Copyright © 2018 lprSample. All rights reserved.
+//
+
+#ifdef __cplusplus
+#import
+#import
+#endif
+
+#ifdef __OBJC__
+#import
+#import
+#import
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface RootViewController : UIViewController
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Prj-iOS/lpr/lpr/RootViewController.mm b/Prj-iOS/lpr/lpr/RootViewController.mm
new file mode 100755
index 0000000..df13584
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/RootViewController.mm
@@ -0,0 +1,201 @@
+//
+// RootViewController.m
+// lpr
+//
+// Created by baotim on 2018/10/26.
+// Copyright © 2018 lprSample. All rights reserved.
+//
+
+#import "RootViewController.h"
+#import
+#import "CameraViewController.h"
+#import "Utility.h"
+#import "Pipeline.h"
+
+@interface RootViewController ()
+
+@property (nonatomic, strong) UIButton* albumButton;
+@property (nonatomic, strong) UIButton* cameraButton;
+@property (nonatomic, strong) UIImageView* imageView;
+@property (nonatomic, strong) UILabel* resultLabel;
+
+@end
+
+@implementation RootViewController
+{
+ cv::Mat source_image;
+}
+
+#pragma mark - Lazy Initialize
+- (UIButton *)albumButton
+{
+ if (!_albumButton) {
+ _albumButton = [UIButton buttonWithType:UIButtonTypeCustom];
+ [_albumButton setTitle:@"打开相册" forState:UIControlStateNormal];
+ [_albumButton setBackgroundColor:[UIColor redColor]];
+ [_albumButton addTarget:self action:@selector(openAlbum) forControlEvents:UIControlEventTouchUpInside];
+ }
+ return _albumButton;
+}
+
+- (UIButton *)cameraButton
+{
+ if (!_cameraButton) {
+ _cameraButton = [UIButton buttonWithType:UIButtonTypeCustom];
+ [_cameraButton setBackgroundColor:[UIColor redColor]];
+ [_cameraButton setTitle:@"实时拍照" forState:UIControlStateNormal];
+ [_cameraButton addTarget:self action:@selector(openCamera) forControlEvents:UIControlEventTouchUpInside];
+ }
+ return _cameraButton;
+}
+
+- (UIImageView *)imageView
+{
+ if (!_imageView) {
+ _imageView = [[UIImageView alloc] init];
+ _imageView.contentMode = UIViewContentModeScaleAspectFit;
+ }
+ return _imageView;
+}
+
+- (UILabel *)resultLabel
+{
+ if (!_resultLabel) {
+ _resultLabel = [UILabel new];
+ _resultLabel.textColor = [UIColor redColor];
+ _resultLabel.textAlignment = NSTextAlignmentLeft;
+ _resultLabel.font = [UIFont systemFontOfSize:15];
+ }
+ return _resultLabel;
+}
+
+#pragma mark - Life Cycle
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ // Do any additional setup after loading the view.
+ self.view.backgroundColor = [UIColor whiteColor];
+ self.navigationItem.title = @"车牌识别Demo";
+
+ [self.view addSubview:self.albumButton];
+ [self.albumButton mas_makeConstraints:^(MASConstraintMaker* make) {
+ make.centerX.equalTo(self.view).offset(-80);
+ make.bottom.equalTo(self.mas_bottomLayoutGuideTop).offset(-20);
+ make.width.mas_equalTo(100);
+ make.height.mas_equalTo(50);
+ }];
+
+ [self.view addSubview:self.cameraButton];
+ [self.cameraButton mas_makeConstraints:^(MASConstraintMaker* make) {
+ make.centerX.equalTo(self.view).offset(80);
+ make.bottom.equalTo(self.albumButton);
+ make.width.mas_equalTo(100);
+ make.height.mas_equalTo(50);
+ }];
+
+ [self.view addSubview:self.resultLabel];
+ [self.resultLabel mas_makeConstraints:^(MASConstraintMaker* make) {
+ make.left.right.equalTo(self.view);
+ make.bottom.lessThanOrEqualTo(self.albumButton.mas_top);
+ }];
+
+ [self.view addSubview:self.imageView];
+ [self.imageView mas_makeConstraints:^(MASConstraintMaker* make) {
+ make.top.left.right.equalTo(self.view);
+ make.bottom.lessThanOrEqualTo(self.resultLabel.mas_top);
+ }];
+}
+
+#pragma mark - Actions
+- (void)openAlbum
+{
+ UIImagePickerController* picker = [[UIImagePickerController alloc] init];
+ picker.delegate = self;
+
+ if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
+ return;
+
+ picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
+
+ [self presentViewController:picker animated:YES completion:nil];
+}
+
+- (void)openCamera
+{
+ CameraViewController* video = [CameraViewController new];
+ video.resultCB = ^(NSString* text, UIImage* image) {
+ self.imageView.image = image;
+ self.resultLabel.text = text;
+ };
+ [self presentViewController:video animated:YES completion:nil];
+}
+
+#pragma mark - Private Methods
+- (NSString *)getPathFromBundle:(NSString*)fileName
+{
+ NSString *bundlePath = [NSBundle mainBundle].bundlePath;
+ NSString *path = [bundlePath stringByAppendingPathComponent:fileName];
+ return path;
+}
+
+- (void)freeRecognition:(cv::Mat&)src
+{
+ NSString *path_1 = [self getPathFromBundle:@"cascade.xml"];
+ NSString *path_2 = [self getPathFromBundle:@"HorizonalFinemapping.prototxt"];
+ NSString *path_3 = [self getPathFromBundle:@"HorizonalFinemapping.caffemodel"];
+ NSString *path_4 = [self getPathFromBundle:@"Segmentation.prototxt"];
+ NSString *path_5 = [self getPathFromBundle:@"Segmentation.caffemodel"];
+ NSString *path_6 = [self getPathFromBundle:@"CharacterRecognization.prototxt"];
+ NSString *path_7 = [self getPathFromBundle:@"CharacterRecognization.caffemodel"];
+ NSString *path_8 = [self getPathFromBundle:@"SegmenationFree-Inception.prototxt"];
+ NSString *path_9 = [self getPathFromBundle:@"SegmenationFree-Inception.caffemodel"];
+
+ std::string *cpath_1 = new std::string([path_1 UTF8String]);
+ std::string *cpath_2 = new std::string([path_2 UTF8String]);
+ std::string *cpath_3 = new std::string([path_3 UTF8String]);
+ std::string *cpath_4 = new std::string([path_4 UTF8String]);
+ std::string *cpath_5 = new std::string([path_5 UTF8String]);
+ std::string *cpath_6 = new std::string([path_6 UTF8String]);
+ std::string *cpath_7 = new std::string([path_7 UTF8String]);
+ std::string *cpath_8 = new std::string([path_8 UTF8String]);
+ std::string *cpath_9 = new std::string([path_9 UTF8String]);
+
+
+ pr::PipelinePR pr2 = pr::PipelinePR(*cpath_1, *cpath_2, *cpath_3, *cpath_4, *cpath_5, *cpath_6, *cpath_7, *cpath_8, *cpath_9);
+
+ std::vector list_res = pr2.RunPiplineAsImage(src, pr::SEGMENTATION_FREE_METHOD);
+ std::string concat_results = "";
+ for(auto one:list_res) {
+ if(one.confidence>0.7) {
+ concat_results += one.getPlateName()+",";
+ }
+ }
+
+ NSString *str = [NSString stringWithCString:concat_results.c_str() encoding:NSUTF8StringEncoding];
+ if (str.length > 0) {
+ str = [str substringToIndex:str.length-1];
+ str = [NSString stringWithFormat:@"识别结果: %@",str];
+ } else {
+ str = [NSString stringWithFormat:@"识别结果: 未识别成功"];
+ }
+
+ [self.resultLabel setText:str];
+}
+
+#pragma mark - UIImagePickerControllerDelegate
+- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
+{
+ [picker dismissViewControllerAnimated:YES completion:nil];
+
+ UIImage* temp = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
+ UIImage *temp_image = [Utility scaleAndRotateImageBackCamera:temp];
+ source_image = [Utility cvMatFromUIImage:temp_image];
+ [self freeRecognition:source_image];
+ self.imageView.image = temp;
+}
+
+- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
+{
+ [picker dismissViewControllerAnimated:YES completion:nil];
+}
+
+@end
diff --git a/Prj-iOS/lpr/lpr/Source/include/CNNRecognizer.h b/Prj-iOS/lpr/lpr/Source/include/CNNRecognizer.h
new file mode 100755
index 0000000..a577733
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/include/CNNRecognizer.h
@@ -0,0 +1,24 @@
+//
+// Created by Jack Yu on 21/10/2017.
+//
+
+#ifndef SWIFTPR_CNNRECOGNIZER_H
+#define SWIFTPR_CNNRECOGNIZER_H
+
+#include "Recognizer.h"
+namespace pr{
+ class CNNRecognizer: public GeneralRecognizer{
+ public:
+ const int CHAR_INPUT_W = 14;
+ const int CHAR_INPUT_H = 30;
+
+ CNNRecognizer(std::string prototxt,std::string caffemodel);
+ label recognizeCharacter(cv::Mat character);
+ private:
+ cv::dnn::Net net;
+
+ };
+
+}
+
+#endif //SWIFTPR_CNNRECOGNIZER_H
diff --git a/Prj-iOS/lpr/lpr/Source/include/FastDeskew.h b/Prj-iOS/lpr/lpr/Source/include/FastDeskew.h
new file mode 100755
index 0000000..456f08d
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/include/FastDeskew.h
@@ -0,0 +1,18 @@
+//
+// Created by 庾金科 on 22/09/2017.
+//
+
+#ifndef SWIFTPR_FASTDESKEW_H
+#define SWIFTPR_FASTDESKEW_H
+
+#include
+#include
+namespace pr{
+
+ cv::Mat fastdeskew(cv::Mat skewImage,int blockSize);
+// cv::Mat spatialTransformer(cv::Mat skewImage);
+
+}//namepace pr
+
+
+#endif //SWIFTPR_FASTDESKEW_H
diff --git a/Prj-iOS/lpr/lpr/Source/include/FineMapping.h b/Prj-iOS/lpr/lpr/Source/include/FineMapping.h
new file mode 100755
index 0000000..352202e
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/include/FineMapping.h
@@ -0,0 +1,32 @@
+//
+// Created by 庾金科 on 22/09/2017.
+//
+
+#ifndef SWIFTPR_FINEMAPPING_H
+#define SWIFTPR_FINEMAPPING_H
+
+#include
+#include
+
+#include
+namespace pr{
+ class FineMapping{
+ public:
+ FineMapping();
+
+
+ FineMapping(std::string prototxt,std::string caffemodel);
+ static cv::Mat FineMappingVertical(cv::Mat InputProposal,int sliceNum=15,int upper=0,int lower=-50,int windows_size=17);
+ cv::Mat FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding);
+
+
+ private:
+ cv::dnn::Net net;
+
+ };
+
+
+
+
+}
+#endif //SWIFTPR_FINEMAPPING_H
diff --git a/Prj-iOS/lpr/lpr/Source/include/Pipeline.h b/Prj-iOS/lpr/lpr/Source/include/Pipeline.h
new file mode 100755
index 0000000..144cc80
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/include/Pipeline.h
@@ -0,0 +1,45 @@
+//
+// Created by 庾金科 on 22/10/2017.
+//
+
+#ifndef SWIFTPR_PIPLINE_H
+#define SWIFTPR_PIPLINE_H
+
+#include "PlateDetection.h"
+#include "PlateSegmentation.h"
+#include "CNNRecognizer.h"
+#include "PlateInfo.h"
+#include "FastDeskew.h"
+#include "FineMapping.h"
+#include "Recognizer.h"
+#include "SegmentationFreeRecognizer.h"
+
+namespace pr{
+
+// std::string str_code[]={"京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","港","学","使","警","澳","挂","军","北","南","广","沈","兰","成","济","海","民","航","空"};
+// const std::vector CH_PLATE_CODE(str_code, str_code+83);
+
+ const int SEGMENTATION_FREE_METHOD = 0;
+ const int SEGMENTATION_BASED_METHOD = 1;
+
+ class PipelinePR {
+ public:
+ GeneralRecognizer *generalRecognizer;
+ PlateDetection *plateDetection;
+ PlateSegmentation *plateSegmentation;
+ FineMapping *fineMapping;
+ SegmentationFreeRecognizer *segmentationFreeRecognizer;
+
+ PipelinePR(std::string detector_filename,
+ std::string finemapping_prototxt,std::string finemapping_caffemodel,
+ std::string segmentation_prototxt,std::string segmentation_caffemodel,
+ std::string charRecognization_proto,std::string charRecognization_caffemodel,
+ std::string segmentationfree_proto,std::string segmentationfree_caffemodel
+ );
+ ~PipelinePR();
+
+ std::vector plateRes;
+ std::vector RunPiplineAsImage(cv::Mat plateImage,int method);
+ };
+}
+#endif //SWIFTPR_PIPLINE_H
diff --git a/Prj-iOS/lpr/lpr/Source/include/PlateDetection.h b/Prj-iOS/lpr/lpr/Source/include/PlateDetection.h
new file mode 100755
index 0000000..f4cf567
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/include/PlateDetection.h
@@ -0,0 +1,33 @@
+//
+// Created by 庾金科 on 20/09/2017.
+//
+
+#ifndef SWIFTPR_PLATEDETECTION_H
+#define SWIFTPR_PLATEDETECTION_H
+
+#include
+#include "PlateInfo.h"
+#include
+namespace pr{
+ class PlateDetection{
+ public:
+ PlateDetection(std::string filename_cascade);
+ PlateDetection();
+ void LoadModel(std::string filename_cascade);
+ void plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w=36,int max_w=800);
+// std::vector plateDetectionRough(cv::Mat InputImage,int min_w= 60,int max_h = 400);
+
+
+// std::vector plateDetectionRoughByMultiScaleEdge(cv::Mat InputImage);
+
+
+
+ private:
+ cv::CascadeClassifier cascade;
+
+
+ };
+
+}// namespace pr
+
+#endif //SWIFTPR_PLATEDETECTION_H
diff --git a/Prj-iOS/lpr/lpr/Source/include/PlateInfo.h b/Prj-iOS/lpr/lpr/Source/include/PlateInfo.h
new file mode 100755
index 0000000..f1ea716
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/include/PlateInfo.h
@@ -0,0 +1,126 @@
+//
+// Created by 庾金科 on 20/09/2017.
+//
+
+#ifndef SWIFTPR_PLATEINFO_H
+#define SWIFTPR_PLATEINFO_H
+#include
+namespace pr {
+
+ typedef std::vector Character;
+
+ enum PlateColor { BLUE, YELLOW, WHITE, GREEN, BLACK,UNKNOWN};
+ enum CharType {CHINESE,LETTER,LETTER_NUMS,INVALID};
+
+
+ class PlateInfo {
+ public:
+ std::vector > plateChars;
+ std::vector > plateCoding;
+ float confidence = 0;
+ PlateInfo(const cv::Mat &plateData, std::string plateName, cv::Rect plateRect, PlateColor plateType) {
+ licensePlate = plateData;
+ name = plateName;
+ ROI = plateRect;
+ Type = plateType;
+ }
+ PlateInfo(const cv::Mat &plateData, cv::Rect plateRect, PlateColor plateType) {
+ licensePlate = plateData;
+ ROI = plateRect;
+ Type = plateType;
+ }
+ PlateInfo(const cv::Mat &plateData, cv::Rect plateRect) {
+ licensePlate = plateData;
+ ROI = plateRect;
+ }
+ PlateInfo() {
+
+ }
+
+ cv::Mat getPlateImage() {
+ return licensePlate;
+ }
+
+ void setPlateImage(cv::Mat plateImage){
+ licensePlate = plateImage;
+ }
+
+ cv::Rect getPlateRect() {
+ return ROI;
+ }
+
+ void setPlateRect(cv::Rect plateRect) {
+ ROI = plateRect;
+ }
+ cv::String getPlateName() {
+ return name;
+
+ }
+ void setPlateName(cv::String plateName) {
+ name = plateName;
+ }
+ int getPlateType() {
+ return Type;
+ }
+
+ void appendPlateChar(const std::pair &plateChar)
+ {
+ plateChars.push_back(plateChar);
+ }
+
+ void appendPlateCoding(const std::pair &charProb){
+ plateCoding.push_back(charProb);
+ }
+
+ // cv::Mat getPlateChars(int id) {
+ // if(id mappingTable) {
+ std::string decode;
+ for(auto plate:plateCoding) {
+ float *prob = (float *)plate.second.data;
+ if(plate.first == CHINESE) {
+
+ decode += mappingTable[std::max_element(prob,prob+31) - prob];
+ confidence+=*std::max_element(prob,prob+31);
+
+
+// std::cout<<*std::max_element(prob,prob+31)<
+#include "PlateInfo.h"
+
+namespace pr{
+
+
+ class PlateSegmentation{
+ public:
+ const int PLATE_NORMAL = 6;
+ const int PLATE_NORMAL_GREEN = 7;
+ const int DEFAULT_WIDTH = 20;
+ PlateSegmentation(std::string phototxt,std::string caffemodel);
+ PlateSegmentation(){}
+ void segmentPlatePipline(PlateInfo &plateInfo,int stride,std::vector &Char_rects);
+
+ void segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones);
+ void templateMatchFinding(const cv::Mat &respones,int windowsWidth,std::pair > &candidatePts);
+ void refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects);
+ void ExtractRegions(PlateInfo &plateInfo,std::vector &rects);
+ cv::Mat classifyResponse(const cv::Mat &cropped);
+ private:
+ cv::dnn::Net net;
+
+
+// RefineRegion()
+
+ };
+
+}//namespace pr
+
+#endif //SWIFTPR_PLATESEGMENTATION_H
diff --git a/Prj-iOS/lpr/lpr/Source/include/Recognizer.h b/Prj-iOS/lpr/lpr/Source/include/Recognizer.h
new file mode 100755
index 0000000..04a565f
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/include/Recognizer.h
@@ -0,0 +1,23 @@
+//
+// Created by 庾金科 on 20/10/2017.
+//
+
+
+#ifndef SWIFTPR_RECOGNIZER_H
+#define SWIFTPR_RECOGNIZER_H
+
+#include
+#include "PlateInfo.h"
+namespace pr{
+ typedef cv::Mat label;
+ class GeneralRecognizer{
+ public:
+ virtual label recognizeCharacter(cv::Mat character) = 0;
+// virtual cv::Mat SegmentationFreeForSinglePlate(cv::Mat plate) = 0;
+ void SegmentBasedSequenceRecognition(PlateInfo &plateinfo);
+ void SegmentationFreeSequenceRecognition(PlateInfo &plateInfo);
+
+ };
+
+}
+#endif //SWIFTPR_RECOGNIZER_H
diff --git a/Prj-iOS/lpr/lpr/Source/include/SegmentationFreeRecognizer.h b/Prj-iOS/lpr/lpr/Source/include/SegmentationFreeRecognizer.h
new file mode 100755
index 0000000..583899e
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/include/SegmentationFreeRecognizer.h
@@ -0,0 +1,28 @@
+//
+// Created by 庾金科 on 28/11/2017.
+//
+
+#ifndef SWIFTPR_SEGMENTATIONFREERECOGNIZER_H
+#define SWIFTPR_SEGMENTATIONFREERECOGNIZER_H
+
+#include "Recognizer.h"
+namespace pr{
+
+
+ class SegmentationFreeRecognizer{
+ public:
+ const int CHAR_INPUT_W = 14;
+ const int CHAR_INPUT_H = 30;
+ const int CHAR_LEN = 84;
+
+ SegmentationFreeRecognizer(std::string prototxt,std::string caffemodel);
+ std::pair SegmentationFreeForSinglePlate(cv::Mat plate,std::vector mapping_table);
+
+
+ private:
+ cv::dnn::Net net;
+
+ };
+
+}
+#endif //SWIFTPR_SEGMENTATIONFREERECOGNIZER_H
diff --git a/Prj-iOS/lpr/lpr/Source/include/niBlackThreshold.h b/Prj-iOS/lpr/lpr/Source/include/niBlackThreshold.h
new file mode 100755
index 0000000..5ad7e14
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/include/niBlackThreshold.h
@@ -0,0 +1,107 @@
+//
+// Created by 庾金科 on 26/10/2017.
+//
+
+#ifndef SWIFTPR_NIBLACKTHRESHOLD_H
+#define SWIFTPR_NIBLACKTHRESHOLD_H
+
+
+#include
+using namespace cv;
+
+enum LocalBinarizationMethods{
+ BINARIZATION_NIBLACK = 0, //!< Classic Niblack binarization. See @cite Niblack1985 .
+ BINARIZATION_SAUVOLA = 1, //!< Sauvola's technique. See @cite Sauvola1997 .
+ BINARIZATION_WOLF = 2, //!< Wolf's technique. See @cite Wolf2004 .
+ BINARIZATION_NICK = 3 //!< NICK technique. See @cite Khurshid2009 .
+};
+
+
+void niBlackThreshold( InputArray _src, OutputArray _dst, double maxValue,
+ int type, int blockSize, double k, int binarizationMethod )
+{
+ // Input grayscale image
+ Mat src = _src.getMat();
+ CV_Assert(src.channels() == 1);
+ CV_Assert(blockSize % 2 == 1 && blockSize > 1);
+ if (binarizationMethod == BINARIZATION_SAUVOLA) {
+ CV_Assert(src.depth() == CV_8U);
+ }
+ type &= THRESH_MASK;
+ // Compute local threshold (T = mean + k * stddev)
+ // using mean and standard deviation in the neighborhood of each pixel
+ // (intermediate calculations are done with floating-point precision)
+ Mat test;
+ Mat thresh;
+ {
+ // note that: Var[X] = E[X^2] - E[X]^2
+ Mat mean, sqmean, variance, stddev, sqrtVarianceMeanSum;
+ double srcMin, stddevMax;
+ boxFilter(src, mean, CV_32F, Size(blockSize, blockSize),
+ Point(-1,-1), true, BORDER_REPLICATE);
+ sqrBoxFilter(src, sqmean, CV_32F, Size(blockSize, blockSize),
+ Point(-1,-1), true, BORDER_REPLICATE);
+ variance = sqmean - mean.mul(mean);
+ sqrt(variance, stddev);
+ switch (binarizationMethod)
+ {
+ case BINARIZATION_NIBLACK:
+ thresh = mean + stddev * static_cast(k);
+
+ break;
+ case BINARIZATION_SAUVOLA:
+ thresh = mean.mul(1. + static_cast(k) * (stddev / 128.0 - 1.));
+ break;
+ case BINARIZATION_WOLF:
+ minMaxIdx(src, &srcMin,NULL);
+ minMaxIdx(stddev, NULL, &stddevMax);
+ thresh = mean - static_cast(k) * (mean - srcMin - stddev.mul(mean - srcMin) / stddevMax);
+ break;
+ case BINARIZATION_NICK:
+ sqrt(variance + sqmean, sqrtVarianceMeanSum);
+ thresh = mean + static_cast(k) * sqrtVarianceMeanSum;
+ break;
+ default:
+ CV_Error( CV_StsBadArg, "Unknown binarization method" );
+ break;
+ }
+ thresh.convertTo(thresh, src.depth());
+
+ thresh.convertTo(test, src.depth());
+//
+// cv::imshow("imagex",test);
+// cv::waitKey(0);
+
+ }
+ // Prepare output image
+ _dst.create(src.size(), src.type());
+ Mat dst = _dst.getMat();
+ CV_Assert(src.data != dst.data); // no inplace processing
+ // Apply thresholding: ( pixel > threshold ) ? foreground : background
+ Mat mask;
+ switch (type)
+ {
+ case THRESH_BINARY: // dst = (src > thresh) ? maxval : 0
+ case THRESH_BINARY_INV: // dst = (src > thresh) ? 0 : maxval
+ compare(src, thresh, mask, (type == THRESH_BINARY ? CMP_GT : CMP_LE));
+ dst.setTo(0);
+ dst.setTo(maxValue, mask);
+ break;
+ case THRESH_TRUNC: // dst = (src > thresh) ? thresh : src
+ compare(src, thresh, mask, CMP_GT);
+ src.copyTo(dst);
+ thresh.copyTo(dst, mask);
+ break;
+ case THRESH_TOZERO: // dst = (src > thresh) ? src : 0
+ case THRESH_TOZERO_INV: // dst = (src > thresh) ? 0 : src
+ compare(src, thresh, mask, (type == THRESH_TOZERO ? CMP_GT : CMP_LE));
+ dst.setTo(0);
+ src.copyTo(dst, mask);
+ break;
+ default:
+ CV_Error( CV_StsBadArg, "Unknown threshold type" );
+ break;
+ }
+}
+
+#endif //SWIFTPR_NIBLACKTHRESHOLD_H
diff --git a/Prj-iOS/lpr/lpr/Source/src/CNNRecognizer.cpp b/Prj-iOS/lpr/lpr/Source/src/CNNRecognizer.cpp
new file mode 100755
index 0000000..1003e67
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/src/CNNRecognizer.cpp
@@ -0,0 +1,19 @@
+//
+// Created by Jack Yu on 21/10/2017.
+//
+
+#include "CNNRecognizer.h"
+
+namespace pr{
+ CNNRecognizer::CNNRecognizer(std::string prototxt,std::string caffemodel){
+ net = cv::dnn::readNetFromCaffe(prototxt, caffemodel);
+ }
+
+ label CNNRecognizer::recognizeCharacter(cv::Mat charImage){
+ if(charImage.channels()== 3)
+ cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY);
+ cv::Mat inputBlob = cv::dnn::blobFromImage(charImage, 1/255.0, cv::Size(CHAR_INPUT_W,CHAR_INPUT_H), cv::Scalar(0,0,0),false);
+ net.setInput(inputBlob,"data");
+ return net.forward();
+ }
+}
diff --git a/Prj-iOS/lpr/lpr/Source/src/FastDeskew.cpp b/Prj-iOS/lpr/lpr/Source/src/FastDeskew.cpp
new file mode 100755
index 0000000..5da3644
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/src/FastDeskew.cpp
@@ -0,0 +1,108 @@
+//
+// Created by Jack Yu on 02/10/2017.
+//
+
+
+
+#include "FastDeskew.h"
+
+namespace pr{
+ const int ANGLE_MIN = 30 ;
+ const int ANGLE_MAX = 150 ;
+ const int PLATE_H = 36;
+ const int PLATE_W = 136;
+
+ int angle(float x,float y)
+ {
+ return atan2(x,y)*180/3.1415;
+ }
+
+ std::vector avgfilter(std::vector angle_list,int windowsSize) {
+ std::vector angle_list_filtered(angle_list.size() - windowsSize + 1);
+ for (int i = 0; i < angle_list.size() - windowsSize + 1; i++) {
+ float avg = 0.00f;
+ for (int j = 0; j < windowsSize; j++) {
+ avg += angle_list[i + j];
+ }
+ avg = avg / windowsSize;
+ angle_list_filtered[i] = avg;
+ }
+
+ return angle_list_filtered;
+ }
+
+
+ void drawHist(std::vector seq){
+ cv::Mat image(300,seq.size(),CV_8U);
+ image.setTo(0);
+
+ for(int i = 0;i(skewPlate.rows*tan(cv::abs(angle)/180* 3.14) );
+ cv::Size size(skewPlate.cols + extend_padding ,skewPlate.rows);
+ float interval = abs(sin((angle /180) * 3.14)* skewPlate.rows);
+ cv::Point2f pts1[4] = {cv::Point2f(0,0),cv::Point2f(0,size_o.height),cv::Point2f(size_o.width,0),cv::Point2f(size_o.width,size_o.height)};
+ if(angle>0) {
+ cv::Point2f pts2[4] = {cv::Point2f(interval, 0), cv::Point2f(0, size_o.height),
+ cv::Point2f(size_o.width, 0), cv::Point2f(size_o.width - interval, size_o.height)};
+ cv::Mat M = cv::getPerspectiveTransform(pts1,pts2);
+ cv::warpPerspective(skewPlate,dst,M,size);
+ }
+ else {
+ cv::Point2f pts2[4] = {cv::Point2f(0, 0), cv::Point2f(interval, size_o.height), cv::Point2f(size_o.width-interval, 0),
+ cv::Point2f(size_o.width, size_o.height)};
+ cv::Mat M = cv::getPerspectiveTransform(pts1,pts2);
+ cv::warpPerspective(skewPlate,dst,M,size,cv::INTER_CUBIC);
+ }
+ return dst;
+ }
+ cv::Mat fastdeskew(cv::Mat skewImage,int blockSize){
+ const int FILTER_WINDOWS_SIZE = 5;
+ std::vector angle_list(180);
+ memset(angle_list.data(),0,angle_list.size()*sizeof(int));
+ cv::Mat bak;
+ skewImage.copyTo(bak);
+ if(skewImage.channels() == 3)
+ cv::cvtColor(skewImage,skewImage,cv::COLOR_RGB2GRAY);
+ if(skewImage.channels() == 1)
+ {
+ cv::Mat eigen;
+ cv::cornerEigenValsAndVecs(skewImage,eigen,blockSize,5);
+ for( int j = 0; j < skewImage.rows; j+=blockSize )
+ { for( int i = 0; i < skewImage.cols; i+=blockSize )
+ {
+ float x2 = eigen.at(j, i)[4];
+ float y2 = eigen.at(j, i)[5];
+ int angle_cell = angle(x2,y2);
+ angle_list[(angle_cell + 180)%180]+=1.0;
+ }
+ }
+ }
+ std::vector filtered = avgfilter(angle_list,5);
+ int maxPos = std::max_element(filtered.begin(),filtered.end()) - filtered.begin() + FILTER_WINDOWS_SIZE/2;
+ if(maxPos>ANGLE_MAX)
+ maxPos = (-maxPos+90+180)%180;
+ if(maxPos(maxPos),60.0f);
+ return deskewed;
+ }
+
+
+
+}//namespace pr
diff --git a/Prj-iOS/lpr/lpr/Source/src/FineMapping.cpp b/Prj-iOS/lpr/lpr/Source/src/FineMapping.cpp
new file mode 100755
index 0000000..2032b15
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/src/FineMapping.cpp
@@ -0,0 +1,170 @@
+#include "FineMapping.h"
+namespace pr{
+
+ const int FINEMAPPING_H = 60 ;
+ const int FINEMAPPING_W = 140;
+ const int PADDING_UP_DOWN = 30;
+ void drawRect(cv::Mat image,cv::Rect rect)
+ {
+ cv::Point p1(rect.x,rect.y);
+ cv::Point p2(rect.x+rect.width,rect.y+rect.height);
+ cv::rectangle(image,p1,p2,cv::Scalar(0,255,0),1);
+ }
+
+
+ FineMapping::FineMapping(std::string prototxt,std::string caffemodel) {
+ net = cv::dnn::readNetFromCaffe(prototxt, caffemodel);
+
+ }
+
+ cv::Mat FineMapping::FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding)
+ {
+
+// if(FinedVertical.channels()==1)
+// cv::cvtColor(FinedVertical,FinedVertical,cv::COLOR_GRAY2BGR);
+ cv::Mat inputBlob = cv::dnn::blobFromImage(FinedVertical, 1/255.0, cv::Size(66,16),
+ cv::Scalar(0,0,0),false);
+
+ net.setInput(inputBlob,"data");
+ cv::Mat prob = net.forward();
+ int front = static_cast(prob.at(0,0)*FinedVertical.cols);
+ int back = static_cast(prob.at(0,1)*FinedVertical.cols);
+ front -= leftPadding ;
+ if(front<0) front = 0;
+ back +=rightPadding;
+ if(back>FinedVertical.cols-1) back=FinedVertical.cols - 1;
+ cv::Mat cropped = FinedVertical.colRange(front,back).clone();
+ return cropped;
+
+
+ }
+ std::pair FitLineRansac(std::vector pts,int zeroadd = 0 )
+ {
+ std::pair res;
+ if(pts.size()>2)
+ {
+ cv::Vec4f line;
+ cv::fitLine(pts,line,cv::DIST_HUBER,0,0.01,0.01);
+ float vx = line[0];
+ float vy = line[1];
+ float x = line[2];
+ float y = line[3];
+ int lefty = static_cast((-x * vy / vx) + y);
+ int righty = static_cast(((136- x) * vy / vx) + y);
+ res.first = lefty+PADDING_UP_DOWN+zeroadd;
+ res.second = righty+PADDING_UP_DOWN+zeroadd;
+ return res;
+ }
+ res.first = zeroadd;
+ res.second = zeroadd;
+ return res;
+ }
+
+ cv::Mat FineMapping::FineMappingVertical(cv::Mat InputProposal,int sliceNum,int upper,int lower,int windows_size){
+ cv::Mat PreInputProposal;
+ cv::Mat proposal;
+ cv::resize(InputProposal,PreInputProposal,cv::Size(FINEMAPPING_W,FINEMAPPING_H));
+ if(InputProposal.channels() == 3)
+ cv::cvtColor(PreInputProposal,proposal,cv::COLOR_BGR2GRAY);
+ else
+ PreInputProposal.copyTo(proposal);
+ // this will improve some sen
+ cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,3));
+ float diff = static_cast(upper-lower);
+ diff/=static_cast(sliceNum-1);
+ cv::Mat binary_adaptive;
+ std::vector line_upper;
+ std::vector line_lower;
+ int contours_nums=0;
+ for(int i = 0 ; i < sliceNum ; i++)
+ {
+ std::vector > contours;
+ float k =lower + i*diff;
+ cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k);
+ cv::Mat draw;
+ binary_adaptive.copyTo(draw);
+ cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE);
+ for(auto contour: contours)
+ {
+ cv::Rect bdbox =cv::boundingRect(contour);
+ float lwRatio = bdbox.height/static_cast(bdbox.width);
+ int bdboxAera = bdbox.width*bdbox.height;
+ if (( lwRatio>0.7&&bdbox.width*bdbox.height>100 && bdboxAera<300)
+ || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10))
+ {
+ cv::Point p1(bdbox.x, bdbox.y);
+ cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height);
+ line_upper.push_back(p1);
+ line_lower.push_back(p2);
+ contours_nums+=1;
+ }
+ }
+ }
+ if(contours_nums<41)
+ {
+ cv::bitwise_not(InputProposal,InputProposal);
+ cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,5));
+ cv::Mat bak;
+ cv::resize(InputProposal,bak,cv::Size(FINEMAPPING_W,FINEMAPPING_H));
+ cv::erode(bak,bak,kernal);
+ if(InputProposal.channels() == 3)
+ cv::cvtColor(bak,proposal,cv::COLOR_BGR2GRAY);
+ else
+ proposal = bak;
+ int contours_nums=0;
+ for(int i = 0 ; i < sliceNum ; i++)
+ {
+ std::vector > contours;
+ float k =lower + i*diff;
+ cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k);
+ cv::Mat draw;
+ binary_adaptive.copyTo(draw);
+ cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE);
+ for(auto contour: contours)
+ {
+ cv::Rect bdbox =cv::boundingRect(contour);
+ float lwRatio = bdbox.height/static_cast(bdbox.width);
+ int bdboxAera = bdbox.width*bdbox.height;
+ if (( lwRatio>0.7&&bdbox.width*bdbox.height>120 && bdboxAera<300)
+ || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10))
+ {
+
+ cv::Point p1(bdbox.x, bdbox.y);
+ cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height);
+ line_upper.push_back(p1);
+ line_lower.push_back(p2);
+ contours_nums+=1;
+ }
+ }
+ }
+ }
+ cv::Mat rgb;
+ cv::copyMakeBorder(PreInputProposal, rgb, PADDING_UP_DOWN, PADDING_UP_DOWN, 0, 0, cv::BORDER_REPLICATE);
+ std::pair A;
+ std::pair B;
+ A = FitLineRansac(line_upper, -1);
+ B = FitLineRansac(line_lower, 1);
+ int leftyB = A.first;
+ int rightyB = A.second;
+ int leftyA = B.first;
+ int rightyA = B.second;
+ int cols = rgb.cols;
+ int rows = rgb.rows;
+ std::vector corners(4);
+ corners[0] = cv::Point2f(cols - 1, rightyA);
+ corners[1] = cv::Point2f(0, leftyA);
+ corners[2] = cv::Point2f(cols - 1, rightyB);
+ corners[3] = cv::Point2f(0, leftyB);
+ std::vector corners_trans(4);
+ corners_trans[0] = cv::Point2f(136, 36);
+ corners_trans[1] = cv::Point2f(0, 36);
+ corners_trans[2] = cv::Point2f(136, 0);
+ corners_trans[3] = cv::Point2f(0, 0);
+ cv::Mat transform = cv::getPerspectiveTransform(corners, corners_trans);
+ cv::Mat quad = cv::Mat::zeros(36, 136, CV_8UC3);
+ cv::warpPerspective(rgb, quad, transform, quad.size());
+ return quad;
+ }
+}
+
+
diff --git a/Prj-iOS/lpr/lpr/Source/src/Pipeline.cpp b/Prj-iOS/lpr/lpr/Source/src/Pipeline.cpp
new file mode 100755
index 0000000..561bb68
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/src/Pipeline.cpp
@@ -0,0 +1,103 @@
+//
+// Created by 庾金科 on 23/10/2017.
+//
+
+#include "Pipeline.h"
+
+
+namespace pr {
+
+ std::string str_code[]={"京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","港","学","使","警","澳","挂","军","北","南","广","沈","兰","成","济","海","民","航","空"};
+ const std::vector CH_PLATE_CODE(str_code, str_code+83);
+
+
+ const int HorizontalPadding = 4;
+ PipelinePR::PipelinePR(std::string detector_filename,
+ std::string finemapping_prototxt, std::string finemapping_caffemodel,
+ std::string segmentation_prototxt, std::string segmentation_caffemodel,
+ std::string charRecognization_proto, std::string charRecognization_caffemodel,
+ std::string segmentationfree_proto,std::string segmentationfree_caffemodel) {
+ plateDetection = new PlateDetection(detector_filename);
+ fineMapping = new FineMapping(finemapping_prototxt, finemapping_caffemodel);
+ plateSegmentation = new PlateSegmentation(segmentation_prototxt, segmentation_caffemodel);
+ generalRecognizer = new CNNRecognizer(charRecognization_proto, charRecognization_caffemodel);
+ segmentationFreeRecognizer = new SegmentationFreeRecognizer(segmentationfree_proto,segmentationfree_caffemodel);
+
+ }
+
+ PipelinePR::~PipelinePR() {
+
+ delete plateDetection;
+ delete fineMapping;
+ delete plateSegmentation;
+ delete (CNNRecognizer *)generalRecognizer;
+ delete segmentationFreeRecognizer;
+
+
+ }
+
+ std::vector PipelinePR:: RunPiplineAsImage(cv::Mat plateImage,int method) {
+ std::vector results;
+ std::vector plates;
+ plateDetection->plateDetectionRough(plateImage,plates,36,700);
+
+ for (pr::PlateInfo plateinfo:plates) {
+
+ cv::Mat image_finemapping = plateinfo.getPlateImage();
+ image_finemapping = fineMapping->FineMappingVertical(image_finemapping);
+ image_finemapping = pr::fastdeskew(image_finemapping, 5);
+
+
+
+ //Segmentation-based
+
+ if(method==SEGMENTATION_BASED_METHOD)
+ {
+ image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 2, HorizontalPadding);
+ cv::resize(image_finemapping, image_finemapping, cv::Size(136+HorizontalPadding, 36));
+// cv::imshow("image_finemapping",image_finemapping);
+// cv::waitKey(0);
+ plateinfo.setPlateImage(image_finemapping);
+ std::vector rects;
+
+ plateSegmentation->segmentPlatePipline(plateinfo, 1, rects);
+ plateSegmentation->ExtractRegions(plateinfo, rects);
+ cv::copyMakeBorder(image_finemapping, image_finemapping, 0, 0, 0, 20, cv::BORDER_REPLICATE);
+ plateinfo.setPlateImage(image_finemapping);
+ generalRecognizer->SegmentBasedSequenceRecognition(plateinfo);
+ plateinfo.decodePlateNormal(pr::CH_PLATE_CODE);
+
+ }
+ //Segmentation-free
+ else if(method==SEGMENTATION_FREE_METHOD)
+ {
+
+ image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 4, HorizontalPadding+3);
+
+ cv::resize(image_finemapping, image_finemapping, cv::Size(136+HorizontalPadding, 36));
+// cv::imwrite("./test.png",image_finemapping);
+// cv::imshow("image_finemapping",image_finemapping);
+// cv::waitKey(0);
+ plateinfo.setPlateImage(image_finemapping);
+// std::vector rects;
+
+ std::pair res = segmentationFreeRecognizer->SegmentationFreeForSinglePlate(plateinfo.getPlateImage(),pr::CH_PLATE_CODE);
+ plateinfo.confidence = res.second;
+ plateinfo.setPlateName(res.first);
+ }
+
+
+
+ results.push_back(plateinfo);
+ }
+
+// for (auto str:results) {
+// std::cout << str << std::endl;
+// }
+ return results;
+
+ }//namespace pr
+
+
+
+}
diff --git a/Prj-iOS/lpr/lpr/Source/src/PlateDetection.cpp b/Prj-iOS/lpr/lpr/Source/src/PlateDetection.cpp
new file mode 100755
index 0000000..cb3eeef
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/src/PlateDetection.cpp
@@ -0,0 +1,32 @@
+#include "PlateDetection.h"
+#include "util.h"
+namespace pr{
+ PlateDetection::PlateDetection(std::string filename_cascade){
+ cascade.load(filename_cascade);
+
+ };
+ void PlateDetection::plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w,int max_w){
+ cv::Mat processImage;
+ cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY);
+ std::vector platesRegions;
+ cv::Size minSize(min_w,min_w/4);
+ cv::Size maxSize(max_w,max_w/4);
+ cascade.detectMultiScale( processImage, platesRegions,
+ 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize);
+ for(auto plate:platesRegions)
+ {
+ int zeroadd_w = static_cast(plate.width*0.30);
+ int zeroadd_h = static_cast(plate.height*2);
+ int zeroadd_x = static_cast(plate.width*0.15);
+ int zeroadd_y = static_cast(plate.height*1);
+ plate.x-=zeroadd_x;
+ plate.y-=zeroadd_y;
+ plate.height += zeroadd_h;
+ plate.width += zeroadd_w;
+ cv::Mat plateImage = util::cropFromImage(InputImage,plate);
+ PlateInfo plateInfo(plateImage,plate);
+ plateInfos.push_back(plateInfo);
+
+ }
+ }
+}//namespace pr
diff --git a/Prj-iOS/lpr/lpr/Source/src/PlateSegmentation.cpp b/Prj-iOS/lpr/lpr/Source/src/PlateSegmentation.cpp
new file mode 100755
index 0000000..d35c0de
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/src/PlateSegmentation.cpp
@@ -0,0 +1,404 @@
+//
+// Created by Jack Yu on 16/10/2017.
+//
+
+#include "PlateSegmentation.h"
+#include "niBlackThreshold.h"
+
+
+//#define DEBUG
+namespace pr{
+
+ PlateSegmentation::PlateSegmentation(std::string prototxt,std::string caffemodel) {
+ net = cv::dnn::readNetFromCaffe(prototxt, caffemodel);
+ }
+ cv::Mat PlateSegmentation::classifyResponse(const cv::Mat &cropped){
+ cv::Mat inputBlob = cv::dnn::blobFromImage(cropped, 1/255.0, cv::Size(22,22), cv::Scalar(0,0,0),false);
+ net.setInput(inputBlob,"data");
+ return net.forward();
+ }
+
+ void drawHist(float* seq,int size,const char* name){
+ cv::Mat image(300,size,CV_8U);
+ image.setTo(0);
+ float* start =seq;
+ float* end = seq+size;
+ float l = *std::max_element(start,end);
+ for(int i = 0;i>1),rect.y + (rect.height>>1));
+ int rebuildLeft = (rect.width>>1 )+ left;
+ int rebuildRight = (rect.width>>1 )+ right;
+ int rebuildTop = (rect.height>>1 )+ top;
+ int rebuildBottom = (rect.height>>1 )+ bottom;
+ return boxFromCenter(center,rebuildLeft,rebuildRight,rebuildTop,rebuildBottom,bdSize);
+
+ }
+
+
+
+ void PlateSegmentation:: refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects){
+ int w = candidatePts[5] - candidatePts[4];
+ int cols = plateImage.cols;
+ int rows = plateImage.rows;
+ for(int i = 0 ; i < candidatePts.size() ; i++)
+ {
+ int left = 0;
+ int right = 0 ;
+
+ if(i == 0 ){
+ left= candidatePts[i];
+ right = left+w+padding;
+ }
+ else {
+ left = candidatePts[i] - padding;
+ right = left + w + padding * 2;
+ }
+
+ computeSafeMargin(right,cols);
+ computeSafeMargin(left,cols);
+ cv::Rect roi(left,0,right - left,rows-1);
+ cv::Mat roiImage;
+ plateImage(roi).copyTo(roiImage);
+
+ if (i>=1)
+ {
+
+ cv::Mat roi_thres;
+// cv::threshold(roiImage,roi_thres,0,255,cv::THRESH_OTSU|cv::THRESH_BINARY);
+
+ niBlackThreshold(roiImage,roi_thres,255,cv::THRESH_BINARY,15,0.27,BINARIZATION_NIBLACK);
+
+ std::vector > contours;
+ cv::findContours(roi_thres,contours,cv::RETR_LIST,cv::CHAIN_APPROX_SIMPLE);
+ cv::Point boxCenter(roiImage.cols>>1,roiImage.rows>>1);
+
+ cv::Rect final_bdbox;
+ cv::Point final_center;
+ int final_dist = INT_MAX;
+
+
+ for(auto contour:contours)
+ {
+ cv::Rect bdbox = cv::boundingRect(contour);
+ cv::Point center(bdbox.x+(bdbox.width>>1),bdbox.y + (bdbox.height>>1));
+ int dist = (center.x - boxCenter.x)*(center.x - boxCenter.x);
+ if(dist rows>>1)
+ { final_dist =dist;
+ final_center = center;
+ final_bdbox = bdbox;
+ }
+ }
+
+ //rebuild box
+ if(final_bdbox.height/ static_cast(final_bdbox.width) > 3.5 && final_bdbox.width*final_bdbox.height<10)
+ final_bdbox = boxFromCenter(final_center,8,8,(rows>>1)-3 , (rows>>1) - 2,roiImage.size());
+ else {
+ if(i == candidatePts.size()-1)
+ final_bdbox = boxPadding(final_bdbox, padding/2, padding, padding/2, padding/2, roiImage.size());
+ else
+ final_bdbox = boxPadding(final_bdbox, padding, padding, padding, padding, roiImage.size());
+
+
+// std::cout<0&&i+j+r > &candidatePts){
+ int rows = respones.rows;
+ int cols = respones.cols;
+
+
+
+ float *data = (float*)respones.data;
+ float *engNum_prob = data;
+ float *false_prob = data+cols;
+ float *ch_prob = data+cols*2;
+
+ avgfilter(engNum_prob,cols,5);
+ avgfilter(false_prob,cols,5);
+// avgfilter(ch_prob,cols,5);
+ std::vector candidate_pts(7);
+//#ifdef DEBUG
+// drawHist(engNum_prob,cols,"engNum_prob");
+// drawHist(false_prob,cols,"false_prob");
+// drawHist(ch_prob,cols,"ch_prob");
+// cv::waitKey(0);
+//#endif
+
+
+
+
+ int cp_list[7];
+ float loss_selected = -10;
+
+ for(int start = 0 ; start < 20 ; start+=2)
+ for(int width = windowsWidth-5; width < windowsWidth+5 ; width++ ){
+ for(int interval = windowsWidth/2; interval < windowsWidth; interval++)
+ {
+ int cp1_ch = start;
+ int cp2_p0 = cp1_ch+ width;
+ int cp3_p1 = cp2_p0+ width + interval;
+ int cp4_p2 = cp3_p1 + width;
+ int cp5_p3 = cp4_p2 + width+1;
+ int cp6_p4 = cp5_p3 + width+2;
+ int cp7_p5= cp6_p4+ width+2;
+
+ int md1 = (cp1_ch+cp2_p0)>>1;
+ int md2 = (cp2_p0+cp3_p1)>>1;
+ int md3 = (cp3_p1+cp4_p2)>>1;
+ int md4 = (cp4_p2+cp5_p3)>>1;
+ int md5 = (cp5_p3+cp6_p4)>>1;
+ int md6 = (cp6_p4+cp7_p5)>>1;
+
+
+
+
+ if(cp7_p5>=cols)
+ continue;
+// float loss = ch_prob[cp1_ch]+
+// engNum_prob[cp2_p0] +engNum_prob[cp3_p1]+engNum_prob[cp4_p2]+engNum_prob[cp5_p3]+engNum_prob[cp6_p4] +engNum_prob[cp7_p5]
+// + (false_prob[md2]+false_prob[md3]+false_prob[md4]+false_prob[md5]+false_prob[md5] + false_prob[md6]);
+ float loss = ch_prob[cp1_ch]*3 -(false_prob[cp3_p1]+false_prob[cp4_p2]+false_prob[cp5_p3]+false_prob[cp6_p4]+false_prob[cp7_p5]);
+
+ if(loss>loss_selected)
+ {
+ loss_selected = loss;
+ cp_list[0]= cp1_ch;
+ cp_list[1]= cp2_p0;
+ cp_list[2]= cp3_p1;
+ cp_list[3]= cp4_p2;
+ cp_list[4]= cp5_p3;
+ cp_list[5]= cp6_p4;
+ cp_list[6]= cp7_p5;
+ }
+ }
+ }
+ candidate_pts[0] = cp_list[0];
+ candidate_pts[1] = cp_list[1];
+ candidate_pts[2] = cp_list[2];
+ candidate_pts[3] = cp_list[3];
+ candidate_pts[4] = cp_list[4];
+ candidate_pts[5] = cp_list[5];
+ candidate_pts[6] = cp_list[6];
+
+ candidatePts.first = loss_selected;
+ candidatePts.second = candidate_pts;
+
+ };
+
+
+ void PlateSegmentation::segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones){
+
+
+// cv::resize(plateImage,plateImage,cv::Size(136,36));
+
+ cv::Mat plateImageGray;
+ cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY);
+ int padding = plateImage.cols-136 ;
+// int padding = 0 ;
+ int height = plateImage.rows - 1;
+ int width = plateImage.cols - 1 - padding;
+ for(int i = 0 ; i < width - windowsWidth +1 ; i +=stride)
+ {
+ cv::Rect roi(i,0,windowsWidth,height);
+ cv::Mat roiImage = plateImageGray(roi);
+ cv::Mat response = classifyResponse(roiImage);
+ respones.push_back(response);
+ }
+
+
+
+
+ respones = respones.t();
+// std::pair> images ;
+//
+//
+// std::cout< &Char_rects){
+ cv::Mat plateImage = plateInfo.getPlateImage(); // get src image .
+ cv::Mat plateImageGray;
+ cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY);
+ //do binarzation
+ //
+ std::pair > sections ; // segment points variables .
+
+ cv::Mat respones; //three response of every sub region from origin image .
+ segmentPlateBySlidingWindows(plateImage,DEFAULT_WIDTH,1,respones);
+ templateMatchFinding(respones,DEFAULT_WIDTH/stride,sections);
+ for(int i = 0; i < sections.second.size() ; i++)
+ {
+ sections.second[i]*=stride;
+
+ }
+
+// std::cout< &rects){
+ cv::Mat plateImage = plateInfo.getPlateImage();
+ for(int i = 0 ; i < rects.size() ; i++){
+ cv::Mat charImage;
+ plateImage(rects[i]).copyTo(charImage);
+ if(charImage.channels())
+ cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY);
+// cv::imshow("image",charImage);
+// cv::waitKey(0);
+ cv::equalizeHist(charImage,charImage);
+//
+
+//
+
+
+ std::pair char_instance;
+ if(i == 0 ){
+
+ char_instance.first = CHINESE;
+
+
+ } else if(i == 1){
+ char_instance.first = LETTER;
+ }
+ else{
+ char_instance.first = LETTER_NUMS;
+ }
+ char_instance.second = charImage;
+ plateInfo.appendPlateChar(char_instance);
+
+ }
+
+ }
+
+}//namespace pr
diff --git a/Prj-iOS/lpr/lpr/Source/src/Recognizer.cpp b/Prj-iOS/lpr/lpr/Source/src/Recognizer.cpp
new file mode 100755
index 0000000..3bfafef
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/src/Recognizer.cpp
@@ -0,0 +1,23 @@
+//
+// Created by Jack Yu on 22/10/2017.
+//
+
+#include "Recognizer.h"
+
+namespace pr{
+ void GeneralRecognizer::SegmentBasedSequenceRecognition(PlateInfo &plateinfo){
+ for(auto char_instance:plateinfo.plateChars)
+ {
+ std::pair res;
+ if(char_instance.second.rows*char_instance.second.cols>40) {
+ label code_table = recognizeCharacter(char_instance.second);
+ res.first = char_instance.first;
+ code_table.copyTo(res.second);
+ plateinfo.appendPlateCoding(res);
+ } else{
+ res.first = INVALID;
+ plateinfo.appendPlateCoding(res);
+ }
+ }
+ }
+}
diff --git a/Prj-iOS/lpr/lpr/Source/src/SegmentationFreeRecognizer.cpp b/Prj-iOS/lpr/lpr/Source/src/SegmentationFreeRecognizer.cpp
new file mode 100755
index 0000000..2e6706d
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/src/SegmentationFreeRecognizer.cpp
@@ -0,0 +1,89 @@
+//
+// Created by Jack Yu on 28/11/2017.
+//
+#include "SegmentationFreeRecognizer.h"
+
+namespace pr {
+ SegmentationFreeRecognizer::SegmentationFreeRecognizer(std::string prototxt, std::string caffemodel) {
+ net = cv::dnn::readNetFromCaffe(prototxt, caffemodel);
+ }
+ inline int judgeCharRange(int id)
+ {return id<31 || id>63;
+ }
+ std::pair decodeResults(cv::Mat code_table,std::vector mapping_table,float thres)
+ {
+ cv::MatSize mtsize = code_table.size;
+ int sequencelength = mtsize[2];
+ int labellength = mtsize[1];
+ cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table);
+ std::string name = "";
+ std::vector seq(sequencelength);
+ std::vector > seq_decode_res;
+ for(int i = 0 ; i < sequencelength; i++) {
+ float *fstart = ((float *) (code_table.data) + i * labellength );
+ int id = std::max_element(fstart,fstart+labellength) - fstart;
+ seq[i] =id;
+ }
+
+ float sum_confidence = 0;
+ int plate_lenghth = 0 ;
+ for(int i = 0 ; i< sequencelength ; i++)
+ {
+ if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1]))
+ {
+ float *fstart = ((float *) (code_table.data) + i * labellength );
+ float confidence = *(fstart+seq[i]);
+ std::pair pair_(seq[i],confidence);
+ seq_decode_res.push_back(pair_);
+ }
+ }
+ int i = 0;
+ if (seq_decode_res.size()>1 && judgeCharRange(seq_decode_res[0].first) && judgeCharRange(seq_decode_res[1].first))
+ {
+ i=2;
+ int c = seq_decode_res[0].second res;
+ res.second = sum_confidence/plate_lenghth;
+ res.first = name;
+ return res;
+
+ }
+ std::string decodeResults(cv::Mat code_table,std::vector mapping_table)
+ {
+ cv::MatSize mtsize = code_table.size;
+ int sequencelength = mtsize[2];
+ int labellength = mtsize[1];
+ cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table);
+ std::string name = "";
+ std::vector seq(sequencelength);
+ for(int i = 0 ; i < sequencelength; i++) {
+ float *fstart = ((float *) (code_table.data) + i * labellength );
+ int id = std::max_element(fstart,fstart+labellength) - fstart;
+ seq[i] =id;
+ }
+ for(int i = 0 ; i< sequencelength ; i++)
+ {
+ if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1]))
+ name+=mapping_table[seq[i]];
+ }
+ return name;
+ }
+ std::pair SegmentationFreeRecognizer::SegmentationFreeForSinglePlate(cv::Mat Image,std::vector mapping_table) {
+ cv::transpose(Image,Image);
+ cv::Mat inputBlob = cv::dnn::blobFromImage(Image, 1 / 255.0, cv::Size(40,160));
+ net.setInput(inputBlob, "data");
+ cv::Mat char_prob_mat = net.forward();
+ return decodeResults(char_prob_mat,mapping_table,0.00);
+ }
+}
diff --git a/Prj-iOS/lpr/lpr/Source/src/util.h b/Prj-iOS/lpr/lpr/Source/src/util.h
new file mode 100755
index 0000000..3f9f52c
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Source/src/util.h
@@ -0,0 +1,67 @@
+//
+// Created by Jack Yu on 04/04/2017.
+//
+
+#include
+namespace util{
+ template void swap ( T& a, T& b )
+ {
+ T c(a); a=b; b=c;
+ }
+ template T min(T& a,T& b )
+ {
+ return a>b?b:a;
+ }
+
+ cv::Mat cropFromImage(const cv::Mat &image,cv::Rect rect){
+ int w = image.cols-1;
+ int h = image.rows-1;
+ rect.x = std::max(rect.x,0);
+ rect.y = std::max(rect.y,0);
+ rect.height = std::min(rect.height,h-rect.y);
+ rect.width = std::min(rect.width,w-rect.x);
+ cv::Mat temp(rect.size(), image.type());
+ cv::Mat cropped;
+ temp = image(rect);
+ temp.copyTo(cropped);
+ return cropped;
+
+ }
+
+ cv::Mat cropBox2dFromImage(const cv::Mat &image,cv::RotatedRect rect)
+ {
+ cv::Mat M, rotated, cropped;
+ float angle = rect.angle;
+ cv::Size rect_size(rect.size.width,rect.size.height);
+ if (rect.angle < -45.) {
+ angle += 90.0;
+ swap(rect_size.width, rect_size.height);
+ }
+ M = cv::getRotationMatrix2D(rect.center, angle, 1.0);
+ cv::warpAffine(image, rotated, M, image.size(), cv::INTER_CUBIC);
+ cv::getRectSubPix(rotated, rect_size, rect.center, cropped);
+ return cropped;
+ }
+
+ cv::Mat calcHist(const cv::Mat &image)
+ {
+ cv::Mat hsv;
+ std::vector hsv_planes;
+ cv::cvtColor(image,hsv,cv::COLOR_BGR2HSV);
+ cv::split(hsv,hsv_planes);
+ cv::Mat hist;
+ int histSize = 256;
+ float range[] = {0,255};
+ const float* histRange = {range};
+ cv::calcHist( &hsv_planes[0], 1, 0, cv::Mat(), hist, 1, &histSize, &histRange,true, true);
+ return hist;
+ }
+
+ float computeSimilir(const cv::Mat &A,const cv::Mat &B)
+ {
+ cv::Mat histA,histB;
+ histA = calcHist(A);
+ histB = calcHist(B);
+ return cv::compareHist(histA,histB,CV_COMP_CORREL);
+ }
+}//namespace util
diff --git a/Prj-iOS/lpr/lpr/Utility.h b/Prj-iOS/lpr/lpr/Utility.h
new file mode 100755
index 0000000..f2a870d
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Utility.h
@@ -0,0 +1,30 @@
+//
+// Utility.h
+// lpr
+//
+// Created by baotim on 2018/10/26.
+// Copyright © 2018 lprSample. All rights reserved.
+//
+#ifdef __cplusplus
+#import
+#endif
+#ifdef __OBJC__
+#import
+#import
+#endif
+using namespace cv;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface Utility : NSObject
+
++ (cv::Mat)cvMatFromUIImage:(UIImage *)image;
++ (UIImage *)UIImageFromCVMat:(cv::Mat)image;
++ (UIImage *)scaleAndRotateImageFrontCamera:(UIImage *)image;
++ (UIImage *)scaleAndRotateImageBackCamera:(UIImage *)image;
++ (UIImage *)imageWithMat:(const cv::Mat&) image andImageOrientation: (UIImageOrientation) orientation;
++ (UIImage *)imageWithMat:(const cv::Mat&) image andDeviceOrientation: (UIDeviceOrientation) orientation;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Prj-iOS/lpr/lpr/Utility.mm b/Prj-iOS/lpr/lpr/Utility.mm
new file mode 100755
index 0000000..d78785c
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/Utility.mm
@@ -0,0 +1,320 @@
+//
+// Utility.m
+// lpr
+//
+// Created by baotim on 2018/10/26.
+// Copyright © 2018 lprSample. All rights reserved.
+//
+
+#import "Utility.h"
+
+@implementation Utility
+
++ (UIImage *)UIImageFromCVMat:(cv::Mat)cvMat
+{
+ NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize()*cvMat.total()];
+ CGColorSpaceRef colorSpace;
+
+ if (cvMat.elemSize() == 1) {
+ colorSpace = CGColorSpaceCreateDeviceGray();
+ } else {
+ colorSpace = CGColorSpaceCreateDeviceRGB();
+ }
+
+ CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
+
+ // Creating CGImage from cv::Mat
+ CGImageRef imageRef = CGImageCreate(cvMat.cols, //width
+ cvMat.rows, //height
+ 8, //bits per component
+ 8 * cvMat.elemSize(), //bits per pixel
+ cvMat.step[0], //bytesPerRow
+ colorSpace, //colorspace
+ kCGImageAlphaNone|kCGBitmapByteOrderDefault,// bitmap info
+ provider, //CGDataProviderRef
+ NULL, //decode
+ false, //should interpolate
+ kCGRenderingIntentDefault //intent
+ );
+
+ // Getting UIImage from CGImage
+ UIImage *finalImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationUp];
+ CGImageRelease(imageRef);
+ CGDataProviderRelease(provider);
+ CGColorSpaceRelease(colorSpace);
+
+ return finalImage;
+}
+
+//缩放调整图片
++ (UIImage *)scaleAndRotateImageBackCamera:(UIImage *)image
+{
+ static int kMaxResolution = 480;
+ CGImageRef imgRef = image.CGImage;
+ CGFloat width = CGImageGetWidth(imgRef);
+ CGFloat height = CGImageGetHeight(imgRef);
+
+ CGAffineTransform transform = CGAffineTransformIdentity;
+ CGRect bounds = CGRectMake(0, 0, width, height);
+ if (width > kMaxResolution || height > kMaxResolution) {
+ CGFloat ratio = width/height;
+ if (ratio > 1) {
+ bounds.size.width = kMaxResolution;
+ bounds.size.height = bounds.size.width / ratio;
+ } else {
+ bounds.size.height = kMaxResolution;
+ bounds.size.width = bounds.size.height * ratio;
+ }
+ }
+ CGFloat scaleRatio = bounds.size.width / width;
+ CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef));
+ CGFloat boundHeight;
+ UIImageOrientation orient = image.imageOrientation;
+ switch(orient) {
+ case UIImageOrientationUp:
+ transform = CGAffineTransformIdentity;
+ break;
+ case UIImageOrientationUpMirrored:
+ transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0);
+ transform = CGAffineTransformScale(transform, -1.0, 1.0);
+ break;
+ case UIImageOrientationDown:
+ transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height);
+ transform = CGAffineTransformRotate(transform, M_PI);
+ break;
+ case UIImageOrientationDownMirrored:
+ transform = CGAffineTransformMakeTranslation(0.0, imageSize.height);
+ transform = CGAffineTransformScale(transform, 1.0, -1.0);
+ break;
+ case UIImageOrientationLeftMirrored:
+ boundHeight = bounds.size.height;
+ bounds.size.height = bounds.size.width;
+ bounds.size.width = boundHeight;
+ transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width);
+ transform = CGAffineTransformScale(transform, -1.0, 1.0);
+ transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
+ break;
+ case UIImageOrientationLeft:
+ boundHeight = bounds.size.height;
+ bounds.size.height = bounds.size.width;
+ bounds.size.width = boundHeight;
+ transform = CGAffineTransformMakeTranslation(0.0, imageSize.width);
+ transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
+ break;
+ case UIImageOrientationRightMirrored:
+ boundHeight = bounds.size.height;
+ bounds.size.height = bounds.size.width;
+ bounds.size.width = boundHeight;
+ transform = CGAffineTransformMakeScale(-1.0, 1.0);
+ transform = CGAffineTransformRotate(transform, M_PI / 2.0);
+ break;
+ case UIImageOrientationRight:
+ boundHeight = bounds.size.height;
+ bounds.size.height = bounds.size.width;
+ bounds.size.width = boundHeight;
+ transform = CGAffineTransformMakeTranslation(imageSize.height, 0.0);
+ transform = CGAffineTransformRotate(transform, M_PI / 2.0);
+ break;
+ default:
+ [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"];
+ }
+
+ UIGraphicsBeginImageContext(bounds.size);
+ CGContextRef context = UIGraphicsGetCurrentContext();
+ if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft) {
+ CGContextScaleCTM(context, -scaleRatio, scaleRatio);
+ CGContextTranslateCTM(context, -height, 0);
+ } else {
+ CGContextScaleCTM(context, scaleRatio, -scaleRatio);
+ CGContextTranslateCTM(context, 0, -height);
+ }
+ CGContextConcatCTM(context, transform);
+ CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);
+ UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext();
+ UIGraphicsEndImageContext();
+ NSLog(@"resize w%f,H%f",returnImage.size.width,returnImage.size.height);
+ return returnImage;
+}
+
++ (UIImage*)imageWithMat:(const cv::Mat&) image andDeviceOrientation: (UIDeviceOrientation)orientation
+{
+ UIImageOrientation imgOrientation = UIImageOrientationUp;
+
+ switch (orientation)
+ {
+ case UIDeviceOrientationLandscapeLeft:
+ imgOrientation =UIImageOrientationLeftMirrored; break;
+
+ case UIDeviceOrientationLandscapeRight:
+ imgOrientation = UIImageOrientationDown; break;
+
+ case UIDeviceOrientationPortraitUpsideDown:
+ imgOrientation = UIImageOrientationRightMirrored; break;
+ case UIDeviceOrientationFaceUp:
+ imgOrientation = UIImageOrientationRightMirrored; break;
+
+ default:
+ case UIDeviceOrientationPortrait:
+ imgOrientation = UIImageOrientationRight; break;
+ };
+
+ return [Utility imageWithMat:image andImageOrientation:imgOrientation];
+}
+
++ (UIImage*)imageWithMat:(const cv::Mat&)image andImageOrientation:(UIImageOrientation)orientation;
+{
+ cv::Mat rgbaView;
+
+ if (image.channels() == 3)
+ {
+ cv::cvtColor(image, rgbaView, COLOR_BGR2BGRA);
+ }
+ else if (image.channels() == 4)
+ {
+ cv::cvtColor(image, rgbaView, COLOR_BGR2BGRA);
+ }
+ else if (image.channels() == 1)
+ {
+ cv::cvtColor(image, rgbaView, COLOR_GRAY2RGBA);
+ }
+
+ NSData *data = [NSData dataWithBytes:rgbaView.data length:rgbaView.elemSize() * rgbaView.total()];
+
+ CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
+
+ CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
+
+ CGBitmapInfo bmInfo = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big;
+
+ // Creating CGImage from cv::Mat
+ CGImageRef imageRef = CGImageCreate(rgbaView.cols, //width
+ rgbaView.rows, //height
+ 8, //bits per component
+ 8 * rgbaView.elemSize(), //bits per pixel
+ rgbaView.step.p[0], //bytesPerRow
+ colorSpace, //colorspace
+ bmInfo,// bitmap info
+ provider, //CGDataProviderRef
+ NULL, //decode
+ false, //should interpolate
+ kCGRenderingIntentDefault //intent
+ );
+
+ // Getting UIImage from CGImage
+ UIImage *finalImage = [UIImage imageWithCGImage:imageRef scale:1 orientation:orientation];
+ CGImageRelease(imageRef);
+ CGDataProviderRelease(provider);
+ CGColorSpaceRelease(colorSpace);
+
+ return finalImage;
+}
+
++ (cv::Mat)cvMatFromUIImage:(UIImage *)image
+{
+ CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage);
+ CGFloat cols = image.size.width;
+ CGFloat rows = image.size.height;
+
+ cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels
+
+ CGContextRef contextRef = CGBitmapContextCreate(cvMat.data, // Pointer to data
+ cols, // Width of bitmap
+ rows, // Height of bitmap
+ 8, // Bits per component
+ cvMat.step[0], // Bytes per row
+ colorSpace, // Colorspace
+ kCGImageAlphaNoneSkipLast |
+ kCGBitmapByteOrderDefault); // Bitmap info flags
+
+ CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage);
+ CGContextRelease(contextRef);
+ CGColorSpaceRelease(colorSpace);
+ cv::Mat cvMat3(rows, cols, CV_8UC3); // 8 bits per component, 4 channels
+ cv::cvtColor(cvMat, cvMat3,COLOR_RGBA2RGB);
+
+ return cvMat3;
+}
+
++ (UIImage *)scaleAndRotateImageFrontCamera:(UIImage *)image
+{
+ static int kMaxResolution = 640;
+ CGImageRef imgRef = image.CGImage;
+ CGFloat width = CGImageGetWidth(imgRef);
+ CGFloat height = CGImageGetHeight(imgRef);
+ CGAffineTransform transform = CGAffineTransformIdentity;
+ CGRect bounds = CGRectMake( 0, 0, width, height);
+ if (width > kMaxResolution || height > kMaxResolution) {
+ CGFloat ratio = width/height;
+ if (ratio > 1) {
+ bounds.size.width = kMaxResolution;
+ bounds.size.height = bounds.size.width / ratio;
+ } else {
+ bounds.size.height = kMaxResolution;
+ bounds.size.width = bounds.size.height * ratio;
+ }
+ }
+
+ CGFloat scaleRatio = bounds.size.width / width;
+ CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef));
+ CGFloat boundHeight;
+ UIImageOrientation orient = image.imageOrientation;
+ switch(orient) {
+ case UIImageOrientationUp:
+ transform = CGAffineTransformIdentity;
+ break;
+ case UIImageOrientationUpMirrored:
+ transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0);
+ transform = CGAffineTransformScale(transform, -1.0, 1.0);
+ break;
+ case UIImageOrientationDown:
+ transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height);
+ transform = CGAffineTransformRotate(transform, M_PI);
+ break;
+ case UIImageOrientationDownMirrored:
+ transform = CGAffineTransformMakeTranslation(0.0, imageSize.height);
+ transform = CGAffineTransformScale(transform, 1.0, -1.0);
+ break;
+ case UIImageOrientationLeftMirrored:
+ boundHeight = bounds.size.height;
+ bounds.size.height = bounds.size.width;
+ bounds.size.width = boundHeight;
+ transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width);
+ transform = CGAffineTransformScale(transform, -1.0, 1.0);
+ transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
+ break;
+ case UIImageOrientationLeft:
+ boundHeight = bounds.size.height;
+ bounds.size.height = bounds.size.width;
+ bounds.size.width = boundHeight;
+ transform = CGAffineTransformMakeTranslation(0.0, imageSize.width);
+ transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
+ break;
+ case UIImageOrientationRight:
+ case UIImageOrientationRightMirrored:
+ boundHeight = bounds.size.height;
+ bounds.size.height = bounds.size.width;
+ bounds.size.width = boundHeight;
+ transform = CGAffineTransformMakeScale(-1.0, 1.0);
+ transform = CGAffineTransformRotate(transform, M_PI / 2.0);
+ break;
+ default:
+ [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"];
+ }
+ UIGraphicsBeginImageContext( bounds.size );
+ CGContextRef context = UIGraphicsGetCurrentContext();
+ if ( orient == UIImageOrientationRight || orient == UIImageOrientationLeft ) {
+ CGContextScaleCTM(context, -scaleRatio, scaleRatio);
+ CGContextTranslateCTM(context, -height, 0);
+ }
+ else {
+ CGContextScaleCTM(context, scaleRatio, -scaleRatio);
+ CGContextTranslateCTM(context, 0, -height);
+ }
+ CGContextConcatCTM( context, transform );
+ CGContextDrawImage( UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef );
+ UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext();
+ UIGraphicsEndImageContext();
+ return returnImage;
+}
+
+@end
diff --git a/Prj-iOS/lpr/lpr/main.m b/Prj-iOS/lpr/lpr/main.m
new file mode 100755
index 0000000..5e5e2ce
--- /dev/null
+++ b/Prj-iOS/lpr/lpr/main.m
@@ -0,0 +1,16 @@
+//
+// main.m
+// lpr
+//
+// Created by baotim on 2018/10/26.
+// Copyright © 2018 lprSample. All rights reserved.
+//
+
+#import
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[]) {
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+ }
+}