Demo of Dali toolkit and core capabilities
authorDavid Steele <david.steele@partner.samsung.com>
Wed, 14 May 2014 12:53:20 +0000 (13:53 +0100)
committerAdeel Kazmi <adeel.kazmi@samsung.com>
Fri, 23 May 2014 11:45:27 +0000 (12:45 +0100)
Change-Id: I61ff1f15154f7a80a0021215672f850176d910fc
Signed-off-by: David Steele <david.steele@partner.samsung.com>
239 files changed:
.gitignore [new file with mode: 0644]
LICENSE [new file with mode: 0644]
build/tizen/.gitignore [new file with mode: 0644]
build/tizen/Makefile.am [new file with mode: 0644]
build/tizen/README [new file with mode: 0644]
build/tizen/configure.ac [new file with mode: 0755]
build/tizen/demo/Makefile.am [new file with mode: 0644]
build/tizen/docs/.gitignore [new file with mode: 0644]
build/tizen/docs/Makefile.am [new file with mode: 0644]
build/tizen/docs/dali.doxy.in [new file with mode: 0644]
build/tizen/examples/Makefile.am [new file with mode: 0644]
com.samsung.dali-demo.manifest [new file with mode: 0644]
com.samsung.dali-demo.rule [new file with mode: 0644]
com.samsung.dali-demo.xml [new file with mode: 0644]
demo/dali-demo.cpp [new file with mode: 0644]
demo/dali-table-view.cpp [new file with mode: 0644]
demo/dali-table-view.h [new file with mode: 0644]
demo/file.list [new file with mode: 0644]
demo/images/background-1.jpg [new file with mode: 0644]
demo/images/background-2.jpg [new file with mode: 0644]
demo/images/background-3.jpg [new file with mode: 0644]
demo/images/background-4.jpg [new file with mode: 0644]
demo/images/background-default.png [new file with mode: 0644]
demo/images/background-magnifier.jpg [new file with mode: 0644]
demo/images/book-landscape-cover-back.jpg [new file with mode: 0755]
demo/images/book-landscape-cover.jpg [new file with mode: 0755]
demo/images/book-landscape-p1.jpg [new file with mode: 0644]
demo/images/book-landscape-p2.jpg [new file with mode: 0644]
demo/images/book-landscape-p3.jpg [new file with mode: 0644]
demo/images/book-landscape-p4.jpg [new file with mode: 0644]
demo/images/book-landscape-p5.jpg [new file with mode: 0644]
demo/images/book-landscape-p6.jpg [new file with mode: 0644]
demo/images/book-landscape-p7.jpg [new file with mode: 0644]
demo/images/book-landscape-p8.jpg [new file with mode: 0644]
demo/images/book-portrait-cover.jpg [new file with mode: 0755]
demo/images/book-portrait-p1.jpg [new file with mode: 0644]
demo/images/book-portrait-p2.jpg [new file with mode: 0644]
demo/images/book-portrait-p3.jpg [new file with mode: 0644]
demo/images/book-portrait-p4.jpg [new file with mode: 0644]
demo/images/book-portrait-p5.jpg [new file with mode: 0644]
demo/images/book-portrait-p6.jpg [new file with mode: 0644]
demo/images/book-portrait-p7.jpg [new file with mode: 0644]
demo/images/book-portrait-p8.jpg [new file with mode: 0644]
demo/images/brick-wall.jpg [new file with mode: 0644]
demo/images/bubble-effect-texture-border.png [new file with mode: 0644]
demo/images/button-background.png [new file with mode: 0644]
demo/images/cluster-background.png [new file with mode: 0644]
demo/images/cluster-image-frame.png [new file with mode: 0644]
demo/images/cluster-image-shadow.png [new file with mode: 0644]
demo/images/com.samsung.dali-demo.png [new file with mode: 0644]
demo/images/dali-logo-large.png [new file with mode: 0644]
demo/images/dali-logo-small.png [new file with mode: 0644]
demo/images/gallery-large-1.jpg [new file with mode: 0644]
demo/images/gallery-large-10.jpg [new file with mode: 0644]
demo/images/gallery-large-11.jpg [new file with mode: 0644]
demo/images/gallery-large-12.jpg [new file with mode: 0644]
demo/images/gallery-large-13.jpg [new file with mode: 0644]
demo/images/gallery-large-14.jpg [new file with mode: 0644]
demo/images/gallery-large-15.jpg [new file with mode: 0644]
demo/images/gallery-large-16.jpg [new file with mode: 0644]
demo/images/gallery-large-17.jpg [new file with mode: 0644]
demo/images/gallery-large-18.jpg [new file with mode: 0644]
demo/images/gallery-large-19.jpg [new file with mode: 0644]
demo/images/gallery-large-2.jpg [new file with mode: 0644]
demo/images/gallery-large-20.jpg [new file with mode: 0644]
demo/images/gallery-large-21.jpg [new file with mode: 0644]
demo/images/gallery-large-3.jpg [new file with mode: 0644]
demo/images/gallery-large-4.jpg [new file with mode: 0644]
demo/images/gallery-large-5.jpg [new file with mode: 0644]
demo/images/gallery-large-6.jpg [new file with mode: 0644]
demo/images/gallery-large-7.jpg [new file with mode: 0644]
demo/images/gallery-large-8.jpg [new file with mode: 0644]
demo/images/gallery-large-9.jpg [new file with mode: 0644]
demo/images/gallery-medium-1.jpg [new file with mode: 0644]
demo/images/gallery-medium-10.jpg [new file with mode: 0644]
demo/images/gallery-medium-11.jpg [new file with mode: 0644]
demo/images/gallery-medium-12.jpg [new file with mode: 0644]
demo/images/gallery-medium-13.jpg [new file with mode: 0644]
demo/images/gallery-medium-14.jpg [new file with mode: 0644]
demo/images/gallery-medium-15.jpg [new file with mode: 0644]
demo/images/gallery-medium-16.jpg [new file with mode: 0644]
demo/images/gallery-medium-17.jpg [new file with mode: 0644]
demo/images/gallery-medium-18.jpg [new file with mode: 0644]
demo/images/gallery-medium-19.jpg [new file with mode: 0644]
demo/images/gallery-medium-2.jpg [new file with mode: 0644]
demo/images/gallery-medium-20.jpg [new file with mode: 0644]
demo/images/gallery-medium-21.jpg [new file with mode: 0644]
demo/images/gallery-medium-22.jpg [new file with mode: 0644]
demo/images/gallery-medium-23.jpg [new file with mode: 0644]
demo/images/gallery-medium-24.jpg [new file with mode: 0644]
demo/images/gallery-medium-25.jpg [new file with mode: 0644]
demo/images/gallery-medium-26.jpg [new file with mode: 0644]
demo/images/gallery-medium-27.jpg [new file with mode: 0644]
demo/images/gallery-medium-28.jpg [new file with mode: 0644]
demo/images/gallery-medium-29.jpg [new file with mode: 0644]
demo/images/gallery-medium-3.jpg [new file with mode: 0644]
demo/images/gallery-medium-30.jpg [new file with mode: 0644]
demo/images/gallery-medium-31.jpg [new file with mode: 0644]
demo/images/gallery-medium-32.jpg [new file with mode: 0644]
demo/images/gallery-medium-33.jpg [new file with mode: 0644]
demo/images/gallery-medium-34.jpg [new file with mode: 0644]
demo/images/gallery-medium-35.jpg [new file with mode: 0644]
demo/images/gallery-medium-36.jpg [new file with mode: 0644]
demo/images/gallery-medium-37.jpg [new file with mode: 0644]
demo/images/gallery-medium-38.jpg [new file with mode: 0644]
demo/images/gallery-medium-39.jpg [new file with mode: 0644]
demo/images/gallery-medium-4.jpg [new file with mode: 0644]
demo/images/gallery-medium-40.jpg [new file with mode: 0644]
demo/images/gallery-medium-41.jpg [new file with mode: 0644]
demo/images/gallery-medium-42.jpg [new file with mode: 0644]
demo/images/gallery-medium-43.jpg [new file with mode: 0644]
demo/images/gallery-medium-44.jpg [new file with mode: 0644]
demo/images/gallery-medium-45.jpg [new file with mode: 0644]
demo/images/gallery-medium-46.jpg [new file with mode: 0644]
demo/images/gallery-medium-47.jpg [new file with mode: 0644]
demo/images/gallery-medium-48.jpg [new file with mode: 0644]
demo/images/gallery-medium-49.jpg [new file with mode: 0644]
demo/images/gallery-medium-5.jpg [new file with mode: 0644]
demo/images/gallery-medium-50.jpg [new file with mode: 0644]
demo/images/gallery-medium-51.jpg [new file with mode: 0644]
demo/images/gallery-medium-52.jpg [new file with mode: 0644]
demo/images/gallery-medium-53.jpg [new file with mode: 0644]
demo/images/gallery-medium-6.jpg [new file with mode: 0644]
demo/images/gallery-medium-7.jpg [new file with mode: 0644]
demo/images/gallery-medium-8.jpg [new file with mode: 0644]
demo/images/gallery-medium-9.jpg [new file with mode: 0644]
demo/images/gallery-small-1.jpg [new file with mode: 0644]
demo/images/gallery-small-10.jpg [new file with mode: 0644]
demo/images/gallery-small-11.jpg [new file with mode: 0644]
demo/images/gallery-small-12.jpg [new file with mode: 0644]
demo/images/gallery-small-13.jpg [new file with mode: 0644]
demo/images/gallery-small-14.jpg [new file with mode: 0644]
demo/images/gallery-small-15.jpg [new file with mode: 0644]
demo/images/gallery-small-16.jpg [new file with mode: 0644]
demo/images/gallery-small-17.jpg [new file with mode: 0644]
demo/images/gallery-small-18.jpg [new file with mode: 0644]
demo/images/gallery-small-19.jpg [new file with mode: 0644]
demo/images/gallery-small-2.jpg [new file with mode: 0644]
demo/images/gallery-small-20.jpg [new file with mode: 0644]
demo/images/gallery-small-21.jpg [new file with mode: 0644]
demo/images/gallery-small-22.jpg [new file with mode: 0644]
demo/images/gallery-small-23.jpg [new file with mode: 0644]
demo/images/gallery-small-24.jpg [new file with mode: 0644]
demo/images/gallery-small-25.jpg [new file with mode: 0644]
demo/images/gallery-small-26.jpg [new file with mode: 0644]
demo/images/gallery-small-27.jpg [new file with mode: 0644]
demo/images/gallery-small-28.jpg [new file with mode: 0644]
demo/images/gallery-small-29.jpg [new file with mode: 0644]
demo/images/gallery-small-3.jpg [new file with mode: 0644]
demo/images/gallery-small-30.jpg [new file with mode: 0644]
demo/images/gallery-small-31.jpg [new file with mode: 0644]
demo/images/gallery-small-32.jpg [new file with mode: 0644]
demo/images/gallery-small-33.jpg [new file with mode: 0644]
demo/images/gallery-small-34.jpg [new file with mode: 0644]
demo/images/gallery-small-35.jpg [new file with mode: 0644]
demo/images/gallery-small-36.jpg [new file with mode: 0644]
demo/images/gallery-small-37.jpg [new file with mode: 0644]
demo/images/gallery-small-38.jpg [new file with mode: 0644]
demo/images/gallery-small-39.jpg [new file with mode: 0644]
demo/images/gallery-small-4.jpg [new file with mode: 0644]
demo/images/gallery-small-40.jpg [new file with mode: 0644]
demo/images/gallery-small-41.jpg [new file with mode: 0644]
demo/images/gallery-small-42.jpg [new file with mode: 0644]
demo/images/gallery-small-43.jpg [new file with mode: 0644]
demo/images/gallery-small-44.jpg [new file with mode: 0644]
demo/images/gallery-small-45.jpg [new file with mode: 0644]
demo/images/gallery-small-46.jpg [new file with mode: 0644]
demo/images/gallery-small-47.jpg [new file with mode: 0644]
demo/images/gallery-small-48.jpg [new file with mode: 0644]
demo/images/gallery-small-49.jpg [new file with mode: 0644]
demo/images/gallery-small-5.jpg [new file with mode: 0644]
demo/images/gallery-small-50.jpg [new file with mode: 0644]
demo/images/gallery-small-51.jpg [new file with mode: 0644]
demo/images/gallery-small-52.jpg [new file with mode: 0644]
demo/images/gallery-small-53.jpg [new file with mode: 0644]
demo/images/gallery-small-6.jpg [new file with mode: 0644]
demo/images/gallery-small-7.jpg [new file with mode: 0644]
demo/images/gallery-small-8.jpg [new file with mode: 0644]
demo/images/gallery-small-9.jpg [new file with mode: 0644]
demo/images/icon-play.png [new file with mode: 0644]
demo/images/icon-stop.png [new file with mode: 0644]
demo/images/image-with-border-1.jpg [new file with mode: 0644]
demo/images/image-with-border-2.jpg [new file with mode: 0644]
demo/images/image-with-border-3.jpg [new file with mode: 0644]
demo/images/image-with-border-4.jpg [new file with mode: 0644]
demo/images/image-with-border-5.jpg [new file with mode: 0644]
demo/images/item-background-alpha.png [new file with mode: 0644]
demo/images/item-background.png [new file with mode: 0644]
demo/images/people-medium-1.jpg [new file with mode: 0644]
demo/images/people-medium-10.jpg [new file with mode: 0644]
demo/images/people-medium-11.jpg [new file with mode: 0644]
demo/images/people-medium-12.jpg [new file with mode: 0644]
demo/images/people-medium-13.jpg [new file with mode: 0644]
demo/images/people-medium-14.jpg [new file with mode: 0644]
demo/images/people-medium-15.jpg [new file with mode: 0644]
demo/images/people-medium-16.jpg [new file with mode: 0644]
demo/images/people-medium-2.jpg [new file with mode: 0644]
demo/images/people-medium-3.jpg [new file with mode: 0644]
demo/images/people-medium-4.jpg [new file with mode: 0644]
demo/images/people-medium-5.jpg [new file with mode: 0644]
demo/images/people-medium-6.jpg [new file with mode: 0644]
demo/images/people-medium-7.jpg [new file with mode: 0644]
demo/images/people-medium-8.jpg [new file with mode: 0644]
demo/images/people-medium-9.jpg [new file with mode: 0644]
demo/images/people-small-1.jpg [new file with mode: 0644]
demo/images/people-small-10.jpg [new file with mode: 0644]
demo/images/people-small-11.jpg [new file with mode: 0644]
demo/images/people-small-12.jpg [new file with mode: 0644]
demo/images/people-small-13.jpg [new file with mode: 0644]
demo/images/people-small-14.jpg [new file with mode: 0644]
demo/images/people-small-15.jpg [new file with mode: 0644]
demo/images/people-small-16.jpg [new file with mode: 0644]
demo/images/people-small-2.jpg [new file with mode: 0644]
demo/images/people-small-3.jpg [new file with mode: 0644]
demo/images/people-small-4.jpg [new file with mode: 0644]
demo/images/people-small-5.jpg [new file with mode: 0644]
demo/images/people-small-6.jpg [new file with mode: 0644]
demo/images/people-small-7.jpg [new file with mode: 0644]
demo/images/people-small-8.jpg [new file with mode: 0644]
demo/images/people-small-9.jpg [new file with mode: 0644]
demo/images/top-bar-demo.png [new file with mode: 0644]
demo/images/top-bar.png [new file with mode: 0644]
demo/models/Album-Cute-COVER-small.png [new file with mode: 0644]
demo/models/AlbumCute.dae [new file with mode: 0644]
demo/models/AlbumCute.dali-bin [new file with mode: 0644]
demo/models/Kitten.png [new file with mode: 0644]
examples/blocks/blocks-example.cpp [new file with mode: 0644]
examples/cluster/cluster-example.cpp [new file with mode: 0644]
examples/hello-world/hello-world-example.cpp [new file with mode: 0644]
examples/magnifier-example/magnifier-example.cpp [new file with mode: 0644]
examples/motion-blur/motion-blur-example.cpp [new file with mode: 0644]
examples/motion-stretch/motion-stretch-example.cpp [new file with mode: 0644]
examples/page-turn-view/page-turn-view-example.cpp [new file with mode: 0644]
examples/shader-effect/bubble-effect-example.cpp [new file with mode: 0644]
examples/shader-effect/dissolve-effect-example.cpp [new file with mode: 0644]
examples/shadows/shadow-bone-lighting-example.cpp [new file with mode: 0644]
examples/shared/view.h [new file with mode: 0644]
examples/transition/cube-transition-effect-example.cpp [new file with mode: 0644]
packaging/com.samsung.dali-demo.spec [new file with mode: 0755]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..44e674b
--- /dev/null
@@ -0,0 +1,36 @@
+.cproject
+.project
+.settings
+.directory
+Makefile.in
+Makefile
+BROWSE
+*~
+*.pc
+*.o
+*.o.d
+*.lo
+*.loT
+*.la
+*.so
+*.orig
+*.odt
+*.fodt
+*.test
+*.example
+*.a
+*.apk
+*.ap_
+*.class
+*.classpath
+*.dex
+*.gcno
+*.gcda
+*.gcov
+.deps
+.libs
+*.swp
+*.creator
+*.creator.user
+/build/desktop
+/packaging/home*
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..87ed7f1
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,205 @@
+Flora License
+
+Version 1.1, April, 2013
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by
+the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and
+all other entities that control, are controlled by, or are
+under common control with that entity. For the purposes of
+this definition, "control" means (i) the power, direct or indirect,
+to cause the direction or management of such entity,
+whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
+or more of the outstanding shares, or (iii) beneficial ownership of
+such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity
+exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but
+not limited to compiled object code, generated documentation,
+and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice
+that is included in or attached to the work (an example is provided
+in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent,
+as a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from,
+or merely link (or bind by name) to the interfaces of, the Work and
+Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor
+for inclusion in the Work by the copyright owner or by an individual or
+Legal Entity authorized to submit on behalf of the copyright owner.
+For the purposes of this definition, "submitted" means any form of
+electronic, verbal, or written communication sent to the Licensor or
+its representatives, including but not limited to communication on
+electronic mailing lists, source code control systems, and issue
+tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding
+communication that is conspicuously marked or otherwise designated
+in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies
+with the standards set forth in the Tizen Compliance Specification
+and passes the Tizen Compliance Tests as defined from time to time
+by the Tizen Technical Steering Group and certified by the Tizen
+Association or its designated agent.
+
+2. Grant of Copyright License.  Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the
+Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.  Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made,
+use, offer to sell, sell, import, and otherwise transfer the Work
+solely as incorporated into a Tizen Certified Platform, where such
+license applies only to those patent claims licensable by such
+Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work solely
+as incorporated into a Tizen Certified Platform to which such
+Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Work or a Contribution incorporated
+within the Work constitutes direct or contributory patent infringement,
+then any patent licenses granted to You under this License for that
+Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.  You may reproduce and distribute copies of the
+Work or Derivative Works thereof pursuant to the copyright license
+above, in any medium, with or without modifications, and in Source or
+Object form, provided that You meet the following conditions:
+
+  1. You must give any other recipients of the Work or Derivative Works
+     a copy of this License; and
+  2. You must cause any modified files to carry prominent notices stating
+     that You changed the files; and
+  3. You must retain, in the Source form of any Derivative Works that
+     You distribute, all copyright, patent, trademark, and attribution
+     notices from the Source form of the Work, excluding those notices
+     that do not pertain to any part of the Derivative Works; and
+  4. If the Work includes a "NOTICE" text file as part of its distribution,
+     then any Derivative Works that You distribute must include a readable
+     copy of the attribution notices contained within such NOTICE file,
+     excluding those notices that do not pertain to any part of
+     the Derivative Works, in at least one of the following places:
+     within a NOTICE text file distributed as part of the Derivative Works;
+     within the Source form or documentation, if provided along with the
+     Derivative Works; or, within a display generated by the Derivative Works,
+     if and wherever such third-party notices normally appear.
+     The contents of the NOTICE file are for informational purposes only
+     and do not modify the License. You may add Your own attribution notices
+     within Derivative Works that You distribute, alongside or as an addendum
+     to the NOTICE text from the Work, provided that such additional attribution
+     notices cannot be construed as modifying the License. You may add Your own
+     copyright statement to Your modifications and may provide additional or
+     different license terms and conditions for use, reproduction, or
+     distribution of Your modifications, or for any such Derivative Works
+     as a whole, provided Your use, reproduction, and distribution of
+     the Work otherwise complies with the conditions stated in this License
+     and your own copyright statement or terms and conditions do not conflict
+     the conditions stated in the License including section 3.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+any Contribution intentionally submitted for inclusion in the Work
+by You to the Licensor shall be under the terms and conditions of
+this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify
+the terms of any separate license agreement you may have executed
+with Licensor regarding such Contributions.
+
+6. Trademarks.  This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+agreed to in writing, Licensor provides the Work (and each
+Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied, including, without limitation, any warranties or conditions
+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any
+risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise,
+unless required by applicable law (such as deliberate and grossly
+negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a
+result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor
+has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer,
+and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only
+on Your own behalf and on Your sole responsibility, not on behalf
+of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason
+of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following
+boilerplate notice, with the fields enclosed by brackets "[]"
+replaced with your own identifying information. (Don't include
+the brackets!) The text should be enclosed in the appropriate
+comment syntax for the file format. We also recommend that a
+file or class name and description of purpose be included on the
+same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Flora License, Version 1.1 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://floralicense.org/license/
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/build/tizen/.gitignore b/build/tizen/.gitignore
new file mode 100644 (file)
index 0000000..bd706b5
--- /dev/null
@@ -0,0 +1,20 @@
+/aclocal.m4
+/autom4te.cache
+/config.guess
+/config.log
+/config.status
+/config.sub
+/configure
+/depcomp
+/install-sh
+/libtool
+/ltmain.sh
+/missing
+/demo/dali-demo
+/demo/dali-examples
+/demo/dali-performance
+/demo/performance.core
+/docs/dali.doxy
+/examples/*.demo
+/performance/dali-performance
+/performance/performance.*
diff --git a/build/tizen/Makefile.am b/build/tizen/Makefile.am
new file mode 100644 (file)
index 0000000..e8fb71e
--- /dev/null
@@ -0,0 +1,17 @@
+SUBDIRS = examples demo
+
+MAINTAINERCLEANFILES = \
+    aclocal.m4 \
+    autom4te.cache \
+    config.guess \
+    config.sub \
+    configure \
+    depcomp \
+    install-sh \
+    ltmain.sh \
+    missing \
+    `find "$(srcdir)" -type f -name Makefile.in -print` \
+    `find . \( -name "*.gcov" -o -name "*.gcno" -o -name "*.gcda" \) -print`
+
+CLEANFILES = \
+    `find . \( -name "*.gcov" -o -name "*.gcno" -o -name "*.gcda" \) -print`
diff --git a/build/tizen/README b/build/tizen/README
new file mode 100644 (file)
index 0000000..4cf1be9
--- /dev/null
@@ -0,0 +1,5 @@
+autoreconf --install
+# see /build/slp/sbs-dependencies/README for instructions on installing dependencies for SBS.
+#
+./configure --prefix=$DESKTOP_PREFIX
+make install -j3
diff --git a/build/tizen/configure.ac b/build/tizen/configure.ac
new file mode 100755 (executable)
index 0000000..15e990e
--- /dev/null
@@ -0,0 +1,87 @@
+#
+# Copyright (c) 2014 Samsung Electronics Co., Ltd.
+#
+# Licensed under the Flora License, Version 1.0 (the License);
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://floralicense.org/license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+m4_define([dali_version],[0.1.0])
+AC_INIT([dali], [dali_version])
+AM_INIT_AUTOMAKE([-Wall -Werror foreign])
+
+AC_PROG_CXX
+AC_PROG_LIBTOOL
+
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+LT_INIT
+
+DALI_VERSION=dali_version
+AC_SUBST(DALI_VERSION)
+
+PKG_CHECK_MODULES(DALI, dali)
+PKG_CHECK_MODULES(DALI_TOOLKIT, dali-toolkit)
+PKG_CHECK_MODULES(ECORE_X, ecore-x)
+PKG_CHECK_MODULES(CAPI_MEDIA_PLAYER, capi-media-player)
+PKG_CHECK_MODULES(CAPI_APPFW_APPLICATION, capi-appfw-application)
+PKG_CHECK_MODULES(AUL, aul)
+PKG_CHECK_MODULES(DLOG, dlog)
+
+DALIDEMO_CFLAGS=-DPLATFORM_SLP
+
+AC_ARG_ENABLE([debug],
+              [AC_HELP_STRING([--enable-debug],
+                              [Turns on debugging])],
+              [enable_debug=$enableval],
+              [enable_debug=no])
+
+if test "x$enable_debug" = "xyes"; then
+  DALIDEMO_CFLAGS="$DALIDEMO_CFLAGS -DDEBUG_ENABLED"
+fi
+
+if test x$DALI_APP_DIR != x; then
+  appdatadir=$DALI_APP_DIR
+  exedir=${appdatadir}/bin/
+else
+  appdatadir=${prefix}/share/com.samsung.dali-demo/
+  exedir=${prefix}/bin/
+fi
+
+AC_SUBST(datadir)
+AC_SUBST(appdatadir)
+AC_SUBST(exedir)
+AC_SUBST(DALIDEMO_CFLAGS)
+
+dnl **************************************************************************
+dnl ** Set Debian install Prefix                                            **
+dnl **************************************************************************
+debian_prefix=${prefix#*/}
+AC_SUBST(debian_prefix)
+
+AC_CONFIG_FILES([
+  Makefile
+  demo/Makefile
+  examples/Makefile
+])
+
+
+AC_OUTPUT
+
+echo "
+Configuration
+-------------
+  Prefix:                           $prefix
+  Debug Build:                      $enable_debug
+  Application Data Dir:             $appdatadir
+  Application Exe Dir:              $exedir
+  DALIDEMO_CFLAGS:                  ${DALIDEMO_CFLAGS}
+"
diff --git a/build/tizen/demo/Makefile.am b/build/tizen/demo/Makefile.am
new file mode 100644 (file)
index 0000000..0c13cee
--- /dev/null
@@ -0,0 +1,46 @@
+#
+# Copyright (c) 2014 Samsung Electronics Co., Ltd.
+#
+# Licensed under the Flora License, Version 1.0 (the License);
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://floralicense.org/license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+bin_PROGRAMS = \
+                dali-demo
+
+demo_src_dir = ../../../demo
+include ../../../demo/file.list
+
+dalidemoimagesdir = $(appdatadir)/images/
+dalidemoimages_DATA = $(demo_image_files)
+
+dalidemomodelsdir = $(appdatadir)/models/
+dalidemomodels_DATA = $(demo_model_files)
+
+DEMO_CXXFLAGS = -DDALI_IMAGE_DIR="\"$(dalidemoimagesdir)\"" \
+                -DDALI_MODEL_DIR="\"$(dalidemomodelsdir)\"" \
+                -DDALI_EXAMPLE_BIN="\"$(exedir)\"" \
+                -I../../../demo -I../../.. \
+                $(DALIDEMO_CFLAGS) \
+                $(DALI_TOOLKIT_CFLAGS) \
+                $(DALI_CFLAGS) \
+                $(AUL_CFLAGS) \
+                -Werror -Wall
+
+DEMO_DEPS =
+
+DEMO_LDADD = $(DALI_LIBS) $(DALI_TOOLKIT_LIBS) $(AUL_LIBS)
+
+dali_demo_SOURCES = $(demo_src_files)
+dali_demo_CXXFLAGS = $(DEMO_CXXFLAGS)
+dali_demo_DEPENDENCIES = $(DEMO_DEPS)
+dali_demo_LDADD = $(DEMO_LDADD)
diff --git a/build/tizen/docs/.gitignore b/build/tizen/docs/.gitignore
new file mode 100644 (file)
index 0000000..37cfe18
--- /dev/null
@@ -0,0 +1 @@
+doxygen-errors.txt
diff --git a/build/tizen/docs/Makefile.am b/build/tizen/docs/Makefile.am
new file mode 100644 (file)
index 0000000..8d70825
--- /dev/null
@@ -0,0 +1,7 @@
+all-local:
+       @rm -f doxygen-errors.txt
+       @-doxygen dali.doxy &> doxygen-errors.txt || rm doxygen-errors.txt
+       @touch doxygen-errors.txt
+       @cat doxygen-errors.txt
+       @if [ -s doxygen-errors.txt ]; then exit 1 ; fi
+       @rm doxygen-errors.txt
diff --git a/build/tizen/docs/dali.doxy.in b/build/tizen/docs/dali.doxy.in
new file mode 100644 (file)
index 0000000..a2a2d3e
--- /dev/null
@@ -0,0 +1,1566 @@
+# Doxyfile 1.5.8
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = Dali
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER         =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = @DOXYGEN_DOCS_DIR@/generated
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
+# Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH        = .
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = YES
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 2
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C
+
+EXTENSION_MAPPING      =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE      = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST      = NO
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST      = NO
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST       = NO
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.  This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE            = @DOXYGEN_DOCS_DIR@/DaliLayout.xml
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC       = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE           =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT                  = @DOXYGEN_DOCS_DIR@/content \
+                         @prefix@/include/dali/public-api \
+                         @prefix@/include/dali-toolkit/public-api
+
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.d \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.idl \
+                         *.odl \
+                         *.cs \
+                         *.php \
+                         *.php3 \
+                         *.inc \
+                         *.m \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.f90 \
+                         *.f \
+                         *.vhd \
+                         *.vhdl
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = dali/integration-api
+
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        = DaliInternal \
+                         Dali::Internal \
+                         Dali::Integration \
+                         Impl \
+                         ApplicationImpl
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH           = @DOXYGEN_ROOT_DIR@/examples
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = YES
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH             = @DOXYGEN_DOCS_DIR@/content/images
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.  Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.  The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER            = @DOXYGEN_DOCS_DIR@/api_footer.html
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE               = dali.chm
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING     =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE          =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION           =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature. Other possible values
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# respectively.
+
+GENERATE_TREEVIEW      = NONE
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE       = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA             =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD                =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.  This is useful
+# if you want to understand what is going on.  On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = YES
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = YES
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED             = DALI_IMPORT_API DALI_INTERNAL \
+                       __attribute__ ((visibility ("default"))) \
+                       __attribute__ ((visibility ("hidden")))
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#   TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#   TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME           = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Options related to the search engine
+#---------------------------------------------------------------------------
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE           = NO
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvances is that it is more difficult to setup
+# and does not have live searching capabilities.
+
+# SERVER_BASED_SEARCH    = NO
diff --git a/build/tizen/examples/Makefile.am b/build/tizen/examples/Makefile.am
new file mode 100644 (file)
index 0000000..4591423
--- /dev/null
@@ -0,0 +1,108 @@
+#
+# Copyright (c) 2014 Samsung Electronics Co., Ltd.
+#
+# Licensed under the Flora License, Version 1.0 (the License);
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://floralicense.org/license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+examples_src_dir = ../../../examples
+
+bin_PROGRAMS = \
+               blocks.example \
+               bubble-effect.example \
+               cluster.example \
+               cube-transition-effect.example \
+               dissolve-effect.example \
+               hello-world.example \
+               magnifier.example \
+               motion-blur.example \
+               motion-stretch.example \
+               page-turn-view.example \
+               shadow-bone-lighting.example
+
+daliimagedir = $(appdatadir)/images/
+dalimodeldir = $(appdatadir)/models/
+
+BASE_CXXFLAGS = -I../../../examples \
+                   -DDALI_IMAGE_DIR="\"${daliimagedir}\"" \
+                   -DDALI_MODEL_DIR="\"${dalimodeldir}\"" \
+                   $(DALIDEMO_CFLAGS) \
+                   $(ECORE_X_CFLAGS) \
+                   $(CAPI_MEDIA_PLAYER_CFLAGS) \
+                   $(CAPI_APPFW_APPLICATION_CFLAGS) \
+                   -I/usr/include/media \
+                   -Werror -Wall
+
+EXAMPLE_CXXFLAGS      = $(DALI_CFLAGS) \
+                        $(DALI_TOOLKIT_CFLAGS) \
+                        $(BASE_CXXFLAGS)
+
+
+EXAMPLE_DEPS =
+
+EXAMPLE_LDADD = $(DALI_LIBS) $(DALI_TOOLKIT_LIBS) $(ECORE_X_LIBS) $(CAPI_MEDIA_PLAYER_LIBS) $(CAPI_APPFW_APPLICATION_LIBS) -lrt
+
+
+blocks_example_SOURCES = $(examples_src_dir)/blocks/blocks-example.cpp
+blocks_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+blocks_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+blocks_example_LDADD = $(EXAMPLE_LDADD)
+
+bubble_effect_example_SOURCES = $(examples_src_dir)/shader-effect/bubble-effect-example.cpp
+bubble_effect_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+bubble_effect_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+bubble_effect_example_LDADD = $(EXAMPLE_LDADD)
+
+cluster_example_SOURCES = $(examples_src_dir)/cluster/cluster-example.cpp
+cluster_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+cluster_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+cluster_example_LDADD = $(EXAMPLE_LDADD)
+
+cube_transition_effect_example_SOURCES = $(examples_src_dir)/transition/cube-transition-effect-example.cpp
+cube_transition_effect_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+cube_transition_effect_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+cube_transition_effect_example_LDADD = $(EXAMPLE_LDADD)
+
+dissolve_effect_example_SOURCES = $(examples_src_dir)/shader-effect/dissolve-effect-example.cpp
+dissolve_effect_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+dissolve_effect_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+dissolve_effect_example_LDADD = $(EXAMPLE_LDADD)
+
+hello_world_example_SOURCES = $(examples_src_dir)/hello-world/hello-world-example.cpp
+hello_world_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+hello_world_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+hello_world_example_LDADD = $(EXAMPLE_LDADD)
+
+magnifier_example_SOURCES = $(examples_src_dir)/magnifier-example/magnifier-example.cpp
+magnifier_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+magnifier_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+magnifier_example_LDADD = $(EXAMPLE_LDADD)
+
+motion_blur_example_SOURCES = $(examples_src_dir)/motion-blur/motion-blur-example.cpp
+motion_blur_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+motion_blur_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+motion_blur_example_LDADD = $(EXAMPLE_LDADD)
+
+motion_stretch_example_SOURCES = $(examples_src_dir)/motion-stretch/motion-stretch-example.cpp
+motion_stretch_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+motion_stretch_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+motion_stretch_example_LDADD = $(EXAMPLE_LDADD)
+
+page_turn_view_example_SOURCES = $(examples_src_dir)/page-turn-view/page-turn-view-example.cpp
+page_turn_view_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+page_turn_view_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+page_turn_view_example_LDADD = $(EXAMPLE_LDADD)
+
+shadow_bone_lighting_example_SOURCES = $(examples_src_dir)/shadows/shadow-bone-lighting-example.cpp
+shadow_bone_lighting_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
+shadow_bone_lighting_example_DEPENDENCIES = $(EXAMPLE_DEPS)
+shadow_bone_lighting_example_LDADD = $(EXAMPLE_LDADD)
diff --git a/com.samsung.dali-demo.manifest b/com.samsung.dali-demo.manifest
new file mode 100644 (file)
index 0000000..dac648a
--- /dev/null
@@ -0,0 +1,14 @@
+<manifest>
+       <define>
+               <domain name="com.samsung.dali-demo" />
+               <request>
+                       <smack request="dali" type="rwxat" />
+               </request>
+       </define>
+       <assign>
+               <filesystem path="/usr/share/icons/com.samsung.dali-demo.png" label="_" />
+       </assign>
+       <request>
+               <domain name="com.samsung.dali-demo" />
+       </request>
+</manifest>
diff --git a/com.samsung.dali-demo.rule b/com.samsung.dali-demo.rule
new file mode 100644 (file)
index 0000000..443e251
--- /dev/null
@@ -0,0 +1,22 @@
+com.samsung.dali-demo device::app_logging w
+com.samsung.dali-demo system::homedir rwxat
+com.samsung.dali-demo system::use_internet rwxat
+com.samsung.dali-demo xorg rwxat
+com.samsung.dali-demo isf rwxat
+com.samsung.dali-demo dali rwxat
+com.samsung.dali-demo ail::db rwxat
+com.samsung.dali-demo system::vconf rwxat
+com.samsung.dali-demo immvibed rwxat
+com.samsung.dali-demo svi-data rwxat
+com.samsung.dali-demo system::share rwxat
+com.samsung.dali-demo system::media rwxat
+com.samsung.dali-demo sound_server rwxat
+com.samsung.dali-demo com.samsung.indicator rwxat
+com.samsung.dali-demo com.samsung.cluster-home rwxat
+com.samsung.dali-demo tts-server rx
+com.samsung.dali-demo aul::launch rx
+com.samsung.dali-demo system::vconf_inhouse rwxat
+com.samsung.dali-demo system::vconf_system rwxat
+com.samsung.dali-demo system::vconf_misc rwxat
+com.samsung.dali-demo system::vconf_setting rwxat
+e17 com.samsung.dali-demo rwxat
diff --git a/com.samsung.dali-demo.xml b/com.samsung.dali-demo.xml
new file mode 100644 (file)
index 0000000..0e4691e
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="com.samsung.dali-demo" version="0.0.1" install-location="internal-only">
+<!-- NOTE THAT ALL LEADING WHITESPACE IN THIS FILE MUST BE TABS, NOT SPACES. APPS WITH LEADING SPACES WILL SILENTLY FAIL TO RUN ON A TARGET DEVICE. -->
+
+       <label>Dali Demo</label>
+       <author email="jonghyun.ho@samsung.com" href="www.samsung.com">Jonghyun Ho</author>
+       <description>DALi demo Application</description>
+
+       <ui-application appid="com.samsung.dali-demo" exec="/opt/apps/com.samsung.dali-demo/bin/dali-demo" nodisplay="false" multiple="false" type="c++app" taskmanage="true">
+               <icon>/usr/share/icons/com.samsung.dali-demo.png</icon>
+               <label>DALi demo</label>
+       </ui-application>
+       <ui-application appid="hello-world.example" exec="/opt/apps/com.samsung.dali-demo/bin/hello-world.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Hello World</label>
+       </ui-application>
+       <ui-application appid="page-turn-view.example" exec="/opt/apps/com.samsung.dali-demo/bin/page-turn-view.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>PageTurnView Example</label>
+       </ui-application>
+       <ui-application appid="blocks.example" exec="/opt/apps/com.samsung.dali-demo/bin/blocks.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Blocks</label>
+       </ui-application>
+       <ui-application appid="bubble-effect.example" exec="/opt/apps/com.samsung.dali-demo/bin/bubble-effect.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Bubble Effect</label>
+       </ui-application>
+       <ui-application appid="cluster.example" exec="/opt/apps/com.samsung.dali-demo/bin/cluster.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Cluster example</label>
+       </ui-application>
+       <ui-application appid="cube-transition-effect.example" exec="/opt/apps/com.samsung.dali-demo/bin/cube-transition-effect.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Cube transition effect</label>
+       </ui-application>
+       <ui-application appid="dissolve-effect.example" exec="/opt/apps/com.samsung.dali-demo/bin/dissolve-effect.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Dissolve effect</label>
+       </ui-application>
+       <ui-application appid="magnifier.example" exec="/opt/apps/com.samsung.dali-demo/bin/magnifier.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Magnifier</label>
+       </ui-application>
+       <ui-application appid="motion-blur.example" exec="/opt/apps/com.samsung.dali-demo/bin/motion-blur.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Motion Blur</label>
+       </ui-application>
+       <ui-application appid="motion-stretch.example" exec="/opt/apps/com.samsung.dali-demo/bin/motion-stretch.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Motion Stretch</label>
+       </ui-application>
+       <ui-application appid="shadow-bone-lighting.example" exec="/opt/apps/com.samsung.dali-demo/bin/shadow-bone-lighting.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Shadows and Lights</label>
+       </ui-application>
+</manifest>
diff --git a/demo/dali-demo.cpp b/demo/dali-demo.cpp
new file mode 100644 (file)
index 0000000..09b1574
--- /dev/null
@@ -0,0 +1,40 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include "dali-table-view.h"
+
+using namespace Dali;
+
+int main(int argc, char **argv)
+{
+  Application app = Application::New(&argc, &argv);
+
+  DaliTableView demo(app);
+
+  demo.AddExample(Example("blocks.example", "Blocks"));
+  demo.AddExample(Example("cluster.example", "Cluster control"));
+  demo.AddExample(Example("cube-transition-effect.example", "Cube Transition"));
+  demo.AddExample(Example("dissolve-effect.example", "Dissolve Transition"));
+  demo.AddExample(Example("magnifier.example", "Magnifier"));
+  demo.AddExample(Example("motion-blur.example", "Motion Blur"));
+  demo.AddExample(Example("motion-stretch.example", "Motion Stretch"));
+  demo.AddExample(Example("page-turn-view.example", "Page Turn View"));
+  demo.AddExample(Example("shadow-bone-lighting.example", "Lights and shadows"));
+  demo.AddExample(Example("hello-world.example", "Hello World"));
+  app.MainLoop();
+
+  return 0;
+}
diff --git a/demo/dali-table-view.cpp b/demo/dali-table-view.cpp
new file mode 100644 (file)
index 0000000..d190111
--- /dev/null
@@ -0,0 +1,1097 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// CLASS HEADER
+#include "dali-table-view.h"
+
+// EXTERNAL INCLUDES
+#include <algorithm>
+#include <sstream>
+#include <aul.h>
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+using namespace std;
+
+///////////////////////////////////////////////////////////////////////////////
+
+namespace
+{
+
+const std::string BUTTON_BACKWARD( "Backward" );
+const std::string BUTTON_FORWARD( "Forward" );
+const std::string BUTTON_QUIT( "Quit" );
+const std::string BUTTON_OK( "Ok" );
+const std::string BUTTON_CANCEL( "Cancel" );
+
+const std::string DEFAULT_BACKGROUND_IMAGE_PATH( DALI_IMAGE_DIR "background-default.png" );
+const std::string LOGO_PATH( DALI_IMAGE_DIR "dali-logo-small.png" );
+const std::string DEFAULT_TOOLBAR_IMAGE_PATH( DALI_IMAGE_DIR "top-bar-demo.png" );
+const std::string BUTTON_BACKGROUND(DALI_IMAGE_DIR "button-background.png");
+const std::string TILE_BACKGROUND(DALI_IMAGE_DIR "item-background.png");
+const std::string TILE_BACKGROUND_ALPHA(DALI_IMAGE_DIR "item-background-alpha.png");
+
+const float BUTTON_PRESS_ANIMATION_TIME = 0.25f;                ///< Time to perform button scale effect.
+const float ROTATE_ANIMATION_TIME = 0.5f;                       ///< Time to perform rotate effect.
+const int MAX_PAGES = 256;                                      ///< Maximum pages (arbitrary safety limit)
+const int EXAMPLES_PER_ROW = 3;
+const int ROWS_PER_PAGE = 3;
+const int EXAMPLES_PER_PAGE = EXAMPLES_PER_ROW * ROWS_PER_PAGE;
+const float TOP_ROW_HEIGHT = 35.0f;
+const float BOTTOM_ROW_HEIGHT = 35.0f;
+const int BOTTOM_PADDING_HEIGHT = 40;
+const int LOGO_BOTTOM_PADDING_HEIGHT = 30;
+const Vector3 TABLE_RELATIVE_SIZE(0.9f, 1.0f, 0.8f );          ///< TableView's relative size to the entire stage.
+const float STENCIL_RELATIVE_SIZE = 1.0f;
+
+const float EFFECT_SNAP_DURATION = 0.66f;                       ///< Scroll Snap Duration for Effects
+const float EFFECT_FLICK_DURATION = 0.5f;                       ///< Scroll Flick Duration for Effects
+const Vector3 ANGLE_CUBE_PAGE_ROTATE(Math::PI * 0.5f, Math::PI * 0.5f, 0.0f);
+
+const int NUM_BACKGROUND_IMAGES = 20;
+const float BACKGROUND_SWIPE_SCALE = 0.025f;
+const float BACKGROUND_SPREAD_SCALE = 1.5f;
+const float SCALE_MOD = 1000.0f * Math::PI * 2.0f;
+const float SCALE_SPEED = 10.0f;
+const float SCALE_SPEED_SIN = 0.1f;
+
+const unsigned int BACKGROUND_ANIMATION_DURATION = 15000; // 15 secs
+
+const float BACKGROUND_Z = -1000.0f;
+const float BACKGROUND_SIZE_SCALE = 2.0f;
+const Vector4 BACKGROUND_COLOR( 1.0f, 1.0f, 1.0f, 1.0f );
+
+
+const std::string             DEFAULT_TEXT_STYLE_FONT_FAMILY("HelveticaNeue");
+const std::string             DEFAULT_TEXT_STYLE_FONT_STYLE("Regular");
+const Dali::PointSize         DEFAULT_TEXT_STYLE_POINT_SIZE( 8.0f );
+const Dali::TextStyle::Weight DEFAULT_TEXT_STYLE_WEIGHT(Dali::TextStyle::LIGHT);
+const Dali::Vector4           DEFAULT_TEXT_STYLE_COLOR(0.0f, 0.75f, 1.0f, 1.0f);
+
+const std::string             TABLE_TEXT_STYLE_FONT_FAMILY("HelveticaNeue");
+const std::string             TABLE_TEXT_STYLE_FONT_STYLE("Regular");
+const Dali::PointSize         TABLE_TEXT_STYLE_POINT_SIZE( 8.0f );
+const Dali::TextStyle::Weight TABLE_TEXT_STYLE_WEIGHT(Dali::TextStyle::LIGHT);
+const Dali::Vector4           TABLE_TEXT_STYLE_COLOR(0.0f, 0.0f, 0.0f, 1.0f);
+
+TextStyle GetDefaultTextStyle()
+{
+  TextStyle textStyle;
+  textStyle.SetFontName(DEFAULT_TEXT_STYLE_FONT_FAMILY);
+  textStyle.SetFontStyle(DEFAULT_TEXT_STYLE_FONT_STYLE);
+  textStyle.SetFontPointSize(DEFAULT_TEXT_STYLE_POINT_SIZE);
+  textStyle.SetWeight(DEFAULT_TEXT_STYLE_WEIGHT);
+  textStyle.SetTextColor(DEFAULT_TEXT_STYLE_COLOR);
+  return textStyle;
+}
+
+TextStyle GetTableTextStyle()
+{
+  TextStyle textStyle;
+  textStyle.SetFontName(TABLE_TEXT_STYLE_FONT_FAMILY);
+  textStyle.SetFontStyle(TABLE_TEXT_STYLE_FONT_STYLE);
+  textStyle.SetFontPointSize(TABLE_TEXT_STYLE_POINT_SIZE);
+  textStyle.SetWeight(TABLE_TEXT_STYLE_WEIGHT);
+  textStyle.SetTextColor(TABLE_TEXT_STYLE_COLOR);
+  return textStyle;
+}
+
+/**
+ * Creates the background image
+ */
+ImageActor CreateBackground( std::string imagePath )
+{
+  Image image = Image::New( imagePath );
+  ImageActor background = ImageActor::New( image );
+
+  background.SetAnchorPoint( AnchorPoint::CENTER );
+  background.SetParentOrigin( ParentOrigin::CENTER );
+  background.SetZ( -1.0f );
+
+  return background;
+}
+
+// These values depend on the tile image
+const float IMAGE_BORDER_LEFT = 11.0f;
+const float IMAGE_BORDER_RIGHT = IMAGE_BORDER_LEFT;
+const float IMAGE_BORDER_TOP = IMAGE_BORDER_LEFT;
+const float IMAGE_BORDER_BOTTOM = IMAGE_BORDER_LEFT;
+
+/**
+ * TableViewVisibilityConstraint
+ */
+struct TableViewVisibilityConstraint
+{
+  bool operator()( const bool& current,
+              const PropertyInput& pagePositionProperty,
+              const PropertyInput& pageSizeProperty )
+  {
+    // Only the tableview in the current page should be visible.
+    const Vector3& pagePosition = pagePositionProperty.GetVector3();
+    const Vector3& pageSize = pageSizeProperty.GetVector3();
+    return fabsf( pagePosition.x ) < pageSize.x;
+  }
+};
+
+/**
+ * Constraint to wrap an actor in y that is moving vertically
+ */
+Vector3 ShapeMovementConstraint( const Vector3& current,
+                         const PropertyInput& shapeSizeProperty,
+                         const PropertyInput& parentSizeProperty )
+{
+  const Vector3& shapeSize = shapeSizeProperty.GetVector3();
+  const Vector3& parentSize = parentSizeProperty.GetVector3();
+
+  Vector3 pos( current );
+  if( pos.y + shapeSize.y * 0.5f < -parentSize.y * 0.5f )
+  {
+    pos.y += parentSize.y + shapeSize.y;
+  }
+
+  return pos;
+}
+
+/**
+ * Constraint to return a bool value based on the alpha channel value
+ */
+bool AlphaVisibleConstraint( bool current, const PropertyInput& alphaProperty )
+{
+  Vector4 colour = alphaProperty.GetVector4();
+  return ( colour.a > Math::MACHINE_EPSILON_10000 );
+}
+
+/**
+ * Constraint to return a position for the background based on the scroll value
+ */
+struct AnimScrollConstraint
+{
+public:
+
+  AnimScrollConstraint( const Vector3& initialPos, float scale )
+      : mInitialPos( initialPos ),
+        mScale( scale )
+  {
+
+  }
+
+  Vector3 operator()( const Vector3& current, const PropertyInput& scrollProperty )
+  {
+    float scrollPos = scrollProperty.GetFloat();
+
+    return mInitialPos + Vector3( -scrollPos * mScale, 0.0f, 0.0f );
+  }
+
+private:
+  Vector3 mInitialPos;
+  float mScale;
+};
+
+/**
+ * Constraint to return a tracked world position added to the constant local position
+ */
+struct TranslateLocalConstraint
+{
+public:
+
+  TranslateLocalConstraint( const Vector3& localPos )
+      : mLocalPos( localPos )
+  {
+  }
+
+  Vector3 operator()( const Vector3& current, const PropertyInput& pagePosProperty )
+  {
+    Vector3 worldPos = pagePosProperty.GetVector3();
+
+    return ( worldPos + mLocalPos );
+  }
+
+private:
+  Vector3 mLocalPos;
+};
+
+
+bool CompareByTitle( const Example& lhs, const Example& rhs )
+{
+  return lhs.title < rhs.title;
+}
+
+} // namespace
+
+DaliTableView::DaliTableView( Application& application )
+    : mApplication( application ),
+        mScrolling( false ),
+        mBackgroundImagePath( DEFAULT_BACKGROUND_IMAGE_PATH ),
+        mSortAlphabetically( false ),
+        mBackgroundAnimsPlaying( false )
+{
+  application.InitSignal().Connect( this, &DaliTableView::Initialize );
+}
+
+DaliTableView::~DaliTableView()
+{
+}
+
+void DaliTableView::AddExample( Example example )
+{
+  mExampleList.push_back( example );
+  mExampleMap[ example.name ] = example;
+}
+
+void DaliTableView::SetBackgroundPath( std::string imagePath )
+{
+  mBackgroundImagePath = imagePath;
+}
+
+void DaliTableView::SortAlphabetically( bool sortAlphabetically )
+{
+  mSortAlphabetically = sortAlphabetically;
+}
+
+void DaliTableView::Initialize( Application& application )
+{
+  Stage::GetCurrent().KeyEventSignal().Connect( this, &DaliTableView::OnKeyEvent );
+
+  Vector2 stageSize = Stage::GetCurrent().GetSize();
+
+  // Background
+  mBackground = CreateBackground( mBackgroundImagePath );
+  // set same size as parent actor
+  mBackground.SetSize( stageSize );
+  Stage::GetCurrent().Add( mBackground );
+
+  // Render entire content as overlays, as is all on same 2D plane.
+  mRootActor = TableView::New( 4, 1 );
+  mRootActor.SetAnchorPoint( AnchorPoint::CENTER );
+  mRootActor.SetParentOrigin( ParentOrigin::CENTER );
+  mRootActor.SetFixedHeight( 3, BOTTOM_PADDING_HEIGHT );
+  Stage::GetCurrent().Add( mRootActor );
+
+  // Toolbar at top
+  CreateToolbar( mRootActor, std::string(), DEFAULT_TOOLBAR_IMAGE_PATH );
+
+  // Add logo
+  mLogo = CreateLogo( LOGO_PATH );
+  Alignment alignment = Alignment::New();
+  alignment.Add(mLogo);
+  mRootActor.AddChild( alignment, TableView::CellPosition( 1, 0 ) );
+
+  // scrollview occupying the majority of the screen
+  mScrollView = ScrollView::New();
+
+  mScrollView.SetAnchorPoint( AnchorPoint::CENTER );
+  mScrollView.SetParentOrigin( ParentOrigin::CENTER );
+  mScrollView.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::RelativeToConstraint( TABLE_RELATIVE_SIZE ) ) );
+  mScrollView.SetAxisAutoLock( true );
+  mScrollView.ScrollCompletedSignal().Connect( this, &DaliTableView::OnScrollComplete );
+  mScrollView.ScrollStartedSignal().Connect( this, &DaliTableView::OnScrollStart );
+  mScrollView.TouchedSignal().Connect( this, &DaliTableView::OnScrollTouched );
+
+  mScrollViewLayer = Layer::New();
+  mScrollViewLayer.SetAnchorPoint( AnchorPoint::CENTER );
+  mScrollViewLayer.SetParentOrigin( ParentOrigin::CENTER );
+  mScrollViewLayer.SetSize( stageSize );
+  mScrollViewLayer.Add( mScrollView );
+  mRootActor.AddChild( mScrollViewLayer, TableView::CellPosition( 2, 0 ) );
+
+  // Setup the scenegraph
+  // 1) Add scroll view effect and setup constraints on pages
+  ApplyScrollViewEffect();
+
+  // 2) Add pages and tiles
+  Populate();
+
+  // 3) Populate scrollview with background so constraints on background layers can work with scrollview
+  SetupBackground( mScrollView, stageSize );
+
+  // 4) Remove constraints for inner cube effect
+  for( TableViewListIter pageIter = mTableViewList.begin(); pageIter != mTableViewList.end(); ++pageIter )
+  {
+    TableView page = *pageIter;
+
+    unsigned int numChildren = page.GetChildCount();
+    Actor pageActor = page;
+    for( unsigned int i=0; i<numChildren; ++i)
+    {
+      // Remove old effect's manual constraints.
+      Actor child = pageActor.GetChildAt(i);
+      if( child )
+      {
+        child.RemoveConstraints();
+      }
+    }
+  }
+
+  // Set initial orientation
+  unsigned int degrees = application.GetOrientation().GetDegrees();
+  Rotate( degrees );
+
+  Dali::Window winHandle = application.GetWindow();
+  winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT );
+  winHandle.RemoveAvailableOrientation( Dali::Window::LANDSCAPE );
+  winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE );
+  winHandle.RemoveAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE );
+
+  Dali::Orientation orientation = winHandle.GetOrientation();
+  orientation.ChangedSignal().Connect( this, &DaliTableView::OrientationChanged );
+
+  winHandle.ShowIndicator( false );
+
+  //
+  mAnimationTimer = Timer::New( BACKGROUND_ANIMATION_DURATION );
+  mAnimationTimer.TickSignal().Connect( this, &DaliTableView::PauseBackgroundAnimation );
+  mAnimationTimer.Start();
+  mBackgroundAnimsPlaying = true;
+
+  KeyboardFocusManager::Get().PreFocusChangeSignal().Connect( this, &DaliTableView::OnKeyboardPreFocusChange );
+  KeyboardFocusManager::Get().FocusedActorActivatedSignal().Connect( this, &DaliTableView::OnFocusedActorActivated );
+}
+
+void DaliTableView::CreateToolbar( TableView root, const std::string& title, const std::string& toolbarImagePath,
+                              const ViewStyle& style )
+{
+  // Create default ToolBar
+  Dali::Stage stage = Dali::Stage::GetCurrent();
+  Dali::Vector2 dpi = stage.GetDpi();
+
+  // Create toolbar layer.
+  Dali::Layer toolBarLayer = Dali::Layer::New();
+  toolBarLayer.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
+  toolBarLayer.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
+  toolBarLayer.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::SourceWidthFixedHeight( style.mToolBarHeight * dpi.y / style.mDpi ) ) );
+  float toolBarLayerHeight = style.mToolBarHeight * dpi.y / style.mDpi;
+  toolBarLayer.SetSize( 0.0f, toolBarLayerHeight );
+
+  // Add tool bar layer to the view.
+  root.AddChild( toolBarLayer, TableView::CellPosition( 0, 0 ) );
+  root.SetFixedHeight( 0, toolBarLayerHeight );
+
+  // Raise tool bar layer to the top.
+  toolBarLayer.RaiseToTop();
+
+  // Tool bar
+  Dali::Image image = Dali::Image::New( toolbarImagePath );
+  Dali::ImageActor toolBarBackground = Dali::ImageActor::New( image );
+  Dali::Toolkit::ToolBar toolBar = Dali::Toolkit::ToolBar::New();
+  toolBar.SetBackground( toolBarBackground );
+  toolBar.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
+  toolBar.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
+  toolBar.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::EqualToConstraint() ) );
+  toolBar.SetSize( 0.0f, style.mToolBarHeight * dpi.y / style.mDpi );
+  toolBarBackground.SetZ( -1.0f );
+
+  // Add the tool bar to the too bar layer.
+  toolBarLayer.Add( toolBar );
+
+  Dali::Font font = Dali::Font::New();
+
+  // Tool bar text.
+  if( !title.empty() )
+  {
+    Dali::Toolkit::TextView titleActor = Dali::Toolkit::TextView::New();
+    titleActor.SetName( "ToolbarTitle" );
+    titleActor.SetText( title );
+    titleActor.SetSize( font.MeasureText( title ) );
+    titleActor.SetStyleToCurrentText( GetDefaultTextStyle() );
+    titleActor.SetZ( 1.0f );
+
+    // Add title to the tool bar.
+    const float padding( style.mToolBarPadding * dpi.x / style.mDpi );
+    toolBar.AddControl( titleActor, style.mToolBarTitlePercentage, Dali::Toolkit::Alignment::HorizontalCenter,
+                        Dali::Toolkit::Alignment::Padding( padding, padding, padding, padding ) );
+  }
+}
+
+void DaliTableView::Populate()
+{
+  const Vector2 stageSize = Stage::GetCurrent().GetSize();
+
+  const Size demoTileSize( 0.25f * stageSize.width, 0.25f * stageSize.height );
+
+  mTotalPages = ( mExampleList.size() + EXAMPLES_PER_PAGE - 1 ) / EXAMPLES_PER_PAGE;
+
+  // Populate ScrollView.
+  if( mExampleList.size() > 0 )
+  {
+    if( mSortAlphabetically )
+    {
+      sort( mExampleList.begin(), mExampleList.end(), CompareByTitle );
+    }
+
+    unsigned int exampleCount = 0;
+    ExampleListConstIter iter = mExampleList.begin();
+    for( int t = 0; t < mTotalPages; t++ )
+    {
+      // Create Table. (contains up to 9 Examples)
+      TableView tableView = TableView::New( 4, 3 );
+      // Add tableView to container.
+      mScrollView.Add( tableView );
+      ApplyEffectToPage( tableView, TABLE_RELATIVE_SIZE );
+
+      tableView.SetAnchorPoint( AnchorPoint::CENTER );
+      tableView.SetParentOrigin( ParentOrigin::CENTER );
+      // 2 pixels of padding
+      tableView.SetCellPadding( Size( 2.0f, 2.0f ) );
+
+      Constraint constraint = Constraint::New<Vector3>( Actor::SCALE,
+                                                        LocalSource( Actor::SIZE ),
+                                                        ParentSource( Actor::SIZE ),
+                                                        ScaleToFitConstraint() );
+      tableView.ApplyConstraint(constraint);
+
+      // Apply visibility constraint to table view
+      Constraint visibleConstraint = Constraint::New< bool >( Actor::VISIBLE,
+                                                              LocalSource( Actor::POSITION ),
+                                                              ParentSource( Actor::SIZE ),
+                                                              TableViewVisibilityConstraint() );
+      visibleConstraint.SetRemoveAction( Constraint::Discard );
+      tableView.ApplyConstraint( visibleConstraint );
+
+      // add cells to table
+      for( int y = 0; y < ROWS_PER_PAGE; y++ )
+      {
+        for( int x = 0; x < EXAMPLES_PER_ROW; x++ )
+        {
+          const Example& example = ( *iter );
+
+          Actor tile = CreateTile( example.name, example.title, demoTileSize, true );
+          FocusManager focusManager = FocusManager::Get();
+          focusManager.SetFocusOrder( tile, ++exampleCount );
+          focusManager.SetAccessibilityAttribute( tile, Dali::Toolkit::FocusManager::ACCESSIBILITY_LABEL,
+                                                  example.title );
+          focusManager.SetAccessibilityAttribute( tile, Dali::Toolkit::FocusManager::ACCESSIBILITY_TRAIT, "Tile" );
+          focusManager.SetAccessibilityAttribute( tile, Dali::Toolkit::FocusManager::ACCESSIBILITY_HINT,
+                                                  "You can run this example" );
+
+          tableView.AddChild( tile, TableView::CellPosition( y, x ) );
+          iter++;
+
+          if( iter == mExampleList.end() )
+          {
+            break;
+          }
+        }
+        if( iter == mExampleList.end() )
+        {
+          break;
+        }
+      }
+
+      // last row is thin.
+      tableView.SetFixedHeight( 3, BOTTOM_ROW_HEIGHT );
+
+      std::stringstream out;
+      out << ( t + 1 ) << " of " << mTotalPages;
+      Actor pageNumberText = CreateTile( "", out.str(), Size( 0.8f * stageSize.width, BOTTOM_ROW_HEIGHT ), false );
+
+      pageNumberText.ApplyConstraint( Constraint::New< Vector3 >( Actor::POSITION, Source( tableView, Actor::WORLD_POSITION),
+                                                                   TranslateLocalConstraint( Vector3( 0.0f, stageSize.y * 0.4f, 0.0f ) ) ) );
+      pageNumberText.ApplyConstraint( Constraint::New< Quaternion >( Actor::ROTATION, Source( tableView, Actor::WORLD_ROTATION ), EqualToConstraint() ) );
+      pageNumberText.ApplyConstraint( Constraint::New< Vector4 >( Actor::COLOR, Source( tableView, Actor::COLOR ), EqualToConstraint() ) );
+
+      Stage::GetCurrent().Add( pageNumberText );
+
+      // Set tableview position
+      Vector3 tableViewPos( stageSize.x * TABLE_RELATIVE_SIZE.x * t, 0.0f, 0.0f );
+      tableView.SetPosition( tableViewPos );
+
+      mTableViewList.push_back( tableView );
+
+      if( iter == mExampleList.end() )
+      {
+        break;
+      }
+    }
+  }
+
+  // Update Ruler info.
+  mScrollRulerX = new FixedRuler( stageSize.width * TABLE_RELATIVE_SIZE.x );
+  mScrollRulerY = new DefaultRuler();
+  mScrollRulerX->SetDomain( RulerDomain( 0.0f, mTotalPages * stageSize.width * TABLE_RELATIVE_SIZE.x, true ) );
+  mScrollRulerY->Disable();
+  mScrollView.SetRulerX( mScrollRulerX );
+  mScrollView.SetRulerY( mScrollRulerY );
+}
+
+void DaliTableView::OrientationChanged( Orientation orientation )
+{
+  // TODO: Implement if orientation change required
+}
+
+void DaliTableView::Rotate( unsigned int degrees )
+{
+  // Resize the root actor
+  Vector2 stageSize = Stage::GetCurrent().GetSize();
+  Vector3 targetSize( stageSize.x, stageSize.y, 1.0f );
+
+  if( degrees == 90 || degrees == 270 )
+  {
+    targetSize = Vector3( stageSize.y, stageSize.x, 1.0f );
+  }
+
+  if( mRotateAnimation )
+  {
+    mRotateAnimation.Stop();
+    mRotateAnimation.Clear();
+  }
+
+  mRotateAnimation = Animation::New( ROTATE_ANIMATION_TIME );
+  mRotateAnimation.RotateTo( mRootActor, Degree( 360 - degrees ), Vector3::ZAXIS, AlphaFunctions::EaseOut );
+  mRotateAnimation.Resize( mRootActor, targetSize, AlphaFunctions::EaseOut );
+  mRotateAnimation.Play();
+}
+
+Actor DaliTableView::CreateTile( const string& name, const string& title, const Size& parentSize, bool addBackground )
+{
+  Actor tile = Actor::New();
+  tile.SetName( name );
+  tile.SetAnchorPoint( AnchorPoint::CENTER );
+  tile.SetParentOrigin( ParentOrigin::CENTER );
+
+  // make the tile 100% of parent
+  tile.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+
+  Actor content = Actor::New();
+  content.SetAnchorPoint( AnchorPoint::CENTER );
+  content.SetParentOrigin( ParentOrigin::CENTER );
+  content.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+  tile.Add(content);
+
+  // create background image
+  if( addBackground )
+  {
+    Image bg = Image::New( TILE_BACKGROUND );
+    ImageActor image = ImageActor::New( bg );
+    image.SetAnchorPoint( AnchorPoint::CENTER );
+    image.SetParentOrigin( ParentOrigin::CENTER );
+    // make the image 100% of tile
+    image.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+    // move image back to get text appear in front
+    image.SetZ( -1 );
+    image.SetStyle( ImageActor::STYLE_NINE_PATCH );
+    image.SetNinePatchBorder( Vector4( IMAGE_BORDER_LEFT, IMAGE_BORDER_TOP, IMAGE_BORDER_RIGHT, IMAGE_BORDER_BOTTOM ) );
+
+    content.Add( image );
+
+    // Add stencil
+    ImageActor stencil = NewStencilImage();
+    stencil.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+    image.Add( stencil );
+  }
+
+  TextView text = TextView::New( title );
+  text.SetAnchorPoint( AnchorPoint::CENTER );
+  text.SetParentOrigin( ParentOrigin::CENTER );
+  text.SetWidthExceedPolicy( Toolkit::TextView::ShrinkToFit );
+  text.SetMultilinePolicy( Toolkit::TextView::SplitByWord );
+  text.SetLineJustification( Toolkit::TextView::Center );
+  text.SetTextAlignment( Toolkit::Alignment::Type( Alignment::HorizontalCenter | Alignment::VerticalCenter ) );
+  text.SetColor( Color::WHITE );
+  text.SetZ( 1 );
+  // make the text 90% of tile
+  text.SetSize( 0.9f * parentSize.width, 0.9f * parentSize.height );
+  text.SetStyleToCurrentText( GetTableTextStyle() );
+  text.SetSnapshotModeEnabled( false );
+  content.Add( text );
+
+  // Set the tile to be keyboard focusable
+  tile.SetKeyboardFocusable(true);
+
+  // connect to the touch events
+  tile.TouchedSignal().Connect( this, &DaliTableView::OnTilePressed );
+
+  return tile;
+}
+
+ImageActor DaliTableView::NewStencilImage()
+{
+  Image alpha = Image::New( TILE_BACKGROUND_ALPHA );
+
+  ImageActor stencilActor = ImageActor::New( alpha );
+  stencilActor.SetStyle( ImageActor::STYLE_NINE_PATCH );
+  stencilActor.SetNinePatchBorder( Vector4( IMAGE_BORDER_LEFT, IMAGE_BORDER_TOP, IMAGE_BORDER_RIGHT, IMAGE_BORDER_BOTTOM ) );
+
+  stencilActor.SetParentOrigin( ParentOrigin::CENTER );
+  stencilActor.SetAnchorPoint( AnchorPoint::CENTER );
+  stencilActor.SetDrawMode( DrawMode::STENCIL );
+
+  Dali::ShaderEffect shaderEffect = AlphaDiscardEffect::New();
+  stencilActor.SetShaderEffect( shaderEffect );
+
+  return stencilActor;
+}
+
+bool DaliTableView::OnTilePressed( Actor actor, const TouchEvent& event )
+{
+  bool consumed = false;
+
+  const TouchPoint& point = event.GetPoint( 0 );
+  if( TouchPoint::Down == point.state )
+  {
+    mPressedActor = actor;
+    consumed = true;
+  }
+
+  // A button press is only valid if the Down & Up events
+  // both occurred within the button.
+  if( ( TouchPoint::Up == point.state ) &&
+      ( mPressedActor == actor ) )
+  {
+    std::string name = actor.GetName();
+    ExampleMapConstIter iter = mExampleMap.find( name );
+
+    FocusManager focusManager = FocusManager::Get();
+
+    if( iter != mExampleMap.end() )
+    {
+      // ignore Example button presses when scrolling or button animating.
+      if( ( !mScrolling ) && ( !mPressedAnimation ) )
+      {
+        // do nothing, until pressed animation finished.
+        consumed = true;
+      }
+    }
+
+    if( consumed )
+    {
+      mPressedAnimation = Animation::New( BUTTON_PRESS_ANIMATION_TIME );
+      mPressedAnimation.SetDestroyAction( Animation::Discard );
+
+      // scale the content actor within the Tile, as to not affect the placement within the Table.
+      Actor content = actor.GetChildAt(0);
+      mPressedAnimation.ScaleTo( content, Vector3( 0.9f, 0.9f, 1.0f ), AlphaFunctions::EaseInOut, 0.0f,
+                                 BUTTON_PRESS_ANIMATION_TIME * 0.5f );
+      mPressedAnimation.ScaleTo( content, Vector3::ONE, AlphaFunctions::EaseInOut, BUTTON_PRESS_ANIMATION_TIME * 0.5f,
+                                 BUTTON_PRESS_ANIMATION_TIME * 0.5f );
+      mPressedAnimation.Play();
+      mPressedAnimation.FinishedSignal().Connect( this, &DaliTableView::OnPressedAnimationFinished );
+    }
+  }
+  return consumed;
+}
+
+void DaliTableView::OnPressedAnimationFinished( Dali::Animation& source )
+{
+  mPressedAnimation.Reset();
+  if( mPressedActor )
+  {
+    std::string name = mPressedActor.GetName();
+    ExampleMapConstIter iter = mExampleMap.find( name );
+
+    if( iter == mExampleMap.end() )
+    {
+      if( name == BUTTON_QUIT )
+      {
+        // Move focus to the OK button
+        FocusManager focusManager = FocusManager::Get();
+
+        // Enable the group mode and wrap mode
+        focusManager.SetGroupMode( true );
+        focusManager.SetWrapMode( true );
+      }
+    }
+    else
+    {
+      const Example& example( iter->second );
+      aul_open_app( example.name.c_str() );
+    }
+    mPressedActor.Reset();
+  }
+}
+
+void DaliTableView::OnScrollStart( const Dali::Vector3& position )
+{
+  mScrolling = true;
+
+  PlayAnimation();
+}
+
+void DaliTableView::OnScrollComplete( const Dali::Vector3& position )
+{
+  mScrolling = false;
+
+  // move focus to 1st item of new page
+  FocusManager focusManager = FocusManager::Get();
+  focusManager.SetCurrentFocusActor(mTableViewList[mScrollView.GetCurrentPage()].GetChildAt(TableView::CellPosition(1, 0)) );
+
+}
+
+bool DaliTableView::OnScrollTouched( Actor actor, const TouchEvent& event )
+{
+  const TouchPoint& point = event.GetPoint( 0 );
+  if( TouchPoint::Down == point.state )
+  {
+    mPressedActor = actor;
+  }
+
+  return false;
+}
+
+void DaliTableView::ApplyScrollViewEffect()
+{
+  // Remove old effect if exists.
+
+  if( mScrollViewEffect )
+  {
+    mScrollView.RemoveEffect( mScrollViewEffect );
+  }
+
+  // Just one effect for now
+  SetupInnerPageCubeEffect();
+
+  mScrollView.ApplyEffect( mScrollViewEffect );
+}
+
+void DaliTableView::SetupInnerPageCubeEffect()
+{
+  ScrollViewCustomEffect customEffect;
+  mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
+  mScrollView.SetScrollSnapDuration( EFFECT_SNAP_DURATION );
+  mScrollView.SetScrollFlickDuration( EFFECT_FLICK_DURATION );
+  mScrollView.SetScrollSnapAlphaFunction( AlphaFunctions::EaseOutBack );
+  mScrollView.SetScrollFlickAlphaFunction( AlphaFunctions::EaseOutBack );
+  mScrollView.RemoveConstraintsFromChildren();
+
+  customEffect.SetPageSpacing( Vector2( 30.0f, 30.0f ) );
+  customEffect.SetAngledOriginPageRotation( ANGLE_CUBE_PAGE_ROTATE );
+  customEffect.SetSwingAngle( ANGLE_CUBE_PAGE_ROTATE.x, Vector3( 0, -1, 0 ) );
+  customEffect.SetOpacityThreshold( 0.5f );   // Make fade out on edges
+}
+
+void DaliTableView::ApplyEffectToPage( Actor page, const Vector3& tableRelativeSize )
+{
+  page.RemoveConstraints();
+
+  Constraint constraint = Constraint::New<Vector3>( Actor::SCALE,
+                                                    LocalSource( Actor::SIZE ),
+                                                    ParentSource( Actor::SIZE ),
+                                                    ScaleToFitConstraint() );
+  page.ApplyConstraint(constraint);
+
+  ApplyCustomEffectToPage( page );
+}
+
+void DaliTableView::ApplyCustomEffectToPage( Actor page )
+{
+  ScrollViewCustomEffect customEffect = ScrollViewCustomEffect::DownCast( mScrollViewEffect );
+  Vector2 vStageSize( Stage::GetCurrent().GetSize() );
+  customEffect.ApplyToPage( page, Vector3( vStageSize.x, vStageSize.y, 1.0f ) );
+}
+
+void DaliTableView::OnKeyEvent( const KeyEvent& event )
+{
+  if( event.state == KeyEvent::Down )
+  {
+    if ( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+    {
+      mApplication.Quit();
+    }
+  }
+}
+
+Actor CreateBackgroundActor( const Vector2& size )
+{
+  Actor layer = Actor::New();
+  layer.SetAnchorPoint( AnchorPoint::CENTER );
+  layer.SetParentOrigin( ParentOrigin::CENTER );
+  layer.SetSize( size );
+  return layer;
+}
+
+void DaliTableView::SetupBackground( Actor addToLayer, const Vector2& size )
+{
+  // Create distance field shape
+  BitmapImage distanceField;
+  Size imageSize( 512, 512 );
+  CreateShapeImage( CIRCLE, imageSize, distanceField );
+
+  // Create layers
+  Actor backgroundAnimLayer0 = CreateBackgroundActor( size );
+  Actor backgroundAnimLayer1 = CreateBackgroundActor( size );
+  Actor backgroundAnimLayer2 = CreateBackgroundActor( size );
+
+  // Add constraints
+  Constraint animConstraint0 = Constraint::New < Vector3 > ( Actor::POSITION,
+      Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_X_PROPERTY_NAME ) ),
+      AnimScrollConstraint( backgroundAnimLayer0.GetCurrentPosition(), 0.75f ) );
+  backgroundAnimLayer0.ApplyConstraint( animConstraint0 );
+
+  Constraint animConstraint1 = Constraint::New < Vector3 > ( Actor::POSITION,
+      Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_X_PROPERTY_NAME ) ),
+      AnimScrollConstraint( backgroundAnimLayer1.GetCurrentPosition(), 0.5f ) );
+  backgroundAnimLayer1.ApplyConstraint( animConstraint1 );
+
+  Constraint animConstraint2 = Constraint::New < Vector3 > ( Actor::POSITION,
+      Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_X_PROPERTY_NAME ) ),
+      AnimScrollConstraint( backgroundAnimLayer2.GetCurrentPosition(), 0.25f ) );
+  backgroundAnimLayer2.ApplyConstraint( animConstraint2 );
+
+  // Background
+  ImageActor layer = Dali::Toolkit::CreateSolidColorActor( BACKGROUND_COLOR );
+  layer.SetAnchorPoint( AnchorPoint::CENTER );
+  layer.SetParentOrigin( ParentOrigin::CENTER );
+  layer.SetSize( size * BACKGROUND_SIZE_SCALE );
+  layer.SetZ( BACKGROUND_Z );
+  layer.SetPositionInheritanceMode( DONT_INHERIT_POSITION );
+
+  addToLayer.Add( layer );
+
+  // Parent the layers
+  addToLayer.Add( backgroundAnimLayer0 );
+  addToLayer.Add( backgroundAnimLayer1 );
+  addToLayer.Add( backgroundAnimLayer2 );
+
+  // Add all the children
+  AddBackgroundActors( backgroundAnimLayer0, NUM_BACKGROUND_IMAGES / 3, distanceField, size );
+  AddBackgroundActors( backgroundAnimLayer1, NUM_BACKGROUND_IMAGES / 3, distanceField, size );
+  AddBackgroundActors( backgroundAnimLayer2, NUM_BACKGROUND_IMAGES / 3, distanceField, size );
+}
+
+void DaliTableView::AddBackgroundActors( Actor layer, int count, BitmapImage distanceField, const Dali::Vector2& size )
+{
+  for( int i = 0; i < count; ++i )
+  {
+    float randSize = Random::Range( 10.0f, 400.0f );
+    Vector4 randColour( 0.0f, Random::Range( 0.0f, 0.75f ), 1.0f, Random::Range( 0.3f, 0.6f ));
+
+    ImageActor dfActor = ImageActor::New( distanceField );
+    mBackgroundActors.push_back( dfActor );
+    dfActor.SetSize( Vector2( randSize, randSize ) );
+    dfActor.SetParentOrigin( ParentOrigin::CENTER );
+
+    Toolkit::DistanceFieldEffect effect = Toolkit::DistanceFieldEffect::New();
+    dfActor.SetShaderEffect( effect );
+    dfActor.SetColor( randColour );
+    effect.SetOutlineParams( Vector2( 0.55f, 0.00f ) );
+    effect.SetSmoothingEdge( 0.5f );
+    layer.Add( dfActor );
+
+    // Setup animation
+    Vector3 actorPos(
+        Random::Range( -size.x * 0.5f * BACKGROUND_SPREAD_SCALE, size.x * 0.5f * BACKGROUND_SPREAD_SCALE ),
+        Random::Range( -size.y * 0.5f - randSize, size.y * 0.5f + randSize ),
+        Random::Range(-1.0f, 0.0f) );
+    dfActor.SetPosition( actorPos );
+    dfActor.SetSortModifier(size.x * 0.7f);
+
+    Constraint movementConstraint = Constraint::New < Vector3 > ( Actor::POSITION,
+        LocalSource( Actor::SIZE ),
+        ParentSource( Actor::SIZE ),
+        ShapeMovementConstraint );
+    dfActor.ApplyConstraint( movementConstraint );
+
+    // Kickoff animation
+    Animation animation = Animation::New( Random::Range( 40.0f, 200.0f ) );
+    KeyFrames keyframes = KeyFrames::New();
+    keyframes.Add( 0.0f, actorPos );
+    Vector3 toPos( actorPos );
+    toPos.y -= ( size.y + randSize );
+    keyframes.Add( 1.0f, toPos );
+    animation.AnimateBetween( Property( dfActor, Actor::POSITION ), keyframes );
+    animation.SetLooping( true );
+    animation.Play();
+    mBackgroundAnimations.push_back( animation );
+  }
+}
+
+void DaliTableView::CreateShapeImage( ShapeType shapeType, const Size& size, BitmapImage& distanceFieldOut )
+{
+  // this bitmap will hold the alpha map for the distance field shader
+  distanceFieldOut = BitmapImage::New( size.width, size.height, Pixel::A8 );
+
+  // Generate bit pattern
+  std::vector< unsigned char > imageDataA8;
+  imageDataA8.reserve( size.width * size.height ); // A8
+
+  switch( shapeType )
+  {
+    case CIRCLE:
+      GenerateCircle( size, imageDataA8 );
+      break;
+    case SQUARE:
+      GenerateSquare( size, imageDataA8 );
+      break;
+    default:
+      break;
+  }
+
+  GenerateDistanceFieldMap( &imageDataA8[ 0 ], size, distanceFieldOut.GetBuffer(), size, 8.0f, size );
+  distanceFieldOut.Update();
+}
+
+void DaliTableView::GenerateSquare( const Size& size, std::vector< unsigned char >& distanceFieldOut )
+{
+  for( int h = 0; h < size.height; ++h )
+  {
+    for( int w = 0; w < size.width; ++w )
+    {
+      distanceFieldOut.push_back( 0xFF );
+    }
+  }
+}
+
+void DaliTableView::GenerateCircle( const Size& size, std::vector< unsigned char >& distanceFieldOut )
+{
+  const float radius = size.width * 0.5f * size.width * 0.5f;
+  Vector2 center( size.width / 2, size.height / 2 );
+
+  for( int h = 0; h < size.height; ++h )
+  {
+    for( int w = 0; w < size.width; ++w )
+    {
+      Vector2 pos( w, h );
+      Vector2 dist = pos - center;
+
+      if( dist.x * dist.x + dist.y * dist.y > radius )
+      {
+        distanceFieldOut.push_back( 0x00 );
+      }
+      else
+      {
+        distanceFieldOut.push_back( 0xFF );
+      }
+    }
+  }
+}
+
+ImageActor DaliTableView::CreateLogo( std::string imagePath )
+{
+  Image image = Image::New( imagePath );
+  image.LoadingFinishedSignal().Connect( this, &DaliTableView::OnLogoLoaded );
+
+  ImageActor logo = ImageActor::New( image );
+
+  logo.SetAnchorPoint( AnchorPoint::CENTER );
+  logo.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
+
+  return logo;
+}
+
+void DaliTableView::OnLogoLoaded( Dali::Image image )
+{
+  mRootActor.SetFixedHeight( 1, image.GetHeight() + LOGO_BOTTOM_PADDING_HEIGHT );
+}
+
+bool DaliTableView::PauseBackgroundAnimation()
+{
+  PauseAnimation();
+
+  return false;
+}
+
+void DaliTableView::PauseAnimation()
+{
+  if( mBackgroundAnimsPlaying )
+  {
+    for( AnimationListIter animIter = mBackgroundAnimations.begin(); animIter != mBackgroundAnimations.end(); ++animIter )
+    {
+      Animation anim = *animIter;
+
+      anim.Pause();
+    }
+
+    mBackgroundAnimsPlaying = false;
+  }
+}
+
+void DaliTableView::PlayAnimation()
+{
+  if ( !mBackgroundAnimsPlaying )
+  {
+    for( AnimationListIter animIter = mBackgroundAnimations.begin(); animIter != mBackgroundAnimations.end(); ++animIter )
+    {
+      Animation anim = *animIter;
+
+      anim.Play();
+    }
+
+    mBackgroundAnimsPlaying = true;
+  }
+
+  mAnimationTimer.SetInterval( BACKGROUND_ANIMATION_DURATION );
+}
+
+Dali::Actor DaliTableView::OnKeyboardPreFocusChange( Dali::Actor current, Dali::Actor proposed, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction )
+{
+  Actor nextFocusActor = proposed;
+
+  if ( !current && !proposed  )
+  {
+    // Set the initial focus to the first tile in the current page should be focused.
+    nextFocusActor = mTableViewList[mScrollView.GetCurrentPage()].GetChildAt(TableView::CellPosition(0, 0));
+  }
+  else if( !proposed || (proposed && proposed == mScrollViewLayer) )
+  {
+    // ScrollView is being focused but nothing in the current page can be focused further
+    // in the given direction. We should work out which page to scroll to next.
+    int currentPage = mScrollView.GetCurrentPage();
+    int newPage = currentPage;
+    if( direction == Dali::Toolkit::Control::Left )
+    {
+      newPage--;
+    }
+    else if( direction == Dali::Toolkit::Control::Right )
+    {
+      newPage++;
+    }
+
+    newPage = std::max(0, std::min(static_cast<int>(mScrollRulerX->GetTotalPages() - 1), newPage));
+    if( newPage == currentPage )
+    {
+      if( direction == Dali::Toolkit::Control::Left )
+      {
+        newPage = mScrollRulerX->GetTotalPages() - 1;
+      } else if( direction == Dali::Toolkit::Control::Right )
+      {
+        newPage = 0;
+      }
+    }
+
+    // Scroll to the page in the given direction
+    mScrollView.ScrollTo(newPage);
+
+    if( direction == Dali::Toolkit::Control::Left )
+    {
+      // Work out the cell position for the last tile
+      int remainingExamples = mExampleList.size() - newPage * EXAMPLES_PER_PAGE;
+      int rowPos = (remainingExamples >= EXAMPLES_PER_PAGE) ? ROWS_PER_PAGE - 1 : ( (remainingExamples % EXAMPLES_PER_PAGE + EXAMPLES_PER_ROW) / EXAMPLES_PER_ROW - 1 );
+      int colPos = remainingExamples >= EXAMPLES_PER_PAGE ? EXAMPLES_PER_ROW - 1 : ( remainingExamples % EXAMPLES_PER_PAGE - rowPos * EXAMPLES_PER_ROW - 1 );
+
+      // Move the focus to the last tile in the new page.
+      nextFocusActor = mTableViewList[newPage].GetChildAt(TableView::CellPosition(rowPos, colPos));
+    }
+    else
+    {
+      // Move the focus to the first tile in the new page.
+      nextFocusActor = mTableViewList[newPage].GetChildAt(TableView::CellPosition(0, 0));
+    }
+  }
+
+  return nextFocusActor;
+}
+
+void DaliTableView::OnFocusedActorActivated( Dali::Actor activatedActor )
+{
+  if(activatedActor)
+  {
+    mPressedActor = activatedActor;
+
+    // Activate the current focused actor;
+    TouchEvent touchEventUp;
+    touchEventUp.points.push_back( TouchPoint ( 0, TouchPoint::Up, 0.0f, 0.0f ) );
+    OnTilePressed(mPressedActor, touchEventUp);
+  }
+}
diff --git a/demo/dali-table-view.h b/demo/dali-table-view.h
new file mode 100644 (file)
index 0000000..5eefb07
--- /dev/null
@@ -0,0 +1,414 @@
+#ifndef __DALI_DEMO_H__
+#define __DALI_DEMO_H__
+
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+
+class Example;
+
+typedef std::vector<Example> ExampleList;
+typedef std::map<std::string,Example> ExampleMap;
+typedef ExampleList::iterator ExampleListIter;
+typedef ExampleList::const_iterator ExampleListConstIter;
+typedef ExampleMap::iterator ExampleMapIter;
+typedef ExampleMap::const_iterator ExampleMapConstIter;
+
+typedef std::vector<Dali::Toolkit::TableView> TableViewList;
+typedef TableViewList::iterator TableViewListIter;
+typedef TableViewList::const_iterator TableViewListConstIter;
+
+typedef std::vector<Dali::ImageActor> ImageActorList;
+typedef ImageActorList::iterator ImageActorListIter;
+typedef ImageActorList::const_iterator ImageActorListConstIter;
+
+typedef std::vector<Dali::Animation> AnimationList;
+typedef AnimationList::iterator AnimationListIter;
+typedef AnimationList::const_iterator AnimationListConstIter;
+
+
+/**
+ * Example information
+ *
+ * Represents a single Example.
+ */
+struct Example
+{
+  // Constructors
+
+  /**
+   * @param[in] name unique name of example
+   * @param[in] title The caption for the example to appear on a tile button.
+   */
+  Example(std::string name, std::string title)
+  : name(name),
+    title(title)
+  {
+  }
+
+  Example()
+  {
+  }
+
+  // Data
+
+  std::string name;                       ///< unique name of example
+  std::string title;                      ///< title (caption) of example to appear on tile button.
+};
+
+/**
+ * Provide a style for the view and its tool bar.
+ */
+struct ViewStyle
+{
+  ViewStyle( float toolBarButtonPercentage, float toolBarTitlePercentage, float dpi, float toolBarHeight, float toolBarPadding )
+  : mToolBarButtonPercentage( toolBarButtonPercentage ),
+    mToolBarTitlePercentage( toolBarTitlePercentage ),
+    mDpi( dpi ),
+    mToolBarHeight( toolBarHeight ),
+    mToolBarPadding( toolBarPadding )
+  {}
+
+  float mToolBarButtonPercentage; ///< The tool bar button width is a percentage of the tool bar width.
+  float mToolBarTitlePercentage;  ///< The tool bar title width is a percentage of the tool bar width.
+  float mDpi;                     ///< This style is indented for the given dpi.
+  float mToolBarHeight;           ///< The tool bar height for the given dpi above.
+  float mToolBarPadding;          ///< The tool bar padding between controls for the given dpi above.
+};
+
+const ViewStyle DEFAULT_VIEW_STYLE( 0.1f, 0.7f, 315.f, 80.f, 4.f );
+
+/**
+ * Dali-Demo instance
+ */
+class DaliTableView : public Dali::ConnectionTracker
+{
+public:
+
+  DaliTableView(Dali::Application& application);
+  ~DaliTableView();
+
+public:
+
+  /**
+   * Adds an Example to our demo showcase
+   *
+   * @param[in] example The Example description.
+   *
+   * @note Should be called before the Application MainLoop is started.
+   */
+  void AddExample(Example example);
+
+  /**
+   * Sets the background image PATH.
+   *
+   * @param[in] imagePath The file path to the image to use as the background.
+   *
+   * @note Should be called before the Application MainLoop is started.
+   */
+  void SetBackgroundPath( std::string imagePath );
+
+  /**
+   * Sorts the example list alphabetically by Title if parameter is true.
+   *
+   * @param[in] sortAlphabetically If true, example list is sorted alphabetically.
+   *
+   * @note Should be called before the Application MainLoop is started.
+   * @note By default the examples are NOT sorted alphabetically by Title.
+   */
+  void SortAlphabetically( bool sortAlphabetically );
+
+private: // Application callbacks & implementation
+
+  /**
+   * Shape enum for create function
+   */
+  enum ShapeType
+  {
+    CIRCLE,
+    SQUARE
+  };
+
+  /**
+   * Initialize application.
+   *
+   * @param[in] app Application instance
+   */
+  void Initialize( Dali::Application& app );
+
+  /**
+   * Populates the contents (ScrollView) with all the
+   * Examples that have been Added using the AddExample(...)
+   * call
+   */
+  void Populate();
+
+  /**
+   * Rotate callback from the device.
+   *
+   * @param[in] orientation that device notified.
+   */
+  void OrientationChanged( Dali::Orientation orientation );
+
+  /**
+   * Rotates RootActor orientation to that specified.
+   *
+   * @param[in] degrees The requested angle.
+   */
+  void Rotate( unsigned int degrees );
+
+  /**
+   * Creates a tile for the main menu and toolbar.
+   *
+   * @param[in] name The unique name for this Tile
+   * @param[in] title The text caption that appears on the Tile
+   * @param[in] parentSize Tile's parent size.
+   * @param[in] addBackground Whether to add a background graphic to the tile or not
+   *
+   * @return The Actor for the created tile.
+   */
+  Dali::Actor CreateTile( const std::string& name, const std::string& title, const Dali::Size& parentSize, bool addBackground );
+
+  /**
+   * Create a stencil image
+   *
+   * @return The stencil image
+   */
+  Dali::ImageActor NewStencilImage();
+
+  // Signal handlers
+
+  /**
+   * Signal emitted when any tile has been pressed
+   *
+   * @param[in] actor The Actor representing this tile.
+   * @param[in] event The TouchEvent
+   *
+   * @return Consume flag
+   */
+  bool OnTilePressed( Dali::Actor actor, const Dali::TouchEvent& event );
+
+  /**
+   * Signal emitted when the pressed animation has completed.
+   *
+   * @param[in] source The animation source.
+   */
+  void OnPressedAnimationFinished(Dali::Animation& source);
+
+  /**
+   * Signal emitted when the button has been clicked
+   *
+   * @param[in] button The Button that is clicked.
+   *
+   * @return Consume flag
+   */
+  bool OnButtonClicked( Dali::Toolkit::Button& button );
+
+  /**
+   * Signal emitted when scrolling has started.
+   *
+   * @param[in] position The current position of the scroll contents.
+   */
+  void OnScrollStart(const Dali::Vector3& position);
+
+  /**
+   * Signal emitted when scrolling has completed.
+   *
+   * @param[in] position The current position of the scroll contents.
+   */
+  void OnScrollComplete(const Dali::Vector3& position);
+
+  /**
+   * Signal emitted when any Sensitive Actor has been touched
+   * (other than those touches consumed by OnTilePressed)
+   *
+   * @param[in] actor The Actor touched.
+   * @param[in] event The TouchEvent
+   *
+   * @return Consume flag
+   */
+  bool OnScrollTouched( Dali::Actor actor, const Dali::TouchEvent& event );
+
+  /**
+   * Setup the effect on the scroll view
+   */
+  void ApplyScrollViewEffect();
+
+  /**
+   * Setup the inner cube effect
+   */
+  void SetupInnerPageCubeEffect();
+
+  /**
+   * Apply the scroll view effect to a page
+   */
+  void ApplyEffectToPage(Dali::Actor page, const Dali::Vector3& tableRelativeSize);
+
+  /**
+   * Apply a custom effect scroll view effect to a page
+   */
+  void ApplyCustomEffectToPage(Dali::Actor page);
+
+  /**
+   * Apply a shader effect to a table tile
+   */
+  void ApplyEffectToTile(Dali::Actor tile);
+
+  /**
+   * Apply effect to the content of a tile
+   */
+  void ApplyEffectToTileContent(Dali::Actor tileContent);
+
+  /**
+   * Create a toolbar
+   */
+  void CreateToolbar(Dali::Toolkit::TableView root, const std::string& title, const std::string& toolbarImagePath, const ViewStyle& style = DEFAULT_VIEW_STYLE);
+
+  /**
+   * Key event handler
+   */
+  void OnKeyEvent( const Dali::KeyEvent& event );
+
+  /**
+   * Create a depth field background
+   *
+   * @param[in] addToLayer Add the graphics to this layer
+   */
+  void SetupBackground( Dali::Actor addToLayer, const Dali::Vector2& size );
+
+  /**
+   * Create background actors for the given layer
+   *
+   * @param[in] layer The layer to add the actors to
+   * @param[in] count The number of actors to generate
+   * @param[in] distanceField The distance field bitmap to use
+   * @param[in] size The size of the actor
+   */
+  void AddBackgroundActors( Dali::Actor layer, int count, Dali::BitmapImage distanceField, const Dali::Vector2& size );
+
+  /**
+   * Create a bitmap with the specified shape and also output a distance field
+   *
+   * @param[in] shapeType The shape to generate
+   * @param[in] size The size of the bitmap to create
+   * @param[out] imageOut The return bitmap
+   * @param[out] distanceFieldOut The return depth field alpha map
+   */
+  void CreateShapeImage( ShapeType shapeType, const Dali::Size& size, Dali::BitmapImage& distanceFieldOut );
+
+  /**
+   * Generate a square bit pattern and depth field
+   *
+   * @param[in] size The size of the bitmap to create
+   * @param[out] imageOut The return bitmap
+   * @param[out] distanceFieldOut The return depth field alpha map
+   */
+  void GenerateSquare( const Dali::Size& size, std::vector<unsigned char>& distanceFieldOut );
+
+  /**
+   * Generate a circle bit pattern and depth field
+   *
+   * @param[in] size The size of the bitmap to create
+   * @param[out] imageOut The return bitmap
+   * @param[out] distanceFieldOut The return depth field alpha map
+   */
+  void GenerateCircle( const Dali::Size& size, std::vector<unsigned char>& distanceFieldOut );
+
+  /**
+   * Creates the logo.
+   *
+   * @param[in] imagePath The path to the image file to load
+   *
+   * @return The created image actor
+   */
+  Dali::ImageActor CreateLogo( std::string imagePath );
+
+  /**
+   * Callback for when the logo image is loaded
+   *
+   * @param[in] image The loaded logo image
+   */
+  void OnLogoLoaded( Dali::Image image );
+
+  /**
+   * Timer handler for ending background animation
+   *
+   * @return Return value for timer handler
+   */
+  bool PauseBackgroundAnimation();
+
+  /**
+   * Pause all animations
+   */
+  void PauseAnimation();
+
+  /**
+   * Resume all animations
+   */
+  void PlayAnimation();
+
+  /**
+   * Callback when the keyboard focus is going to be changed.
+   *
+   * @param[in] current The current focused actor
+   * @param[in] proposed The actor proposed by the keyboard focus manager to move the focus to
+   * @param[in] direction The direction to move the focus
+   * @return The actor to move the keyboard focus to.
+   */
+  Dali::Actor OnKeyboardPreFocusChange( Dali::Actor current, Dali::Actor proposed, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction );
+
+  /**
+   * Callback when the keyboard focused actor is activated.
+   *
+   * @param[in] activatedActor The activated actor
+   */
+  void OnFocusedActorActivated( Dali::Actor activatedActor );
+
+private:
+
+  Dali::Application&              mApplication;         ///< Application instance.
+  Dali::Layer                     mBackgroundLayer;     ///< Background resides on a separate layer.
+  Dali::Toolkit::TableView        mRootActor;           ///< All content (excluding background is anchored to this Actor)
+  Dali::Animation                 mRotateAnimation;     ///< Animation to rotate and resize mRootActor.
+  Dali::ImageActor                mBackground;          ///< Background's static image.
+  Dali::ImageActor                mLogo;                ///< Logo's static image.
+  Dali::Animation                 mPressedAnimation;    ///< Button press scaling animation.
+  Dali::Layer                     mScrollViewLayer;     ///< ScrollView resides on a separate layer.
+  Dali::Toolkit::ScrollView       mScrollView;          ///< ScrollView container (for all Examples)
+  Dali::Toolkit::ScrollViewEffect mScrollViewEffect;    ///< Effect to be applied to the scroll view
+  bool                            mScrolling;           ///< Flag indicating whether view is currently being scrolled
+  Dali::Toolkit::RulerPtr         mScrollRulerX;        ///< ScrollView X (horizontal) ruler
+  Dali::Toolkit::RulerPtr         mScrollRulerY;        ///< ScrollView Y (vertical) ruler
+  Dali::Toolkit::TableView        mButtons;             ///< Navigation buttons
+  ExampleList                     mExampleList;         ///< List of examples.
+  ExampleMap                      mExampleMap;          ///< Map LUT for examples.
+  TableViewList                   mTableViewList;       ///< List of tableviews
+  Dali::Actor                     mPressedActor;        ///< The currently pressed actor.
+  int                             mTotalPages;          ///< Total pages within scrollview.
+  std::string                     mBackgroundImagePath; ///< The path to the background image.
+  bool                            mSortAlphabetically;  ///< Sort examples alphabetically.
+
+  Dali::ActorContainer            mTableViewImages;     ///< Offscreen render of tableview
+  Dali::ActorContainer            mBackgroundActors;    ///< List of background actors used in the effect
+
+  AnimationList                   mBackgroundAnimations;///< List of background bubble animations
+  Dali::Timer                     mAnimationTimer;      ///< Timer used to turn off animation after a specific time period
+  bool                            mBackgroundAnimsPlaying; ///< Are background animations playing
+};
+
+#endif // __DALI_DEMO_H__
diff --git a/demo/file.list b/demo/file.list
new file mode 100644 (file)
index 0000000..2c9f10f
--- /dev/null
@@ -0,0 +1,17 @@
+# Add files to build with demo here
+
+common_src_files = \
+    $(demo_src_dir)/dali-table-view.cpp
+
+demo_src_files = \
+    $(common_src_files) \
+    $(demo_src_dir)/dali-demo.cpp
+
+# Add files to install here
+
+demo_image_files = \
+    $(demo_src_dir)/images/*.png \
+    $(demo_src_dir)/images/*.jpg
+
+demo_model_files = \
+    $(demo_src_dir)/models/*
diff --git a/demo/images/background-1.jpg b/demo/images/background-1.jpg
new file mode 100644 (file)
index 0000000..a9fb696
Binary files /dev/null and b/demo/images/background-1.jpg differ
diff --git a/demo/images/background-2.jpg b/demo/images/background-2.jpg
new file mode 100644 (file)
index 0000000..ab738d6
Binary files /dev/null and b/demo/images/background-2.jpg differ
diff --git a/demo/images/background-3.jpg b/demo/images/background-3.jpg
new file mode 100644 (file)
index 0000000..247366b
Binary files /dev/null and b/demo/images/background-3.jpg differ
diff --git a/demo/images/background-4.jpg b/demo/images/background-4.jpg
new file mode 100644 (file)
index 0000000..fb4bea6
Binary files /dev/null and b/demo/images/background-4.jpg differ
diff --git a/demo/images/background-default.png b/demo/images/background-default.png
new file mode 100644 (file)
index 0000000..0379f75
Binary files /dev/null and b/demo/images/background-default.png differ
diff --git a/demo/images/background-magnifier.jpg b/demo/images/background-magnifier.jpg
new file mode 100644 (file)
index 0000000..ccdd031
Binary files /dev/null and b/demo/images/background-magnifier.jpg differ
diff --git a/demo/images/book-landscape-cover-back.jpg b/demo/images/book-landscape-cover-back.jpg
new file mode 100755 (executable)
index 0000000..f926882
Binary files /dev/null and b/demo/images/book-landscape-cover-back.jpg differ
diff --git a/demo/images/book-landscape-cover.jpg b/demo/images/book-landscape-cover.jpg
new file mode 100755 (executable)
index 0000000..7b1b4ad
Binary files /dev/null and b/demo/images/book-landscape-cover.jpg differ
diff --git a/demo/images/book-landscape-p1.jpg b/demo/images/book-landscape-p1.jpg
new file mode 100644 (file)
index 0000000..1e4745d
Binary files /dev/null and b/demo/images/book-landscape-p1.jpg differ
diff --git a/demo/images/book-landscape-p2.jpg b/demo/images/book-landscape-p2.jpg
new file mode 100644 (file)
index 0000000..43e4c00
Binary files /dev/null and b/demo/images/book-landscape-p2.jpg differ
diff --git a/demo/images/book-landscape-p3.jpg b/demo/images/book-landscape-p3.jpg
new file mode 100644 (file)
index 0000000..c882bfe
Binary files /dev/null and b/demo/images/book-landscape-p3.jpg differ
diff --git a/demo/images/book-landscape-p4.jpg b/demo/images/book-landscape-p4.jpg
new file mode 100644 (file)
index 0000000..719471d
Binary files /dev/null and b/demo/images/book-landscape-p4.jpg differ
diff --git a/demo/images/book-landscape-p5.jpg b/demo/images/book-landscape-p5.jpg
new file mode 100644 (file)
index 0000000..4863335
Binary files /dev/null and b/demo/images/book-landscape-p5.jpg differ
diff --git a/demo/images/book-landscape-p6.jpg b/demo/images/book-landscape-p6.jpg
new file mode 100644 (file)
index 0000000..af627d2
Binary files /dev/null and b/demo/images/book-landscape-p6.jpg differ
diff --git a/demo/images/book-landscape-p7.jpg b/demo/images/book-landscape-p7.jpg
new file mode 100644 (file)
index 0000000..ea16df1
Binary files /dev/null and b/demo/images/book-landscape-p7.jpg differ
diff --git a/demo/images/book-landscape-p8.jpg b/demo/images/book-landscape-p8.jpg
new file mode 100644 (file)
index 0000000..1fee388
Binary files /dev/null and b/demo/images/book-landscape-p8.jpg differ
diff --git a/demo/images/book-portrait-cover.jpg b/demo/images/book-portrait-cover.jpg
new file mode 100755 (executable)
index 0000000..9b3724a
Binary files /dev/null and b/demo/images/book-portrait-cover.jpg differ
diff --git a/demo/images/book-portrait-p1.jpg b/demo/images/book-portrait-p1.jpg
new file mode 100644 (file)
index 0000000..ebb14b9
Binary files /dev/null and b/demo/images/book-portrait-p1.jpg differ
diff --git a/demo/images/book-portrait-p2.jpg b/demo/images/book-portrait-p2.jpg
new file mode 100644 (file)
index 0000000..ec382d8
Binary files /dev/null and b/demo/images/book-portrait-p2.jpg differ
diff --git a/demo/images/book-portrait-p3.jpg b/demo/images/book-portrait-p3.jpg
new file mode 100644 (file)
index 0000000..250ceaa
Binary files /dev/null and b/demo/images/book-portrait-p3.jpg differ
diff --git a/demo/images/book-portrait-p4.jpg b/demo/images/book-portrait-p4.jpg
new file mode 100644 (file)
index 0000000..0206686
Binary files /dev/null and b/demo/images/book-portrait-p4.jpg differ
diff --git a/demo/images/book-portrait-p5.jpg b/demo/images/book-portrait-p5.jpg
new file mode 100644 (file)
index 0000000..3d04f33
Binary files /dev/null and b/demo/images/book-portrait-p5.jpg differ
diff --git a/demo/images/book-portrait-p6.jpg b/demo/images/book-portrait-p6.jpg
new file mode 100644 (file)
index 0000000..97f1722
Binary files /dev/null and b/demo/images/book-portrait-p6.jpg differ
diff --git a/demo/images/book-portrait-p7.jpg b/demo/images/book-portrait-p7.jpg
new file mode 100644 (file)
index 0000000..0e53282
Binary files /dev/null and b/demo/images/book-portrait-p7.jpg differ
diff --git a/demo/images/book-portrait-p8.jpg b/demo/images/book-portrait-p8.jpg
new file mode 100644 (file)
index 0000000..1bbf39d
Binary files /dev/null and b/demo/images/book-portrait-p8.jpg differ
diff --git a/demo/images/brick-wall.jpg b/demo/images/brick-wall.jpg
new file mode 100644 (file)
index 0000000..ac313b9
Binary files /dev/null and b/demo/images/brick-wall.jpg differ
diff --git a/demo/images/bubble-effect-texture-border.png b/demo/images/bubble-effect-texture-border.png
new file mode 100644 (file)
index 0000000..ff956c2
Binary files /dev/null and b/demo/images/bubble-effect-texture-border.png differ
diff --git a/demo/images/button-background.png b/demo/images/button-background.png
new file mode 100644 (file)
index 0000000..5df75bd
Binary files /dev/null and b/demo/images/button-background.png differ
diff --git a/demo/images/cluster-background.png b/demo/images/cluster-background.png
new file mode 100644 (file)
index 0000000..125c3e2
Binary files /dev/null and b/demo/images/cluster-background.png differ
diff --git a/demo/images/cluster-image-frame.png b/demo/images/cluster-image-frame.png
new file mode 100644 (file)
index 0000000..aa4559d
Binary files /dev/null and b/demo/images/cluster-image-frame.png differ
diff --git a/demo/images/cluster-image-shadow.png b/demo/images/cluster-image-shadow.png
new file mode 100644 (file)
index 0000000..fac4a51
Binary files /dev/null and b/demo/images/cluster-image-shadow.png differ
diff --git a/demo/images/com.samsung.dali-demo.png b/demo/images/com.samsung.dali-demo.png
new file mode 100644 (file)
index 0000000..4e67bb7
Binary files /dev/null and b/demo/images/com.samsung.dali-demo.png differ
diff --git a/demo/images/dali-logo-large.png b/demo/images/dali-logo-large.png
new file mode 100644 (file)
index 0000000..3b31a33
Binary files /dev/null and b/demo/images/dali-logo-large.png differ
diff --git a/demo/images/dali-logo-small.png b/demo/images/dali-logo-small.png
new file mode 100644 (file)
index 0000000..bfe3ce5
Binary files /dev/null and b/demo/images/dali-logo-small.png differ
diff --git a/demo/images/gallery-large-1.jpg b/demo/images/gallery-large-1.jpg
new file mode 100644 (file)
index 0000000..cfd1689
Binary files /dev/null and b/demo/images/gallery-large-1.jpg differ
diff --git a/demo/images/gallery-large-10.jpg b/demo/images/gallery-large-10.jpg
new file mode 100644 (file)
index 0000000..3c552e6
Binary files /dev/null and b/demo/images/gallery-large-10.jpg differ
diff --git a/demo/images/gallery-large-11.jpg b/demo/images/gallery-large-11.jpg
new file mode 100644 (file)
index 0000000..155803e
Binary files /dev/null and b/demo/images/gallery-large-11.jpg differ
diff --git a/demo/images/gallery-large-12.jpg b/demo/images/gallery-large-12.jpg
new file mode 100644 (file)
index 0000000..de29500
Binary files /dev/null and b/demo/images/gallery-large-12.jpg differ
diff --git a/demo/images/gallery-large-13.jpg b/demo/images/gallery-large-13.jpg
new file mode 100644 (file)
index 0000000..9d0aa5a
Binary files /dev/null and b/demo/images/gallery-large-13.jpg differ
diff --git a/demo/images/gallery-large-14.jpg b/demo/images/gallery-large-14.jpg
new file mode 100644 (file)
index 0000000..aa987f6
Binary files /dev/null and b/demo/images/gallery-large-14.jpg differ
diff --git a/demo/images/gallery-large-15.jpg b/demo/images/gallery-large-15.jpg
new file mode 100644 (file)
index 0000000..3f8b093
Binary files /dev/null and b/demo/images/gallery-large-15.jpg differ
diff --git a/demo/images/gallery-large-16.jpg b/demo/images/gallery-large-16.jpg
new file mode 100644 (file)
index 0000000..950ad65
Binary files /dev/null and b/demo/images/gallery-large-16.jpg differ
diff --git a/demo/images/gallery-large-17.jpg b/demo/images/gallery-large-17.jpg
new file mode 100644 (file)
index 0000000..3e23e4f
Binary files /dev/null and b/demo/images/gallery-large-17.jpg differ
diff --git a/demo/images/gallery-large-18.jpg b/demo/images/gallery-large-18.jpg
new file mode 100644 (file)
index 0000000..d9b922f
Binary files /dev/null and b/demo/images/gallery-large-18.jpg differ
diff --git a/demo/images/gallery-large-19.jpg b/demo/images/gallery-large-19.jpg
new file mode 100644 (file)
index 0000000..740cd72
Binary files /dev/null and b/demo/images/gallery-large-19.jpg differ
diff --git a/demo/images/gallery-large-2.jpg b/demo/images/gallery-large-2.jpg
new file mode 100644 (file)
index 0000000..a7b96e2
Binary files /dev/null and b/demo/images/gallery-large-2.jpg differ
diff --git a/demo/images/gallery-large-20.jpg b/demo/images/gallery-large-20.jpg
new file mode 100644 (file)
index 0000000..50b999f
Binary files /dev/null and b/demo/images/gallery-large-20.jpg differ
diff --git a/demo/images/gallery-large-21.jpg b/demo/images/gallery-large-21.jpg
new file mode 100644 (file)
index 0000000..bc5eefc
Binary files /dev/null and b/demo/images/gallery-large-21.jpg differ
diff --git a/demo/images/gallery-large-3.jpg b/demo/images/gallery-large-3.jpg
new file mode 100644 (file)
index 0000000..2d820e3
Binary files /dev/null and b/demo/images/gallery-large-3.jpg differ
diff --git a/demo/images/gallery-large-4.jpg b/demo/images/gallery-large-4.jpg
new file mode 100644 (file)
index 0000000..265a97e
Binary files /dev/null and b/demo/images/gallery-large-4.jpg differ
diff --git a/demo/images/gallery-large-5.jpg b/demo/images/gallery-large-5.jpg
new file mode 100644 (file)
index 0000000..64e4e67
Binary files /dev/null and b/demo/images/gallery-large-5.jpg differ
diff --git a/demo/images/gallery-large-6.jpg b/demo/images/gallery-large-6.jpg
new file mode 100644 (file)
index 0000000..3b17876
Binary files /dev/null and b/demo/images/gallery-large-6.jpg differ
diff --git a/demo/images/gallery-large-7.jpg b/demo/images/gallery-large-7.jpg
new file mode 100644 (file)
index 0000000..051ef12
Binary files /dev/null and b/demo/images/gallery-large-7.jpg differ
diff --git a/demo/images/gallery-large-8.jpg b/demo/images/gallery-large-8.jpg
new file mode 100644 (file)
index 0000000..dcc00d0
Binary files /dev/null and b/demo/images/gallery-large-8.jpg differ
diff --git a/demo/images/gallery-large-9.jpg b/demo/images/gallery-large-9.jpg
new file mode 100644 (file)
index 0000000..bca2e0d
Binary files /dev/null and b/demo/images/gallery-large-9.jpg differ
diff --git a/demo/images/gallery-medium-1.jpg b/demo/images/gallery-medium-1.jpg
new file mode 100644 (file)
index 0000000..d1cbf8e
Binary files /dev/null and b/demo/images/gallery-medium-1.jpg differ
diff --git a/demo/images/gallery-medium-10.jpg b/demo/images/gallery-medium-10.jpg
new file mode 100644 (file)
index 0000000..a1b108a
Binary files /dev/null and b/demo/images/gallery-medium-10.jpg differ
diff --git a/demo/images/gallery-medium-11.jpg b/demo/images/gallery-medium-11.jpg
new file mode 100644 (file)
index 0000000..73f9fc5
Binary files /dev/null and b/demo/images/gallery-medium-11.jpg differ
diff --git a/demo/images/gallery-medium-12.jpg b/demo/images/gallery-medium-12.jpg
new file mode 100644 (file)
index 0000000..5752dab
Binary files /dev/null and b/demo/images/gallery-medium-12.jpg differ
diff --git a/demo/images/gallery-medium-13.jpg b/demo/images/gallery-medium-13.jpg
new file mode 100644 (file)
index 0000000..8a7c2b2
Binary files /dev/null and b/demo/images/gallery-medium-13.jpg differ
diff --git a/demo/images/gallery-medium-14.jpg b/demo/images/gallery-medium-14.jpg
new file mode 100644 (file)
index 0000000..ba46af8
Binary files /dev/null and b/demo/images/gallery-medium-14.jpg differ
diff --git a/demo/images/gallery-medium-15.jpg b/demo/images/gallery-medium-15.jpg
new file mode 100644 (file)
index 0000000..b8b088b
Binary files /dev/null and b/demo/images/gallery-medium-15.jpg differ
diff --git a/demo/images/gallery-medium-16.jpg b/demo/images/gallery-medium-16.jpg
new file mode 100644 (file)
index 0000000..58a6a13
Binary files /dev/null and b/demo/images/gallery-medium-16.jpg differ
diff --git a/demo/images/gallery-medium-17.jpg b/demo/images/gallery-medium-17.jpg
new file mode 100644 (file)
index 0000000..52ba7e0
Binary files /dev/null and b/demo/images/gallery-medium-17.jpg differ
diff --git a/demo/images/gallery-medium-18.jpg b/demo/images/gallery-medium-18.jpg
new file mode 100644 (file)
index 0000000..9c23993
Binary files /dev/null and b/demo/images/gallery-medium-18.jpg differ
diff --git a/demo/images/gallery-medium-19.jpg b/demo/images/gallery-medium-19.jpg
new file mode 100644 (file)
index 0000000..db438eb
Binary files /dev/null and b/demo/images/gallery-medium-19.jpg differ
diff --git a/demo/images/gallery-medium-2.jpg b/demo/images/gallery-medium-2.jpg
new file mode 100644 (file)
index 0000000..65ad307
Binary files /dev/null and b/demo/images/gallery-medium-2.jpg differ
diff --git a/demo/images/gallery-medium-20.jpg b/demo/images/gallery-medium-20.jpg
new file mode 100644 (file)
index 0000000..c983e7c
Binary files /dev/null and b/demo/images/gallery-medium-20.jpg differ
diff --git a/demo/images/gallery-medium-21.jpg b/demo/images/gallery-medium-21.jpg
new file mode 100644 (file)
index 0000000..702e372
Binary files /dev/null and b/demo/images/gallery-medium-21.jpg differ
diff --git a/demo/images/gallery-medium-22.jpg b/demo/images/gallery-medium-22.jpg
new file mode 100644 (file)
index 0000000..5514989
Binary files /dev/null and b/demo/images/gallery-medium-22.jpg differ
diff --git a/demo/images/gallery-medium-23.jpg b/demo/images/gallery-medium-23.jpg
new file mode 100644 (file)
index 0000000..eb5b614
Binary files /dev/null and b/demo/images/gallery-medium-23.jpg differ
diff --git a/demo/images/gallery-medium-24.jpg b/demo/images/gallery-medium-24.jpg
new file mode 100644 (file)
index 0000000..640a8e2
Binary files /dev/null and b/demo/images/gallery-medium-24.jpg differ
diff --git a/demo/images/gallery-medium-25.jpg b/demo/images/gallery-medium-25.jpg
new file mode 100644 (file)
index 0000000..84d9164
Binary files /dev/null and b/demo/images/gallery-medium-25.jpg differ
diff --git a/demo/images/gallery-medium-26.jpg b/demo/images/gallery-medium-26.jpg
new file mode 100644 (file)
index 0000000..eacb2d8
Binary files /dev/null and b/demo/images/gallery-medium-26.jpg differ
diff --git a/demo/images/gallery-medium-27.jpg b/demo/images/gallery-medium-27.jpg
new file mode 100644 (file)
index 0000000..945040f
Binary files /dev/null and b/demo/images/gallery-medium-27.jpg differ
diff --git a/demo/images/gallery-medium-28.jpg b/demo/images/gallery-medium-28.jpg
new file mode 100644 (file)
index 0000000..4608fda
Binary files /dev/null and b/demo/images/gallery-medium-28.jpg differ
diff --git a/demo/images/gallery-medium-29.jpg b/demo/images/gallery-medium-29.jpg
new file mode 100644 (file)
index 0000000..d3df069
Binary files /dev/null and b/demo/images/gallery-medium-29.jpg differ
diff --git a/demo/images/gallery-medium-3.jpg b/demo/images/gallery-medium-3.jpg
new file mode 100644 (file)
index 0000000..953d5b7
Binary files /dev/null and b/demo/images/gallery-medium-3.jpg differ
diff --git a/demo/images/gallery-medium-30.jpg b/demo/images/gallery-medium-30.jpg
new file mode 100644 (file)
index 0000000..dc865d3
Binary files /dev/null and b/demo/images/gallery-medium-30.jpg differ
diff --git a/demo/images/gallery-medium-31.jpg b/demo/images/gallery-medium-31.jpg
new file mode 100644 (file)
index 0000000..8fea735
Binary files /dev/null and b/demo/images/gallery-medium-31.jpg differ
diff --git a/demo/images/gallery-medium-32.jpg b/demo/images/gallery-medium-32.jpg
new file mode 100644 (file)
index 0000000..08fdc73
Binary files /dev/null and b/demo/images/gallery-medium-32.jpg differ
diff --git a/demo/images/gallery-medium-33.jpg b/demo/images/gallery-medium-33.jpg
new file mode 100644 (file)
index 0000000..a0c0396
Binary files /dev/null and b/demo/images/gallery-medium-33.jpg differ
diff --git a/demo/images/gallery-medium-34.jpg b/demo/images/gallery-medium-34.jpg
new file mode 100644 (file)
index 0000000..77037a4
Binary files /dev/null and b/demo/images/gallery-medium-34.jpg differ
diff --git a/demo/images/gallery-medium-35.jpg b/demo/images/gallery-medium-35.jpg
new file mode 100644 (file)
index 0000000..5b2c9df
Binary files /dev/null and b/demo/images/gallery-medium-35.jpg differ
diff --git a/demo/images/gallery-medium-36.jpg b/demo/images/gallery-medium-36.jpg
new file mode 100644 (file)
index 0000000..8426f18
Binary files /dev/null and b/demo/images/gallery-medium-36.jpg differ
diff --git a/demo/images/gallery-medium-37.jpg b/demo/images/gallery-medium-37.jpg
new file mode 100644 (file)
index 0000000..c01ca0a
Binary files /dev/null and b/demo/images/gallery-medium-37.jpg differ
diff --git a/demo/images/gallery-medium-38.jpg b/demo/images/gallery-medium-38.jpg
new file mode 100644 (file)
index 0000000..521000d
Binary files /dev/null and b/demo/images/gallery-medium-38.jpg differ
diff --git a/demo/images/gallery-medium-39.jpg b/demo/images/gallery-medium-39.jpg
new file mode 100644 (file)
index 0000000..566cc55
Binary files /dev/null and b/demo/images/gallery-medium-39.jpg differ
diff --git a/demo/images/gallery-medium-4.jpg b/demo/images/gallery-medium-4.jpg
new file mode 100644 (file)
index 0000000..adc6f2d
Binary files /dev/null and b/demo/images/gallery-medium-4.jpg differ
diff --git a/demo/images/gallery-medium-40.jpg b/demo/images/gallery-medium-40.jpg
new file mode 100644 (file)
index 0000000..c64389a
Binary files /dev/null and b/demo/images/gallery-medium-40.jpg differ
diff --git a/demo/images/gallery-medium-41.jpg b/demo/images/gallery-medium-41.jpg
new file mode 100644 (file)
index 0000000..a13ba1b
Binary files /dev/null and b/demo/images/gallery-medium-41.jpg differ
diff --git a/demo/images/gallery-medium-42.jpg b/demo/images/gallery-medium-42.jpg
new file mode 100644 (file)
index 0000000..9de5ed4
Binary files /dev/null and b/demo/images/gallery-medium-42.jpg differ
diff --git a/demo/images/gallery-medium-43.jpg b/demo/images/gallery-medium-43.jpg
new file mode 100644 (file)
index 0000000..09f5f0a
Binary files /dev/null and b/demo/images/gallery-medium-43.jpg differ
diff --git a/demo/images/gallery-medium-44.jpg b/demo/images/gallery-medium-44.jpg
new file mode 100644 (file)
index 0000000..1ea68ff
Binary files /dev/null and b/demo/images/gallery-medium-44.jpg differ
diff --git a/demo/images/gallery-medium-45.jpg b/demo/images/gallery-medium-45.jpg
new file mode 100644 (file)
index 0000000..6fac834
Binary files /dev/null and b/demo/images/gallery-medium-45.jpg differ
diff --git a/demo/images/gallery-medium-46.jpg b/demo/images/gallery-medium-46.jpg
new file mode 100644 (file)
index 0000000..a11f442
Binary files /dev/null and b/demo/images/gallery-medium-46.jpg differ
diff --git a/demo/images/gallery-medium-47.jpg b/demo/images/gallery-medium-47.jpg
new file mode 100644 (file)
index 0000000..175187f
Binary files /dev/null and b/demo/images/gallery-medium-47.jpg differ
diff --git a/demo/images/gallery-medium-48.jpg b/demo/images/gallery-medium-48.jpg
new file mode 100644 (file)
index 0000000..cf359a7
Binary files /dev/null and b/demo/images/gallery-medium-48.jpg differ
diff --git a/demo/images/gallery-medium-49.jpg b/demo/images/gallery-medium-49.jpg
new file mode 100644 (file)
index 0000000..e5bc9d0
Binary files /dev/null and b/demo/images/gallery-medium-49.jpg differ
diff --git a/demo/images/gallery-medium-5.jpg b/demo/images/gallery-medium-5.jpg
new file mode 100644 (file)
index 0000000..5be0d07
Binary files /dev/null and b/demo/images/gallery-medium-5.jpg differ
diff --git a/demo/images/gallery-medium-50.jpg b/demo/images/gallery-medium-50.jpg
new file mode 100644 (file)
index 0000000..b7aaaa3
Binary files /dev/null and b/demo/images/gallery-medium-50.jpg differ
diff --git a/demo/images/gallery-medium-51.jpg b/demo/images/gallery-medium-51.jpg
new file mode 100644 (file)
index 0000000..4012542
Binary files /dev/null and b/demo/images/gallery-medium-51.jpg differ
diff --git a/demo/images/gallery-medium-52.jpg b/demo/images/gallery-medium-52.jpg
new file mode 100644 (file)
index 0000000..aaa2d5b
Binary files /dev/null and b/demo/images/gallery-medium-52.jpg differ
diff --git a/demo/images/gallery-medium-53.jpg b/demo/images/gallery-medium-53.jpg
new file mode 100644 (file)
index 0000000..ed983e9
Binary files /dev/null and b/demo/images/gallery-medium-53.jpg differ
diff --git a/demo/images/gallery-medium-6.jpg b/demo/images/gallery-medium-6.jpg
new file mode 100644 (file)
index 0000000..d9fe251
Binary files /dev/null and b/demo/images/gallery-medium-6.jpg differ
diff --git a/demo/images/gallery-medium-7.jpg b/demo/images/gallery-medium-7.jpg
new file mode 100644 (file)
index 0000000..d3abc77
Binary files /dev/null and b/demo/images/gallery-medium-7.jpg differ
diff --git a/demo/images/gallery-medium-8.jpg b/demo/images/gallery-medium-8.jpg
new file mode 100644 (file)
index 0000000..e51a0c4
Binary files /dev/null and b/demo/images/gallery-medium-8.jpg differ
diff --git a/demo/images/gallery-medium-9.jpg b/demo/images/gallery-medium-9.jpg
new file mode 100644 (file)
index 0000000..e99b847
Binary files /dev/null and b/demo/images/gallery-medium-9.jpg differ
diff --git a/demo/images/gallery-small-1.jpg b/demo/images/gallery-small-1.jpg
new file mode 100644 (file)
index 0000000..99999ec
Binary files /dev/null and b/demo/images/gallery-small-1.jpg differ
diff --git a/demo/images/gallery-small-10.jpg b/demo/images/gallery-small-10.jpg
new file mode 100644 (file)
index 0000000..c430c34
Binary files /dev/null and b/demo/images/gallery-small-10.jpg differ
diff --git a/demo/images/gallery-small-11.jpg b/demo/images/gallery-small-11.jpg
new file mode 100644 (file)
index 0000000..5a84231
Binary files /dev/null and b/demo/images/gallery-small-11.jpg differ
diff --git a/demo/images/gallery-small-12.jpg b/demo/images/gallery-small-12.jpg
new file mode 100644 (file)
index 0000000..1bca3df
Binary files /dev/null and b/demo/images/gallery-small-12.jpg differ
diff --git a/demo/images/gallery-small-13.jpg b/demo/images/gallery-small-13.jpg
new file mode 100644 (file)
index 0000000..a56d50b
Binary files /dev/null and b/demo/images/gallery-small-13.jpg differ
diff --git a/demo/images/gallery-small-14.jpg b/demo/images/gallery-small-14.jpg
new file mode 100644 (file)
index 0000000..2bbe9c8
Binary files /dev/null and b/demo/images/gallery-small-14.jpg differ
diff --git a/demo/images/gallery-small-15.jpg b/demo/images/gallery-small-15.jpg
new file mode 100644 (file)
index 0000000..a0af907
Binary files /dev/null and b/demo/images/gallery-small-15.jpg differ
diff --git a/demo/images/gallery-small-16.jpg b/demo/images/gallery-small-16.jpg
new file mode 100644 (file)
index 0000000..de68b85
Binary files /dev/null and b/demo/images/gallery-small-16.jpg differ
diff --git a/demo/images/gallery-small-17.jpg b/demo/images/gallery-small-17.jpg
new file mode 100644 (file)
index 0000000..3118066
Binary files /dev/null and b/demo/images/gallery-small-17.jpg differ
diff --git a/demo/images/gallery-small-18.jpg b/demo/images/gallery-small-18.jpg
new file mode 100644 (file)
index 0000000..5902785
Binary files /dev/null and b/demo/images/gallery-small-18.jpg differ
diff --git a/demo/images/gallery-small-19.jpg b/demo/images/gallery-small-19.jpg
new file mode 100644 (file)
index 0000000..ae363b0
Binary files /dev/null and b/demo/images/gallery-small-19.jpg differ
diff --git a/demo/images/gallery-small-2.jpg b/demo/images/gallery-small-2.jpg
new file mode 100644 (file)
index 0000000..0b41c27
Binary files /dev/null and b/demo/images/gallery-small-2.jpg differ
diff --git a/demo/images/gallery-small-20.jpg b/demo/images/gallery-small-20.jpg
new file mode 100644 (file)
index 0000000..8020b10
Binary files /dev/null and b/demo/images/gallery-small-20.jpg differ
diff --git a/demo/images/gallery-small-21.jpg b/demo/images/gallery-small-21.jpg
new file mode 100644 (file)
index 0000000..4671b8d
Binary files /dev/null and b/demo/images/gallery-small-21.jpg differ
diff --git a/demo/images/gallery-small-22.jpg b/demo/images/gallery-small-22.jpg
new file mode 100644 (file)
index 0000000..8d79859
Binary files /dev/null and b/demo/images/gallery-small-22.jpg differ
diff --git a/demo/images/gallery-small-23.jpg b/demo/images/gallery-small-23.jpg
new file mode 100644 (file)
index 0000000..88f78df
Binary files /dev/null and b/demo/images/gallery-small-23.jpg differ
diff --git a/demo/images/gallery-small-24.jpg b/demo/images/gallery-small-24.jpg
new file mode 100644 (file)
index 0000000..0f16b3a
Binary files /dev/null and b/demo/images/gallery-small-24.jpg differ
diff --git a/demo/images/gallery-small-25.jpg b/demo/images/gallery-small-25.jpg
new file mode 100644 (file)
index 0000000..50a78b8
Binary files /dev/null and b/demo/images/gallery-small-25.jpg differ
diff --git a/demo/images/gallery-small-26.jpg b/demo/images/gallery-small-26.jpg
new file mode 100644 (file)
index 0000000..f2149af
Binary files /dev/null and b/demo/images/gallery-small-26.jpg differ
diff --git a/demo/images/gallery-small-27.jpg b/demo/images/gallery-small-27.jpg
new file mode 100644 (file)
index 0000000..9014d75
Binary files /dev/null and b/demo/images/gallery-small-27.jpg differ
diff --git a/demo/images/gallery-small-28.jpg b/demo/images/gallery-small-28.jpg
new file mode 100644 (file)
index 0000000..eb10934
Binary files /dev/null and b/demo/images/gallery-small-28.jpg differ
diff --git a/demo/images/gallery-small-29.jpg b/demo/images/gallery-small-29.jpg
new file mode 100644 (file)
index 0000000..057f9cd
Binary files /dev/null and b/demo/images/gallery-small-29.jpg differ
diff --git a/demo/images/gallery-small-3.jpg b/demo/images/gallery-small-3.jpg
new file mode 100644 (file)
index 0000000..070e887
Binary files /dev/null and b/demo/images/gallery-small-3.jpg differ
diff --git a/demo/images/gallery-small-30.jpg b/demo/images/gallery-small-30.jpg
new file mode 100644 (file)
index 0000000..e0b876d
Binary files /dev/null and b/demo/images/gallery-small-30.jpg differ
diff --git a/demo/images/gallery-small-31.jpg b/demo/images/gallery-small-31.jpg
new file mode 100644 (file)
index 0000000..9202ee7
Binary files /dev/null and b/demo/images/gallery-small-31.jpg differ
diff --git a/demo/images/gallery-small-32.jpg b/demo/images/gallery-small-32.jpg
new file mode 100644 (file)
index 0000000..2e962c7
Binary files /dev/null and b/demo/images/gallery-small-32.jpg differ
diff --git a/demo/images/gallery-small-33.jpg b/demo/images/gallery-small-33.jpg
new file mode 100644 (file)
index 0000000..e4707f1
Binary files /dev/null and b/demo/images/gallery-small-33.jpg differ
diff --git a/demo/images/gallery-small-34.jpg b/demo/images/gallery-small-34.jpg
new file mode 100644 (file)
index 0000000..6927ade
Binary files /dev/null and b/demo/images/gallery-small-34.jpg differ
diff --git a/demo/images/gallery-small-35.jpg b/demo/images/gallery-small-35.jpg
new file mode 100644 (file)
index 0000000..dc4aa17
Binary files /dev/null and b/demo/images/gallery-small-35.jpg differ
diff --git a/demo/images/gallery-small-36.jpg b/demo/images/gallery-small-36.jpg
new file mode 100644 (file)
index 0000000..d3220ec
Binary files /dev/null and b/demo/images/gallery-small-36.jpg differ
diff --git a/demo/images/gallery-small-37.jpg b/demo/images/gallery-small-37.jpg
new file mode 100644 (file)
index 0000000..4dd7b6b
Binary files /dev/null and b/demo/images/gallery-small-37.jpg differ
diff --git a/demo/images/gallery-small-38.jpg b/demo/images/gallery-small-38.jpg
new file mode 100644 (file)
index 0000000..1965f9b
Binary files /dev/null and b/demo/images/gallery-small-38.jpg differ
diff --git a/demo/images/gallery-small-39.jpg b/demo/images/gallery-small-39.jpg
new file mode 100644 (file)
index 0000000..a7e3bc0
Binary files /dev/null and b/demo/images/gallery-small-39.jpg differ
diff --git a/demo/images/gallery-small-4.jpg b/demo/images/gallery-small-4.jpg
new file mode 100644 (file)
index 0000000..cabd91e
Binary files /dev/null and b/demo/images/gallery-small-4.jpg differ
diff --git a/demo/images/gallery-small-40.jpg b/demo/images/gallery-small-40.jpg
new file mode 100644 (file)
index 0000000..625a119
Binary files /dev/null and b/demo/images/gallery-small-40.jpg differ
diff --git a/demo/images/gallery-small-41.jpg b/demo/images/gallery-small-41.jpg
new file mode 100644 (file)
index 0000000..55b11ac
Binary files /dev/null and b/demo/images/gallery-small-41.jpg differ
diff --git a/demo/images/gallery-small-42.jpg b/demo/images/gallery-small-42.jpg
new file mode 100644 (file)
index 0000000..e07f75c
Binary files /dev/null and b/demo/images/gallery-small-42.jpg differ
diff --git a/demo/images/gallery-small-43.jpg b/demo/images/gallery-small-43.jpg
new file mode 100644 (file)
index 0000000..ece0d9f
Binary files /dev/null and b/demo/images/gallery-small-43.jpg differ
diff --git a/demo/images/gallery-small-44.jpg b/demo/images/gallery-small-44.jpg
new file mode 100644 (file)
index 0000000..1562542
Binary files /dev/null and b/demo/images/gallery-small-44.jpg differ
diff --git a/demo/images/gallery-small-45.jpg b/demo/images/gallery-small-45.jpg
new file mode 100644 (file)
index 0000000..8120e82
Binary files /dev/null and b/demo/images/gallery-small-45.jpg differ
diff --git a/demo/images/gallery-small-46.jpg b/demo/images/gallery-small-46.jpg
new file mode 100644 (file)
index 0000000..37d146d
Binary files /dev/null and b/demo/images/gallery-small-46.jpg differ
diff --git a/demo/images/gallery-small-47.jpg b/demo/images/gallery-small-47.jpg
new file mode 100644 (file)
index 0000000..f98417f
Binary files /dev/null and b/demo/images/gallery-small-47.jpg differ
diff --git a/demo/images/gallery-small-48.jpg b/demo/images/gallery-small-48.jpg
new file mode 100644 (file)
index 0000000..d502ddd
Binary files /dev/null and b/demo/images/gallery-small-48.jpg differ
diff --git a/demo/images/gallery-small-49.jpg b/demo/images/gallery-small-49.jpg
new file mode 100644 (file)
index 0000000..9b1fdc8
Binary files /dev/null and b/demo/images/gallery-small-49.jpg differ
diff --git a/demo/images/gallery-small-5.jpg b/demo/images/gallery-small-5.jpg
new file mode 100644 (file)
index 0000000..11fed67
Binary files /dev/null and b/demo/images/gallery-small-5.jpg differ
diff --git a/demo/images/gallery-small-50.jpg b/demo/images/gallery-small-50.jpg
new file mode 100644 (file)
index 0000000..831d1f0
Binary files /dev/null and b/demo/images/gallery-small-50.jpg differ
diff --git a/demo/images/gallery-small-51.jpg b/demo/images/gallery-small-51.jpg
new file mode 100644 (file)
index 0000000..2cc1dac
Binary files /dev/null and b/demo/images/gallery-small-51.jpg differ
diff --git a/demo/images/gallery-small-52.jpg b/demo/images/gallery-small-52.jpg
new file mode 100644 (file)
index 0000000..c37c3f2
Binary files /dev/null and b/demo/images/gallery-small-52.jpg differ
diff --git a/demo/images/gallery-small-53.jpg b/demo/images/gallery-small-53.jpg
new file mode 100644 (file)
index 0000000..005c8f1
Binary files /dev/null and b/demo/images/gallery-small-53.jpg differ
diff --git a/demo/images/gallery-small-6.jpg b/demo/images/gallery-small-6.jpg
new file mode 100644 (file)
index 0000000..3fa7354
Binary files /dev/null and b/demo/images/gallery-small-6.jpg differ
diff --git a/demo/images/gallery-small-7.jpg b/demo/images/gallery-small-7.jpg
new file mode 100644 (file)
index 0000000..2d19bb6
Binary files /dev/null and b/demo/images/gallery-small-7.jpg differ
diff --git a/demo/images/gallery-small-8.jpg b/demo/images/gallery-small-8.jpg
new file mode 100644 (file)
index 0000000..1b64621
Binary files /dev/null and b/demo/images/gallery-small-8.jpg differ
diff --git a/demo/images/gallery-small-9.jpg b/demo/images/gallery-small-9.jpg
new file mode 100644 (file)
index 0000000..dd9b121
Binary files /dev/null and b/demo/images/gallery-small-9.jpg differ
diff --git a/demo/images/icon-play.png b/demo/images/icon-play.png
new file mode 100644 (file)
index 0000000..48f61dd
Binary files /dev/null and b/demo/images/icon-play.png differ
diff --git a/demo/images/icon-stop.png b/demo/images/icon-stop.png
new file mode 100644 (file)
index 0000000..a39e501
Binary files /dev/null and b/demo/images/icon-stop.png differ
diff --git a/demo/images/image-with-border-1.jpg b/demo/images/image-with-border-1.jpg
new file mode 100644 (file)
index 0000000..14b9a16
Binary files /dev/null and b/demo/images/image-with-border-1.jpg differ
diff --git a/demo/images/image-with-border-2.jpg b/demo/images/image-with-border-2.jpg
new file mode 100644 (file)
index 0000000..b0ffe2d
Binary files /dev/null and b/demo/images/image-with-border-2.jpg differ
diff --git a/demo/images/image-with-border-3.jpg b/demo/images/image-with-border-3.jpg
new file mode 100644 (file)
index 0000000..a924e85
Binary files /dev/null and b/demo/images/image-with-border-3.jpg differ
diff --git a/demo/images/image-with-border-4.jpg b/demo/images/image-with-border-4.jpg
new file mode 100644 (file)
index 0000000..10922e1
Binary files /dev/null and b/demo/images/image-with-border-4.jpg differ
diff --git a/demo/images/image-with-border-5.jpg b/demo/images/image-with-border-5.jpg
new file mode 100644 (file)
index 0000000..9227ba6
Binary files /dev/null and b/demo/images/image-with-border-5.jpg differ
diff --git a/demo/images/item-background-alpha.png b/demo/images/item-background-alpha.png
new file mode 100644 (file)
index 0000000..9971df9
Binary files /dev/null and b/demo/images/item-background-alpha.png differ
diff --git a/demo/images/item-background.png b/demo/images/item-background.png
new file mode 100644 (file)
index 0000000..c63f69b
Binary files /dev/null and b/demo/images/item-background.png differ
diff --git a/demo/images/people-medium-1.jpg b/demo/images/people-medium-1.jpg
new file mode 100644 (file)
index 0000000..21f35f9
Binary files /dev/null and b/demo/images/people-medium-1.jpg differ
diff --git a/demo/images/people-medium-10.jpg b/demo/images/people-medium-10.jpg
new file mode 100644 (file)
index 0000000..f8506e8
Binary files /dev/null and b/demo/images/people-medium-10.jpg differ
diff --git a/demo/images/people-medium-11.jpg b/demo/images/people-medium-11.jpg
new file mode 100644 (file)
index 0000000..948c4cf
Binary files /dev/null and b/demo/images/people-medium-11.jpg differ
diff --git a/demo/images/people-medium-12.jpg b/demo/images/people-medium-12.jpg
new file mode 100644 (file)
index 0000000..4720418
Binary files /dev/null and b/demo/images/people-medium-12.jpg differ
diff --git a/demo/images/people-medium-13.jpg b/demo/images/people-medium-13.jpg
new file mode 100644 (file)
index 0000000..9cc26e3
Binary files /dev/null and b/demo/images/people-medium-13.jpg differ
diff --git a/demo/images/people-medium-14.jpg b/demo/images/people-medium-14.jpg
new file mode 100644 (file)
index 0000000..5b04ea8
Binary files /dev/null and b/demo/images/people-medium-14.jpg differ
diff --git a/demo/images/people-medium-15.jpg b/demo/images/people-medium-15.jpg
new file mode 100644 (file)
index 0000000..8c183e1
Binary files /dev/null and b/demo/images/people-medium-15.jpg differ
diff --git a/demo/images/people-medium-16.jpg b/demo/images/people-medium-16.jpg
new file mode 100644 (file)
index 0000000..26868ed
Binary files /dev/null and b/demo/images/people-medium-16.jpg differ
diff --git a/demo/images/people-medium-2.jpg b/demo/images/people-medium-2.jpg
new file mode 100644 (file)
index 0000000..d58bfd7
Binary files /dev/null and b/demo/images/people-medium-2.jpg differ
diff --git a/demo/images/people-medium-3.jpg b/demo/images/people-medium-3.jpg
new file mode 100644 (file)
index 0000000..20f37ac
Binary files /dev/null and b/demo/images/people-medium-3.jpg differ
diff --git a/demo/images/people-medium-4.jpg b/demo/images/people-medium-4.jpg
new file mode 100644 (file)
index 0000000..71ea4f7
Binary files /dev/null and b/demo/images/people-medium-4.jpg differ
diff --git a/demo/images/people-medium-5.jpg b/demo/images/people-medium-5.jpg
new file mode 100644 (file)
index 0000000..9bbc5e8
Binary files /dev/null and b/demo/images/people-medium-5.jpg differ
diff --git a/demo/images/people-medium-6.jpg b/demo/images/people-medium-6.jpg
new file mode 100644 (file)
index 0000000..3d07cf9
Binary files /dev/null and b/demo/images/people-medium-6.jpg differ
diff --git a/demo/images/people-medium-7.jpg b/demo/images/people-medium-7.jpg
new file mode 100644 (file)
index 0000000..08a665d
Binary files /dev/null and b/demo/images/people-medium-7.jpg differ
diff --git a/demo/images/people-medium-8.jpg b/demo/images/people-medium-8.jpg
new file mode 100644 (file)
index 0000000..9683f29
Binary files /dev/null and b/demo/images/people-medium-8.jpg differ
diff --git a/demo/images/people-medium-9.jpg b/demo/images/people-medium-9.jpg
new file mode 100644 (file)
index 0000000..5db4021
Binary files /dev/null and b/demo/images/people-medium-9.jpg differ
diff --git a/demo/images/people-small-1.jpg b/demo/images/people-small-1.jpg
new file mode 100644 (file)
index 0000000..b8fd220
Binary files /dev/null and b/demo/images/people-small-1.jpg differ
diff --git a/demo/images/people-small-10.jpg b/demo/images/people-small-10.jpg
new file mode 100644 (file)
index 0000000..3bf2404
Binary files /dev/null and b/demo/images/people-small-10.jpg differ
diff --git a/demo/images/people-small-11.jpg b/demo/images/people-small-11.jpg
new file mode 100644 (file)
index 0000000..6fed011
Binary files /dev/null and b/demo/images/people-small-11.jpg differ
diff --git a/demo/images/people-small-12.jpg b/demo/images/people-small-12.jpg
new file mode 100644 (file)
index 0000000..bc9074e
Binary files /dev/null and b/demo/images/people-small-12.jpg differ
diff --git a/demo/images/people-small-13.jpg b/demo/images/people-small-13.jpg
new file mode 100644 (file)
index 0000000..7a29788
Binary files /dev/null and b/demo/images/people-small-13.jpg differ
diff --git a/demo/images/people-small-14.jpg b/demo/images/people-small-14.jpg
new file mode 100644 (file)
index 0000000..6c01c49
Binary files /dev/null and b/demo/images/people-small-14.jpg differ
diff --git a/demo/images/people-small-15.jpg b/demo/images/people-small-15.jpg
new file mode 100644 (file)
index 0000000..64d122e
Binary files /dev/null and b/demo/images/people-small-15.jpg differ
diff --git a/demo/images/people-small-16.jpg b/demo/images/people-small-16.jpg
new file mode 100644 (file)
index 0000000..603e9d2
Binary files /dev/null and b/demo/images/people-small-16.jpg differ
diff --git a/demo/images/people-small-2.jpg b/demo/images/people-small-2.jpg
new file mode 100644 (file)
index 0000000..a996d9e
Binary files /dev/null and b/demo/images/people-small-2.jpg differ
diff --git a/demo/images/people-small-3.jpg b/demo/images/people-small-3.jpg
new file mode 100644 (file)
index 0000000..c989dff
Binary files /dev/null and b/demo/images/people-small-3.jpg differ
diff --git a/demo/images/people-small-4.jpg b/demo/images/people-small-4.jpg
new file mode 100644 (file)
index 0000000..5338e98
Binary files /dev/null and b/demo/images/people-small-4.jpg differ
diff --git a/demo/images/people-small-5.jpg b/demo/images/people-small-5.jpg
new file mode 100644 (file)
index 0000000..2a11395
Binary files /dev/null and b/demo/images/people-small-5.jpg differ
diff --git a/demo/images/people-small-6.jpg b/demo/images/people-small-6.jpg
new file mode 100644 (file)
index 0000000..64ee333
Binary files /dev/null and b/demo/images/people-small-6.jpg differ
diff --git a/demo/images/people-small-7.jpg b/demo/images/people-small-7.jpg
new file mode 100644 (file)
index 0000000..5eaf8a1
Binary files /dev/null and b/demo/images/people-small-7.jpg differ
diff --git a/demo/images/people-small-8.jpg b/demo/images/people-small-8.jpg
new file mode 100644 (file)
index 0000000..939eae3
Binary files /dev/null and b/demo/images/people-small-8.jpg differ
diff --git a/demo/images/people-small-9.jpg b/demo/images/people-small-9.jpg
new file mode 100644 (file)
index 0000000..0f904dd
Binary files /dev/null and b/demo/images/people-small-9.jpg differ
diff --git a/demo/images/top-bar-demo.png b/demo/images/top-bar-demo.png
new file mode 100644 (file)
index 0000000..e8d7ece
Binary files /dev/null and b/demo/images/top-bar-demo.png differ
diff --git a/demo/images/top-bar.png b/demo/images/top-bar.png
new file mode 100644 (file)
index 0000000..6c35e1c
Binary files /dev/null and b/demo/images/top-bar.png differ
diff --git a/demo/models/Album-Cute-COVER-small.png b/demo/models/Album-Cute-COVER-small.png
new file mode 100644 (file)
index 0000000..d58a237
Binary files /dev/null and b/demo/models/Album-Cute-COVER-small.png differ
diff --git a/demo/models/AlbumCute.dae b/demo/models/AlbumCute.dae
new file mode 100644 (file)
index 0000000..1d72c12
--- /dev/null
@@ -0,0 +1,7514 @@
+<?xml version="1.0" encoding="utf-8"?>
+<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
+  <asset>
+    <contributor>
+      <author></author>
+      <authoring_tool>FBX COLLADA exporter</authoring_tool>
+      <comments></comments>
+    </contributor>
+    <created>2012-01-13T11:57:30Z</created>
+    <keywords></keywords>
+    <modified>2012-01-13T11:57:30Z</modified>
+    <revision></revision>
+    <subject></subject>
+    <title></title>
+    <unit meter="0.010000" name="centimeter"></unit>
+    <up_axis>Y_UP</up_axis>
+  </asset>
+  <library_images>
+    <image id="file9-image" name="file9">
+      <init_from>file://Album-Cute-COVER-small.png</init_from>
+    </image>
+    <image id="Album_Cute_00011_file3-image" name="Album_Cute_00011_file3">
+      <init_from>file://Kitten.png</init_from>
+    </image>
+  </library_images>
+  <library_materials>
+    <material id="Album_Texture" name="Album_Texture">
+      <instance_effect url="#Album_Texture-fx"/>
+    </material>
+    <material id="Album_Cute_00011_lambert4" name="Album_Cute_00011_lambert4">
+      <instance_effect url="#Album_Cute_00011_lambert4-fx"/>
+    </material>
+    <material id="lambert1" name="lambert1">
+      <instance_effect url="#lambert1-fx"/>
+    </material>
+  </library_materials>
+  <library_effects>
+    <effect id="Album_Texture-fx" name="Album_Texture">
+      <profile_COMMON>
+        <technique sid="standard">
+          <lambert>
+            <emission>
+              <color sid="emission">0.000000  0.000000 0.000000 1.000000</color>
+            </emission>
+            <ambient>
+              <color sid="ambient">0.000000  0.000000 0.000000 1.000000</color>
+            </ambient>
+            <diffuse>
+              <texture texture="file9-image" texcoord="CHANNEL0">
+                <extra>
+                  <technique profile="MAYA">
+                    <wrapU sid="wrapU0">TRUE</wrapU>
+                    <wrapV sid="wrapV0">TRUE</wrapV>
+                    <blend_mode>NONE</blend_mode>
+                  </technique>
+                </extra>
+              </texture>
+              <texture texture="file9-image" texcoord="CHANNEL0">
+                <extra>
+                  <technique profile="MAYA">
+                    <wrapU sid="wrapU0">TRUE</wrapU>
+                    <wrapV sid="wrapV0">TRUE</wrapV>
+                    <blend_mode>NONE</blend_mode>
+                  </technique>
+                </extra>
+              </texture>
+            </diffuse>
+            <transparent opaque="RGB_ZERO">
+              <color sid="transparent">0.000000  0.000000 0.000000 1.000000</color>
+            </transparent>
+            <transparency>
+              <float sid="transparency">1.000000</float>
+            </transparency>
+          </lambert>
+        </technique>
+      </profile_COMMON>
+    </effect>
+    <effect id="Album_Cute_00011_lambert4-fx" name="Album_Cute_00011_lambert4">
+      <profile_COMMON>
+        <technique sid="standard">
+          <lambert>
+            <emission>
+              <color sid="emission">0.000000  0.000000 0.000000 1.000000</color>
+            </emission>
+            <ambient>
+              <color sid="ambient">0.000000  0.000000 0.000000 1.000000</color>
+            </ambient>
+            <diffuse>
+              <texture texture="Album_Cute_00011_file3-image" texcoord="CHANNEL0">
+                <extra>
+                  <technique profile="MAYA">
+                    <wrapU sid="wrapU0">TRUE</wrapU>
+                    <wrapV sid="wrapV0">TRUE</wrapV>
+                    <blend_mode>NONE</blend_mode>
+                  </technique>
+                </extra>
+              </texture>
+            </diffuse>
+            <transparent opaque="RGB_ZERO">
+              <color sid="transparent">0.000000  0.000000 0.000000 1.000000</color>
+            </transparent>
+            <transparency>
+              <float sid="transparency">1.000000</float>
+            </transparency>
+          </lambert>
+        </technique>
+      </profile_COMMON>
+    </effect>
+    <effect id="lambert1-fx" name="lambert1">
+      <profile_COMMON>
+        <technique sid="standard">
+          <lambert>
+            <emission>
+              <color sid="emission">0.000000  0.000000 0.000000 1.000000</color>
+            </emission>
+            <ambient>
+              <color sid="ambient">0.000000  0.000000 0.000000 1.000000</color>
+            </ambient>
+            <diffuse>
+              <color sid="diffuse">0.400000  0.400000 0.400000 1.000000</color>
+            </diffuse>
+            <transparent opaque="RGB_ZERO">
+              <color sid="transparent">0.000000  0.000000 0.000000 1.000000</color>
+            </transparent>
+            <transparency>
+              <float sid="transparency">1.000000</float>
+            </transparency>
+          </lambert>
+        </technique>
+      </profile_COMMON>
+    </effect>
+  </library_effects>
+  <library_geometries>
+    <geometry id="Album_Cute-lib" name="Album_CuteMesh">
+      <mesh>
+        <source id="Album_Cute-POSITION">
+          <float_array id="Album_Cute-POSITION-array" count="2340">
+-3.450536 1.210918 -1.234757
+-3.450536 1.210918 1.104508
+-4.044423 1.140426 1.153060
+-4.044423 1.140426 -1.279406
+-4.699009 1.110540 1.153060
+-4.699009 1.110540 -1.279406
+-4.937440 1.068726 1.153060
+-4.937440 1.068726 -1.279406
+-5.290196 -0.622742 1.153060
+-5.290197 -0.622742 -1.279406
+-5.252836 -2.104159 1.153060
+-5.252836 -2.104159 -1.279406
+-4.816874 -3.225436 1.153481
+-4.816581 -3.225437 -1.279406
+-4.139227 -3.244806 1.153407
+-3.493552 -3.291673 1.104508
+-3.493552 -3.291673 -1.234757
+-4.765473 1.469497 1.153060
+-4.060684 1.498813 -1.279406
+-5.084641 1.418520 1.153060
+-3.493552 -3.557343 -1.234757
+-3.461433 1.476692 -1.234757
+-3.461433 1.476692 1.104508
+-4.060684 1.498813 1.153060
+-4.765473 1.469496 -1.279406
+-5.530613 0.696660 -1.279406
+-5.549091 -2.201693 -1.279406
+-5.593268 -0.604600 -1.279406
+-5.530614 0.696660 1.153060
+-5.593268 -0.604600 1.153060
+-5.549090 -2.201693 1.153060
+-5.345669 1.219004 -1.279406
+-5.084641 1.418520 -1.279406
+-4.921001 -3.584788 1.153131
+-4.146989 -3.603702 1.153118
+-3.493552 -3.557343 1.104508
+-3.266926 1.171858 0.821768
+-3.316000 -3.245182 0.821768
+-3.281636 1.530652 0.821768
+-4.132193 -3.663518 0.821768
+-3.316000 -3.603834 0.821768
+-5.643780 -0.601576 0.821768
+-5.598466 -2.217949 0.821768
+-5.454576 -3.228477 0.821768
+-4.938348 -3.644681 0.821768
+-3.266926 1.171858 -0.971856
+-3.281636 1.530652 -0.971856
+-4.024686 1.081393 -0.971856
+-3.316000 -3.245182 -0.971856
+-4.046368 1.559243 -0.971856
+-3.316000 -3.603834 -0.971856
+-4.687932 1.050714 -0.971856
+-4.912906 1.010427 -0.971856
+-5.072510 0.881862 -0.971856
+-4.799186 -3.165545 -0.971857
+-4.138986 -3.244806 -1.279406
+-4.146949 -3.603702 -1.279406
+-4.024686 1.081393 0.821768
+-4.046368 1.559243 0.821768
+-4.004103 1.082237 0.013636
+-3.114610 -3.245182 -0.285755
+-4.025784 1.560086 0.013636
+-3.114610 -3.603834 -0.285755
+-4.687932 1.050714 0.013636
+-4.912906 1.010427 0.013636
+-5.072510 0.881862 0.013636
+-4.799186 -3.165545 0.013636
+-3.057203 1.180456 -0.285755
+-3.071913 1.539250 -0.285755
+-4.115987 -3.663518 0.013636
+-5.109175 1.476819 0.013636
+-5.598466 -2.217949 0.013636
+-3.542519 1.160559 1.153060
+-4.121576 -3.184990 -0.971856
+-3.589687 -3.245182 -1.279406
+-3.501562 -3.424508 -1.279406
+-3.589687 -3.603834 -1.279406
+-3.465718 1.343406 -1.279406
+-3.465718 1.343406 1.153060
+-3.557230 1.519352 1.153060
+-4.056005 1.319478 1.215484
+-4.056005 1.319478 -1.336813
+-4.132193 -3.663518 -0.971856
+-3.501562 -3.424508 1.153060
+-3.589687 -3.603834 1.153060
+-3.557229 1.519353 -1.279406
+-5.441732 -0.613671 1.215484
+-5.241976 0.514961 1.153060
+-5.111532 0.930025 -1.279406
+-5.072510 0.881862 0.821768
+-5.384692 1.267167 -0.971856
+-5.241976 0.514961 -1.279406
+-5.643780 -0.601576 -0.971856
+-5.441732 -0.613671 -1.336813
+-5.239685 -0.625765 0.821768
+-5.410490 -3.186598 1.153060
+-5.598466 -2.217949 -0.971856
+-5.019206 -3.141151 1.153060
+-5.218710 -3.459960 1.153060
+-5.145970 -2.935324 1.153060
+-4.920953 -3.584789 -1.279406
+-5.454576 -3.228477 -0.971856
+-5.410490 -3.186598 -1.279406
+-4.938348 -3.644681 -0.971856
+-5.218710 -3.459960 -1.279406
+-3.137418 -3.245182 0.313027
+-3.137418 -3.603834 0.313027
+-3.382476 1.107221 0.821768
+-3.234947 1.352868 0.821768
+-3.270597 -3.424508 0.821768
+-4.938348 -3.644681 0.013636
+-3.382476 1.107221 -0.971856
+-3.270597 -3.424508 -0.971856
+-3.234947 1.352867 -0.971856
+-3.542519 1.160559 -1.279406
+-3.589687 -3.245182 1.153060
+-3.452207 -3.185406 0.821768
+-3.452207 -3.663610 0.821768
+-3.402090 1.585613 0.821768
+-3.452207 -3.185406 -0.971856
+-3.402090 1.585613 -0.971856
+-3.452207 -3.663610 -0.971856
+-5.345669 1.219004 1.153060
+-5.011041 1.243623 1.215484
+-4.687932 1.050714 0.821768
+-5.109175 1.476819 -0.971856
+-5.011041 1.243623 -1.336812
+-5.111532 0.930025 1.153060
+-4.912906 1.010427 0.821768
+-5.109175 1.476819 0.821768
+-4.776551 1.529323 0.013636
+-5.454576 -3.228477 0.013636
+-5.643780 -0.601576 0.013636
+-3.081340 1.179467 0.313027
+-3.096051 1.538261 0.313027
+-3.015449 1.361867 -0.285755
+-3.305697 -3.663610 -0.285755
+-3.305697 -3.185406 -0.285755
+-3.050915 -3.424508 -0.285755
+-3.221693 1.593009 -0.285755
+-3.202078 1.114617 -0.285755
+-4.121677 -3.184990 0.821913
+-4.105370 -3.184990 0.013636
+-5.239685 -0.625765 0.013636
+-5.239685 -0.625765 -0.971856
+-5.019206 -3.141151 -1.279406
+-5.145970 -2.935324 -1.279406
+-5.203460 -2.087903 0.821768
+-5.203461 -2.087903 -0.971856
+-5.203460 -2.087903 0.013636
+-4.146324 -3.424254 -1.336813
+-3.618393 -3.424508 1.215485
+-3.582451 1.338620 -1.336813
+-5.386295 0.605810 1.215484
+-5.193870 0.484677 -0.971856
+-5.386295 0.605810 -1.336812
+-5.578719 0.726944 -0.971856
+-5.400964 -2.152926 1.215484
+-5.278230 -3.060961 1.215484
+-5.118958 -3.300555 1.215484
+-5.251961 -3.513095 -0.971856
+-4.868767 -3.405113 -1.336813
+-3.040302 1.360848 0.313027
+-3.322308 -3.663610 0.313027
+-5.193870 0.484677 0.821768
+-5.578720 0.726944 0.821768
+-5.251961 -3.513095 0.821768
+-5.193870 0.484677 0.013636
+-5.251961 -3.513095 0.013636
+-3.618393 -3.424508 -1.336813
+-3.582451 1.338620 1.215485
+-4.146484 -3.424254 1.215716
+-3.224069 1.113715 0.313027
+-5.228601 1.074515 1.215484
+-4.732242 1.290018 1.215484
+-4.732242 1.290018 -1.336813
+-5.228601 1.074514 -1.336812
+-5.384692 1.267167 0.821768
+-5.384692 1.267167 0.013636
+-4.776551 1.529323 -0.971856
+-4.776551 1.529323 0.821768
+-5.578720 0.726944 0.013636
+-3.322308 -3.185406 0.313027
+-3.075788 -3.424508 0.313027
+-3.243683 1.592108 0.313027
+-4.868962 -3.405113 1.215765
+-4.799308 -3.165545 0.821944
+-5.400964 -2.152926 -1.336813
+-5.118958 -3.300555 -1.336813
+-5.278230 -3.060961 -1.336813
+-4.985955 -3.088016 -0.971857
+-5.101883 -2.893445 0.821768
+-4.985955 -3.088016 0.821768
+-5.101883 -2.893445 -0.971857
+-4.985955 -3.088016 0.013636
+-5.101883 -2.893445 0.013636
+-4.729691 1.213925 0.545549
+-4.075570 1.233911 0.804510
+-3.550262 1.262281 0.545549
+-4.750277 1.573251 0.542169
+-4.105802 1.599674 0.792057
+-3.577187 1.621347 0.542169
+-4.708731 1.638452 0.513144
+-4.110566 1.677467 0.695911
+-3.623932 1.682928 0.513144
+-4.816887 1.648866 0.073542
+-4.153309 1.724502 -0.000530
+-3.516991 1.702161 0.073542
+-4.790417 1.647089 -0.399973
+-3.543227 1.698224 -0.399973
+-4.708731 1.638452 -0.617096
+-4.120445 1.677771 -0.805285
+-3.623932 1.682928 -0.617096
+-4.750277 1.573251 -0.646121
+-4.105802 1.599674 -0.896010
+-3.577187 1.621347 -0.646121
+-4.595982 1.579577 0.682214
+-3.731483 1.615021 0.682214
+-4.591244 1.653109 0.603101
+-3.742224 1.687919 0.603101
+-4.591244 1.653109 -0.707053
+-3.742224 1.687919 -0.707053
+-4.595982 1.579577 -0.786166
+-3.731483 1.615021 -0.786166
+-4.741669 1.615526 0.531712
+-3.589227 1.662776 0.531712
+-4.770564 1.645757 0.392981
+-3.562904 1.695271 0.392981
+-4.741669 1.615526 -0.635664
+-3.589227 1.662776 -0.635664
+-4.729691 1.213925 -0.649501
+-4.075570 1.233911 -0.908462
+-3.550262 1.262281 -0.649501
+-3.460776 1.626120 -0.402172
+-3.429586 1.627399 0.076022
+-3.484169 1.625161 0.392420
+-4.866688 1.568478 -0.402172
+-4.897878 1.567199 0.076022
+-4.843296 1.569437 0.392420
+-4.574759 1.220237 0.686521
+-3.705189 1.255889 0.686521
+-4.590089 1.621741 0.669291
+-4.108538 1.641484 0.777202
+-3.740807 1.656561 0.669291
+-4.590089 1.621741 -0.773244
+-4.108538 1.641484 -0.881154
+-3.740807 1.656561 -0.773244
+-4.574759 1.220237 -0.790473
+-3.705189 1.255889 -0.790473
+-3.434399 1.267213 -0.403748
+-3.403574 1.268557 0.076507
+-3.457519 1.266205 0.394602
+-3.474864 1.667465 -0.396008
+-3.444224 1.668721 0.073769
+-3.497845 1.666523 0.384598
+-4.845568 1.209355 -0.403748
+-4.876400 1.208172 0.076507
+-4.822444 1.210243 0.394602
+-4.856031 1.610837 -0.396008
+-4.886672 1.609581 0.073769
+-4.833050 1.611780 0.384598
+0.670915 0.697681 -3.111238
+2.464904 0.697679 -4.502638
+1.931551 0.697679 -4.848246
+2.938086 0.697679 -4.075343
+2.405996 0.697679 -0.882432
+1.776267 0.697679 -0.878326
+1.234187 0.697679 -1.044100
+0.694825 0.697679 -1.436052
+0.278184 0.697679 -0.913731
+-0.197538 0.697679 -0.609161
+-0.800806 0.697679 -0.445125
+-1.423885 0.697679 -0.533089
+-1.964076 0.697679 -0.923689
+-2.349892 0.697679 -1.471775
+-2.456059 0.697679 -2.115633
+-2.372142 0.697679 -2.775901
+-2.116069 0.697679 -3.386115
+-1.767556 0.697679 -3.925257
+-1.342411 0.697679 -4.400331
+-0.887096 0.697679 -4.843967
+-0.463304 0.697679 -5.248489
+-0.132246 0.697679 -5.612033
+0.020886 0.697679 -5.906560
+0.095163 0.697679 -6.152751
+0.221011 0.697679 -5.941100
+0.439464 0.697679 -5.699109
+0.854979 0.697679 -5.435615
+1.373697 0.697679 -5.156410
+2.464904 1.010289 -4.502638
+1.931551 1.010289 -4.848246
+2.938086 1.010288 -4.075343
+3.339495 0.697679 -3.554788
+3.587324 0.697679 -2.939760
+3.647473 0.697679 -2.289627
+3.413241 0.697679 -1.656986
+2.989141 0.697679 -1.134888
+2.405996 1.010289 -0.882432
+1.776267 1.010289 -0.878326
+1.234187 1.010289 -1.044100
+0.694825 1.010289 -1.436052
+0.278183 1.010289 -0.913731
+-0.197538 1.010289 -0.609161
+-0.800806 1.010289 -0.445125
+-1.423885 1.010289 -0.533089
+-1.964076 1.010289 -0.923689
+-2.349892 1.010289 -1.471775
+-2.456059 1.010289 -2.115633
+-2.372142 1.010289 -2.775901
+-2.116069 1.010289 -3.386115
+-1.767556 1.010289 -3.925257
+-1.342411 1.010289 -4.400331
+-0.887096 1.010289 -4.843967
+-0.463304 1.010289 -5.248489
+-0.132246 1.010289 -5.612033
+0.020886 1.010289 -5.906560
+0.095162 1.010289 -6.152752
+0.221011 1.010289 -5.941100
+0.439464 1.010289 -5.699109
+0.854979 1.010289 -5.435615
+1.373697 1.010289 -5.156410
+3.339495 1.010288 -3.554788
+3.587324 1.010288 -2.939760
+3.647473 1.010288 -2.289627
+3.413241 1.010288 -1.656986
+2.989141 1.010288 -1.134888
+-5.054743 1.094466 -6.957500
+6.693733 -2.401945 7.101533
+6.525078 -2.297979 7.138983
+6.356423 -2.194014 7.101534
+6.300205 -2.159359 6.989185
+6.356423 -2.194014 -7.204289
+6.300205 -2.159359 -7.071956
+6.693733 -2.401945 -7.204290
+6.525078 -2.297979 -7.248401
+6.410430 -1.431837 -7.204290
+6.351672 -1.423323 -7.071957
+6.762980 -1.482916 -7.204290
+6.586705 -1.457376 -7.248402
+6.762980 -1.482916 7.101533
+6.586705 -1.457376 7.138983
+6.410430 -1.431837 7.101533
+6.351672 -1.423323 6.989184
+6.749951 -2.436600 -7.064784
+6.749950 -2.436600 6.989184
+6.728960 -2.430624 -2.788947
+6.633911 -2.967022 -3.070582
+6.728960 0.063356 -2.788947
+6.633936 0.599705 -3.070582
+6.315248 1.014670 6.989184
+6.316216 1.013572 -7.064673
+6.633911 0.599755 3.064373
+6.632968 0.600802 6.989184
+-5.054743 0.516432 6.874727
+-5.301433 0.589572 6.788884
+-4.884393 0.516432 0.030057
+-4.958228 0.589572 0.028554
+6.608915 -3.045762 -7.064751
+6.316216 -3.380840 -7.064673
+-5.301433 1.028417 -6.871656
+-4.892531 1.094466 0.031032
+-4.958228 1.028417 0.028554
+-5.301433 -3.395684 -6.871656
+-4.958228 -3.395685 0.028554
+-5.383663 -3.176262 -6.843042
+-4.982840 -3.176262 0.028053
+-5.301433 -2.956840 -6.871656
+-4.958228 -2.956840 0.028554
+-5.054743 -2.883699 -6.957500
+-4.884393 -2.883699 0.030057
+6.315248 -3.381937 6.989184
+-5.054743 -3.468825 6.874727
+-5.301433 -3.395684 6.788884
+-4.884393 -3.468825 0.030057
+-5.301433 1.028417 6.788884
+-5.383663 0.808995 6.760269
+-4.982840 0.808995 0.028053
+6.592632 -2.420662 -3.050668
+6.665987 -2.412693 -2.986480
+6.728960 -2.430624 -3.359554
+6.665987 -2.412693 -3.114856
+6.592632 0.053395 -3.050668
+6.665987 0.045426 -2.986480
+6.728960 0.063356 -3.359554
+6.665987 0.045426 -3.114856
+6.633910 -2.967022 3.064373
+6.592631 -2.420662 3.039065
+6.665987 -2.412693 3.115483
+6.728960 -2.430624 3.400482
+6.728960 -2.430624 2.737587
+6.665987 -2.412693 2.962649
+6.592632 0.053395 3.039065
+6.665987 0.045426 3.115482
+6.728960 0.063356 3.400483
+6.728960 0.063356 2.737587
+6.665987 0.045426 2.962649
+6.633936 0.599705 -7.064751
+5.977817 1.010478 -7.071957
+5.972329 0.940252 -7.204290
+6.289108 0.945338 -7.204290
+6.289109 0.945338 7.101533
+5.977817 1.010478 6.989184
+5.972329 0.940252 7.101534
+5.716468 0.709297 7.101534
+5.715565 0.771828 6.989184
+6.558681 0.626839 -7.204290
+5.715565 0.771828 -7.071957
+5.716468 0.709297 -7.204290
+6.132273 0.529346 -7.204290
+6.106133 0.460014 -7.071957
+5.939401 0.518898 -7.204290
+5.933913 0.448672 -7.071957
+6.558681 0.626839 7.101534
+6.263083 0.310323 -7.204290
+6.213816 0.257571 -7.071957
+6.410881 0.468581 7.138983
+6.263082 0.310323 7.101533
+6.210691 0.737342 7.138983
+6.132273 0.529346 7.101533
+5.955865 0.729576 7.138983
+5.939401 0.518899 7.101534
+5.719176 0.521704 7.138983
+5.721885 0.334112 7.101533
+5.721885 0.334110 -7.204290
+5.722787 0.271580 -7.071957
+5.955865 0.729575 -7.248402
+6.210690 0.737342 -7.248402
+6.410882 0.468581 -7.248402
+5.719176 0.521704 -7.248402
+-4.964557 -3.395684 7.072919
+-5.054743 0.516432 -6.957500
+-5.301433 0.589572 -6.871655
+-4.964557 1.028417 -7.175675
+-4.964557 -2.956840 -7.175676
+-4.964557 0.589572 -7.175676
+-5.197394 0.646460 -7.080958
+-4.964557 1.028417 7.072919
+-4.934495 0.808995 7.138983
+5.307737 1.014697 7.101534
+5.310643 0.797334 7.138983
+-4.964557 0.589572 7.072919
+5.313549 0.579971 7.101533
+-5.054743 1.094466 6.874727
+5.306768 1.094465 6.989184
+-4.964557 -3.395684 -7.175675
+-4.934495 -3.176262 -7.248402
+-5.054743 -3.468825 -6.957499
+-4.934495 0.808995 -7.248402
+-5.271371 0.808995 -7.147061
+-5.197394 0.971529 -7.080959
+-4.934495 -3.176262 7.138983
+-5.271371 -3.176262 7.044305
+-5.197394 -3.338797 6.983383
+-5.197394 -3.013727 6.983384
+-4.964557 -2.956840 7.072919
+-5.054743 -2.883699 6.874727
+-5.301433 -2.956840 6.788884
+5.314518 0.507516 6.989184
+5.977817 -3.377745 6.989184
+5.972329 -3.307519 7.101534
+6.289109 -3.312605 7.101534
+6.356423 -0.173253 7.101533
+6.300205 -0.207909 6.989184
+6.106133 0.460014 6.989184
+6.213816 0.257571 6.989184
+5.722788 0.271581 6.989184
+5.933913 0.448674 6.989184
+5.939401 -2.886165 7.101533
+5.933913 -2.815939 6.989184
+5.721885 -2.701378 7.101534
+5.722788 -2.638846 6.989184
+-5.271371 0.808995 7.044305
+-5.197394 0.971529 6.983383
+-5.197394 0.646460 6.983383
+5.313549 -2.947237 7.101533
+5.314518 -2.874783 6.989184
+6.607947 -3.046859 6.989184
+-5.383663 -3.176262 6.760270
+6.558681 -2.994107 -7.204289
+6.289109 -3.312605 -7.204289
+6.132273 -2.896613 -7.204289
+6.106133 -2.827281 -7.071956
+6.263083 -2.677590 -7.204289
+6.213816 -2.624838 -7.071956
+5.939401 -2.886166 -7.204289
+5.933913 -2.815940 -7.071956
+6.749950 0.069333 -7.064784
+6.693733 0.034678 -7.204290
+6.356423 -0.173253 -7.204290
+6.300205 -0.207909 -7.071957
+5.715565 -3.139095 -7.064675
+5.716468 -3.076564 -7.204290
+-5.271371 -3.176262 -7.147061
+-5.197394 -3.338797 -7.080959
+-5.197394 -3.013727 -7.080959
+5.306768 -3.454419 -7.064675
+5.307737 -3.381965 -7.204290
+-5.383663 0.808995 -6.843041
+5.955865 -3.096842 7.138983
+6.210690 -3.104609 7.138983
+6.132273 -2.896613 7.101534
+6.558681 -2.994107 7.101533
+6.410882 -2.835849 7.138984
+6.263083 -2.677591 7.101534
+6.213816 -2.624838 6.989185
+6.106133 -2.827281 6.989185
+5.977817 -3.377746 -7.064675
+5.972329 -3.307520 -7.204290
+6.210691 -3.104609 -7.248401
+5.955865 -3.096843 -7.248401
+6.410882 -2.835849 -7.248401
+6.749950 0.069333 6.989184
+6.693733 0.034678 7.101533
+5.715565 -3.139095 6.989184
+5.716468 -3.076564 7.101533
+5.719176 -2.888971 -7.248402
+5.721885 -2.701378 -7.204290
+5.722788 -2.638847 -7.071957
+5.306769 -3.454419 6.989184
+5.307737 -3.381965 7.101534
+5.310643 0.797333 -7.248402
+5.313549 0.579970 -7.204290
+5.307737 1.014697 -7.204290
+5.306768 1.094465 -7.071957
+5.719176 -2.888971 7.138983
+5.310643 -3.164601 7.138983
+5.310643 -3.164601 -7.248402
+5.313549 -2.947238 -7.204289
+5.314518 -2.874784 -7.071956
+5.314518 0.507515 -7.071957
+6.643375 -1.491429 3.039066
+6.643375 -1.491429 -3.050668
+6.821739 -1.491428 -7.064785
+6.821739 -1.491428 6.989184
+6.809578 -1.491429 -2.782837
+6.809578 -0.875839 -2.782837
+6.351672 -0.943944 6.989185
+6.351672 -0.943944 -7.071957
+6.724450 -1.491428 -3.120691
+6.724450 -0.875839 -3.120691
+6.643375 -0.875839 -3.050668
+6.797417 -0.875839 -3.370221
+6.797417 -1.491428 -3.370221
+6.724450 -1.491428 -2.980645
+6.724450 -0.875839 -2.980645
+6.724450 -1.491428 2.955702
+6.724450 -0.875839 2.955702
+6.643375 -0.875839 3.039066
+6.797417 -0.875839 2.724978
+6.797417 -1.491428 2.724978
+6.797417 -1.491428 3.413092
+6.724450 -1.491428 3.122429
+6.724450 -0.875839 3.122429
+6.797417 -0.875839 3.413092
+6.821739 -0.875839 -7.064785
+6.410430 -0.935431 7.101534
+6.821739 -0.875839 6.989184
+6.762980 -0.884352 -7.204290
+6.586705 -0.909891 7.138983
+6.762980 -0.884352 7.101533
+6.410430 -0.935431 -7.204289
+6.525078 -0.069288 7.138983
+6.525078 -0.069288 -7.248402
+6.586705 -0.909891 -7.248402
+2.476359 1.050515 -4.518279
+2.501009 1.094466 -4.551934
+1.962256 1.094466 -4.901087
+1.941288 1.051111 -4.865003
+2.945996 1.052259 -4.098500
+2.962641 1.094466 -4.141275
+2.403480 1.094466 -0.821227
+2.400915 1.050118 -0.862224
+1.773068 1.050804 -0.859056
+1.766197 1.094466 -0.817667
+1.226741 1.051389 -1.026158
+1.210733 1.094466 -0.987582
+0.699648 1.055842 -1.396338
+0.714971 1.094466 -1.340315
+0.289987 1.052340 -0.898455
+0.317290 1.094466 -0.880505
+-0.203995 1.056102 -0.582203
+-0.799530 1.053181 -0.425637
+-0.794387 1.094466 -0.402315
+-1.431402 1.053129 -0.514875
+-1.445074 1.094466 -0.494217
+-1.977675 1.053101 -0.909862
+-2.004632 1.094466 -0.896713
+-2.416723 1.094466 -1.492959
+-2.373219 1.054771 -1.474397
+-2.475250 1.053082 -2.115252
+-2.515072 1.094466 -2.124517
+-2.390646 1.053047 -2.781118
+-2.429582 1.094466 -2.798640
+-2.132920 1.053034 -3.395283
+-2.168803 1.094466 -3.417721
+-1.782573 1.053020 -3.937274
+-1.814967 1.094466 -3.962616
+-1.403588 1.094466 -4.420369
+-1.363425 1.054957 -4.407804
+-0.900046 1.053006 -4.858199
+-0.928763 1.094466 -4.882653
+-0.476830 1.053012 -5.262169
+-0.507103 1.094466 -5.282917
+-0.147861 1.053059 -5.623407
+-0.182810 1.094466 -5.636931
+0.003100 1.053036 -5.913707
+-0.036787 1.094466 -5.916535
+0.082052 1.094466 -6.262894
+0.086968 1.051606 -6.195204
+0.236533 1.052950 -5.952604
+0.269841 1.094466 -5.977284
+0.451691 1.052826 -5.714274
+0.477925 1.094466 -5.746813
+0.864545 1.052312 -5.452476
+0.885142 1.094466 -5.488780
+1.382677 1.051746 -5.173584
+1.402029 1.094466 -5.210592
+3.419540 1.094466 -3.538014
+3.368828 1.050633 -3.548641
+3.606029 1.043603 -2.944557
+3.645876 1.094466 -2.954782
+3.666832 1.042365 -2.287097
+3.707907 1.063140 -2.281731
+3.429927 1.043690 -1.647229
+3.465428 1.094466 -1.626467
+3.001008 1.046932 -1.119253
+3.026263 1.094466 -1.085981
+-0.203218 1.094466 -0.546872
+-3.898509 1.618733 -0.543141
+-4.161941 1.607933 -0.652349
+-4.425372 1.597132 -0.543141
+-4.534489 1.592658 -0.279488
+-4.425372 1.597132 -0.015835
+-4.161941 1.607933 0.093374
+-3.898509 1.618733 -0.015835
+-3.789392 1.623207 -0.279488
+-3.908164 1.854233 -0.543141
+-4.171596 1.843432 -0.652349
+-4.435027 1.832632 -0.543141
+-4.544144 1.828158 -0.279488
+-4.435027 1.832632 -0.015835
+-4.171596 1.843432 0.093374
+-3.908164 1.854233 -0.015835
+-3.799047 1.858707 -0.279488
+-4.173205 1.882682 -0.279488
+-4.016245 1.613906 -0.631523
+-4.307636 1.601959 -0.631523
+-4.513680 1.593511 -0.425306
+-4.513680 1.593511 -0.133670
+-4.307636 1.601959 0.072547
+-4.016245 1.613906 0.072547
+-3.810201 1.622354 -0.133670
+-3.810201 1.622354 -0.425306
+-4.025900 1.849406 -0.631523
+-4.317291 1.837459 -0.631523
+-4.523335 1.829011 -0.425306
+-4.523335 1.829011 -0.133670
+-4.317291 1.837459 0.072547
+-4.025900 1.849406 0.072547
+-3.819856 1.857854 -0.133670
+-3.819856 1.857854 -0.425306
+-4.394678 1.602473 0.003833
+-4.520282 1.597323 -0.048238
+-4.645886 1.592174 0.003833
+-4.697913 1.590041 0.129542
+-4.645886 1.592174 0.255252
+-4.520282 1.597323 0.307322
+-4.394678 1.602473 0.255252
+-4.342651 1.604606 0.129542
+-4.403999 1.829821 0.003833
+-4.529603 1.824672 -0.048238
+-4.655208 1.819522 0.003833
+-4.707234 1.817389 0.129542
+-4.655208 1.819522 0.255252
+-4.529603 1.824672 0.307322
+-4.403999 1.829821 0.255252
+-4.351973 1.831954 0.129542
+-4.531157 1.862563 0.129542
+-4.450815 1.600172 -0.038308
+-4.589750 1.594475 -0.038308
+-4.687991 1.590447 0.060016
+-4.687991 1.590447 0.199068
+-4.589750 1.594475 0.297392
+-4.450815 1.600172 0.297392
+-4.352573 1.604199 0.199068
+-4.352573 1.604199 0.060016
+-4.460136 1.827520 -0.038308
+-4.599071 1.821823 -0.038308
+-4.697312 1.817795 0.060016
+-4.697312 1.817795 0.199068
+-4.599071 1.821823 0.297392
+-4.460136 1.827520 0.297392
+-4.361894 1.831547 0.199068
+-4.361894 1.831547 0.060016
+-4.059464 1.616217 0.178475
+-4.185068 1.611067 0.126404
+-4.310671 1.605917 0.178475
+-4.362699 1.603784 0.304184
+-4.310671 1.605917 0.429894
+-4.185068 1.611067 0.481964
+-4.059464 1.616217 0.429894
+-4.007437 1.618350 0.304184
+-4.068785 1.843565 0.178475
+-4.194389 1.838415 0.126404
+-4.319993 1.833265 0.178475
+-4.372020 1.831132 0.304184
+-4.319993 1.833265 0.429894
+-4.194389 1.838415 0.481964
+-4.068785 1.843565 0.429894
+-4.016757 1.845698 0.304184
+-4.195942 1.876306 0.304184
+-4.115600 1.613915 0.136334
+-4.254535 1.608219 0.136334
+-4.352777 1.604191 0.234659
+-4.352777 1.604191 0.373710
+-4.254535 1.608219 0.472034
+-4.115600 1.613915 0.472034
+-4.017358 1.617943 0.373710
+-4.017358 1.617943 0.234659
+-4.124921 1.841263 0.136334
+-4.263856 1.835567 0.136334
+-4.362098 1.831539 0.234659
+-4.362098 1.831539 0.373710
+-4.263856 1.835567 0.472034
+-4.124921 1.841263 0.472034
+-4.026680 1.845291 0.373710
+-4.026680 1.845291 0.234659
+-3.682921 1.631655 0.013024
+-3.808525 1.626505 -0.039046
+-3.934129 1.621356 0.013024
+-3.986156 1.619222 0.138734
+-3.934129 1.621356 0.264443
+-3.808525 1.626505 0.316514
+-3.682921 1.631655 0.264443
+-3.630894 1.633788 0.138734
+-3.692242 1.859003 0.013024
+-3.817846 1.853853 -0.039046
+-3.943450 1.848704 0.013024
+-3.995477 1.846570 0.138734
+-3.943450 1.848704 0.264443
+-3.817846 1.853853 0.316514
+-3.692242 1.859003 0.264443
+-3.640215 1.861136 0.138734
+-3.819400 1.891745 0.138734
+-3.739057 1.629353 -0.029116
+-3.877992 1.623657 -0.029116
+-3.976234 1.619629 0.069208
+-3.976234 1.619629 0.208260
+-3.877992 1.623657 0.306584
+-3.739057 1.629353 0.306584
+-3.640815 1.633381 0.208260
+-3.640815 1.633381 0.069208
+-3.748379 1.856701 -0.029116
+-3.887313 1.851005 -0.029116
+-3.985555 1.846977 0.069208
+-3.985555 1.846977 0.208260
+-3.887313 1.851005 0.306584
+-3.748379 1.856701 0.306584
+-3.650136 1.860729 0.208260
+-3.650137 1.860729 0.069208
+-4.707448 -3.019029 6.593004
+-4.615757 -1.254615 6.593004
+-4.615757 -1.254615 -6.593004
+-4.707448 -3.019029 -6.593004
+-4.707448 0.464933 6.593004
+-4.707448 0.464933 -6.593004
+6.140296 -2.925709 6.593004
+6.282652 -1.254615 6.593004
+6.282560 -1.254615 -6.593004
+6.140049 -2.925709 -6.593004
+-4.646321 -2.131939 6.593004
+-4.646321 -2.131939 -6.593004
+6.140266 0.465005 6.593004
+6.139904 0.465005 -6.593004
+-4.646321 -0.396819 6.593004
+-4.646321 -0.396819 -6.593004
+6.235084 -2.085280 6.593004
+6.235030 -2.085280 -6.593004
+6.235303 -0.443479 6.593004
+6.235032 -0.443479 -6.593004
+</float_array>
+          <technique_common>
+            <accessor source="#Album_Cute-POSITION-array" count="780" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="Album_Cute-Normal0">
+          <float_array id="Album_Cute-Normal0-array" count="13086">
+0.269157 -0.943888 -0.191388
+0.042917 -0.994452 -0.096041
+0.298254 -0.645994 -0.702664
+0.042917 -0.994452 -0.096041
+0.032032 -0.746455 -0.664664
+0.298254 -0.645994 -0.702664
+0.269157 -0.943888 -0.191388
+0.635875 -0.383934 -0.669520
+0.743797 -0.540615 -0.393068
+0.635875 -0.383934 -0.669520
+0.269157 -0.943888 -0.191388
+0.298254 -0.645994 -0.702664
+0.032570 -0.759134 0.650119
+0.082773 -0.752755 0.653076
+0.110463 -0.989738 0.090643
+0.032570 -0.759134 0.650119
+0.110463 -0.989738 0.090643
+0.042942 -0.995076 0.089328
+0.885852 0.036320 0.462543
+0.621984 0.445654 0.643838
+0.681996 0.027962 0.730822
+0.621984 0.445654 0.643838
+0.885852 0.036320 0.462543
+0.696613 0.597924 0.396506
+0.656379 -0.393241 0.643838
+0.885852 0.036320 0.462543
+0.681996 0.027962 0.730822
+0.885852 0.036320 0.462543
+0.656379 -0.393241 0.643838
+0.743222 -0.538891 0.396506
+0.892617 0.000000 -0.450815
+0.611235 -0.435360 -0.660949
+0.656472 0.000001 -0.754350
+0.611235 -0.435360 -0.660949
+0.892617 0.000000 -0.450815
+0.695818 -0.612506 -0.375064
+0.892617 0.000000 -0.450815
+0.611235 0.435362 -0.660948
+0.695818 0.612506 -0.375064
+0.611235 0.435362 -0.660948
+0.892617 0.000000 -0.450815
+0.656472 0.000001 -0.754350
+-0.009220 -0.760060 0.649787
+-0.011778 -0.995949 0.089142
+0.271895 -0.685518 0.675380
+0.271895 -0.685518 0.675380
+-0.011778 -0.995949 0.089142
+0.205755 -0.963895 0.169033
+0.205755 -0.963895 0.169033
+0.630708 -0.445530 0.635382
+0.271895 -0.685518 0.675380
+0.630708 -0.445530 0.635382
+0.205755 -0.963895 0.169033
+0.696833 -0.609640 0.377840
+0.011192 0.759370 0.650563
+0.264902 -0.000197 0.964275
+0.272302 0.685267 0.675470
+0.264902 -0.000197 0.964275
+0.011192 0.759370 0.650563
+0.000420 -0.000658 1.000000
+-0.009220 -0.760060 0.649787
+0.264902 -0.000197 0.964275
+0.000420 -0.000658 1.000000
+0.264902 -0.000197 0.964275
+-0.009220 -0.760060 0.649787
+0.271895 -0.685518 0.675380
+0.264902 -0.000197 0.964275
+0.630708 -0.445530 0.635382
+0.682806 0.000001 0.730600
+0.630708 -0.445530 0.635382
+0.264902 -0.000197 0.964275
+0.271895 -0.685518 0.675380
+0.630708 0.445530 0.635382
+0.264902 -0.000197 0.964275
+0.682806 0.000001 0.730600
+0.264902 -0.000197 0.964275
+0.630708 0.445530 0.635382
+0.272302 0.685267 0.675470
+-0.040792 0.994539 -0.096065
+0.191403 0.962657 -0.191459
+0.244707 0.668139 -0.702644
+-0.040792 0.994539 -0.096065
+0.244707 0.668139 -0.702644
+-0.030754 0.746504 -0.664670
+0.191403 0.962657 -0.191459
+0.602312 0.434699 -0.669520
+0.244707 0.668139 -0.702644
+0.602312 0.434699 -0.669520
+0.191403 0.962657 -0.191459
+0.697045 0.599688 -0.393068
+0.032032 -0.746455 -0.664664
+0.247839 0.010153 -0.968748
+0.298254 -0.645994 -0.702664
+0.247839 0.010153 -0.968748
+0.032032 -0.746455 -0.664664
+0.000133 0.000011 -1.000000
+-0.030754 0.746504 -0.664670
+0.247839 0.010153 -0.968748
+0.000133 0.000011 -1.000000
+0.247839 0.010153 -0.968748
+-0.030754 0.746504 -0.664670
+0.244707 0.668139 -0.702644
+0.247839 0.010153 -0.968748
+0.602312 0.434699 -0.669520
+0.655613 0.026880 -0.754619
+0.602312 0.434699 -0.669520
+0.247839 0.010153 -0.968748
+0.244707 0.668139 -0.702644
+0.635875 -0.383934 -0.669520
+0.247839 0.010153 -0.968748
+0.655613 0.026880 -0.754619
+0.247839 0.010153 -0.968748
+0.635875 -0.383934 -0.669520
+0.298254 -0.645994 -0.702664
+0.000102 0.000168 1.000000
+0.785067 0.060247 0.616473
+0.787754 -0.006770 0.615953
+0.785067 0.060247 0.616473
+0.000102 0.000168 1.000000
+0.000331 -0.000704 1.000000
+0.000331 -0.000704 1.000000
+0.000102 0.000168 1.000000
+-0.787596 0.008047 0.616140
+-0.787596 0.008047 0.616140
+-0.784247 -0.065738 0.616956
+0.000331 -0.000704 1.000000
+0.001250 0.001718 0.999998
+-0.787596 0.008047 0.616140
+0.000102 0.000168 1.000000
+-0.787596 0.008047 0.616140
+0.001250 0.001718 0.999998
+-0.764340 0.149060 0.627348
+0.001250 0.001718 0.999998
+0.000102 0.000168 1.000000
+0.768767 -0.133794 0.625377
+0.768767 -0.133794 0.625377
+0.000102 0.000168 1.000000
+0.787754 -0.006770 0.615953
+0.622852 -0.422367 0.658530
+0.001250 0.001718 0.999998
+0.768767 -0.133794 0.625377
+0.001250 0.001718 0.999998
+0.622852 -0.422367 0.658530
+0.001863 0.001845 0.999997
+-0.610389 0.439650 0.658888
+-0.764340 0.149060 0.627348
+0.001863 0.001845 0.999997
+0.001250 0.001718 0.999998
+0.001863 0.001845 0.999997
+-0.764340 0.149060 0.627348
+0.110391 -0.989100 -0.097446
+0.411549 -0.905730 -0.101397
+0.081422 -0.740100 -0.667549
+0.411549 -0.905730 -0.101397
+0.301071 -0.668114 -0.680426
+0.081422 -0.740100 -0.667549
+0.823775 -0.558699 -0.096176
+0.982130 -0.168573 -0.083692
+0.756334 -0.131556 -0.640822
+0.823775 -0.558699 -0.096176
+0.756334 -0.131556 -0.640822
+0.612079 -0.414994 -0.673156
+-0.599713 0.432128 -0.673505
+-0.977296 0.194183 -0.084769
+-0.803383 0.587534 -0.096853
+-0.977296 0.194183 -0.084769
+-0.599713 0.432128 -0.673505
+-0.751867 0.146706 -0.642785
+0.612079 -0.414994 -0.673156
+0.001163 0.001575 -0.999998
+0.001726 0.001692 -0.999997
+0.001163 0.001575 -0.999998
+0.612079 -0.414994 -0.673156
+0.756334 -0.131556 -0.640822
+-0.751867 0.146706 -0.642785
+-0.599713 0.432128 -0.673505
+0.001726 0.001692 -0.999997
+-0.751867 0.146706 -0.642785
+0.001726 0.001692 -0.999997
+0.001163 0.001575 -0.999998
+-0.996686 0.010364 -0.080686
+-0.771729 -0.064711 -0.632650
+-0.993161 -0.084108 -0.080981
+-0.771729 -0.064711 -0.632650
+-0.996686 0.010364 -0.080686
+-0.775049 0.007924 -0.631851
+-0.996686 0.010364 -0.080686
+-0.977296 0.194183 -0.084769
+-0.751867 0.146706 -0.642785
+-0.996686 0.010364 -0.080686
+-0.751867 0.146706 -0.642785
+-0.775049 0.007924 -0.631851
+0.787754 -0.006770 0.615953
+0.982598 -0.168662 0.077805
+0.768767 -0.133794 0.625377
+0.982598 -0.168662 0.077805
+0.787754 -0.006770 0.615953
+0.997156 -0.008296 0.074909
+-0.775049 0.007924 -0.631851
+0.001163 0.001575 -0.999998
+0.000096 0.000155 -1.000000
+0.001163 0.001575 -0.999998
+-0.775049 0.007924 -0.631851
+-0.751867 0.146706 -0.642785
+0.000096 0.000155 -1.000000
+0.001163 0.001575 -0.999998
+0.756334 -0.131556 -0.640822
+0.000096 0.000155 -1.000000
+0.756334 -0.131556 -0.640822
+0.775213 -0.006655 -0.631665
+-0.784247 -0.065738 0.616956
+0.002375 -0.002364 0.999994
+0.000331 -0.000704 1.000000
+0.002375 -0.002364 0.999994
+-0.784247 -0.065738 0.616956
+-0.714256 -0.277735 0.642418
+0.000331 -0.000704 1.000000
+0.002375 -0.002364 0.999994
+0.726501 0.253491 0.638701
+0.000331 -0.000704 1.000000
+0.726501 0.253491 0.638701
+0.785067 0.060247 0.616473
+0.772559 0.059258 -0.632172
+0.000096 0.000155 -1.000000
+0.775213 -0.006655 -0.631665
+0.000096 0.000155 -1.000000
+0.772559 0.059258 -0.632172
+0.000310 -0.000647 -1.000000
+-0.771729 -0.064711 -0.632650
+-0.775049 0.007924 -0.631851
+0.000310 -0.000647 -1.000000
+0.000310 -0.000647 -1.000000
+-0.775049 0.007924 -0.631851
+0.000096 0.000155 -1.000000
+0.010822 0.746804 -0.664956
+0.208422 0.972952 -0.099621
+0.014477 0.995237 -0.096402
+0.208422 0.972952 -0.099621
+0.010822 0.746804 -0.664956
+0.154398 0.722257 -0.674170
+0.483938 0.564398 0.668774
+-0.000433 -0.000419 1.000000
+0.156782 0.734791 0.659926
+-0.000433 -0.000419 1.000000
+0.483938 0.564398 0.668774
+0.001402 -0.001724 0.999997
+0.002375 -0.002364 0.999994
+0.001402 -0.001724 0.999997
+0.483938 0.564398 0.668774
+0.483938 0.564398 0.668774
+0.726501 0.253491 0.638701
+0.002375 -0.002364 0.999994
+0.001402 -0.001724 0.999997
+-0.714256 -0.277735 0.642418
+-0.469032 -0.579780 0.666231
+-0.714256 -0.277735 0.642418
+0.001402 -0.001724 0.999997
+0.002375 -0.002364 0.999994
+0.001402 -0.001724 0.999997
+-0.156790 -0.735200 0.659468
+-0.000433 -0.000419 1.000000
+-0.156790 -0.735200 0.659468
+0.001402 -0.001724 0.999997
+-0.469032 -0.579780 0.666231
+-0.156790 -0.735200 0.659468
+-0.011778 -0.995949 0.089142
+-0.009220 -0.760060 0.649787
+-0.011778 -0.995949 0.089142
+-0.156790 -0.735200 0.659468
+-0.207874 -0.973794 0.092270
+-0.771729 -0.064711 -0.632650
+-0.702167 -0.273196 -0.657515
+-0.993161 -0.084108 -0.080981
+-0.925337 -0.368222 -0.090355
+-0.993161 -0.084108 -0.080981
+-0.702167 -0.273196 -0.657515
+-0.207716 -0.973143 -0.099233
+-0.622207 -0.776345 -0.100729
+-0.460565 -0.569693 -0.680684
+-0.207716 -0.973143 -0.099233
+-0.460565 -0.569693 -0.680684
+-0.153911 -0.722420 -0.674108
+-0.622207 -0.776345 -0.100729
+-0.925337 -0.368222 -0.090355
+-0.460565 -0.569693 -0.680684
+-0.925337 -0.368222 -0.090355
+-0.702167 -0.273196 -0.657515
+-0.460565 -0.569693 -0.680684
+0.000182 -0.000065 -1.000000
+0.000069 -0.000017 -1.000000
+0.154398 0.722257 -0.674170
+0.000182 -0.000065 -1.000000
+0.154398 0.722257 -0.674170
+0.010822 0.746804 -0.664956
+-0.009138 -0.747147 -0.664596
+0.000069 -0.000017 -1.000000
+0.000182 -0.000065 -1.000000
+0.000069 -0.000017 -1.000000
+-0.009138 -0.747147 -0.664596
+-0.153911 -0.722420 -0.674108
+0.110463 -0.989738 0.090643
+0.111438 -0.993771 0.000003
+0.042942 -0.995076 0.089328
+0.042942 -0.995076 0.089328
+0.111438 -0.993771 0.000003
+0.042630 -0.999091 -0.000005
+0.272302 0.685267 0.675470
+0.014509 0.995868 0.089650
+0.011192 0.759370 0.650563
+0.014509 0.995868 0.089650
+0.272302 0.685267 0.675470
+0.206141 0.963804 0.169080
+0.630708 0.445530 0.635382
+0.206141 0.963804 0.169080
+0.272302 0.685267 0.675470
+0.206141 0.963804 0.169080
+0.630708 0.445530 0.635382
+0.696833 0.609640 0.377840
+0.743222 -0.538891 0.396506
+0.772759 -0.616799 0.149676
+0.885852 0.036320 0.462543
+0.885852 0.036320 0.462543
+0.772759 -0.616799 0.149676
+0.979202 0.040147 0.198877
+0.979202 0.040147 0.198877
+0.778099 -0.620285 -0.099033
+0.990470 0.040609 -0.131605
+0.778099 -0.620285 -0.099033
+0.979202 0.040147 0.198877
+0.772759 -0.616799 0.149676
+0.979202 0.040147 0.198877
+0.990470 0.040609 -0.131605
+0.719673 0.677988 0.149676
+0.719673 0.677988 0.149676
+0.990470 0.040609 -0.131605
+0.724710 0.681900 -0.099033
+0.696613 0.597924 0.396506
+0.979202 0.040147 0.198877
+0.719673 0.677988 0.149676
+0.979202 0.040147 0.198877
+0.696613 0.597924 0.396506
+0.885852 0.036320 0.462543
+0.888582 0.000001 0.458719
+0.630708 0.445530 0.635382
+0.682806 0.000001 0.730600
+0.630708 0.445530 0.635382
+0.888582 0.000001 0.458719
+0.696833 0.609640 0.377840
+0.630708 -0.445530 0.635382
+0.888582 0.000001 0.458719
+0.682806 0.000001 0.730600
+0.888582 0.000001 0.458719
+0.630708 -0.445530 0.635382
+0.696833 -0.609640 0.377840
+-0.011778 -0.995949 0.089142
+0.164891 -0.985879 0.029223
+0.205755 -0.963895 0.169033
+0.164891 -0.985879 0.029223
+-0.011778 -0.995949 0.089142
+-0.009323 -0.999956 -0.000009
+-0.009323 -0.999956 -0.000009
+0.163495 -0.986352 -0.019449
+0.164891 -0.985879 0.029223
+0.164891 -0.985879 0.029223
+0.163495 -0.986352 -0.019449
+0.702342 -0.698679 0.136251
+0.702342 -0.698679 0.136251
+0.163495 -0.986352 -0.019449
+0.705423 -0.703011 -0.090302
+0.164891 -0.985879 0.029223
+0.696833 -0.609640 0.377840
+0.205755 -0.963895 0.169033
+0.696833 -0.609640 0.377840
+0.164891 -0.985879 0.029223
+0.702342 -0.698679 0.136251
+0.254667 0.683393 0.684193
+-0.040818 0.995164 0.089351
+-0.031281 0.759184 0.650124
+-0.040818 0.995164 0.089351
+0.254667 0.683393 0.684193
+0.193164 0.963172 0.187051
+0.621984 0.445654 0.643838
+0.193164 0.963172 0.187051
+0.254667 0.683393 0.684193
+0.193164 0.963172 0.187051
+0.621984 0.445654 0.643838
+0.696613 0.597924 0.396506
+0.411836 -0.906363 0.094322
+0.828362 -0.560193 0.000000
+0.414732 -0.909943 0.000000
+0.828362 -0.560193 0.000000
+0.411836 -0.906363 0.094322
+0.824266 -0.559093 0.089447
+0.768767 -0.133794 0.625377
+0.824266 -0.559093 0.089447
+0.622852 -0.422367 0.658530
+0.824266 -0.559093 0.089447
+0.768767 -0.133794 0.625377
+0.982598 -0.168662 0.077805
+-0.610389 0.439650 0.658888
+-0.977773 0.194288 0.078810
+-0.764340 0.149060 0.627348
+-0.977773 0.194288 0.078810
+-0.610389 0.439650 0.658888
+-0.803872 0.587943 0.090079
+-0.784247 -0.065738 0.616956
+-0.997129 0.010369 0.075004
+-0.993606 -0.084146 0.075279
+-0.997129 0.010369 0.075004
+-0.784247 -0.065738 0.616956
+-0.787596 0.008047 0.616140
+-0.764340 0.149060 0.627348
+-0.997129 0.010369 0.075004
+-0.787596 0.008047 0.616140
+-0.997129 0.010369 0.075004
+-0.764340 0.149060 0.627348
+-0.977773 0.194288 0.078810
+-0.011778 -0.995949 0.089142
+-0.208656 -0.977989 -0.000011
+-0.009323 -0.999956 -0.000009
+-0.208656 -0.977989 -0.000011
+-0.011778 -0.995949 0.089142
+-0.207874 -0.973794 0.092270
+-0.714256 -0.277735 0.642418
+-0.784247 -0.065738 0.616956
+-0.993606 -0.084146 0.075279
+-0.714256 -0.277735 0.642418
+-0.993606 -0.084146 0.075279
+-0.925838 -0.368462 0.084019
+-0.469032 -0.579780 0.666231
+-0.207874 -0.973794 0.092270
+-0.156790 -0.735200 0.659468
+-0.207874 -0.973794 0.092270
+-0.469032 -0.579780 0.666231
+-0.622634 -0.776885 0.093685
+-0.714256 -0.277735 0.642418
+-0.925838 -0.368462 0.084019
+-0.469032 -0.579780 0.666231
+-0.469032 -0.579780 0.666231
+-0.925838 -0.368462 0.084019
+-0.622634 -0.776885 0.093685
+0.163820 0.986298 -0.019460
+0.014477 0.995237 -0.096402
+0.011668 0.999932 0.000016
+0.014477 0.995237 -0.096402
+0.163820 0.986298 -0.019460
+0.203676 0.963429 -0.174128
+0.163820 0.986298 -0.019460
+0.695818 0.612506 -0.375064
+0.203676 0.963429 -0.174128
+0.695818 0.612506 -0.375064
+0.163820 0.986298 -0.019460
+0.705422 0.703011 -0.090301
+0.991508 0.000000 -0.130043
+0.892617 0.000000 -0.450815
+0.705422 0.703011 -0.090301
+0.705422 0.703011 -0.090301
+0.892617 0.000000 -0.450815
+0.695818 0.612506 -0.375064
+0.892617 0.000000 -0.450815
+0.991508 0.000000 -0.130043
+0.705423 -0.703011 -0.090302
+0.705423 -0.703011 -0.090302
+0.695818 -0.612506 -0.375064
+0.892617 0.000000 -0.450815
+0.160800 0.986646 -0.025958
+-0.040792 0.994539 -0.096065
+-0.040920 0.999162 0.000001
+-0.040792 0.994539 -0.096065
+0.160800 0.986646 -0.025958
+0.191403 0.962657 -0.191459
+0.160800 0.986646 -0.025958
+0.697045 0.599688 -0.393068
+0.191403 0.962657 -0.191459
+0.697045 0.599688 -0.393068
+0.160800 0.986646 -0.025958
+0.724710 0.681900 -0.099033
+0.111438 -0.993771 0.000003
+0.411549 -0.905730 -0.101397
+0.110391 -0.989100 -0.097446
+0.411549 -0.905730 -0.101397
+0.111438 -0.993771 0.000003
+0.414732 -0.909943 0.000000
+0.985772 -0.168086 0.000000
+0.982130 -0.168573 -0.083692
+0.828362 -0.560193 0.000000
+0.828362 -0.560193 0.000000
+0.982130 -0.168573 -0.083692
+0.823775 -0.558699 -0.096176
+-0.999945 0.010453 -0.000000
+-0.993161 -0.084108 -0.080981
+-0.996412 -0.084632 -0.000000
+-0.993161 -0.084108 -0.080981
+-0.999945 0.010453 -0.000000
+-0.996686 0.010364 -0.080686
+-0.624666 -0.780892 -0.000000
+-0.622207 -0.776345 -0.100729
+-0.208656 -0.977989 -0.000011
+-0.208656 -0.977989 -0.000011
+-0.622207 -0.776345 -0.100729
+-0.207716 -0.973143 -0.099233
+-0.622207 -0.776345 -0.100729
+-0.624666 -0.780892 -0.000000
+-0.928647 -0.370966 -0.000000
+-0.928647 -0.370966 -0.000000
+-0.925337 -0.368222 -0.090355
+-0.622207 -0.776345 -0.100729
+0.081422 -0.740100 -0.667549
+0.032032 -0.746455 -0.664664
+0.110391 -0.989100 -0.097446
+0.042917 -0.994452 -0.096041
+0.110391 -0.989100 -0.097446
+0.032032 -0.746455 -0.664664
+0.890171 0.036497 -0.454163
+0.635875 -0.383934 -0.669520
+0.655613 0.026880 -0.754619
+0.635875 -0.383934 -0.669520
+0.890171 0.036497 -0.454163
+0.743797 -0.540615 -0.393068
+0.890171 0.036497 -0.454163
+0.602312 0.434699 -0.669520
+0.697045 0.599688 -0.393068
+0.602312 0.434699 -0.669520
+0.890171 0.036497 -0.454163
+0.655613 0.026880 -0.754619
+0.203307 -0.963517 -0.174075
+-0.011773 -0.995324 -0.095870
+0.261790 -0.670890 -0.693810
+-0.011773 -0.995324 -0.095870
+-0.009138 -0.747147 -0.664596
+0.261790 -0.670890 -0.693810
+0.203307 -0.963517 -0.174075
+0.611235 -0.435360 -0.660949
+0.695818 -0.612506 -0.375064
+0.611235 -0.435360 -0.660949
+0.203307 -0.963517 -0.174075
+0.261790 -0.670890 -0.693810
+0.823775 -0.558699 -0.096176
+0.301071 -0.668114 -0.680426
+0.411549 -0.905730 -0.101397
+0.301071 -0.668114 -0.680426
+0.823775 -0.558699 -0.096176
+0.612079 -0.414994 -0.673156
+-0.011773 -0.995324 -0.095870
+-0.207716 -0.973143 -0.099233
+-0.153911 -0.722420 -0.674108
+-0.011773 -0.995324 -0.095870
+-0.153911 -0.722420 -0.674108
+-0.009138 -0.747147 -0.664596
+0.203676 0.963429 -0.174128
+0.611235 0.435362 -0.660948
+0.262079 0.670797 -0.693791
+0.611235 0.435362 -0.660948
+0.203676 0.963429 -0.174128
+0.695818 0.612506 -0.375064
+0.014477 0.995237 -0.096402
+0.203676 0.963429 -0.174128
+0.262079 0.670797 -0.693791
+0.014477 0.995237 -0.096402
+0.262079 0.670797 -0.693791
+0.010822 0.746804 -0.664956
+0.010822 0.746804 -0.664956
+0.246596 -0.000006 -0.969119
+0.000182 -0.000065 -1.000000
+0.246596 -0.000006 -0.969119
+0.010822 0.746804 -0.664956
+0.262079 0.670797 -0.693791
+0.246596 -0.000006 -0.969119
+0.611235 0.435362 -0.660948
+0.656472 0.000001 -0.754350
+0.611235 0.435362 -0.660948
+0.246596 -0.000006 -0.969119
+0.262079 0.670797 -0.693791
+0.611235 -0.435360 -0.660949
+0.246596 -0.000006 -0.969119
+0.656472 0.000001 -0.754350
+0.246596 -0.000006 -0.969119
+0.611235 -0.435360 -0.660949
+0.261790 -0.670890 -0.693810
+-0.009138 -0.747147 -0.664596
+0.246596 -0.000006 -0.969119
+0.261790 -0.670890 -0.693810
+0.246596 -0.000006 -0.969119
+-0.009138 -0.747147 -0.664596
+0.000182 -0.000065 -1.000000
+0.032570 -0.759134 0.650119
+0.266039 0.010899 0.963901
+0.000145 0.000012 1.000000
+0.266039 0.010899 0.963901
+0.032570 -0.759134 0.650119
+0.309422 -0.660382 0.684217
+0.266039 0.010899 0.963901
+0.656379 -0.393241 0.643838
+0.681996 0.027962 0.730822
+0.656379 -0.393241 0.643838
+0.266039 0.010899 0.963901
+0.309422 -0.660382 0.684217
+0.621984 0.445654 0.643838
+0.266039 0.010899 0.963901
+0.681996 0.027962 0.730822
+0.266039 0.010899 0.963901
+0.621984 0.445654 0.643838
+0.254667 0.683393 0.684193
+-0.031281 0.759184 0.650124
+0.266039 0.010899 0.963901
+0.254667 0.683393 0.684193
+0.266039 0.010899 0.963901
+-0.031281 0.759184 0.650124
+0.000145 0.000012 1.000000
+0.270954 -0.944257 0.186982
+0.656379 -0.393241 0.643838
+0.309422 -0.660382 0.684217
+0.656379 -0.393241 0.643838
+0.270954 -0.944257 0.186982
+0.743222 -0.538891 0.396506
+0.032570 -0.759134 0.650119
+0.042942 -0.995076 0.089328
+0.309422 -0.660382 0.684217
+0.309422 -0.660382 0.684217
+0.042942 -0.995076 0.089328
+0.270954 -0.944257 0.186982
+0.042630 -0.999091 -0.000005
+0.240681 -0.970257 -0.025943
+0.241150 -0.969698 0.039156
+0.241150 -0.969698 0.039156
+0.240681 -0.970257 -0.025943
+0.772759 -0.616799 0.149676
+0.772759 -0.616799 0.149676
+0.240681 -0.970257 -0.025943
+0.778099 -0.620285 -0.099033
+0.241150 -0.969698 0.039156
+0.743222 -0.538891 0.396506
+0.270954 -0.944257 0.186982
+0.743222 -0.538891 0.396506
+0.241150 -0.969698 0.039156
+0.772759 -0.616799 0.149676
+0.042942 -0.995076 0.089328
+0.241150 -0.969698 0.039156
+0.270954 -0.944257 0.186982
+0.241150 -0.969698 0.039156
+0.042942 -0.995076 0.089328
+0.042630 -0.999091 -0.000005
+0.082773 -0.752755 0.653076
+0.000145 0.000012 1.000000
+0.000792 0.000199 1.000000
+0.000145 0.000012 1.000000
+0.082773 -0.752755 0.653076
+0.032570 -0.759134 0.650119
+0.000792 0.000199 1.000000
+-0.031281 0.759184 0.650124
+-0.075530 0.753784 0.652767
+-0.031281 0.759184 0.650124
+0.000792 0.000199 1.000000
+0.000145 0.000012 1.000000
+0.081422 -0.740100 -0.667549
+0.000133 0.000011 -1.000000
+0.032032 -0.746455 -0.664664
+0.000133 0.000011 -1.000000
+0.081422 -0.740100 -0.667549
+0.000728 0.000185 -1.000000
+-0.074238 0.741135 -0.667239
+-0.030754 0.746504 -0.664670
+0.000728 0.000185 -1.000000
+0.000133 0.000011 -1.000000
+0.000728 0.000185 -1.000000
+-0.030754 0.746504 -0.664670
+0.001863 0.001845 0.999997
+0.001325 0.000611 0.999999
+-0.610389 0.439650 0.658888
+0.001325 0.000611 0.999999
+-0.294172 0.685526 0.665971
+-0.610389 0.439650 0.658888
+0.306333 -0.679985 0.666169
+0.001863 0.001845 0.999997
+0.622852 -0.422367 0.658530
+0.001863 0.001845 0.999997
+0.306333 -0.679985 0.666169
+0.001325 0.000611 0.999999
+0.001325 0.000611 0.999999
+-0.075530 0.753784 0.652767
+-0.294172 0.685526 0.665971
+-0.075530 0.753784 0.652767
+0.001325 0.000611 0.999999
+0.000792 0.000199 1.000000
+0.306333 -0.679985 0.666169
+0.000792 0.000199 1.000000
+0.001325 0.000611 0.999999
+0.000792 0.000199 1.000000
+0.306333 -0.679985 0.666169
+0.082773 -0.752755 0.653076
+0.000728 0.000185 -1.000000
+0.001219 0.000562 -0.999999
+-0.074238 0.741135 -0.667239
+0.001219 0.000562 -0.999999
+-0.289017 0.673615 -0.680230
+-0.074238 0.741135 -0.667239
+0.301071 -0.668114 -0.680426
+0.000728 0.000185 -1.000000
+0.081422 -0.740100 -0.667549
+0.000728 0.000185 -1.000000
+0.301071 -0.668114 -0.680426
+0.001219 0.000562 -0.999999
+0.001219 0.000562 -0.999999
+-0.599713 0.432128 -0.673505
+-0.289017 0.673615 -0.680230
+-0.599713 0.432128 -0.673505
+0.001219 0.000562 -0.999999
+0.001726 0.001692 -0.999997
+0.301071 -0.668114 -0.680426
+0.001726 0.001692 -0.999997
+0.001219 0.000562 -0.999999
+0.001726 0.001692 -0.999997
+0.301071 -0.668114 -0.680426
+0.612079 -0.414994 -0.673156
+0.306333 -0.679985 0.666169
+0.824266 -0.559093 0.089447
+0.411836 -0.906363 0.094322
+0.824266 -0.559093 0.089447
+0.306333 -0.679985 0.666169
+0.622852 -0.422367 0.658530
+-0.803383 0.587534 -0.096853
+-0.391051 0.914772 -0.101351
+-0.599713 0.432128 -0.673505
+-0.391051 0.914772 -0.101351
+-0.289017 0.673615 -0.680230
+-0.599713 0.432128 -0.673505
+0.306333 -0.679985 0.666169
+0.411836 -0.906363 0.094322
+0.082773 -0.752755 0.653076
+0.082773 -0.752755 0.653076
+0.411836 -0.906363 0.094322
+0.110463 -0.989738 0.090643
+-0.031281 0.759184 0.650124
+-0.098476 0.991021 0.090439
+-0.075530 0.753784 0.652767
+-0.098476 0.991021 0.090439
+-0.031281 0.759184 0.650124
+-0.040818 0.995164 0.089351
+-0.294172 0.685526 0.665971
+-0.391327 0.915409 0.094279
+-0.610389 0.439650 0.658888
+-0.610389 0.439650 0.658888
+-0.391327 0.915409 0.094279
+-0.803872 0.587943 0.090079
+-0.098595 0.995128 0.000000
+-0.040920 0.999162 0.000001
+-0.040792 0.994539 -0.096065
+-0.098595 0.995128 0.000000
+-0.040792 0.994539 -0.096065
+-0.098411 0.990384 -0.097231
+-0.391327 0.915409 0.094279
+-0.392650 0.919688 0.000000
+-0.803872 0.587943 0.090079
+-0.803872 0.587943 0.090079
+-0.392650 0.919688 0.000000
+-0.806509 0.591222 -0.000000
+-0.098411 0.990384 -0.097231
+-0.040792 0.994539 -0.096065
+-0.030754 0.746504 -0.664670
+-0.098411 0.990384 -0.097231
+-0.030754 0.746504 -0.664670
+-0.074238 0.741135 -0.667239
+-0.098411 0.990384 -0.097231
+-0.289017 0.673615 -0.680230
+-0.391051 0.914772 -0.101351
+-0.289017 0.673615 -0.680230
+-0.098411 0.990384 -0.097231
+-0.074238 0.741135 -0.667239
+-0.098476 0.991021 0.090439
+-0.392650 0.919688 0.000000
+-0.391327 0.915409 0.094279
+-0.392650 0.919688 0.000000
+-0.098476 0.991021 0.090439
+-0.098595 0.995128 0.000000
+-0.294172 0.685526 0.665971
+-0.098476 0.991021 0.090439
+-0.391327 0.915409 0.094279
+-0.098476 0.991021 0.090439
+-0.294172 0.685526 0.665971
+-0.075530 0.753784 0.652767
+-0.977296 0.194183 -0.084769
+-0.980683 0.195604 -0.000000
+-0.806509 0.591222 -0.000000
+-0.806509 0.591222 -0.000000
+-0.803383 0.587534 -0.096853
+-0.977296 0.194183 -0.084769
+-0.980683 0.195604 -0.000000
+-0.996686 0.010364 -0.080686
+-0.999945 0.010453 -0.000000
+-0.996686 0.010364 -0.080686
+-0.980683 0.195604 -0.000000
+-0.977296 0.194183 -0.084769
+-0.928647 -0.370966 -0.000000
+-0.996412 -0.084632 -0.000000
+-0.925337 -0.368222 -0.090355
+-0.996412 -0.084632 -0.000000
+-0.993161 -0.084108 -0.080981
+-0.925337 -0.368222 -0.090355
+-0.806509 0.591222 -0.000000
+-0.977773 0.194288 0.078810
+-0.803872 0.587943 0.090079
+-0.977773 0.194288 0.078810
+-0.806509 0.591222 -0.000000
+-0.980683 0.195604 -0.000000
+-0.997129 0.010369 0.075004
+-0.980683 0.195604 -0.000000
+-0.999945 0.010453 -0.000000
+-0.980683 0.195604 -0.000000
+-0.997129 0.010369 0.075004
+-0.977773 0.194288 0.078810
+-0.993606 -0.084146 0.075279
+-0.996412 -0.084632 -0.000000
+-0.925838 -0.368462 0.084019
+-0.925838 -0.368462 0.084019
+-0.996412 -0.084632 -0.000000
+-0.928647 -0.370966 -0.000000
+0.042630 -0.999091 -0.000005
+0.111438 -0.993771 0.000003
+0.042917 -0.994452 -0.096041
+0.111438 -0.993771 0.000003
+0.110391 -0.989100 -0.097446
+0.042917 -0.994452 -0.096041
+0.890171 0.036497 -0.454163
+0.990470 0.040609 -0.131605
+0.778099 -0.620285 -0.099033
+0.778099 -0.620285 -0.099033
+0.743797 -0.540615 -0.393068
+0.890171 0.036497 -0.454163
+0.990470 0.040609 -0.131605
+0.697045 0.599688 -0.393068
+0.724710 0.681900 -0.099033
+0.697045 0.599688 -0.393068
+0.990470 0.040609 -0.131605
+0.890171 0.036497 -0.454163
+0.163495 -0.986352 -0.019449
+-0.011773 -0.995324 -0.095870
+0.203307 -0.963517 -0.174075
+-0.011773 -0.995324 -0.095870
+0.163495 -0.986352 -0.019449
+-0.009323 -0.999956 -0.000009
+0.163495 -0.986352 -0.019449
+0.695818 -0.612506 -0.375064
+0.705423 -0.703011 -0.090302
+0.695818 -0.612506 -0.375064
+0.163495 -0.986352 -0.019449
+0.203307 -0.963517 -0.174075
+0.828362 -0.560193 0.000000
+0.411549 -0.905730 -0.101397
+0.414732 -0.909943 0.000000
+0.411549 -0.905730 -0.101397
+0.828362 -0.560193 0.000000
+0.823775 -0.558699 -0.096176
+-0.208656 -0.977989 -0.000011
+-0.011773 -0.995324 -0.095870
+-0.009323 -0.999956 -0.000009
+-0.011773 -0.995324 -0.095870
+-0.208656 -0.977989 -0.000011
+-0.207716 -0.973143 -0.099233
+0.163820 0.986298 -0.019460
+0.011668 0.999932 0.000016
+0.165217 0.985824 0.029245
+0.014509 0.995868 0.089650
+0.165217 0.985824 0.029245
+0.011668 0.999932 0.000016
+0.165217 0.985824 0.029245
+0.014509 0.995868 0.089650
+0.206141 0.963804 0.169080
+0.696833 0.609640 0.377840
+0.165217 0.985824 0.029245
+0.206141 0.963804 0.169080
+0.165217 0.985824 0.029245
+0.696833 0.609640 0.377840
+0.702341 0.698679 0.136251
+0.163820 0.986298 -0.019460
+0.165217 0.985824 0.029245
+0.702341 0.698679 0.136251
+0.702341 0.698679 0.136251
+0.705422 0.703011 -0.090301
+0.163820 0.986298 -0.019460
+0.980598 0.000001 0.196029
+0.991508 0.000000 -0.130043
+0.702341 0.698679 0.136251
+0.702341 0.698679 0.136251
+0.991508 0.000000 -0.130043
+0.705422 0.703011 -0.090301
+0.696833 0.609640 0.377840
+0.980598 0.000001 0.196029
+0.702341 0.698679 0.136251
+0.980598 0.000001 0.196029
+0.696833 0.609640 0.377840
+0.888582 0.000001 0.458719
+0.696833 -0.609640 0.377840
+0.980598 0.000001 0.196029
+0.888582 0.000001 0.458719
+0.980598 0.000001 0.196029
+0.696833 -0.609640 0.377840
+0.702342 -0.698679 0.136251
+0.991508 0.000000 -0.130043
+0.980598 0.000001 0.196029
+0.702342 -0.698679 0.136251
+0.702342 -0.698679 0.136251
+0.705423 -0.703011 -0.090302
+0.991508 0.000000 -0.130043
+0.160800 0.986646 -0.025958
+-0.040920 0.999162 0.000001
+0.161315 0.986125 0.039186
+-0.040818 0.995164 0.089351
+0.161315 0.986125 0.039186
+-0.040920 0.999162 0.000001
+0.161315 0.986125 0.039186
+-0.040818 0.995164 0.089351
+0.193164 0.963172 0.187051
+0.696613 0.597924 0.396506
+0.161315 0.986125 0.039186
+0.193164 0.963172 0.187051
+0.161315 0.986125 0.039186
+0.696613 0.597924 0.396506
+0.719673 0.677988 0.149676
+0.160800 0.986646 -0.025958
+0.161315 0.986125 0.039186
+0.719673 0.677988 0.149676
+0.719673 0.677988 0.149676
+0.724710 0.681900 -0.099033
+0.160800 0.986646 -0.025958
+0.411836 -0.906363 0.094322
+0.111438 -0.993771 0.000003
+0.110463 -0.989738 0.090643
+0.111438 -0.993771 0.000003
+0.411836 -0.906363 0.094322
+0.414732 -0.909943 0.000000
+0.982598 -0.168662 0.077805
+0.828362 -0.560193 0.000000
+0.824266 -0.559093 0.089447
+0.828362 -0.560193 0.000000
+0.982598 -0.168662 0.077805
+0.985772 -0.168086 0.000000
+-0.622634 -0.776885 0.093685
+-0.208656 -0.977989 -0.000011
+-0.207874 -0.973794 0.092270
+-0.208656 -0.977989 -0.000011
+-0.622634 -0.776885 0.093685
+-0.624666 -0.780892 -0.000000
+-0.925838 -0.368462 0.084019
+-0.928647 -0.370966 -0.000000
+-0.622634 -0.776885 0.093685
+-0.622634 -0.776885 0.093685
+-0.928647 -0.370966 -0.000000
+-0.624666 -0.780892 -0.000000
+0.240681 -0.970257 -0.025943
+0.042917 -0.994452 -0.096041
+0.269157 -0.943888 -0.191388
+0.042917 -0.994452 -0.096041
+0.240681 -0.970257 -0.025943
+0.042630 -0.999091 -0.000005
+0.240681 -0.970257 -0.025943
+0.743797 -0.540615 -0.393068
+0.778099 -0.620285 -0.099033
+0.743797 -0.540615 -0.393068
+0.240681 -0.970257 -0.025943
+0.269157 -0.943888 -0.191388
+-0.040818 0.995164 0.089351
+-0.098595 0.995128 0.000000
+-0.098476 0.991021 0.090439
+-0.098595 0.995128 0.000000
+-0.040818 0.995164 0.089351
+-0.040920 0.999162 0.000001
+-0.803383 0.587534 -0.096853
+-0.806509 0.591222 -0.000000
+-0.392650 0.919688 0.000000
+-0.392650 0.919688 0.000000
+-0.391051 0.914772 -0.101351
+-0.803383 0.587534 -0.096853
+-0.098595 0.995128 0.000000
+-0.098411 0.990384 -0.097231
+-0.392650 0.919688 0.000000
+-0.392650 0.919688 0.000000
+-0.098411 0.990384 -0.097231
+-0.391051 0.914772 -0.101351
+-0.993606 -0.084146 0.075279
+-0.999945 0.010453 -0.000000
+-0.996412 -0.084632 -0.000000
+-0.999945 0.010453 -0.000000
+-0.993606 -0.084146 0.075279
+-0.997129 0.010369 0.075004
+-0.000433 -0.000419 1.000000
+-0.009220 -0.760060 0.649787
+0.000420 -0.000658 1.000000
+-0.009220 -0.760060 0.649787
+-0.000433 -0.000419 1.000000
+-0.156790 -0.735200 0.659468
+0.156782 0.734791 0.659926
+0.000420 -0.000658 1.000000
+0.011192 0.759370 0.650563
+0.000420 -0.000658 1.000000
+0.156782 0.734791 0.659926
+-0.000433 -0.000419 1.000000
+0.011192 0.759370 0.650563
+0.208625 0.973595 0.092674
+0.156782 0.734791 0.659926
+0.208625 0.973595 0.092674
+0.011192 0.759370 0.650563
+0.014509 0.995868 0.089650
+0.209374 0.977836 0.000021
+0.014477 0.995237 -0.096402
+0.208422 0.972952 -0.099621
+0.014477 0.995237 -0.096402
+0.209374 0.977836 0.000021
+0.011668 0.999932 0.000016
+0.014509 0.995868 0.089650
+0.209374 0.977836 0.000021
+0.208625 0.973595 0.092674
+0.209374 0.977836 0.000021
+0.014509 0.995868 0.089650
+0.011668 0.999932 0.000016
+0.997156 -0.008296 0.074909
+0.999966 -0.008233 -0.000000
+0.982598 -0.168662 0.077805
+0.982598 -0.168662 0.077805
+0.999966 -0.008233 -0.000000
+0.985772 -0.168086 0.000000
+0.775213 -0.006655 -0.631665
+0.982130 -0.168573 -0.083692
+0.996713 -0.008292 -0.080583
+0.982130 -0.168573 -0.083692
+0.775213 -0.006655 -0.631665
+0.756334 -0.131556 -0.640822
+0.985772 -0.168086 0.000000
+0.999966 -0.008233 -0.000000
+0.982130 -0.168573 -0.083692
+0.999966 -0.008233 -0.000000
+0.996713 -0.008292 -0.080583
+0.982130 -0.168573 -0.083692
+0.001787 -0.001579 -0.999997
+-0.153911 -0.722420 -0.674108
+-0.460565 -0.569693 -0.680684
+-0.153911 -0.722420 -0.674108
+0.001787 -0.001579 -0.999997
+0.000069 -0.000017 -1.000000
+0.001787 -0.001579 -0.999997
+-0.702167 -0.273196 -0.657515
+0.002196 -0.002165 -0.999995
+-0.702167 -0.273196 -0.657515
+0.001787 -0.001579 -0.999997
+-0.460565 -0.569693 -0.680684
+0.475755 0.554261 -0.682973
+0.002196 -0.002165 -0.999995
+0.714453 0.249178 -0.653809
+0.002196 -0.002165 -0.999995
+0.475755 0.554261 -0.682973
+0.001787 -0.001579 -0.999997
+0.000069 -0.000017 -1.000000
+0.001787 -0.001579 -0.999997
+0.475755 0.554261 -0.682973
+0.475755 0.554261 -0.682973
+0.154398 0.722257 -0.674170
+0.000069 -0.000017 -1.000000
+0.002196 -0.002165 -0.999995
+0.000310 -0.000647 -1.000000
+0.714453 0.249178 -0.653809
+0.714453 0.249178 -0.653809
+0.000310 -0.000647 -1.000000
+0.772559 0.059258 -0.632172
+0.002196 -0.002165 -0.999995
+-0.771729 -0.064711 -0.632650
+0.000310 -0.000647 -1.000000
+-0.771729 -0.064711 -0.632650
+0.002196 -0.002165 -0.999995
+-0.702167 -0.273196 -0.657515
+0.649930 0.753269 -0.100878
+0.154398 0.722257 -0.674170
+0.475755 0.554261 -0.682973
+0.154398 0.722257 -0.674170
+0.649930 0.753269 -0.100878
+0.208422 0.972952 -0.099621
+0.649930 0.753269 -0.100878
+0.714453 0.249178 -0.653809
+0.941248 0.325928 -0.088445
+0.714453 0.249178 -0.653809
+0.649930 0.753269 -0.100878
+0.475755 0.554261 -0.682973
+0.994344 0.075182 0.075013
+0.787754 -0.006770 0.615953
+0.785067 0.060247 0.616473
+0.787754 -0.006770 0.615953
+0.994344 0.075182 0.075013
+0.997156 -0.008296 0.074909
+0.785067 0.060247 0.616473
+0.941740 0.326132 0.082238
+0.994344 0.075182 0.075013
+0.941740 0.326132 0.082238
+0.785067 0.060247 0.616473
+0.726501 0.253491 0.638701
+0.650400 0.753772 0.093847
+0.726501 0.253491 0.638701
+0.483938 0.564398 0.668774
+0.726501 0.253491 0.638701
+0.650400 0.753772 0.093847
+0.941740 0.326132 0.082238
+0.156782 0.734791 0.659926
+0.650400 0.753772 0.093847
+0.483938 0.564398 0.668774
+0.650400 0.753772 0.093847
+0.156782 0.734791 0.659926
+0.208625 0.973595 0.092674
+0.941248 0.325928 -0.088445
+0.772559 0.059258 -0.632172
+0.993902 0.075149 -0.080695
+0.772559 0.059258 -0.632172
+0.941248 0.325928 -0.088445
+0.714453 0.249178 -0.653809
+0.994344 0.075182 0.075013
+0.999966 -0.008233 -0.000000
+0.997156 -0.008296 0.074909
+0.999966 -0.008233 -0.000000
+0.994344 0.075182 0.075013
+0.997181 0.075032 -0.000000
+0.649930 0.753269 -0.100878
+0.654476 0.756083 0.000008
+0.209374 0.977836 0.000021
+0.209374 0.977836 0.000021
+0.208422 0.972952 -0.099621
+0.649930 0.753269 -0.100878
+0.654476 0.756083 0.000008
+0.649930 0.753269 -0.100878
+0.945592 0.325355 -0.000000
+0.945592 0.325355 -0.000000
+0.649930 0.753269 -0.100878
+0.941248 0.325928 -0.088445
+0.772559 0.059258 -0.632172
+0.775213 -0.006655 -0.631665
+0.993902 0.075149 -0.080695
+0.996713 -0.008292 -0.080583
+0.993902 0.075149 -0.080695
+0.775213 -0.006655 -0.631665
+0.999966 -0.008233 -0.000000
+0.993902 0.075149 -0.080695
+0.996713 -0.008292 -0.080583
+0.993902 0.075149 -0.080695
+0.999966 -0.008233 -0.000000
+0.997181 0.075032 -0.000000
+0.941740 0.326132 0.082238
+0.654476 0.756083 0.000008
+0.945592 0.325355 -0.000000
+0.654476 0.756083 0.000008
+0.941740 0.326132 0.082238
+0.650400 0.753772 0.093847
+0.208625 0.973595 0.092674
+0.209374 0.977836 0.000021
+0.650400 0.753772 0.093847
+0.650400 0.753772 0.093847
+0.209374 0.977836 0.000021
+0.654476 0.756083 0.000008
+0.945592 0.325355 -0.000000
+0.993902 0.075149 -0.080695
+0.997181 0.075032 -0.000000
+0.993902 0.075149 -0.080695
+0.945592 0.325355 -0.000000
+0.941248 0.325928 -0.088445
+0.941740 0.326132 0.082238
+0.997181 0.075032 -0.000000
+0.994344 0.075182 0.075013
+0.997181 0.075032 -0.000000
+0.941740 0.326132 0.082238
+0.945592 0.325355 -0.000000
+0.025865 0.178972 0.983514
+-0.463308 -0.007870 0.886162
+0.034482 0.016550 0.999268
+-0.463308 -0.007870 0.886162
+0.025865 0.178972 0.983514
+-0.461295 0.157808 0.873100
+-0.768549 -0.023832 0.639347
+-0.461295 0.157808 0.873100
+-0.763528 0.139969 0.630423
+-0.461295 0.157808 0.873100
+-0.768549 -0.023832 0.639347
+-0.463308 -0.007870 0.886162
+0.749508 0.202001 0.630423
+0.493169 0.032600 0.869322
+0.767921 0.039162 0.639346
+0.493169 0.032600 0.869322
+0.749508 0.202001 0.630423
+0.476119 0.196942 0.857044
+0.034482 0.016550 0.999268
+0.476119 0.196942 0.857044
+0.025865 0.178972 0.983514
+0.476119 0.196942 0.857044
+0.034482 0.016550 0.999268
+0.493169 0.032600 0.869322
+-0.379675 0.644448 0.663727
+0.025865 0.178972 0.983514
+-0.003989 0.679527 0.733640
+0.025865 0.178972 0.983514
+-0.379675 0.644448 0.663727
+-0.461295 0.157808 0.873100
+-0.031106 0.968734 0.246145
+-0.379675 0.644448 0.663727
+-0.003989 0.679527 0.733640
+-0.379675 0.644448 0.663727
+-0.031106 0.968734 0.246145
+-0.176500 0.955167 0.237705
+-0.620842 0.605136 0.498363
+-0.176500 0.955167 0.237705
+-0.330162 0.911115 0.246702
+-0.620842 0.605136 0.498363
+-0.379675 0.644448 0.663727
+-0.176500 0.955167 0.237705
+-0.763528 0.139969 0.630423
+-0.461295 0.157808 0.873100
+-0.620842 0.605136 0.498363
+-0.379675 0.644448 0.663727
+-0.620842 0.605136 0.498363
+-0.461295 0.157808 0.873100
+0.569220 0.653928 0.498364
+0.347249 0.671340 0.654768
+0.476119 0.196942 0.857044
+0.476119 0.196942 0.857044
+0.749508 0.202001 0.630423
+0.569220 0.653928 0.498364
+0.106862 0.965674 0.236760
+0.569220 0.653928 0.498364
+0.255092 0.934777 0.247227
+0.347249 0.671340 0.654768
+0.569220 0.653928 0.498364
+0.106862 0.965674 0.236760
+0.347249 0.671340 0.654768
+-0.031106 0.968734 0.246145
+-0.003989 0.679527 0.733640
+-0.031106 0.968734 0.246145
+0.347249 0.671340 0.654768
+0.106862 0.965674 0.236760
+0.025865 0.178972 0.983514
+0.347249 0.671340 0.654768
+-0.003989 0.679527 0.733640
+0.347249 0.671340 0.654768
+0.025865 0.178972 0.983514
+0.476119 0.196942 0.857044
+-0.176500 0.955167 0.237705
+-0.031106 0.968734 0.246145
+-0.039062 0.999221 0.005563
+-0.039062 0.999221 0.005563
+-0.306057 0.951873 0.016331
+-0.300138 0.947251 0.112395
+-0.176500 0.955167 0.237705
+-0.039062 0.999221 0.005563
+-0.300138 0.947251 0.112395
+-0.176500 0.955167 0.237705
+-0.300138 0.947251 0.112395
+-0.330162 0.911115 0.246702
+0.222901 0.968278 0.112927
+0.106862 0.965674 0.236760
+0.255092 0.934777 0.247227
+-0.039062 0.999221 0.005563
+0.106862 0.965674 0.236760
+0.222901 0.968278 0.112927
+0.222901 0.968278 0.112927
+0.228811 0.973333 0.016397
+-0.039062 0.999221 0.005563
+-0.039062 0.999221 0.005563
+-0.031106 0.968734 0.246145
+0.106862 0.965674 0.236760
+-0.039062 0.999221 0.005563
+-0.302995 0.949892 -0.076803
+-0.306057 0.951873 0.016331
+0.228811 0.973333 0.016397
+0.225605 0.971158 -0.077171
+-0.039062 0.999221 0.005563
+-0.039062 0.999221 0.005563
+-0.032272 0.967795 -0.249663
+-0.178624 0.954402 -0.239189
+-0.302995 0.949892 -0.076803
+-0.039062 0.999221 0.005563
+-0.178624 0.954402 -0.239189
+-0.302995 0.949892 -0.076803
+-0.178624 0.954402 -0.239189
+-0.333153 0.916508 -0.221410
+-0.039062 0.999221 0.005563
+0.225605 0.971158 -0.077171
+0.107695 0.966003 -0.235034
+0.107695 0.966003 -0.235034
+0.225605 0.971158 -0.077171
+0.257645 0.940436 -0.221810
+0.107695 0.966003 -0.235034
+-0.032272 0.967795 -0.249663
+-0.039062 0.999221 0.005563
+-0.032272 0.967795 -0.249663
+-0.380844 0.639488 -0.667842
+-0.178624 0.954402 -0.239189
+-0.380844 0.639488 -0.667842
+-0.032272 0.967795 -0.249663
+-0.004838 0.672799 -0.739809
+0.025865 0.178972 -0.983514
+-0.380844 0.639488 -0.667842
+-0.004838 0.672799 -0.739809
+-0.380844 0.639488 -0.667842
+0.025865 0.178972 -0.983514
+-0.461296 0.157808 -0.873100
+-0.461296 0.157808 -0.873100
+-0.797412 0.137472 -0.587568
+-0.643538 0.611360 -0.460541
+-0.461296 0.157808 -0.873100
+-0.643538 0.611360 -0.460541
+-0.380844 0.639488 -0.667842
+-0.380844 0.639488 -0.667842
+-0.643538 0.611360 -0.460541
+-0.178624 0.954402 -0.239189
+-0.643538 0.611360 -0.460541
+-0.333153 0.916508 -0.221410
+-0.178624 0.954402 -0.239189
+0.591332 0.661987 -0.460543
+0.348176 0.669196 -0.656468
+0.107695 0.966003 -0.235034
+0.591332 0.661987 -0.460543
+0.107695 0.966003 -0.235034
+0.257645 0.940436 -0.221810
+0.476120 0.196942 -0.857044
+0.591332 0.661987 -0.460543
+0.783483 0.202283 -0.587568
+0.591332 0.661987 -0.460543
+0.476120 0.196942 -0.857044
+0.348176 0.669196 -0.656468
+0.025865 0.178972 -0.983514
+0.348176 0.669196 -0.656468
+0.476120 0.196942 -0.857044
+0.348176 0.669196 -0.656468
+0.025865 0.178972 -0.983514
+-0.004838 0.672799 -0.739809
+-0.032272 0.967795 -0.249663
+0.348176 0.669196 -0.656468
+-0.004838 0.672799 -0.739809
+0.348176 0.669196 -0.656468
+-0.032272 0.967795 -0.249663
+0.107695 0.966003 -0.235034
+-0.463308 -0.007870 -0.886162
+0.025865 0.178972 -0.983514
+0.034482 0.016550 -0.999268
+0.025865 0.178972 -0.983514
+-0.463308 -0.007870 -0.886162
+-0.461296 0.157808 -0.873100
+-0.461296 0.157808 -0.873100
+-0.463308 -0.007870 -0.886162
+-0.802659 -0.025477 -0.595894
+-0.802659 -0.025477 -0.595894
+-0.797412 0.137472 -0.587568
+-0.461296 0.157808 -0.873100
+0.493170 0.032600 -0.869322
+0.783483 0.202283 -0.587568
+0.802050 0.040315 -0.595894
+0.783483 0.202283 -0.587568
+0.493170 0.032600 -0.869322
+0.476120 0.196942 -0.857044
+0.493170 0.032600 -0.869322
+0.034482 0.016550 -0.999268
+0.476120 0.196942 -0.857044
+0.034482 0.016550 -0.999268
+0.025865 0.178972 -0.983514
+0.476120 0.196942 -0.857044
+0.966879 0.045058 -0.251226
+0.783483 0.202283 -0.587568
+0.948323 0.197447 -0.248390
+0.783483 0.202283 -0.587568
+0.966879 0.045058 -0.251226
+0.802050 0.040315 -0.595894
+0.997590 0.045467 0.052417
+0.948323 0.197447 -0.248390
+0.979852 0.192850 0.051951
+0.948323 0.197447 -0.248390
+0.997590 0.045467 0.052417
+0.966879 0.045058 -0.251226
+0.915094 0.200981 0.349585
+0.934262 0.044300 0.353825
+0.997590 0.045467 0.052417
+0.915094 0.200981 0.349585
+0.997590 0.045467 0.052417
+0.979852 0.192850 0.051951
+0.749508 0.202001 0.630423
+0.934262 0.044300 0.353825
+0.915094 0.200981 0.349585
+0.934262 0.044300 0.353825
+0.749508 0.202001 0.630423
+0.767921 0.039162 0.639346
+0.591332 0.661987 -0.460543
+0.711345 0.675266 -0.194947
+0.948323 0.197447 -0.248390
+0.948323 0.197447 -0.248390
+0.783483 0.202283 -0.587568
+0.591332 0.661987 -0.460543
+0.257645 0.940436 -0.221810
+0.225605 0.971158 -0.077171
+0.591332 0.661987 -0.460543
+0.711345 0.675266 -0.194947
+0.591332 0.661987 -0.460543
+0.225605 0.971158 -0.077171
+0.711345 0.675266 -0.194947
+0.735028 0.676828 0.040454
+0.979852 0.192850 0.051951
+0.979852 0.192850 0.051951
+0.948323 0.197447 -0.248390
+0.711345 0.675266 -0.194947
+0.735028 0.676828 0.040454
+0.711345 0.675266 -0.194947
+0.228811 0.973333 0.016397
+0.711345 0.675266 -0.194947
+0.225605 0.971158 -0.077171
+0.228811 0.973333 0.016397
+0.687144 0.671565 0.277190
+0.979852 0.192850 0.051951
+0.735028 0.676828 0.040454
+0.979852 0.192850 0.051951
+0.687144 0.671565 0.277190
+0.915094 0.200981 0.349585
+0.687144 0.671565 0.277190
+0.228811 0.973333 0.016397
+0.222901 0.968278 0.112927
+0.228811 0.973333 0.016397
+0.687144 0.671565 0.277190
+0.735028 0.676828 0.040454
+0.569220 0.653928 0.498364
+0.222901 0.968278 0.112927
+0.255092 0.934777 0.247227
+0.222901 0.968278 0.112927
+0.569220 0.653928 0.498364
+0.687144 0.671565 0.277190
+0.749508 0.202001 0.630423
+0.915094 0.200981 0.349585
+0.569220 0.653928 0.498364
+0.569220 0.653928 0.498364
+0.915094 0.200981 0.349585
+0.687144 0.671565 0.277190
+-0.967323 -0.034244 -0.251225
+-0.961304 0.119156 -0.248389
+-0.802659 -0.025477 -0.595894
+-0.961304 0.119156 -0.248389
+-0.797412 0.137472 -0.587568
+-0.802659 -0.025477 -0.595894
+-0.997963 -0.036351 0.052417
+-0.992350 0.111994 0.051950
+-0.967323 -0.034244 -0.251225
+-0.992350 0.111994 0.051950
+-0.961304 0.119156 -0.248389
+-0.967323 -0.034244 -0.251225
+-0.928475 0.125400 0.349585
+-0.768549 -0.023832 0.639347
+-0.763528 0.139969 0.630423
+-0.768549 -0.023832 0.639347
+-0.928475 0.125400 0.349585
+-0.934753 -0.032329 0.353825
+-0.934753 -0.032329 0.353825
+-0.992350 0.111994 0.051950
+-0.997963 -0.036351 0.052417
+-0.992350 0.111994 0.051950
+-0.934753 -0.032329 0.353825
+-0.928475 0.125400 0.349585
+-0.643538 0.611360 -0.460541
+-0.764236 0.614768 -0.194946
+-0.302995 0.949892 -0.076803
+-0.643538 0.611360 -0.460541
+-0.302995 0.949892 -0.076803
+-0.333153 0.916508 -0.221410
+-0.764236 0.614768 -0.194946
+-0.643538 0.611360 -0.460541
+-0.961304 0.119156 -0.248389
+-0.961304 0.119156 -0.248389
+-0.643538 0.611360 -0.460541
+-0.797412 0.137472 -0.587568
+-0.764236 0.614768 -0.194946
+-0.787966 0.614389 0.040454
+-0.306057 0.951873 0.016331
+-0.306057 0.951873 0.016331
+-0.302995 0.949892 -0.076803
+-0.764236 0.614768 -0.194946
+-0.787966 0.614389 0.040454
+-0.764236 0.614768 -0.194946
+-0.992350 0.111994 0.051950
+-0.992350 0.111994 0.051950
+-0.764236 0.614768 -0.194946
+-0.961304 0.119156 -0.248389
+-0.620842 0.605136 0.498363
+-0.928475 0.125400 0.349585
+-0.763528 0.139969 0.630423
+-0.928475 0.125400 0.349585
+-0.620842 0.605136 0.498363
+-0.739811 0.613063 0.277189
+-0.300138 0.947251 0.112395
+-0.620842 0.605136 0.498363
+-0.330162 0.911115 0.246702
+-0.620842 0.605136 0.498363
+-0.300138 0.947251 0.112395
+-0.739811 0.613063 0.277189
+-0.739811 0.613063 0.277189
+-0.306057 0.951873 0.016331
+-0.787966 0.614389 0.040454
+-0.306057 0.951873 0.016331
+-0.739811 0.613063 0.277189
+-0.300138 0.947251 0.112395
+-0.739811 0.613063 0.277189
+-0.992350 0.111994 0.051950
+-0.928475 0.125400 0.349585
+-0.992350 0.111994 0.051950
+-0.739811 0.613063 0.277189
+-0.787966 0.614389 0.040454
+0.000001 1.000000 -0.000001
+0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+0.000001 1.000000 -0.000001
+-0.000000 1.000000 0.000001
+0.000000 1.000000 0.000001
+0.000000 1.000000 -0.000000
+-0.000000 1.000000 0.000001
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 0.000002
+-0.000001 1.000000 0.000002
+0.000000 1.000000 -0.000000
+0.000000 1.000000 0.000002
+0.000002 1.000000 0.000002
+0.000000 1.000000 0.000002
+0.000000 1.000000 -0.000000
+0.000001 1.000000 0.000001
+0.000002 1.000000 0.000002
+0.000000 1.000000 -0.000000
+0.000001 1.000000 0.000001
+0.000000 1.000000 -0.000000
+0.000000 1.000000 0.000001
+0.000000 1.000000 0.000001
+0.000000 1.000000 -0.000000
+-0.000000 1.000000 0.000001
+-0.000001 1.000000 0.000001
+-0.000000 1.000000 0.000001
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 0.000000
+-0.000001 1.000000 0.000001
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 0.000000
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 0.000000
+-0.000001 1.000000 0.000000
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 -0.000000
+-0.000001 1.000000 -0.000001
+-0.000001 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 -0.000001
+-0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 -0.000001
+-0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 -0.000001
+-0.000001 1.000000 -0.000001
+-0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 -0.000001
+-0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+-0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+-0.000002 1.000000 -0.000001
+-0.000002 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+0.000000 1.000000 -0.000001
+0.000002 1.000000 -0.000001
+0.000000 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+0.000001 1.000000 -0.000001
+0.000002 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+0.000001 1.000000 -0.000001
+0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+0.000001 1.000000 -0.000001
+0.000001 1.000000 -0.000001
+0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+-0.501313 0.219764 0.836893
+-0.608939 0.000000 0.793217
+-0.592396 0.227675 0.772807
+-0.608939 0.000000 0.793217
+-0.501313 0.219764 0.836893
+-0.513987 0.000000 0.857798
+-0.714326 0.229234 0.661204
+-0.592396 0.227675 0.772807
+-0.608939 0.000000 0.793217
+-0.714326 0.229234 0.661204
+-0.608939 0.000000 0.793217
+-0.734005 0.000000 0.679144
+0.000001 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+0.000001 1.000000 -0.000000
+0.000001 1.000000 -0.000000
+0.000001 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+0.000001 1.000000 0.000000
+0.000001 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+0.000001 1.000000 0.000000
+0.000000 1.000000 -0.000000
+0.000001 1.000000 0.000000
+0.000001 1.000000 0.000000
+0.000000 1.000000 -0.000000
+0.000001 1.000000 0.000001
+0.000000 1.000000 0.000001
+0.000001 1.000000 0.000001
+0.000000 1.000000 -0.000000
+0.141419 0.225313 -0.963968
+-0.200263 0.225466 -0.953446
+0.144621 0.000000 -0.989487
+-0.206054 0.000000 -0.978541
+0.144621 0.000000 -0.989487
+-0.200263 0.225466 -0.953446
+0.446275 0.000000 -0.894896
+0.141419 0.225313 -0.963968
+0.144621 0.000000 -0.989487
+0.141419 0.225313 -0.963968
+0.446275 0.000000 -0.894896
+0.431044 0.238709 -0.870183
+-0.134123 0.000000 -0.990965
+0.431044 0.238709 -0.870183
+0.446275 0.000000 -0.894896
+0.431044 0.238709 -0.870183
+-0.134123 0.000000 -0.990965
+-0.127838 0.334101 -0.933828
+-0.649371 0.228182 -0.725431
+-0.127838 0.334101 -0.933828
+-0.669455 -0.000000 -0.742852
+-0.669455 -0.000000 -0.742852
+-0.127838 0.334101 -0.933828
+-0.134123 0.000000 -0.990965
+-0.669455 -0.000000 -0.742852
+-0.405462 0.000000 -0.914112
+-0.649371 0.228182 -0.725431
+-0.405462 0.000000 -0.914112
+-0.395432 0.217875 -0.892280
+-0.649371 0.228182 -0.725431
+-0.405462 0.000000 -0.914112
+-0.062581 -0.000000 -0.998040
+-0.059515 0.221340 -0.973379
+-0.405462 0.000000 -0.914112
+-0.059515 0.221340 -0.973379
+-0.395432 0.217875 -0.892280
+-0.062581 -0.000000 -0.998040
+0.373842 -0.000000 -0.927492
+0.365100 0.214493 -0.905922
+-0.062581 -0.000000 -0.998040
+0.365100 0.214493 -0.905922
+-0.059515 0.221340 -0.973379
+0.373842 -0.000000 -0.927492
+0.711578 0.000001 -0.702608
+0.365100 0.214493 -0.905922
+0.711578 0.000001 -0.702608
+0.696873 0.205905 -0.687001
+0.365100 0.214493 -0.905922
+0.711578 0.000001 -0.702608
+0.903941 0.214206 -0.370142
+0.696873 0.205905 -0.687001
+0.903941 0.214206 -0.370142
+0.711578 0.000001 -0.702608
+0.925520 0.000001 -0.378700
+0.976199 0.216199 -0.017157
+0.903941 0.214206 -0.370142
+0.925520 0.000001 -0.378700
+0.925520 0.000001 -0.378700
+0.999829 0.000000 -0.018501
+0.976199 0.216199 -0.017157
+0.944422 0.209786 0.253095
+0.976199 0.216199 -0.017157
+0.999829 0.000000 -0.018501
+0.999829 0.000000 -0.018501
+0.965907 0.000000 0.258889
+0.944422 0.209786 0.253095
+0.965907 0.000000 0.258889
+0.884399 0.000000 0.466731
+0.944422 0.209786 0.253095
+0.944422 0.209786 0.253095
+0.884399 0.000000 0.466731
+0.864795 0.209422 0.456369
+0.864795 0.209422 0.456369
+0.884399 0.000000 0.466731
+0.794918 0.000000 0.606717
+0.864795 0.209422 0.456369
+0.794918 0.000000 0.606717
+0.777085 0.211198 0.592903
+0.777085 0.211198 0.592903
+0.794918 0.000000 0.606717
+0.705755 0.211010 0.676302
+0.794918 0.000000 0.606717
+0.721942 0.000000 0.691953
+0.705755 0.211010 0.676302
+0.678746 0.209741 0.703784
+0.705755 0.211010 0.676302
+0.721942 0.000000 0.691953
+0.678746 0.209741 0.703784
+0.721942 0.000000 0.691953
+0.694175 0.000000 0.719806
+0.699419 0.209896 0.683196
+0.694175 0.000000 0.719806
+0.715358 0.000000 0.698759
+0.694175 0.000000 0.719806
+0.699419 0.209896 0.683196
+0.678746 0.209741 0.703784
+0.699419 0.209896 0.683196
+0.715358 0.000000 0.698759
+0.820185 0.000000 0.572098
+0.699419 0.209896 0.683196
+0.820185 0.000000 0.572098
+0.801788 0.210682 0.559240
+0.801788 0.210682 0.559240
+0.820185 0.000000 0.572098
+0.905278 0.213025 0.367549
+0.820185 0.000000 0.572098
+0.926333 0.000000 0.376707
+0.905278 0.213025 0.367549
+0.905278 0.213025 0.367549
+0.957377 0.000000 0.288842
+0.935215 0.215854 0.280677
+0.957377 0.000000 0.288842
+0.905278 0.213025 0.367549
+0.926333 0.000000 0.376707
+-0.787363 0.202216 0.582382
+-0.859532 0.000000 0.511081
+-0.804845 0.000000 0.593485
+-0.859532 0.000000 0.511081
+-0.787363 0.202216 0.582382
+-0.841685 0.192147 0.504624
+-0.787363 0.202216 0.582382
+-0.644836 -0.000000 0.764321
+-0.629946 0.213633 0.746679
+-0.644836 -0.000000 0.764321
+-0.787363 0.202216 0.582382
+-0.804845 0.000000 0.593485
+-0.493243 0.214467 0.843039
+-0.629946 0.213633 0.746679
+-0.644836 -0.000000 0.764321
+-0.493243 0.214467 0.843039
+-0.644836 -0.000000 0.764321
+-0.505071 -0.000000 0.863078
+-0.467256 0.216972 0.857085
+-0.493243 0.214467 0.843039
+-0.505071 -0.000000 0.863078
+-0.467256 0.216972 0.857085
+-0.505071 -0.000000 0.863078
+-0.478757 0.000000 0.877947
+-0.501313 0.219764 0.836893
+-0.478757 0.000000 0.877947
+-0.513987 0.000000 0.857798
+-0.478757 0.000000 0.877947
+-0.501313 0.219764 0.836893
+-0.467256 0.216972 0.857085
+-0.840320 0.247136 0.482478
+-0.734005 0.000000 0.679144
+-0.867836 0.000000 0.496851
+-0.734005 0.000000 0.679144
+-0.840320 0.247136 0.482478
+-0.714326 0.229234 0.661204
+-0.936920 0.266169 0.226572
+-0.867836 0.000000 0.496851
+-0.971893 0.000000 0.235423
+-0.867836 0.000000 0.496851
+-0.936920 0.266169 0.226572
+-0.840320 0.247136 0.482478
+-0.955490 0.266720 -0.126095
+-0.971893 0.000000 0.235423
+-0.991410 0.000000 -0.130795
+-0.971893 0.000000 0.235423
+-0.955490 0.266720 -0.126095
+-0.936920 0.266169 0.226572
+-0.868615 0.000000 -0.495487
+-0.955490 0.266720 -0.126095
+-0.991410 0.000000 -0.130795
+-0.955490 0.266720 -0.126095
+-0.868615 0.000000 -0.495487
+-0.838984 0.256812 -0.479743
+-0.604056 0.000000 -0.796942
+-0.838984 0.256812 -0.479743
+-0.868615 0.000000 -0.495487
+-0.838984 0.256812 -0.479743
+-0.604056 0.000000 -0.796942
+-0.584454 0.238003 -0.775737
+-0.200263 0.225466 -0.953446
+-0.584454 0.238003 -0.775737
+-0.206054 0.000000 -0.978541
+-0.604056 0.000000 -0.796942
+-0.206054 0.000000 -0.978541
+-0.584454 0.238003 -0.775737
+-0.000041 -0.000115 1.000000
+-0.000638 -0.000863 0.999999
+0.603405 -0.022707 0.797112
+0.603405 -0.022707 0.797112
+-0.000638 -0.000863 0.999999
+0.591521 -0.089107 0.801350
+-0.603641 0.021313 0.796972
+-0.962593 0.123470 0.241185
+-0.595755 0.077825 0.799387
+-0.962593 0.123470 0.241185
+-0.603641 0.021313 0.796972
+-0.970442 0.033992 0.238928
+-0.642641 0.022702 -0.765831
+-0.969807 0.124423 -0.209747
+-0.977593 0.034245 -0.207697
+-0.969807 0.124423 -0.209747
+-0.642641 0.022702 -0.765831
+-0.634535 0.082992 -0.768425
+-0.000747 -0.001019 -0.999999
+0.649752 -0.024446 -0.759753
+0.637476 -0.095849 -0.764485
+0.649752 -0.024446 -0.759753
+-0.000747 -0.001019 -0.999999
+-0.000048 -0.000135 -1.000000
+0.553852 -0.274159 -0.786184
+0.969430 -0.140809 -0.200942
+0.872758 -0.435686 -0.220161
+0.969430 -0.140809 -0.200942
+0.553852 -0.274159 -0.786184
+0.637476 -0.095849 -0.764485
+-0.634535 0.082992 -0.768425
+-0.919102 0.328137 -0.218125
+-0.969807 0.124423 -0.209747
+-0.919102 0.328137 -0.218125
+-0.634535 0.082992 -0.768425
+-0.585801 0.219430 -0.780185
+0.637476 -0.095849 -0.764485
+0.980057 -0.036695 -0.195299
+0.969430 -0.140809 -0.200942
+0.980057 -0.036695 -0.195299
+0.637476 -0.095849 -0.764485
+0.649752 -0.024446 -0.759753
+0.510848 -0.252757 0.821674
+0.960263 -0.139604 0.241671
+0.591521 -0.089107 0.801350
+0.960263 -0.139604 0.241671
+0.510848 -0.252757 0.821674
+0.863183 -0.430583 0.263654
+-0.962593 0.123470 0.241185
+-0.911838 0.325323 0.250433
+-0.595755 0.077825 0.799387
+-0.549130 0.205095 0.810181
+-0.595755 0.077825 0.799387
+-0.911838 0.325323 0.250433
+0.960263 -0.139604 0.241671
+0.971097 -0.036349 0.235902
+0.591521 -0.089107 0.801350
+0.603405 -0.022707 0.797112
+0.591521 -0.089107 0.801350
+0.971097 -0.036349 0.235902
+0.974708 -0.223397 0.006105
+0.973299 -0.229452 -0.006333
+0.986613 -0.081445 0.141285
+0.986613 -0.081445 0.141285
+0.973299 -0.229452 -0.006333
+0.982443 -0.083837 -0.166662
+-0.360720 0.898090 0.251626
+0.519507 0.834788 -0.182319
+-0.360405 0.907460 -0.215925
+0.519507 0.834788 -0.182319
+-0.360720 0.898090 0.251626
+0.517121 0.828028 0.216692
+0.878331 0.411641 0.243077
+0.976707 0.214461 0.007109
+0.517121 0.828028 0.216692
+0.517121 0.828028 0.216692
+0.975403 0.220308 -0.007334
+0.519507 0.834788 -0.182319
+0.975403 0.220308 -0.007334
+0.517121 0.828028 0.216692
+0.976707 0.214461 0.007109
+-0.725082 -0.650785 0.225243
+-0.211020 -0.977482 -0.000083
+-0.210355 -0.950796 0.227458
+-0.211020 -0.977482 -0.000083
+-0.725082 -0.650785 0.225243
+-0.768311 -0.640077 -0.000385
+0.872758 -0.435686 -0.220161
+0.973299 -0.229452 -0.006333
+0.497019 -0.845024 -0.197246
+-0.768311 -0.640076 -0.000385
+-0.982510 -0.000001 -0.186211
+-0.725047 -0.656124 -0.209303
+-0.982510 -0.000001 -0.186211
+-0.768311 -0.640076 -0.000385
+-1.000000 0.000000 -0.000555
+-0.768311 0.640076 -0.000386
+-0.982510 -0.000001 -0.186211
+-1.000000 0.000000 -0.000555
+-0.982510 -0.000001 -0.186211
+-0.768311 0.640076 -0.000386
+-0.725048 0.656123 -0.209303
+-0.725048 0.656123 -0.209303
+-0.211020 0.977482 -0.000076
+-0.208725 0.955769 -0.207220
+-0.211020 0.977482 -0.000076
+-0.725048 0.656123 -0.209303
+-0.768311 0.640076 -0.000386
+0.494301 -0.836553 0.236316
+-0.362221 -0.908457 -0.208569
+0.497019 -0.845024 -0.197246
+-0.362221 -0.908457 -0.208569
+0.494301 -0.836553 0.236316
+-0.360720 -0.898090 0.251626
+-0.725082 -0.650785 0.225243
+-0.279642 -0.960104 -0.000105
+-0.209266 -0.951054 0.227386
+-0.279642 -0.960104 -0.000105
+-0.725082 -0.650785 0.225243
+-0.768311 -0.640076 -0.000385
+-0.979975 -0.000000 0.199120
+-0.768311 -0.640077 -0.000385
+-0.725082 -0.650785 0.225243
+-0.768311 -0.640077 -0.000385
+-0.979975 -0.000000 0.199120
+-1.000000 0.000000 -0.000555
+0.655271 0.020219 -0.755123
+0.827744 -0.009343 -0.561027
+0.973299 -0.229452 -0.006333
+0.982443 -0.083837 -0.166662
+0.973299 -0.229452 -0.006333
+0.827744 -0.009343 -0.561027
+0.986595 -0.094661 0.132928
+0.847773 -0.029627 0.529531
+0.973299 -0.229452 -0.006333
+0.973299 -0.229452 -0.006333
+0.847773 -0.029627 0.529531
+0.657075 -0.007104 0.753791
+0.655271 0.020219 -0.755123
+0.655230 -0.018190 -0.755210
+0.827744 -0.009343 -0.561027
+0.827744 -0.009343 -0.561027
+0.655230 -0.018190 -0.755210
+0.813501 -0.026725 -0.580949
+0.827744 -0.009343 -0.561027
+0.981105 -0.037375 -0.189834
+0.982443 -0.083837 -0.166662
+0.981105 -0.037375 -0.189834
+0.827744 -0.009343 -0.561027
+0.813501 -0.026725 -0.580949
+0.986595 -0.094661 0.132928
+0.989339 -0.034695 0.141437
+0.847773 -0.029627 0.529531
+0.843248 -0.025991 0.536896
+0.847773 -0.029627 0.529531
+0.989339 -0.034695 0.141437
+0.655231 -0.018190 0.755210
+0.847773 -0.029627 0.529531
+0.843248 -0.025991 0.536896
+0.847773 -0.029627 0.529531
+0.655231 -0.018190 0.755210
+0.657075 -0.007104 0.753791
+0.655231 0.018190 -0.755210
+0.827746 0.009323 -0.561026
+0.813501 0.026724 -0.580949
+0.827746 0.009323 -0.561026
+0.655231 0.018190 -0.755210
+0.655272 -0.020237 -0.755122
+0.981105 0.037375 -0.189834
+0.827746 0.009323 -0.561026
+0.982445 0.083823 -0.166661
+0.827746 0.009323 -0.561026
+0.981105 0.037375 -0.189834
+0.813501 0.026724 -0.580949
+0.847774 0.029609 0.529530
+0.989339 0.034695 0.141437
+0.986759 0.092584 0.133176
+0.989339 0.034695 0.141437
+0.847774 0.029609 0.529530
+0.843248 0.025992 0.536896
+0.657076 0.007089 0.753791
+0.655231 0.018190 0.755209
+0.847774 0.029609 0.529530
+0.847774 0.029609 0.529530
+0.655231 0.018190 0.755209
+0.843248 0.025992 0.536896
+0.975403 0.220308 -0.007334
+0.827746 0.009323 -0.561026
+0.655272 -0.020237 -0.755122
+0.975403 0.220308 -0.007334
+0.982445 0.083823 -0.166661
+0.827746 0.009323 -0.561026
+0.975403 0.220308 -0.007334
+0.847774 0.029609 0.529530
+0.986759 0.092584 0.133176
+0.975403 0.220308 -0.007334
+0.657076 0.007089 0.753791
+0.847774 0.029609 0.529530
+0.974708 -0.223397 0.006105
+0.720114 -0.008793 -0.693800
+0.878657 -0.030555 -0.476474
+0.974708 -0.223397 0.006105
+0.878657 -0.030555 -0.476474
+0.988802 -0.094858 -0.115209
+0.986613 -0.081445 0.141285
+0.864899 -0.005699 0.501913
+0.974708 -0.223397 0.006105
+0.974708 -0.223397 0.006105
+0.864899 -0.005699 0.501913
+0.718273 0.023185 0.695375
+0.720114 -0.008793 -0.693800
+0.718316 -0.019932 -0.695431
+0.878657 -0.030555 -0.476474
+0.875032 -0.026858 -0.483320
+0.878657 -0.030555 -0.476474
+0.718316 -0.019932 -0.695431
+0.878657 -0.030555 -0.476474
+0.991813 -0.034750 -0.122881
+0.988802 -0.094858 -0.115209
+0.991813 -0.034750 -0.122881
+0.878657 -0.030555 -0.476474
+0.875032 -0.026858 -0.483320
+0.986613 -0.081445 0.141285
+0.988065 -0.035740 0.149836
+0.864899 -0.005699 0.501913
+0.860326 -0.026239 0.509068
+0.864899 -0.005699 0.501913
+0.988065 -0.035740 0.149836
+0.864899 -0.005699 0.501913
+0.718317 -0.019932 0.695431
+0.718273 0.023185 0.695375
+0.718317 -0.019932 0.695431
+0.864899 -0.005699 0.501913
+0.860326 -0.026239 0.509068
+0.878658 0.030554 -0.476473
+0.718317 0.019932 -0.695430
+0.720116 0.008793 -0.693798
+0.718317 0.019932 -0.695430
+0.878658 0.030554 -0.476473
+0.875032 0.026858 -0.483319
+0.991813 0.034751 -0.122880
+0.878658 0.030554 -0.476473
+0.988967 0.092798 -0.115468
+0.878658 0.030554 -0.476473
+0.991813 0.034751 -0.122880
+0.875032 0.026858 -0.483319
+0.864900 0.005698 0.501911
+0.988065 0.035740 0.149836
+0.986613 0.081440 0.141285
+0.988065 0.035740 0.149836
+0.864900 0.005698 0.501911
+0.860327 0.026239 0.509067
+0.718318 0.019932 0.695430
+0.864900 0.005698 0.501911
+0.718275 -0.023186 0.695373
+0.864900 0.005698 0.501911
+0.718318 0.019932 0.695430
+0.860327 0.026239 0.509067
+0.976707 0.214461 0.007109
+0.878658 0.030554 -0.476473
+0.720116 0.008793 -0.693798
+0.976707 0.214461 0.007109
+0.988967 0.092798 -0.115468
+0.878658 0.030554 -0.476473
+0.976707 0.214461 0.007109
+0.864900 0.005698 0.501911
+0.986613 0.081440 0.141285
+0.976707 0.214461 0.007109
+0.718275 -0.023186 0.695373
+0.864900 0.005698 0.501911
+0.973299 -0.229452 -0.006333
+0.872758 -0.435686 -0.220161
+0.986595 -0.094661 0.132928
+0.986595 -0.094661 0.132928
+0.872758 -0.435686 -0.220161
+0.969430 -0.140809 -0.200942
+0.986759 0.092584 0.133176
+0.887039 0.414986 -0.202357
+0.975403 0.220308 -0.007334
+0.887039 0.414986 -0.202357
+0.986759 0.092584 0.133176
+0.968988 0.137063 -0.205612
+0.986613 0.081440 0.141285
+0.975403 0.220308 -0.007334
+0.976707 0.214461 0.007109
+0.975403 0.220308 -0.007334
+0.986613 0.081440 0.141285
+0.982445 0.083823 -0.166661
+-0.360405 0.907460 -0.215925
+0.258576 0.530790 -0.807094
+-0.239807 0.576892 -0.780825
+0.258576 0.530790 -0.807094
+-0.360405 0.907460 -0.215925
+0.519507 0.834788 -0.182319
+0.517121 0.828028 0.216692
+-0.360720 0.898090 0.251626
+0.238961 0.490220 0.838201
+-0.226991 0.537188 0.812345
+0.238961 0.490220 0.838201
+-0.360720 0.898090 0.251626
+0.519507 0.834788 -0.182319
+0.975403 0.220308 -0.007334
+0.887039 0.414986 -0.202357
+0.519507 0.834788 -0.182319
+0.887039 0.414986 -0.202357
+0.258576 0.530790 -0.807094
+0.258576 0.530790 -0.807094
+0.887039 0.414986 -0.202357
+0.570705 0.274463 -0.773929
+0.878331 0.411641 0.243077
+0.238961 0.490220 0.838201
+0.529592 0.255773 0.808772
+0.238961 0.490220 0.838201
+0.878331 0.411641 0.243077
+0.517121 0.828028 0.216692
+-0.919102 -0.328136 -0.218125
+-0.466918 -0.842704 -0.268025
+-0.585801 -0.219429 -0.780184
+-0.466918 -0.842704 -0.268025
+-0.265241 -0.486465 -0.832466
+-0.585801 -0.219429 -0.780184
+0.529592 0.255773 0.808772
+-0.002507 0.001933 0.999995
+-0.003939 0.002865 0.999988
+-0.002507 0.001933 0.999995
+0.529592 0.255773 0.808772
+0.238961 0.490220 0.838201
+-0.003939 0.002865 0.999988
+-0.246814 -0.450798 0.857825
+-0.549131 -0.205096 0.810180
+-0.246814 -0.450798 0.857825
+-0.003939 0.002865 0.999988
+-0.002507 0.001933 0.999995
+-0.000442 -0.000180 1.000000
+-0.246814 -0.450798 0.857825
+-0.002507 0.001933 0.999995
+-0.246814 -0.450798 0.857825
+-0.000442 -0.000180 1.000000
+0.228503 -0.539944 0.810091
+-0.226991 0.537188 0.812345
+-0.002507 0.001933 0.999995
+0.238961 0.490220 0.838201
+-0.002507 0.001933 0.999995
+-0.226991 0.537188 0.812345
+-0.000442 -0.000180 1.000000
+-0.226991 0.537188 0.812345
+-0.041583 0.960502 0.275148
+-0.033609 0.535318 0.843982
+-0.041583 0.960502 0.275148
+-0.226991 0.537188 0.812345
+-0.360720 0.898090 0.251626
+0.002097 -0.000029 0.999998
+-0.000442 -0.000180 1.000000
+-0.033609 0.535318 0.843982
+-0.226991 0.537188 0.812345
+-0.033609 0.535318 0.843982
+-0.000442 -0.000180 1.000000
+0.055055 -0.547112 0.835247
+0.228503 -0.539944 0.810091
+0.002097 -0.000029 0.999998
+-0.000442 -0.000180 1.000000
+0.002097 -0.000029 0.999998
+0.228503 -0.539944 0.810091
+-0.239807 0.576892 -0.780825
+-0.002934 0.002292 -0.999993
+-0.000497 -0.000226 -1.000000
+-0.002934 0.002292 -0.999993
+-0.239807 0.576892 -0.780825
+0.258576 0.530790 -0.807094
+-0.002934 0.002292 -0.999993
+-0.004616 0.003391 -0.999984
+-0.265241 -0.486465 -0.832466
+-0.265241 -0.486465 -0.832466
+-0.004616 0.003391 -0.999984
+-0.585801 -0.219429 -0.780184
+0.570705 0.274463 -0.773929
+-0.002934 0.002292 -0.999993
+0.258576 0.530790 -0.807094
+-0.002934 0.002292 -0.999993
+0.570705 0.274463 -0.773929
+-0.004616 0.003391 -0.999984
+-0.033609 0.535318 0.843982
+0.002684 -0.000028 0.999996
+0.002097 -0.000029 0.999998
+0.002684 -0.000028 0.999996
+-0.033609 0.535318 0.843982
+0.189891 0.573349 0.797002
+0.002097 -0.000029 0.999998
+-0.161073 -0.585034 0.794852
+0.055055 -0.547112 0.835247
+-0.161073 -0.585034 0.794852
+0.002097 -0.000029 0.999998
+0.002684 -0.000028 0.999996
+-0.170231 0.000004 0.985404
+0.189891 0.573349 0.797002
+-0.191496 0.630666 0.752057
+0.189891 0.573349 0.797002
+-0.170231 0.000004 0.985404
+0.002684 -0.000028 0.999996
+-0.170231 0.000004 0.985404
+-0.161073 -0.585034 0.794852
+0.002684 -0.000028 0.999996
+-0.161073 -0.585034 0.794852
+-0.170231 0.000004 0.985404
+-0.195565 -0.625420 0.755383
+-0.180318 -0.000006 -0.983608
+0.204425 -0.613146 -0.763061
+-0.199267 -0.653464 -0.730258
+0.204425 -0.613146 -0.763061
+-0.180318 -0.000006 -0.983608
+0.003258 0.000064 -0.999995
+-0.199844 0.651940 -0.731462
+-0.171465 0.617130 -0.767952
+-0.180318 -0.000006 -0.983608
+0.003258 0.000064 -0.999995
+-0.180318 -0.000006 -0.983608
+-0.171465 0.617130 -0.767952
+0.315353 -0.928386 -0.196601
+-0.207517 -0.956440 -0.205327
+-0.199267 -0.653464 -0.730258
+0.315353 -0.928386 -0.196601
+-0.199267 -0.653464 -0.730258
+0.204425 -0.613146 -0.763061
+-0.551169 -0.542646 0.633836
+-0.170231 -0.000005 0.985404
+-0.660121 -0.000001 0.751159
+-0.170231 -0.000005 0.985404
+-0.551169 -0.542646 0.633836
+-0.194895 -0.625610 0.755399
+-0.551168 0.542646 0.633837
+-0.170231 -0.000005 0.985404
+-0.195564 0.625420 0.755383
+-0.170231 -0.000005 0.985404
+-0.551168 0.542646 0.633837
+-0.660121 -0.000001 0.751159
+-0.210357 0.950795 0.227461
+-0.551168 0.542646 0.633837
+-0.195564 0.625420 0.755383
+-0.551168 0.542646 0.633837
+-0.210357 0.950795 0.227461
+-0.725081 0.650786 0.225243
+-0.195565 -0.625420 0.755383
+-0.202942 -0.961200 0.186841
+-0.161073 -0.585034 0.794852
+-0.202942 -0.961200 0.186841
+-0.195565 -0.625420 0.755383
+-0.210355 -0.950796 0.227458
+-0.360720 -0.898090 0.251626
+0.218182 -0.478963 0.850289
+-0.226991 -0.537188 0.812345
+0.218182 -0.478963 0.850289
+-0.360720 -0.898090 0.251626
+0.494301 -0.836553 0.236316
+-0.962593 -0.123470 0.241184
+-0.603641 -0.021314 0.796971
+-0.595757 -0.077824 0.799386
+-0.603641 -0.021314 0.796971
+-0.962593 -0.123470 0.241184
+-0.970442 -0.033993 0.238928
+-0.246814 -0.450798 0.857825
+-0.462066 -0.832419 0.305898
+-0.549131 -0.205096 0.810180
+-0.549131 -0.205096 0.810180
+-0.462066 -0.832419 0.305898
+-0.911838 -0.325323 0.250432
+0.365180 0.896818 0.249721
+0.055056 0.547111 0.835247
+0.228502 0.539943 0.810091
+0.055056 0.547111 0.835247
+0.365180 0.896818 0.249721
+0.087092 0.960064 0.265881
+-0.551169 -0.542646 0.633836
+-0.209266 -0.951054 0.227386
+-0.194895 -0.625610 0.755399
+-0.209266 -0.951054 0.227386
+-0.551169 -0.542646 0.633836
+-0.725082 -0.650785 0.225243
+-0.979975 -0.000000 0.199120
+-0.551169 -0.542645 0.633836
+-0.660122 -0.000000 0.751159
+-0.551169 -0.542645 0.633836
+-0.979975 -0.000000 0.199120
+-0.725082 -0.650785 0.225243
+0.087092 0.960064 0.265881
+-0.253939 0.938487 0.234004
+0.055056 0.547111 0.835247
+-0.161073 0.585033 0.794853
+0.055056 0.547111 0.835247
+-0.253939 0.938487 0.234004
+-0.253939 0.938487 0.234004
+-0.195564 0.625420 0.755383
+-0.161073 0.585033 0.794853
+-0.195564 0.625420 0.755383
+-0.253939 0.938487 0.234004
+-0.210357 0.950795 0.227461
+0.974708 -0.223397 0.006105
+0.863183 -0.430583 0.263654
+0.494301 -0.836553 0.236316
+0.973299 -0.229452 -0.006333
+0.494301 -0.836553 0.236316
+0.497019 -0.845024 -0.197246
+0.494301 -0.836553 0.236316
+0.973299 -0.229452 -0.006333
+0.974708 -0.223397 0.006105
+0.988802 -0.094858 -0.115209
+0.960263 -0.139604 0.241671
+0.863183 -0.430583 0.263654
+0.863183 -0.430583 0.263654
+0.974708 -0.223397 0.006105
+0.988802 -0.094858 -0.115209
+0.878331 0.411641 0.243077
+0.988967 0.092798 -0.115468
+0.976707 0.214461 0.007109
+0.988967 0.092798 -0.115468
+0.878331 0.411641 0.243077
+0.959475 0.135782 0.246925
+-0.979975 0.000000 0.199120
+-0.768311 -0.640076 -0.000385
+-0.725082 -0.650785 0.225243
+-0.768311 -0.640076 -0.000385
+-0.979975 0.000000 0.199120
+-1.000000 0.000000 -0.000555
+-0.979975 0.000000 0.199120
+-0.768311 0.640076 -0.000386
+-1.000000 0.000000 -0.000555
+-0.768311 0.640076 -0.000386
+-0.979975 0.000000 0.199120
+-0.725081 0.650786 0.225243
+-0.725081 0.650786 0.225243
+-0.211020 0.977482 -0.000076
+-0.768311 0.640076 -0.000386
+-0.211020 0.977482 -0.000076
+-0.725081 0.650786 0.225243
+-0.210357 0.950795 0.227461
+0.239172 -0.524482 -0.817138
+0.872758 -0.435686 -0.220161
+0.497019 -0.845024 -0.197246
+0.872758 -0.435686 -0.220161
+0.239172 -0.524482 -0.817138
+0.553852 -0.274159 -0.786184
+-0.585801 0.219430 -0.780185
+-0.466918 0.842704 -0.268025
+-0.919102 0.328137 -0.218125
+-0.466918 0.842704 -0.268025
+-0.585801 0.219430 -0.780185
+-0.265241 0.486465 -0.832466
+-0.466918 0.842704 -0.268025
+0.242961 0.576536 -0.780113
+0.366990 0.904435 -0.217522
+0.242961 0.576536 -0.780113
+-0.466918 0.842704 -0.268025
+-0.265241 0.486465 -0.832466
+0.980057 0.036695 -0.195299
+0.633899 0.093637 -0.767727
+0.968988 0.137063 -0.205612
+0.633899 0.093637 -0.767727
+0.980057 0.036695 -0.195299
+0.649752 0.024446 -0.759753
+0.968988 0.137063 -0.205612
+0.570705 0.274463 -0.773929
+0.887039 0.414986 -0.202357
+0.570705 0.274463 -0.773929
+0.968988 0.137063 -0.205612
+0.633899 0.093637 -0.767727
+-0.919102 -0.328136 -0.218125
+-0.634535 -0.082993 -0.768425
+-0.969807 -0.124423 -0.209747
+-0.634535 -0.082993 -0.768425
+-0.919102 -0.328136 -0.218125
+-0.585801 -0.219429 -0.780184
+-0.035577 -0.584760 -0.810426
+-0.243213 -0.581592 -0.776272
+-0.043440 -0.974043 -0.222154
+-0.362221 -0.908457 -0.208569
+-0.043440 -0.974043 -0.222154
+-0.243213 -0.581592 -0.776272
+-0.279642 -0.960104 -0.000105
+-0.725047 -0.656124 -0.209303
+-0.207517 -0.956440 -0.205327
+-0.725047 -0.656124 -0.209303
+-0.279642 -0.960104 -0.000105
+-0.768311 -0.640076 -0.000385
+-0.982510 -0.000001 -0.186211
+-0.560097 -0.561397 -0.609200
+-0.725047 -0.656124 -0.209303
+-0.560097 -0.561397 -0.609200
+-0.982510 -0.000001 -0.186211
+-0.679065 -0.000001 -0.734078
+-0.982510 -0.000001 -0.186211
+-0.560098 0.561396 -0.609200
+-0.679065 -0.000001 -0.734078
+-0.560098 0.561396 -0.609200
+-0.982510 -0.000001 -0.186211
+-0.725048 0.656123 -0.209303
+-0.043440 -0.974043 -0.222154
+0.204425 -0.613146 -0.763061
+-0.035577 -0.584760 -0.810426
+0.204425 -0.613146 -0.763061
+-0.043440 -0.974043 -0.222154
+0.315353 -0.928386 -0.196601
+-0.768311 -0.640077 -0.000385
+-0.982510 0.000000 -0.186211
+-0.725048 -0.656123 -0.209303
+-0.982510 0.000000 -0.186211
+-0.768311 -0.640077 -0.000385
+-1.000000 0.000000 -0.000555
+-0.208725 0.955769 -0.207220
+-0.560098 0.561396 -0.609200
+-0.725048 0.656123 -0.209303
+-0.560098 0.561396 -0.609200
+-0.208725 0.955769 -0.207220
+-0.199844 0.651940 -0.731462
+-0.226991 -0.537188 0.812345
+-0.002508 -0.001933 0.999995
+-0.000442 0.000179 1.000000
+-0.002508 -0.001933 0.999995
+-0.226991 -0.537188 0.812345
+0.218182 -0.478963 0.850289
+-0.000442 0.000179 1.000000
+-0.246815 0.450796 0.857826
+0.228502 0.539943 0.810091
+-0.246815 0.450796 0.857826
+-0.000442 0.000179 1.000000
+-0.002508 -0.001933 0.999995
+0.591521 -0.089107 0.801350
+-0.003936 -0.002866 0.999988
+0.510848 -0.252757 0.821674
+-0.003936 -0.002866 0.999988
+0.591521 -0.089107 0.801350
+-0.000638 -0.000863 0.999999
+-0.000638 -0.000863 0.999999
+-0.549130 0.205095 0.810181
+-0.003936 -0.002866 0.999988
+-0.549130 0.205095 0.810181
+-0.000638 -0.000863 0.999999
+-0.595755 0.077825 0.799387
+0.218182 -0.478963 0.850289
+0.510848 -0.252757 0.821674
+-0.002508 -0.001933 0.999995
+-0.002508 -0.001933 0.999995
+0.510848 -0.252757 0.821674
+-0.003936 -0.002866 0.999988
+-0.002508 -0.001933 0.999995
+-0.003936 -0.002866 0.999988
+-0.246815 0.450796 0.857826
+-0.246815 0.450796 0.857826
+-0.003936 -0.002866 0.999988
+-0.549130 0.205095 0.810181
+0.510848 -0.252757 0.821674
+0.218182 -0.478963 0.850289
+0.863183 -0.430583 0.263654
+0.863183 -0.430583 0.263654
+0.218182 -0.478963 0.850289
+0.494301 -0.836553 0.236316
+-0.549130 0.205095 0.810181
+-0.462066 0.832419 0.305899
+-0.246815 0.450796 0.857826
+-0.462066 0.832419 0.305899
+-0.549130 0.205095 0.810181
+-0.911838 0.325323 0.250433
+-0.243213 -0.581592 -0.776272
+0.239172 -0.524482 -0.817138
+-0.362221 -0.908457 -0.208569
+0.497019 -0.845024 -0.197246
+-0.362221 -0.908457 -0.208569
+0.239172 -0.524482 -0.817138
+-0.000495 0.000227 -1.000000
+-0.265241 0.486465 -0.832466
+-0.002934 -0.002292 -0.999993
+-0.265241 0.486465 -0.832466
+-0.000495 0.000227 -1.000000
+0.242961 0.576536 -0.780113
+0.239172 -0.524482 -0.817138
+-0.243213 -0.581592 -0.776272
+-0.002934 -0.002292 -0.999993
+-0.243213 -0.581592 -0.776272
+-0.000495 0.000227 -1.000000
+-0.002934 -0.002292 -0.999993
+-0.002934 -0.002292 -0.999993
+-0.004616 -0.003391 -0.999984
+0.553852 -0.274159 -0.786184
+0.553852 -0.274159 -0.786184
+0.239172 -0.524482 -0.817138
+-0.002934 -0.002292 -0.999993
+-0.585801 0.219430 -0.780185
+-0.004616 -0.003391 -0.999984
+-0.265241 0.486465 -0.832466
+-0.265241 0.486465 -0.832466
+-0.004616 -0.003391 -0.999984
+-0.002934 -0.002292 -0.999993
+-0.246815 0.450796 0.857826
+-0.462066 0.832419 0.305899
+0.228502 0.539943 0.810091
+0.228502 0.539943 0.810091
+-0.462066 0.832419 0.305899
+0.365180 0.896818 0.249721
+-0.000747 -0.001019 -0.999999
+-0.585801 0.219430 -0.780185
+-0.634535 0.082992 -0.768425
+-0.585801 0.219430 -0.780185
+-0.000747 -0.001019 -0.999999
+-0.004616 -0.003391 -0.999984
+-0.004616 -0.003391 -0.999984
+-0.000747 -0.001019 -0.999999
+0.637476 -0.095849 -0.764485
+0.637476 -0.095849 -0.764485
+0.553852 -0.274159 -0.786184
+-0.004616 -0.003391 -0.999984
+-0.634535 -0.082993 -0.768425
+-0.642641 -0.022702 -0.765831
+-0.969807 -0.124423 -0.209747
+-0.977593 -0.034245 -0.207698
+-0.969807 -0.124423 -0.209747
+-0.642641 -0.022702 -0.765831
+0.971097 0.036350 0.235902
+0.587221 0.086819 0.804757
+0.603405 0.022707 0.797112
+0.587221 0.086819 0.804757
+0.971097 0.036350 0.235902
+0.959475 0.135782 0.246925
+0.587221 0.086819 0.804757
+-0.003939 0.002865 0.999988
+-0.000641 0.000863 0.999999
+-0.003939 0.002865 0.999988
+0.587221 0.086819 0.804757
+0.529592 0.255773 0.808772
+-0.000641 0.000863 0.999999
+-0.549131 -0.205096 0.810180
+-0.595757 -0.077824 0.799386
+-0.549131 -0.205096 0.810180
+-0.000641 0.000863 0.999999
+-0.003939 0.002865 0.999988
+0.529592 0.255773 0.808772
+0.959475 0.135782 0.246925
+0.878331 0.411641 0.243077
+0.959475 0.135782 0.246925
+0.529592 0.255773 0.808772
+0.587221 0.086819 0.804757
+-0.911838 -0.325323 0.250432
+-0.595757 -0.077824 0.799386
+-0.549131 -0.205096 0.810180
+-0.595757 -0.077824 0.799386
+-0.911838 -0.325323 0.250432
+-0.962593 -0.123470 0.241184
+0.633899 0.093637 -0.767727
+-0.004616 0.003391 -0.999984
+0.570705 0.274463 -0.773929
+-0.004616 0.003391 -0.999984
+0.633899 0.093637 -0.767727
+-0.000746 0.001019 -0.999999
+-0.000746 0.001019 -0.999999
+-0.585801 -0.219429 -0.780184
+-0.004616 0.003391 -0.999984
+-0.585801 -0.219429 -0.780184
+-0.000746 0.001019 -0.999999
+-0.634535 -0.082993 -0.768425
+-0.043957 -0.962293 0.268439
+-0.226991 -0.537188 0.812345
+-0.033385 -0.539811 0.841124
+-0.226991 -0.537188 0.812345
+-0.043957 -0.962293 0.268439
+-0.360720 -0.898090 0.251626
+0.002473 0.000085 -0.999997
+-0.000495 0.000227 -1.000000
+-0.035577 -0.584760 -0.810426
+-0.243213 -0.581592 -0.776272
+-0.035577 -0.584760 -0.810426
+-0.000495 0.000227 -1.000000
+0.058044 0.585777 -0.808391
+0.242961 0.576536 -0.780113
+0.002473 0.000085 -0.999997
+-0.000495 0.000227 -1.000000
+0.002473 0.000085 -0.999997
+0.242961 0.576536 -0.780113
+0.366990 0.904435 -0.217522
+0.058044 0.585777 -0.808391
+0.086799 0.969060 -0.231060
+0.058044 0.585777 -0.808391
+0.366990 0.904435 -0.217522
+0.242961 0.576536 -0.780113
+-0.551169 -0.542645 0.633836
+-0.170231 0.000004 0.985404
+-0.660122 -0.000000 0.751159
+-0.170231 0.000004 0.985404
+-0.551169 -0.542645 0.633836
+-0.195565 -0.625420 0.755383
+-0.548049 0.550142 0.630068
+-0.170231 0.000004 0.985404
+-0.191496 0.630666 0.752057
+-0.170231 0.000004 0.985404
+-0.548049 0.550142 0.630068
+-0.660122 -0.000000 0.751159
+-0.560098 0.561396 -0.609200
+-0.180318 -0.000006 -0.983608
+-0.679065 -0.000001 -0.734078
+-0.180318 -0.000006 -0.983608
+-0.560098 0.561396 -0.609200
+-0.199844 0.651940 -0.731462
+-0.560097 -0.561397 -0.609200
+-0.180318 -0.000006 -0.983608
+-0.199267 -0.653464 -0.730258
+-0.180318 -0.000006 -0.983608
+-0.560097 -0.561397 -0.609200
+-0.679065 -0.000001 -0.734078
+-0.560097 -0.561397 -0.609200
+-0.207517 -0.956440 -0.205327
+-0.725047 -0.656124 -0.209303
+-0.207517 -0.956440 -0.205327
+-0.560097 -0.561397 -0.609200
+-0.199267 -0.653464 -0.730258
+-0.551168 0.542646 0.633837
+-0.979975 0.000000 0.199120
+-0.660121 -0.000001 0.751159
+-0.979975 0.000000 0.199120
+-0.551168 0.542646 0.633837
+-0.725081 0.650786 0.225243
+-0.979975 0.000000 0.199120
+-0.551169 -0.542646 0.633836
+-0.660121 -0.000001 0.751159
+-0.551169 -0.542646 0.633836
+-0.979975 0.000000 0.199120
+-0.725082 -0.650785 0.225243
+-0.194895 -0.625610 0.755399
+0.312123 -0.921766 0.230058
+0.190808 -0.577529 0.793758
+0.312123 -0.921766 0.230058
+-0.194895 -0.625610 0.755399
+-0.209266 -0.951054 0.227386
+0.312123 -0.921766 0.230058
+-0.043957 -0.962293 0.268439
+0.190808 -0.577529 0.793758
+-0.033385 -0.539811 0.841124
+0.190808 -0.577529 0.793758
+-0.043957 -0.962293 0.268439
+0.002473 0.000085 -0.999997
+-0.171465 0.617130 -0.767952
+0.058044 0.585777 -0.808391
+-0.171465 0.617130 -0.767952
+0.002473 0.000085 -0.999997
+0.003258 0.000064 -0.999995
+0.003258 0.000064 -0.999995
+0.002473 0.000085 -0.999997
+-0.035577 -0.584760 -0.810426
+-0.035577 -0.584760 -0.810426
+0.204425 -0.613146 -0.763061
+0.003258 0.000064 -0.999995
+-0.161073 0.585033 0.794853
+0.002099 0.000028 0.999998
+0.055056 0.547111 0.835247
+0.002685 0.000027 0.999996
+0.002099 0.000028 0.999998
+-0.161073 0.585033 0.794853
+0.002685 0.000027 0.999996
+-0.033385 -0.539811 0.841124
+0.002099 0.000028 0.999998
+-0.033385 -0.539811 0.841124
+0.002685 0.000027 0.999996
+0.190808 -0.577529 0.793758
+-0.000442 0.000179 1.000000
+-0.033385 -0.539811 0.841124
+-0.226991 -0.537188 0.812345
+-0.033385 -0.539811 0.841124
+-0.000442 0.000179 1.000000
+0.002099 0.000028 0.999998
+-0.000442 0.000179 1.000000
+0.228502 0.539943 0.810091
+0.002099 0.000028 0.999998
+0.228502 0.539943 0.810091
+0.055056 0.547111 0.835247
+0.002099 0.000028 0.999998
+-0.982510 0.000000 -0.186211
+-0.560099 -0.561396 -0.609199
+-0.725048 -0.656123 -0.209303
+-0.560099 -0.561396 -0.609199
+-0.982510 0.000000 -0.186211
+-0.679065 -0.000000 -0.734078
+-0.194895 -0.625610 0.755399
+0.190808 -0.577529 0.793758
+-0.170231 -0.000005 0.985404
+0.002685 0.000027 0.999996
+-0.170231 -0.000005 0.985404
+0.190808 -0.577529 0.793758
+-0.170231 -0.000005 0.985404
+-0.161073 0.585033 0.794853
+-0.195564 0.625420 0.755383
+-0.161073 0.585033 0.794853
+-0.170231 -0.000005 0.985404
+0.002685 0.000027 0.999996
+-0.204698 0.964792 -0.165151
+0.058044 0.585777 -0.808391
+-0.171465 0.617130 -0.767952
+0.058044 0.585777 -0.808391
+-0.204698 0.964792 -0.165151
+0.086799 0.969060 -0.231060
+-0.171465 0.617130 -0.767952
+-0.199844 0.651940 -0.731462
+-0.204698 0.964792 -0.165151
+-0.208725 0.955769 -0.207220
+-0.204698 0.964792 -0.165151
+-0.199844 0.651940 -0.731462
+-0.551169 -0.542645 0.633836
+-0.210355 -0.950796 0.227458
+-0.195565 -0.625420 0.755383
+-0.210355 -0.950796 0.227458
+-0.551169 -0.542645 0.633836
+-0.725082 -0.650785 0.225243
+-0.603641 0.021313 0.796972
+-0.595755 0.077825 0.799387
+-0.000041 -0.000115 1.000000
+-0.000041 -0.000115 1.000000
+-0.595755 0.077825 0.799387
+-0.000638 -0.000863 0.999999
+-0.970442 0.033992 0.238928
+-0.969807 0.124423 -0.209747
+-0.962593 0.123470 0.241185
+-0.969807 0.124423 -0.209747
+-0.970442 0.033992 0.238928
+-0.977593 0.034245 -0.207697
+-0.634535 0.082992 -0.768425
+-0.000048 -0.000135 -1.000000
+-0.000747 -0.001019 -0.999999
+-0.000048 -0.000135 -1.000000
+-0.634535 0.082992 -0.768425
+-0.642641 0.022702 -0.765831
+-0.962593 0.123470 0.241185
+-0.919102 0.328137 -0.218125
+-0.911838 0.325323 0.250433
+-0.919102 0.328137 -0.218125
+-0.962593 0.123470 0.241185
+-0.969807 0.124423 -0.209747
+-0.603641 0.021313 0.796972
+-0.970442 -0.033993 0.238928
+-0.970442 0.033992 0.238928
+-0.970442 -0.033993 0.238928
+-0.603641 0.021313 0.796972
+-0.603641 -0.021314 0.796971
+-0.970442 -0.033993 0.238928
+-0.977593 -0.034245 -0.207698
+-0.970442 0.033992 0.238928
+-0.970442 0.033992 0.238928
+-0.977593 -0.034245 -0.207698
+-0.977593 0.034245 -0.207697
+0.649752 -0.024446 -0.759753
+0.649752 0.024446 -0.759753
+0.980057 -0.036695 -0.195299
+0.980057 0.036695 -0.195299
+0.980057 -0.036695 -0.195299
+0.649752 0.024446 -0.759753
+-0.000041 0.000115 1.000000
+0.603405 -0.022707 0.797112
+0.603405 0.022707 0.797112
+0.603405 -0.022707 0.797112
+-0.000041 0.000115 1.000000
+-0.000041 -0.000115 1.000000
+-0.603641 -0.021314 0.796971
+-0.603641 0.021313 0.796972
+-0.000041 0.000115 1.000000
+-0.000041 0.000115 1.000000
+-0.603641 0.021313 0.796972
+-0.000041 -0.000115 1.000000
+-0.977593 0.034245 -0.207697
+-0.642641 -0.022702 -0.765831
+-0.642641 0.022702 -0.765831
+-0.642641 -0.022702 -0.765831
+-0.977593 0.034245 -0.207697
+-0.977593 -0.034245 -0.207698
+0.971097 -0.036349 0.235902
+0.603405 0.022707 0.797112
+0.603405 -0.022707 0.797112
+0.603405 0.022707 0.797112
+0.971097 -0.036349 0.235902
+0.971097 0.036350 0.235902
+-0.000048 0.000135 -1.000000
+0.649752 -0.024446 -0.759753
+-0.000048 -0.000135 -1.000000
+0.649752 -0.024446 -0.759753
+-0.000048 0.000135 -1.000000
+0.649752 0.024446 -0.759753
+-0.642641 -0.022702 -0.765831
+-0.000048 -0.000135 -1.000000
+-0.642641 0.022702 -0.765831
+-0.000048 -0.000135 -1.000000
+-0.642641 -0.022702 -0.765831
+-0.000048 0.000135 -1.000000
+0.986613 -0.081445 0.141285
+0.982443 -0.083837 -0.166662
+0.988065 -0.035740 0.149836
+0.988065 -0.035740 0.149836
+0.982443 -0.083837 -0.166662
+0.981105 -0.037375 -0.189834
+-0.253939 0.938487 0.234004
+-0.211020 0.977482 -0.000076
+-0.210357 0.950795 0.227461
+-0.211020 0.977482 -0.000076
+-0.253939 0.938487 0.234004
+-0.204698 0.964792 -0.165151
+-0.279642 -0.960104 -0.000105
+0.312123 -0.921766 0.230058
+-0.209266 -0.951054 0.227386
+0.315353 -0.928386 -0.196601
+-0.279642 -0.960104 -0.000105
+-0.207517 -0.956440 -0.205327
+-0.279642 -0.960104 -0.000105
+0.315353 -0.928386 -0.196601
+0.312123 -0.921766 0.230058
+-0.911838 0.325323 0.250433
+-0.919102 0.328137 -0.218125
+-0.462066 0.832419 0.305899
+-0.462066 0.832419 0.305899
+-0.919102 0.328137 -0.218125
+-0.466918 0.842704 -0.268025
+-0.462066 0.832419 0.305899
+-0.466918 0.842704 -0.268025
+0.365180 0.896818 0.249721
+0.365180 0.896818 0.249721
+-0.466918 0.842704 -0.268025
+0.366990 0.904435 -0.217522
+-0.043957 -0.962293 0.268439
+-0.362221 -0.908457 -0.208569
+-0.360720 -0.898090 0.251626
+-0.362221 -0.908457 -0.208569
+-0.043957 -0.962293 0.268439
+-0.043440 -0.974043 -0.222154
+0.312123 -0.921766 0.230058
+-0.043440 -0.974043 -0.222154
+-0.043957 -0.962293 0.268439
+-0.043440 -0.974043 -0.222154
+0.312123 -0.921766 0.230058
+0.315353 -0.928386 -0.196601
+-0.977593 -0.034245 -0.207698
+-0.970442 -0.033993 0.238928
+-0.962593 -0.123470 0.241184
+-0.962593 -0.123470 0.241184
+-0.969807 -0.124423 -0.209747
+-0.977593 -0.034245 -0.207698
+-0.462066 -0.832419 0.305898
+-0.466918 -0.842704 -0.268025
+-0.911838 -0.325323 0.250432
+-0.911838 -0.325323 0.250432
+-0.466918 -0.842704 -0.268025
+-0.919102 -0.328136 -0.218125
+0.366990 0.904435 -0.217522
+0.087092 0.960064 0.265881
+0.365180 0.896818 0.249721
+0.087092 0.960064 0.265881
+0.366990 0.904435 -0.217522
+0.086799 0.969060 -0.231060
+0.655231 0.018190 0.755209
+0.843248 -0.025991 0.536896
+0.843248 0.025992 0.536896
+0.843248 -0.025991 0.536896
+0.655231 0.018190 0.755209
+0.655231 -0.018190 0.755210
+0.843248 -0.025991 0.536896
+0.989339 0.034695 0.141437
+0.843248 0.025992 0.536896
+0.989339 0.034695 0.141437
+0.843248 -0.025991 0.536896
+0.989339 -0.034695 0.141437
+0.981105 0.037375 -0.189834
+0.981105 -0.037375 -0.189834
+0.813501 -0.026725 -0.580949
+0.981105 0.037375 -0.189834
+0.813501 -0.026725 -0.580949
+0.813501 0.026724 -0.580949
+0.813501 -0.026725 -0.580949
+0.655231 0.018190 -0.755210
+0.813501 0.026724 -0.580949
+0.655231 0.018190 -0.755210
+0.813501 -0.026725 -0.580949
+0.655230 -0.018190 -0.755210
+0.860326 -0.026239 0.509068
+0.718318 0.019932 0.695430
+0.718317 -0.019932 0.695431
+0.718318 0.019932 0.695430
+0.860326 -0.026239 0.509068
+0.860327 0.026239 0.509067
+0.860326 -0.026239 0.509068
+0.988065 0.035740 0.149836
+0.860327 0.026239 0.509067
+0.988065 0.035740 0.149836
+0.860326 -0.026239 0.509068
+0.988065 -0.035740 0.149836
+0.875032 -0.026858 -0.483320
+0.875032 0.026858 -0.483319
+0.991813 -0.034750 -0.122881
+0.991813 0.034751 -0.122880
+0.991813 -0.034750 -0.122881
+0.875032 0.026858 -0.483319
+0.875032 -0.026858 -0.483320
+0.718317 0.019932 -0.695430
+0.875032 0.026858 -0.483319
+0.718317 0.019932 -0.695430
+0.875032 -0.026858 -0.483320
+0.718316 -0.019932 -0.695431
+0.989339 -0.034695 0.141437
+0.969430 -0.140809 -0.200942
+0.980057 -0.036695 -0.195299
+0.969430 -0.140809 -0.200942
+0.989339 -0.034695 0.141437
+0.986595 -0.094661 0.132928
+0.989339 0.034695 0.141437
+0.968988 0.137063 -0.205612
+0.986759 0.092584 0.133176
+0.968988 0.137063 -0.205612
+0.989339 0.034695 0.141437
+0.980057 0.036695 -0.195299
+0.989339 -0.034695 0.141437
+0.980057 0.036695 -0.195299
+0.989339 0.034695 0.141437
+0.980057 0.036695 -0.195299
+0.989339 -0.034695 0.141437
+0.980057 -0.036695 -0.195299
+0.988065 0.035740 0.149836
+0.982445 0.083823 -0.166661
+0.986613 0.081440 0.141285
+0.982445 0.083823 -0.166661
+0.988065 0.035740 0.149836
+0.981105 0.037375 -0.189834
+0.988065 -0.035740 0.149836
+0.981105 0.037375 -0.189834
+0.988065 0.035740 0.149836
+0.981105 0.037375 -0.189834
+0.988065 -0.035740 0.149836
+0.981105 -0.037375 -0.189834
+-0.204698 0.964792 -0.165151
+-0.208725 0.955769 -0.207220
+-0.211020 0.977482 -0.000076
+0.960263 -0.139604 0.241671
+0.991813 -0.034750 -0.122881
+0.971097 -0.036349 0.235902
+0.991813 -0.034750 -0.122881
+0.960263 -0.139604 0.241671
+0.988802 -0.094858 -0.115209
+0.959475 0.135782 0.246925
+0.991813 0.034751 -0.122880
+0.988967 0.092798 -0.115468
+0.991813 0.034751 -0.122880
+0.959475 0.135782 0.246925
+0.971097 0.036350 0.235902
+0.971097 -0.036349 0.235902
+0.991813 0.034751 -0.122880
+0.971097 0.036350 0.235902
+0.991813 0.034751 -0.122880
+0.971097 -0.036349 0.235902
+0.991813 -0.034750 -0.122881
+-0.911838 -0.325323 0.250432
+-0.969807 -0.124423 -0.209747
+-0.962593 -0.123470 0.241184
+-0.969807 -0.124423 -0.209747
+-0.911838 -0.325323 0.250432
+-0.919102 -0.328136 -0.218125
+-0.202942 -0.961200 0.186841
+-0.210355 -0.950796 0.227458
+-0.211020 -0.977482 -0.000083
+-0.204698 0.964792 -0.165151
+-0.253939 0.938487 0.234004
+0.087092 0.960064 0.265881
+0.087092 0.960064 0.265881
+0.086799 0.969060 -0.231060
+-0.204698 0.964792 -0.165151
+-0.000041 0.000115 1.000000
+-0.000641 0.000863 0.999999
+-0.595757 -0.077824 0.799386
+-0.595757 -0.077824 0.799386
+-0.603641 -0.021314 0.796971
+-0.000041 0.000115 1.000000
+-0.000641 0.000863 0.999999
+0.603405 0.022707 0.797112
+0.587221 0.086819 0.804757
+0.603405 0.022707 0.797112
+-0.000641 0.000863 0.999999
+-0.000041 0.000115 1.000000
+-0.642641 -0.022702 -0.765831
+-0.634535 -0.082993 -0.768425
+-0.000048 0.000135 -1.000000
+-0.000746 0.001019 -0.999999
+-0.000048 0.000135 -1.000000
+-0.634535 -0.082993 -0.768425
+0.649752 0.024446 -0.759753
+-0.000746 0.001019 -0.999999
+0.633899 0.093637 -0.767727
+-0.000746 0.001019 -0.999999
+0.649752 0.024446 -0.759753
+-0.000048 0.000135 -1.000000
+-0.763761 0.616471 0.191397
+-0.840320 0.247136 0.482478
+-0.936920 0.266169 0.226572
+-0.840320 0.247136 0.482478
+-0.763761 0.616471 0.191397
+-0.711682 0.572480 0.407155
+-0.466918 -0.842704 -0.268025
+0.366990 -0.904435 -0.217523
+0.242959 -0.576537 -0.780113
+0.242959 -0.576537 -0.780113
+-0.265241 -0.486465 -0.832466
+-0.466918 -0.842704 -0.268025
+0.086799 -0.969060 -0.231061
+0.058043 -0.585777 -0.808392
+0.366990 -0.904435 -0.217523
+0.366990 -0.904435 -0.217523
+0.058043 -0.585777 -0.808392
+0.242959 -0.576537 -0.780113
+0.242959 -0.576537 -0.780113
+-0.000497 -0.000226 -1.000000
+-0.265241 -0.486465 -0.832466
+-0.265241 -0.486465 -0.832466
+-0.000497 -0.000226 -1.000000
+-0.002934 0.002292 -0.999993
+-0.035294 0.573985 -0.818105
+-0.239807 0.576892 -0.780825
+-0.000497 -0.000226 -1.000000
+-0.000497 -0.000226 -1.000000
+0.002471 -0.000084 -0.999997
+-0.035294 0.573985 -0.818105
+-0.000497 -0.000226 -1.000000
+0.242959 -0.576537 -0.780113
+0.002471 -0.000084 -0.999997
+0.242959 -0.576537 -0.780113
+0.058043 -0.585777 -0.808392
+0.002471 -0.000084 -0.999997
+-0.768311 -0.640077 -0.000385
+-0.725048 -0.656123 -0.209303
+-0.211020 -0.977482 -0.000083
+-0.211020 -0.977482 -0.000083
+-0.725048 -0.656123 -0.209303
+-0.208728 -0.955767 -0.207223
+-0.725048 -0.656123 -0.209303
+-0.560099 -0.561396 -0.609199
+-0.208728 -0.955767 -0.207223
+-0.208728 -0.955767 -0.207223
+-0.560099 -0.561396 -0.609199
+-0.199845 -0.651940 -0.731462
+-0.199845 -0.651940 -0.731462
+-0.560099 -0.561396 -0.609199
+-0.180318 0.000006 -0.983608
+-0.560099 -0.561396 -0.609199
+-0.679065 -0.000000 -0.734078
+-0.180318 0.000006 -0.983608
+0.087094 -0.960063 0.265881
+0.365180 -0.896819 0.249719
+0.055055 -0.547112 0.835247
+0.228503 -0.539944 0.810091
+0.055055 -0.547112 0.835247
+0.365180 -0.896819 0.249719
+0.055055 -0.547112 0.835247
+-0.161073 -0.585034 0.794852
+-0.202942 -0.961200 0.186841
+0.055055 -0.547112 0.835247
+-0.202942 -0.961200 0.186841
+0.087094 -0.960063 0.265881
+0.228503 -0.539944 0.810091
+-0.462066 -0.832419 0.305898
+-0.246814 -0.450798 0.857825
+-0.462066 -0.832419 0.305898
+0.228503 -0.539944 0.810091
+0.365180 -0.896819 0.249719
+-0.202942 -0.961200 0.186841
+-0.211020 -0.977482 -0.000083
+-0.256100 -0.944269 -0.206809
+-0.211020 -0.977482 -0.000083
+-0.208728 -0.955767 -0.207223
+-0.256100 -0.944269 -0.206809
+0.087094 -0.960063 0.265881
+0.366990 -0.904435 -0.217523
+0.365180 -0.896819 0.249719
+0.366990 -0.904435 -0.217523
+0.087094 -0.960063 0.265881
+0.086799 -0.969060 -0.231061
+0.365180 -0.896819 0.249719
+0.366990 -0.904435 -0.217523
+-0.462066 -0.832419 0.305898
+-0.462066 -0.832419 0.305898
+0.366990 -0.904435 -0.217523
+-0.466918 -0.842704 -0.268025
+-0.202942 -0.961200 0.186841
+0.086799 -0.969060 -0.231061
+0.087094 -0.960063 0.265881
+0.086799 -0.969060 -0.231061
+-0.202942 -0.961200 0.186841
+-0.256100 -0.944269 -0.206809
+-0.256100 -0.944269 -0.206809
+-0.208728 -0.955767 -0.207223
+-0.199845 -0.651940 -0.731462
+-0.256100 -0.944269 -0.206809
+-0.199845 -0.651940 -0.731462
+-0.171464 -0.617129 -0.767953
+-0.171464 -0.617129 -0.767953
+-0.199845 -0.651940 -0.731462
+-0.180318 0.000006 -0.983608
+-0.171464 -0.617129 -0.767953
+-0.180318 0.000006 -0.983608
+0.003258 -0.000063 -0.999995
+0.003258 -0.000063 -0.999995
+0.002471 -0.000084 -0.999997
+-0.171464 -0.617129 -0.767953
+0.058043 -0.585777 -0.808392
+-0.171464 -0.617129 -0.767953
+0.002471 -0.000084 -0.999997
+-0.256100 -0.944269 -0.206809
+0.058043 -0.585777 -0.808392
+0.086799 -0.969060 -0.231061
+0.058043 -0.585777 -0.808392
+-0.256100 -0.944269 -0.206809
+-0.171464 -0.617129 -0.767953
+-0.548049 0.550142 0.630068
+-0.979975 -0.000000 0.199120
+-0.660122 -0.000000 0.751159
+-0.979975 -0.000000 0.199120
+-0.548049 0.550142 0.630068
+-0.716909 0.660924 0.221858
+-0.343955 0.514729 -0.785333
+-0.649371 0.228182 -0.725431
+-0.395432 0.217875 -0.892280
+-0.649371 0.228182 -0.725431
+-0.343955 0.514729 -0.785333
+-0.547960 0.555267 -0.625634
+-0.059515 0.221340 -0.973379
+-0.343955 0.514729 -0.785333
+-0.395432 0.217875 -0.892280
+-0.343955 0.514729 -0.785333
+-0.059515 0.221340 -0.973379
+-0.046384 0.487441 -0.871923
+0.365100 0.214493 -0.905922
+-0.046384 0.487441 -0.871923
+-0.059515 0.221340 -0.973379
+-0.046384 0.487441 -0.871923
+0.365100 0.214493 -0.905922
+0.328823 0.466015 -0.821405
+0.625878 0.477377 -0.616755
+0.317192 0.512595 -0.797894
+0.328823 0.466015 -0.821405
+0.317192 0.512595 -0.797894
+0.625878 0.477377 -0.616755
+0.595037 0.548747 -0.587204
+0.696873 0.205905 -0.687001
+0.328823 0.466015 -0.821405
+0.365100 0.214493 -0.905922
+0.328823 0.466015 -0.821405
+0.696873 0.205905 -0.687001
+0.625878 0.477377 -0.616755
+0.696873 0.205905 -0.687001
+0.781723 0.532717 -0.324224
+0.625878 0.477377 -0.616755
+0.781723 0.532717 -0.324224
+0.696873 0.205905 -0.687001
+0.903941 0.214206 -0.370142
+0.141419 0.225313 -0.963968
+-0.169481 0.563188 -0.808761
+-0.200263 0.225466 -0.953446
+-0.169481 0.563188 -0.808761
+0.141419 0.225313 -0.963968
+0.119202 0.572271 -0.811355
+0.431044 0.238709 -0.870183
+0.119202 0.572271 -0.811355
+0.141419 0.225313 -0.963968
+0.119202 0.572271 -0.811355
+0.431044 0.238709 -0.870183
+0.358260 0.585110 -0.727527
+-0.127838 0.334101 -0.933828
+0.358260 0.585110 -0.727527
+0.431044 0.238709 -0.870183
+0.358260 0.585110 -0.727527
+-0.127838 0.334101 -0.933828
+-0.089937 0.711423 -0.696985
+-0.547960 0.555267 -0.625634
+-0.089937 0.711423 -0.696985
+-0.649371 0.228182 -0.725431
+-0.649371 0.228182 -0.725431
+-0.089937 0.711423 -0.696985
+-0.127838 0.334101 -0.933828
+-0.548049 0.550142 0.630068
+-0.191496 0.630666 0.752057
+-0.112545 0.985604 0.126165
+-0.112545 0.985604 0.126165
+-0.716909 0.660924 0.221858
+-0.548049 0.550142 0.630068
+0.328823 0.466015 -0.821405
+-0.039060 0.541933 -0.839514
+-0.046384 0.487441 -0.871923
+-0.039060 0.541933 -0.839514
+0.328823 0.466015 -0.821405
+0.317192 0.512595 -0.797894
+-0.039060 0.541933 -0.839514
+-0.343955 0.514729 -0.785333
+-0.046384 0.487441 -0.871923
+-0.343955 0.514729 -0.785333
+-0.039060 0.541933 -0.839514
+-0.317922 0.599052 -0.734889
+-0.112545 0.985604 0.126165
+0.000000 1.000000 0.000000
+0.000000 1.000000 -0.000000
+-0.112545 0.985604 0.126165
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+-0.169481 0.563188 -0.808761
+-0.584454 0.238003 -0.775737
+-0.200263 0.225466 -0.953446
+-0.584454 0.238003 -0.775737
+-0.169481 0.563188 -0.808761
+-0.496313 0.562933 -0.660893
+-0.758013 0.644539 -0.099928
+-0.936920 0.266169 0.226572
+-0.955490 0.266720 -0.126095
+-0.936920 0.266169 0.226572
+-0.758013 0.644539 -0.099928
+-0.763761 0.616471 0.191397
+-0.838984 0.256812 -0.479743
+-0.758013 0.644539 -0.099928
+-0.955490 0.266720 -0.126095
+-0.758013 0.644539 -0.099928
+-0.838984 0.256812 -0.479743
+-0.688200 0.602349 -0.404421
+-0.496313 0.562933 -0.660893
+-0.611797 0.699017 -0.370244
+-0.688200 0.602349 -0.404421
+-0.611797 0.699017 -0.370244
+-0.496313 0.562933 -0.660893
+-0.454311 0.656210 -0.602487
+-0.496313 0.562933 -0.660893
+-0.688200 0.602349 -0.404421
+-0.584454 0.238003 -0.775737
+-0.584454 0.238003 -0.775737
+-0.688200 0.602349 -0.404421
+-0.838984 0.256812 -0.479743
+-0.151302 0.675602 -0.721574
+-0.496313 0.562933 -0.660893
+-0.169481 0.563188 -0.808761
+-0.496313 0.562933 -0.660893
+-0.151302 0.675602 -0.721574
+-0.454311 0.656210 -0.602487
+0.119202 0.572271 -0.811355
+-0.151302 0.675602 -0.721574
+-0.169481 0.563188 -0.808761
+-0.151302 0.675602 -0.721574
+0.119202 0.572271 -0.811355
+0.104612 0.691827 -0.714445
+0.119202 0.572271 -0.811355
+0.358260 0.585110 -0.727527
+0.318292 0.694721 -0.645022
+0.318292 0.694721 -0.645022
+0.104612 0.691827 -0.714445
+0.119202 0.572271 -0.811355
+0.358260 0.585110 -0.727527
+-0.089937 0.711423 -0.696985
+-0.070399 0.797321 -0.599436
+-0.070399 0.797321 -0.599436
+0.318292 0.694721 -0.645022
+0.358260 0.585110 -0.727527
+-0.089937 0.711423 -0.696985
+-0.547960 0.555267 -0.625634
+-0.070399 0.797321 -0.599436
+-0.070399 0.797321 -0.599436
+-0.547960 0.555267 -0.625634
+-0.491803 0.657209 -0.571144
+-0.317922 0.599052 -0.734889
+-0.547960 0.555267 -0.625634
+-0.343955 0.514729 -0.785333
+-0.547960 0.555267 -0.625634
+-0.317922 0.599052 -0.734889
+-0.491803 0.657209 -0.571144
+-0.040786 0.970142 -0.239085
+-0.360405 0.907460 -0.215925
+-0.239807 0.576892 -0.780825
+-0.040786 0.970142 -0.239085
+-0.239807 0.576892 -0.780825
+-0.035294 0.573985 -0.818105
+-0.360720 0.898090 0.251626
+-0.040786 0.970142 -0.239085
+-0.041583 0.960502 0.275148
+-0.040786 0.970142 -0.239085
+-0.360720 0.898090 0.251626
+-0.360405 0.907460 -0.215925
+-0.495945 0.576879 0.649037
+-0.542444 0.675744 0.499124
+-0.435190 0.696428 0.570611
+-0.542444 0.675744 0.499124
+-0.495945 0.576879 0.649037
+-0.605448 0.566471 0.559057
+-0.495945 0.576879 0.649037
+-0.714326 0.229234 0.661204
+-0.605448 0.566471 0.559057
+-0.714326 0.229234 0.661204
+-0.495945 0.576879 0.649037
+-0.592396 0.227675 0.772807
+-0.422619 0.568577 0.705772
+-0.592396 0.227675 0.772807
+-0.495945 0.576879 0.649037
+-0.592396 0.227675 0.772807
+-0.422619 0.568577 0.705772
+-0.501313 0.219764 0.836893
+-0.370095 0.693547 0.618080
+-0.495945 0.576879 0.649037
+-0.435190 0.696428 0.570611
+-0.495945 0.576879 0.649037
+-0.370095 0.693547 0.618080
+-0.422619 0.568577 0.705772
+-0.711682 0.572480 0.407155
+-0.714326 0.229234 0.661204
+-0.840320 0.247136 0.482478
+-0.714326 0.229234 0.661204
+-0.711682 0.572480 0.407155
+-0.605448 0.566471 0.559057
+-0.841685 0.192147 0.504624
+-0.787363 0.202216 0.582382
+-0.669943 0.547331 0.501602
+-0.669943 0.547331 0.501602
+-0.724169 0.524207 0.448092
+-0.841685 0.192147 0.504624
+-0.669943 0.547331 0.501602
+-0.455250 0.707839 0.540104
+-0.582828 0.682372 0.441225
+-0.455250 0.707839 0.540104
+-0.669943 0.547331 0.501602
+-0.528924 0.571725 0.627192
+-0.787363 0.202216 0.582382
+-0.629946 0.213633 0.746679
+-0.528924 0.571725 0.627192
+-0.528924 0.571725 0.627192
+-0.669943 0.547331 0.501602
+-0.787363 0.202216 0.582382
+-0.528924 0.571725 0.627192
+-0.414820 0.569657 0.709518
+-0.455250 0.707839 0.540104
+-0.455250 0.707839 0.540104
+-0.414820 0.569657 0.709518
+-0.358687 0.703188 0.613898
+-0.629946 0.213633 0.746679
+-0.493243 0.214467 0.843039
+-0.528924 0.571725 0.627192
+-0.414820 0.569657 0.709518
+-0.528924 0.571725 0.627192
+-0.493243 0.214467 0.843039
+-0.414820 0.569657 0.709518
+-0.393394 0.569193 0.721984
+-0.358687 0.703188 0.613898
+-0.358687 0.703188 0.613898
+-0.393394 0.569193 0.721984
+-0.342205 0.698733 0.628226
+-0.414820 0.569657 0.709518
+-0.467256 0.216972 0.857085
+-0.393394 0.569193 0.721984
+-0.467256 0.216972 0.857085
+-0.414820 0.569657 0.709518
+-0.493243 0.214467 0.843039
+-0.370095 0.693547 0.618080
+-0.393394 0.569193 0.721984
+-0.422619 0.568577 0.705772
+-0.393394 0.569193 0.721984
+-0.370095 0.693547 0.618080
+-0.342205 0.698733 0.628226
+-0.393394 0.569193 0.721984
+-0.501313 0.219764 0.836893
+-0.422619 0.568577 0.705772
+-0.501313 0.219764 0.836893
+-0.393394 0.569193 0.721984
+-0.467256 0.216972 0.857085
+-0.711682 0.572480 0.407155
+-0.542444 0.675744 0.499124
+-0.605448 0.566471 0.559057
+-0.654083 0.659067 0.371222
+-0.542444 0.675744 0.499124
+-0.711682 0.572480 0.407155
+-0.680757 0.710479 0.178297
+-0.654083 0.659067 0.371222
+-0.763761 0.616471 0.191397
+-0.763761 0.616471 0.191397
+-0.654083 0.659067 0.371222
+-0.711682 0.572480 0.407155
+-0.763761 0.616471 0.191397
+-0.758013 0.644539 -0.099928
+-0.680757 0.710479 0.178297
+-0.645510 0.759014 -0.084938
+-0.680757 0.710479 0.178297
+-0.758013 0.644539 -0.099928
+-0.758013 0.644539 -0.099928
+-0.688200 0.602349 -0.404421
+-0.611797 0.699017 -0.370244
+-0.611797 0.699017 -0.370244
+-0.645510 0.759014 -0.084938
+-0.758013 0.644539 -0.099928
+0.189891 0.573349 0.797002
+-0.033609 0.535318 0.843982
+-0.041583 0.960502 0.275148
+0.189891 0.573349 0.797002
+-0.041583 0.960502 0.275148
+0.098604 0.992765 0.068512
+-0.041583 0.960502 0.275148
+-0.040786 0.970142 -0.239085
+0.098604 0.992765 0.068512
+0.098604 0.992765 0.068512
+-0.040786 0.970142 -0.239085
+0.086276 0.994635 -0.057081
+-0.191496 0.630666 0.752057
+0.189891 0.573349 0.797002
+0.098604 0.992765 0.068512
+0.098604 0.992765 0.068512
+-0.112545 0.985604 0.126165
+-0.191496 0.630666 0.752057
+0.000000 1.000000 0.000000
+0.098604 0.992765 0.068512
+0.000000 1.000000 0.000000
+-0.000000 1.000000 0.000000
+0.098604 0.992765 0.068512
+0.000000 1.000000 0.000000
+0.098604 0.992765 0.068512
+0.000000 1.000000 0.000000
+-0.112545 0.985604 0.126165
+0.098604 0.992765 0.068512
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+-0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.098604 0.992765 0.068512
+-0.000000 1.000000 0.000000
+0.098604 0.992765 0.068512
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+-0.000000 1.000000 0.000000
+0.098604 0.992765 0.068512
+-0.000000 1.000000 0.000000
+0.040840 0.999128 -0.008728
+0.098604 0.992765 0.068512
+0.034316 0.999382 -0.007639
+0.098604 0.992765 0.068512
+0.040840 0.999128 -0.008728
+0.000000 1.000000 0.000000
+0.581073 0.546846 0.602754
+0.598663 0.558562 0.574118
+0.705755 0.211010 0.676302
+0.581073 0.546846 0.602754
+0.705755 0.211010 0.676302
+0.678746 0.209741 0.703784
+0.601785 0.539948 0.588482
+0.581073 0.546846 0.602754
+0.678746 0.209741 0.703784
+0.601785 0.539948 0.588482
+0.678746 0.209741 0.703784
+0.699419 0.209896 0.683196
+0.601785 0.539948 0.588482
+0.801788 0.210682 0.559240
+0.688210 0.543094 0.481058
+0.801788 0.210682 0.559240
+0.601785 0.539948 0.588482
+0.699419 0.209896 0.683196
+0.688210 0.543094 0.481058
+0.711588 0.637751 0.294815
+0.613668 0.662134 0.430105
+0.711588 0.637751 0.294815
+0.688210 0.543094 0.481058
+0.783863 0.531568 0.320927
+0.801788 0.210682 0.559240
+0.905278 0.213025 0.367549
+0.688210 0.543094 0.481058
+0.688210 0.543094 0.481058
+0.905278 0.213025 0.367549
+0.783863 0.531568 0.320927
+0.905278 0.213025 0.367549
+0.935215 0.215854 0.280677
+0.783863 0.531568 0.320927
+0.817969 0.516792 0.252693
+0.783863 0.531568 0.320927
+0.935215 0.215854 0.280677
+0.783863 0.531568 0.320927
+0.817969 0.516792 0.252693
+0.711588 0.637751 0.294815
+0.757394 0.605997 0.243149
+0.711588 0.637751 0.294815
+0.817969 0.516792 0.252693
+0.201947 0.604950 -0.770229
+-0.035294 0.573985 -0.818105
+0.003258 -0.000063 -0.999995
+-0.035294 0.573985 -0.818105
+0.002471 -0.000084 -0.999997
+0.003258 -0.000063 -0.999995
+-0.679065 -0.000000 -0.734078
+-0.556811 0.568601 -0.605520
+-0.180318 0.000006 -0.983608
+-0.180318 0.000006 -0.983608
+-0.556811 0.568601 -0.605520
+-0.195579 0.656911 -0.728160
+-0.195579 0.656911 -0.728160
+0.201947 0.604950 -0.770229
+-0.180318 0.000006 -0.983608
+0.003258 -0.000063 -0.999995
+-0.180318 0.000006 -0.983608
+0.201947 0.604950 -0.770229
+-0.724169 0.524207 0.448092
+-0.582828 0.682372 0.441225
+-0.636129 0.656986 0.404609
+-0.582828 0.682372 0.441225
+-0.724169 0.524207 0.448092
+-0.669943 0.547331 0.501602
+-0.035294 0.573985 -0.818105
+0.201947 0.604950 -0.770229
+-0.040786 0.970142 -0.239085
+0.086276 0.994635 -0.057081
+-0.040786 0.970142 -0.239085
+0.201947 0.604950 -0.770229
+0.000000 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+0.086276 0.994635 -0.057081
+0.000000 1.000000 -0.000000
+0.086276 0.994635 -0.057081
+0.000000 1.000000 -0.000000
+0.098604 0.992765 0.068512
+0.086276 0.994635 -0.057081
+0.034316 0.999382 -0.007639
+0.034316 0.999382 -0.007639
+0.086276 0.994635 -0.057081
+-0.006528 0.999978 0.001090
+-0.006528 0.999978 0.001090
+0.086276 0.994635 -0.057081
+0.000000 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+0.086276 0.994635 -0.057081
+0.000000 1.000000 -0.000000
+0.000000 1.000000 -0.000001
+0.086276 0.994635 -0.057081
+0.000000 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+0.086276 0.994635 -0.057081
+0.000000 1.000000 -0.000001
+0.000000 1.000000 -0.000000
+0.086276 0.994635 -0.057081
+0.000000 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+0.086276 0.994635 -0.057081
+0.000000 1.000000 -0.000000
+0.086276 0.994635 -0.057081
+0.000000 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+-0.982510 0.000000 -0.186211
+-0.716876 0.666064 -0.206026
+-0.556811 0.568601 -0.605520
+-0.982510 0.000000 -0.186211
+-0.556811 0.568601 -0.605520
+-0.679065 -0.000000 -0.734078
+0.821652 0.569829 -0.013559
+0.944422 0.209786 0.253095
+0.793508 0.570331 0.212291
+0.944422 0.209786 0.253095
+0.821652 0.569829 -0.013559
+0.976199 0.216199 -0.017157
+0.793508 0.570331 0.212291
+0.864795 0.209422 0.456369
+0.725860 0.570999 0.383519
+0.864795 0.209422 0.456369
+0.793508 0.570331 0.212291
+0.944422 0.209786 0.253095
+0.864795 0.209422 0.456369
+0.777085 0.211198 0.592903
+0.725860 0.570999 0.383519
+0.725860 0.570999 0.383519
+0.777085 0.211198 0.592903
+0.653839 0.568227 0.499612
+-0.716909 0.660924 0.221858
+-0.759288 0.650754 -0.000381
+-0.979975 -0.000000 0.199120
+-0.979975 -0.000000 0.199120
+-0.759288 0.650754 -0.000381
+-1.000000 0.000000 -0.000555
+-0.982510 0.000000 -0.186211
+-1.000000 0.000000 -0.000555
+-0.759288 0.650754 -0.000381
+-0.759288 0.650754 -0.000381
+-0.716876 0.666064 -0.206026
+-0.982510 0.000000 -0.186211
+-0.112114 0.993695 -0.000041
+0.000000 1.000000 0.000000
+0.000000 1.000000 -0.000000
+0.781723 0.532717 -0.324224
+0.595037 0.548747 -0.587204
+0.625878 0.477377 -0.616755
+0.709520 0.638375 -0.298428
+0.595037 0.548747 -0.587204
+0.781723 0.532717 -0.324224
+0.781723 0.532717 -0.324224
+0.821652 0.569829 -0.013559
+0.709520 0.638375 -0.298428
+0.709520 0.638375 -0.298428
+0.821652 0.569829 -0.013559
+0.713218 0.700844 -0.011724
+0.903941 0.214206 -0.370142
+0.976199 0.216199 -0.017157
+0.781723 0.532717 -0.324224
+0.781723 0.532717 -0.324224
+0.976199 0.216199 -0.017157
+0.821652 0.569829 -0.013559
+0.821652 0.569829 -0.013559
+0.793508 0.570331 0.212291
+0.713218 0.700844 -0.011724
+0.679428 0.710964 0.181407
+0.713218 0.700844 -0.011724
+0.793508 0.570331 0.212291
+0.793508 0.570331 0.212291
+0.725860 0.570999 0.383519
+0.679428 0.710964 0.181407
+0.619977 0.712722 0.328110
+0.679428 0.710964 0.181407
+0.725860 0.570999 0.383519
+0.725860 0.570999 0.383519
+0.653839 0.568227 0.499612
+0.619977 0.712722 0.328110
+0.562682 0.705436 0.430986
+0.619977 0.712722 0.328110
+0.653839 0.568227 0.499612
+-0.112545 0.985604 0.126165
+-0.112114 0.993695 -0.000041
+-0.716909 0.660924 0.221858
+-0.716909 0.660924 0.221858
+-0.112114 0.993695 -0.000041
+-0.759288 0.650754 -0.000381
+-0.112545 0.985604 0.126165
+0.000000 1.000000 -0.000000
+-0.112114 0.993695 -0.000041
+0.653839 0.568227 0.499612
+0.705755 0.211010 0.676302
+0.598663 0.558562 0.574118
+0.705755 0.211010 0.676302
+0.653839 0.568227 0.499612
+0.777085 0.211198 0.592903
+0.581073 0.546846 0.602754
+0.601785 0.539948 0.588482
+0.538192 0.657739 0.526999
+0.538192 0.657739 0.526999
+0.514913 0.670271 0.534417
+0.581073 0.546846 0.602754
+0.601785 0.539948 0.588482
+0.688210 0.543094 0.481058
+0.613668 0.662134 0.430105
+0.613668 0.662134 0.430105
+0.538192 0.657739 0.526999
+0.601785 0.539948 0.588482
+-0.716876 0.666064 -0.206026
+-0.759288 0.650754 -0.000381
+-0.112114 0.993695 -0.000041
+-0.112114 0.993695 -0.000041
+-0.064445 0.995715 -0.066315
+-0.716876 0.666064 -0.206026
+-0.716876 0.666064 -0.206026
+-0.064445 0.995715 -0.066315
+-0.556811 0.568601 -0.605520
+-0.064445 0.995715 -0.066315
+-0.195579 0.656911 -0.728160
+-0.556811 0.568601 -0.605520
+0.000000 1.000000 0.000000
+-0.112114 0.993695 -0.000041
+0.000000 1.000000 -0.000000
+0.653839 0.568227 0.499612
+0.598663 0.558562 0.574118
+0.522794 0.688986 0.501981
+0.522794 0.688986 0.501981
+0.562682 0.705436 0.430986
+0.653839 0.568227 0.499612
+0.598663 0.558562 0.574118
+0.581073 0.546846 0.602754
+0.514913 0.670271 0.534417
+0.514913 0.670271 0.534417
+0.522794 0.688986 0.501981
+0.598663 0.558562 0.574118
+-0.064445 0.995715 -0.066315
+0.000000 1.000000 0.000000
+0.000000 1.000000 -0.000000
+0.201947 0.604950 -0.770229
+-0.195579 0.656911 -0.728160
+0.086276 0.994635 -0.057081
+-0.064445 0.995715 -0.066315
+0.086276 0.994635 -0.057081
+-0.195579 0.656911 -0.728160
+-0.064445 0.995715 -0.066315
+0.000000 1.000000 -0.000000
+0.086276 0.994635 -0.057081
+-0.064445 0.995715 -0.066315
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+-0.064445 0.995715 -0.066315
+0.000000 1.000000 -0.000000
+0.000000 1.000000 0.000000
+-0.064445 0.995715 -0.066315
+0.000000 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+0.000000 1.000000 -0.000000
+-0.064445 0.995715 -0.066315
+0.000000 1.000000 0.000000
+0.000000 1.000000 -0.000000
+-0.064445 0.995715 -0.066315
+0.000000 1.000000 -0.000000
+-0.064445 0.995715 -0.066315
+0.000000 1.000000 -0.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+-0.064445 0.995715 -0.066315
+-0.112114 0.993695 -0.000041
+-0.064445 0.995715 -0.066315
+0.000000 1.000000 0.000000
+0.000000 1.000000 -0.000000
+0.000000 1.000000 0.000000
+-0.112114 0.993695 -0.000041
+0.000000 1.000000 0.000000
+0.382362 0.015677 -0.923879
+-0.027544 0.671807 -0.740214
+0.252364 0.691252 -0.677114
+-0.027544 0.671807 -0.740214
+0.382362 0.015677 -0.923879
+-0.000000 -0.000000 -1.000000
+0.382362 0.015677 -0.923879
+0.495427 0.693249 -0.523410
+0.706514 0.028967 -0.707106
+0.495427 0.693249 -0.523410
+0.382362 0.015677 -0.923879
+0.252364 0.691252 -0.677114
+-0.308105 0.668272 -0.677114
+-0.382363 -0.015677 -0.923879
+-0.706513 -0.028967 -0.707107
+-0.706513 -0.028967 -0.707107
+-0.550515 0.650365 -0.523410
+-0.308105 0.668272 -0.677114
+-0.382363 -0.015677 -0.923879
+-0.308105 0.668272 -0.677114
+-0.000000 -0.000000 -1.000000
+-0.000000 -0.000000 -1.000000
+-0.308105 0.668272 -0.677114
+-0.027544 0.671807 -0.740214
+-0.767137 0.641483 -0.000000
+-0.923104 -0.037848 -0.382684
+-0.999160 -0.040968 -0.000000
+-0.923104 -0.037848 -0.382684
+-0.767137 0.641483 -0.000000
+-0.704416 0.652023 -0.280470
+-0.704416 0.652023 -0.280470
+-0.706513 -0.028967 -0.707107
+-0.923104 -0.037848 -0.382684
+-0.706513 -0.028967 -0.707107
+-0.704416 0.652023 -0.280470
+-0.550515 0.650365 -0.523410
+-0.706513 -0.028967 0.707107
+-0.550515 0.650365 0.523410
+-0.704416 0.652024 0.280470
+-0.706513 -0.028967 0.707107
+-0.704416 0.652024 0.280470
+-0.923104 -0.037848 0.382684
+-0.923104 -0.037848 0.382684
+-0.767137 0.641483 -0.000000
+-0.999160 -0.040968 -0.000000
+-0.767137 0.641483 -0.000000
+-0.923104 -0.037848 0.382684
+-0.704416 0.652024 0.280470
+-0.308105 0.668272 0.677114
+-0.000000 -0.000000 1.000000
+-0.027544 0.671807 0.740214
+-0.000000 -0.000000 1.000000
+-0.308105 0.668272 0.677114
+-0.382363 -0.015677 0.923879
+-0.550515 0.650365 0.523410
+-0.706513 -0.028967 0.707107
+-0.308105 0.668272 0.677114
+-0.308105 0.668272 0.677114
+-0.706513 -0.028967 0.707107
+-0.382363 -0.015677 0.923879
+0.495427 0.693249 0.523410
+0.382362 0.015677 0.923879
+0.706513 0.028967 0.707106
+0.382362 0.015677 0.923879
+0.495427 0.693249 0.523410
+0.252364 0.691252 0.677114
+-0.027544 0.671807 0.740214
+0.382362 0.015677 0.923879
+0.252364 0.691252 0.677114
+0.382362 0.015677 0.923879
+-0.027544 0.671807 0.740214
+-0.000000 -0.000000 1.000000
+0.648675 0.707500 0.280471
+0.923104 0.037847 0.382683
+0.999160 0.040965 -0.000000
+0.648675 0.707500 0.280471
+0.999160 0.040965 -0.000000
+0.712049 0.702130 -0.000000
+0.923104 0.037847 0.382683
+0.495427 0.693249 0.523410
+0.706513 0.028967 0.707106
+0.495427 0.693249 0.523410
+0.923104 0.037847 0.382683
+0.648675 0.707500 0.280471
+0.923104 0.037847 -0.382683
+0.495427 0.693249 -0.523410
+0.648675 0.707500 -0.280471
+0.495427 0.693249 -0.523410
+0.923104 0.037847 -0.382683
+0.706514 0.028967 -0.707106
+0.712049 0.702130 -0.000000
+0.999160 0.040965 -0.000000
+0.648675 0.707500 -0.280471
+0.999160 0.040965 -0.000000
+0.923104 0.037847 -0.382683
+0.648675 0.707500 -0.280471
+0.252364 0.691252 -0.677114
+-0.027544 0.671807 -0.740214
+-0.040965 0.999161 0.000000
+-0.040965 0.999161 0.000000
+0.495427 0.693249 -0.523410
+0.252364 0.691252 -0.677114
+-0.308105 0.668272 -0.677114
+-0.550515 0.650365 -0.523410
+-0.040965 0.999161 0.000000
+-0.040965 0.999161 0.000000
+-0.027544 0.671807 -0.740214
+-0.308105 0.668272 -0.677114
+-0.704416 0.652023 -0.280470
+-0.767137 0.641483 -0.000000
+-0.040965 0.999161 0.000000
+-0.040965 0.999161 0.000000
+-0.550515 0.650365 -0.523410
+-0.704416 0.652023 -0.280470
+-0.704416 0.652024 0.280470
+-0.550515 0.650365 0.523410
+-0.040965 0.999161 0.000000
+-0.040965 0.999161 0.000000
+-0.767137 0.641483 -0.000000
+-0.704416 0.652024 0.280470
+-0.308105 0.668272 0.677114
+-0.027544 0.671807 0.740214
+-0.040965 0.999161 0.000000
+-0.040965 0.999161 0.000000
+-0.550515 0.650365 0.523410
+-0.308105 0.668272 0.677114
+0.252364 0.691252 0.677114
+0.495427 0.693249 0.523410
+-0.040965 0.999161 0.000000
+-0.040965 0.999161 0.000000
+-0.027544 0.671807 0.740214
+0.252364 0.691252 0.677114
+0.648675 0.707500 0.280471
+0.712049 0.702130 -0.000000
+-0.040965 0.999161 0.000000
+-0.040965 0.999161 0.000000
+0.495427 0.693249 0.523410
+0.648675 0.707500 0.280471
+0.648675 0.707500 -0.280471
+0.495427 0.693249 -0.523410
+-0.040965 0.999161 0.000000
+-0.040965 0.999161 0.000000
+0.712049 0.702130 -0.000000
+0.648675 0.707500 -0.280471
+0.267477 0.651792 -0.709665
+0.382362 0.015677 -0.923880
+-0.000000 -0.000000 -1.000000
+-0.000000 -0.000000 -1.000000
+-0.025893 0.631540 -0.774911
+0.267477 0.651792 -0.709665
+0.382362 0.015677 -0.923880
+0.521592 0.653986 -0.547945
+0.706513 0.028967 -0.707107
+0.521592 0.653986 -0.547945
+0.382362 0.015677 -0.923880
+0.267477 0.651792 -0.709665
+-0.319935 0.627707 -0.709666
+-0.382362 -0.015676 -0.923880
+-0.706515 -0.028966 -0.707105
+-0.706515 -0.028966 -0.707105
+-0.573379 0.609093 -0.547943
+-0.319935 0.627707 -0.709666
+-0.382362 -0.015676 -0.923880
+-0.025893 0.631540 -0.774911
+-0.000000 -0.000000 -1.000000
+-0.025893 0.631540 -0.774911
+-0.382362 -0.015676 -0.923880
+-0.319935 0.627707 -0.709666
+-0.800154 0.599795 -0.000000
+-0.923104 -0.037847 -0.382683
+-0.999161 -0.040966 -0.000000
+-0.923104 -0.037847 -0.382683
+-0.800154 0.599795 -0.000000
+-0.735300 0.610677 -0.293952
+-0.735300 0.610677 -0.293952
+-0.706515 -0.028966 -0.707105
+-0.923104 -0.037847 -0.382683
+-0.706515 -0.028966 -0.707105
+-0.735300 0.610677 -0.293952
+-0.573379 0.609093 -0.547943
+-0.706515 -0.028967 0.707105
+-0.573380 0.609093 0.547944
+-0.735300 0.610677 0.293952
+-0.706515 -0.028967 0.707105
+-0.735300 0.610677 0.293952
+-0.923104 -0.037847 0.382683
+-0.923104 -0.037847 0.382683
+-0.800154 0.599795 -0.000000
+-0.999161 -0.040966 -0.000000
+-0.800154 0.599795 -0.000000
+-0.923104 -0.037847 0.382683
+-0.735300 0.610677 0.293952
+-0.025893 0.631540 0.774911
+-0.382362 -0.015677 0.923880
+0.000000 -0.000000 1.000000
+-0.382362 -0.015677 0.923880
+-0.025893 0.631540 0.774911
+-0.319935 0.627707 0.709666
+-0.573380 0.609093 0.547944
+-0.706515 -0.028967 0.707105
+-0.319935 0.627707 0.709666
+-0.319935 0.627707 0.709666
+-0.706515 -0.028967 0.707105
+-0.382362 -0.015677 0.923880
+0.521592 0.653986 0.547945
+0.382362 0.015676 0.923880
+0.706513 0.028966 0.707107
+0.382362 0.015676 0.923880
+0.521592 0.653986 0.547945
+0.267477 0.651792 0.709665
+-0.025893 0.631540 0.774911
+0.000000 -0.000000 1.000000
+0.267477 0.651792 0.709665
+0.267477 0.651792 0.709665
+0.000000 -0.000000 1.000000
+0.382362 0.015676 0.923880
+0.682841 0.668821 0.293952
+0.923104 0.037846 0.382683
+0.999160 0.040965 0.000000
+0.682841 0.668821 0.293952
+0.999160 0.040965 0.000000
+0.748368 0.663284 0.000000
+0.923104 0.037846 0.382683
+0.521592 0.653986 0.547945
+0.706513 0.028966 0.707107
+0.521592 0.653986 0.547945
+0.923104 0.037846 0.382683
+0.682841 0.668821 0.293952
+0.923104 0.037848 -0.382683
+0.521592 0.653986 -0.547945
+0.682840 0.668821 -0.293952
+0.521592 0.653986 -0.547945
+0.923104 0.037848 -0.382683
+0.706513 0.028967 -0.707107
+0.923104 0.037848 -0.382683
+0.682840 0.668821 -0.293952
+0.999160 0.040965 0.000000
+0.748368 0.663284 0.000000
+0.999160 0.040965 0.000000
+0.682840 0.668821 -0.293952
+0.267477 0.651792 -0.709665
+-0.025893 0.631540 -0.774911
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+0.521592 0.653986 -0.547945
+0.267477 0.651792 -0.709665
+-0.319935 0.627707 -0.709666
+-0.573379 0.609093 -0.547943
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.025893 0.631540 -0.774911
+-0.319935 0.627707 -0.709666
+-0.735300 0.610677 -0.293952
+-0.800154 0.599795 -0.000000
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.573379 0.609093 -0.547943
+-0.735300 0.610677 -0.293952
+-0.735300 0.610677 0.293952
+-0.573380 0.609093 0.547944
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.800154 0.599795 -0.000000
+-0.735300 0.610677 0.293952
+-0.319935 0.627707 0.709666
+-0.025893 0.631540 0.774911
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.573380 0.609093 0.547944
+-0.319935 0.627707 0.709666
+0.267477 0.651792 0.709665
+0.521592 0.653986 0.547945
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.025893 0.631540 0.774911
+0.267477 0.651792 0.709665
+0.682841 0.668821 0.293952
+0.748368 0.663284 0.000000
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+0.521592 0.653986 0.547945
+0.682841 0.668821 0.293952
+0.682840 0.668821 -0.293952
+0.521592 0.653986 -0.547945
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+0.748368 0.663284 0.000000
+0.682840 0.668821 -0.293952
+0.267477 0.651792 -0.709665
+0.382362 0.015677 -0.923880
+-0.000001 -0.000000 -1.000000
+-0.000001 -0.000000 -1.000000
+-0.025893 0.631540 -0.774911
+0.267477 0.651792 -0.709665
+0.382362 0.015677 -0.923880
+0.521592 0.653986 -0.547945
+0.706513 0.028967 -0.707107
+0.521592 0.653986 -0.547945
+0.382362 0.015677 -0.923880
+0.267477 0.651792 -0.709665
+-0.319936 0.627707 -0.709666
+-0.382362 -0.015677 -0.923879
+-0.706513 -0.028967 -0.707107
+-0.706513 -0.028967 -0.707107
+-0.573378 0.609092 -0.547945
+-0.319936 0.627707 -0.709666
+-0.382362 -0.015677 -0.923879
+-0.319936 0.627707 -0.709666
+-0.000001 -0.000000 -1.000000
+-0.000001 -0.000000 -1.000000
+-0.319936 0.627707 -0.709666
+-0.025893 0.631540 -0.774911
+-0.800154 0.599795 0.000000
+-0.923103 -0.037848 -0.382686
+-0.999161 -0.040965 0.000000
+-0.923103 -0.037848 -0.382686
+-0.800154 0.599795 0.000000
+-0.735299 0.610677 -0.293954
+-0.735299 0.610677 -0.293954
+-0.706513 -0.028967 -0.707107
+-0.923103 -0.037848 -0.382686
+-0.706513 -0.028967 -0.707107
+-0.735299 0.610677 -0.293954
+-0.573378 0.609092 -0.547945
+-0.706513 -0.028967 0.707107
+-0.573378 0.609093 0.547945
+-0.735299 0.610678 0.293954
+-0.706513 -0.028967 0.707107
+-0.735299 0.610678 0.293954
+-0.923103 -0.037847 0.382686
+-0.923103 -0.037847 0.382686
+-0.800154 0.599795 0.000000
+-0.999161 -0.040965 0.000000
+-0.800154 0.599795 0.000000
+-0.923103 -0.037847 0.382686
+-0.735299 0.610678 0.293954
+-0.319936 0.627707 0.709666
+-0.000000 -0.000000 1.000000
+-0.025893 0.631540 0.774911
+-0.000000 -0.000000 1.000000
+-0.319936 0.627707 0.709666
+-0.382362 -0.015677 0.923879
+-0.573378 0.609093 0.547945
+-0.706513 -0.028967 0.707107
+-0.319936 0.627707 0.709666
+-0.319936 0.627707 0.709666
+-0.706513 -0.028967 0.707107
+-0.382362 -0.015677 0.923879
+0.521591 0.653985 0.547946
+0.382362 0.015677 0.923880
+0.706513 0.028967 0.707107
+0.382362 0.015677 0.923880
+0.521591 0.653985 0.547946
+0.267477 0.651792 0.709664
+-0.025893 0.631540 0.774911
+-0.000000 -0.000000 1.000000
+0.267477 0.651792 0.709664
+0.267477 0.651792 0.709664
+-0.000000 -0.000000 1.000000
+0.382362 0.015677 0.923880
+0.682840 0.668820 0.293955
+0.923104 0.037846 0.382684
+0.999161 0.040963 0.000000
+0.682840 0.668820 0.293955
+0.999161 0.040963 0.000000
+0.748368 0.663283 -0.000003
+0.923104 0.037846 0.382684
+0.521591 0.653985 0.547946
+0.706513 0.028967 0.707107
+0.521591 0.653985 0.547946
+0.923104 0.037846 0.382684
+0.682840 0.668820 0.293955
+0.923104 0.037846 -0.382684
+0.521592 0.653986 -0.547945
+0.682840 0.668820 -0.293956
+0.521592 0.653986 -0.547945
+0.923104 0.037846 -0.382684
+0.706513 0.028967 -0.707107
+0.923104 0.037846 -0.382684
+0.682840 0.668820 -0.293956
+0.999161 0.040963 0.000000
+0.748368 0.663283 -0.000003
+0.999161 0.040963 0.000000
+0.682840 0.668820 -0.293956
+0.267477 0.651792 -0.709665
+-0.025893 0.631540 -0.774911
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+0.521592 0.653986 -0.547945
+0.267477 0.651792 -0.709665
+-0.319936 0.627707 -0.709666
+-0.573378 0.609092 -0.547945
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.025893 0.631540 -0.774911
+-0.319936 0.627707 -0.709666
+-0.735299 0.610677 -0.293954
+-0.800154 0.599795 0.000000
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.573378 0.609092 -0.547945
+-0.735299 0.610677 -0.293954
+-0.735299 0.610678 0.293954
+-0.573378 0.609093 0.547945
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.800154 0.599795 0.000000
+-0.735299 0.610678 0.293954
+-0.319936 0.627707 0.709666
+-0.025893 0.631540 0.774911
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.573378 0.609093 0.547945
+-0.319936 0.627707 0.709666
+0.267477 0.651792 0.709664
+0.521591 0.653985 0.547946
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.025893 0.631540 0.774911
+0.267477 0.651792 0.709664
+0.682840 0.668820 0.293955
+0.748368 0.663283 -0.000003
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+0.521591 0.653985 0.547946
+0.682840 0.668820 0.293955
+0.682840 0.668820 -0.293956
+0.521592 0.653986 -0.547945
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+0.748368 0.663283 -0.000003
+0.682840 0.668820 -0.293956
+0.382362 0.015676 -0.923880
+-0.025893 0.631540 -0.774911
+0.267477 0.651791 -0.709665
+-0.025893 0.631540 -0.774911
+0.382362 0.015676 -0.923880
+-0.000000 -0.000000 -1.000000
+0.382362 0.015676 -0.923880
+0.521593 0.653986 -0.547944
+0.706513 0.028967 -0.707107
+0.521593 0.653986 -0.547944
+0.382362 0.015676 -0.923880
+0.267477 0.651791 -0.709665
+-0.319936 0.627708 -0.709665
+-0.382362 -0.015677 -0.923880
+-0.706513 -0.028967 -0.707107
+-0.706513 -0.028967 -0.707107
+-0.573378 0.609093 -0.547945
+-0.319936 0.627708 -0.709665
+-0.382362 -0.015677 -0.923880
+-0.319936 0.627708 -0.709665
+-0.000000 -0.000000 -1.000000
+-0.000000 -0.000000 -1.000000
+-0.319936 0.627708 -0.709665
+-0.025893 0.631540 -0.774911
+-0.800154 0.599795 -0.000000
+-0.923104 -0.037847 -0.382684
+-0.999161 -0.040964 -0.000000
+-0.923104 -0.037847 -0.382684
+-0.800154 0.599795 -0.000000
+-0.735299 0.610677 -0.293954
+-0.735299 0.610677 -0.293954
+-0.706513 -0.028967 -0.707107
+-0.923104 -0.037847 -0.382684
+-0.706513 -0.028967 -0.707107
+-0.735299 0.610677 -0.293954
+-0.573378 0.609093 -0.547945
+-0.706513 -0.028967 0.707107
+-0.573378 0.609093 0.547945
+-0.735299 0.610677 0.293954
+-0.706513 -0.028967 0.707107
+-0.735299 0.610677 0.293954
+-0.923104 -0.037847 0.382684
+-0.923104 -0.037847 0.382684
+-0.800154 0.599795 -0.000000
+-0.999161 -0.040964 -0.000000
+-0.800154 0.599795 -0.000000
+-0.923104 -0.037847 0.382684
+-0.735299 0.610677 0.293954
+-0.319936 0.627708 0.709665
+-0.000000 -0.000000 1.000000
+-0.025893 0.631540 0.774911
+-0.000000 -0.000000 1.000000
+-0.319936 0.627708 0.709665
+-0.382362 -0.015676 0.923879
+-0.573378 0.609093 0.547945
+-0.706513 -0.028967 0.707107
+-0.319936 0.627708 0.709665
+-0.319936 0.627708 0.709665
+-0.706513 -0.028967 0.707107
+-0.382362 -0.015676 0.923879
+0.521592 0.653986 0.547946
+0.382362 0.015676 0.923879
+0.706513 0.028967 0.707107
+0.382362 0.015676 0.923879
+0.521592 0.653986 0.547946
+0.267477 0.651791 0.709665
+-0.025893 0.631540 0.774911
+0.382362 0.015676 0.923879
+0.267477 0.651791 0.709665
+0.382362 0.015676 0.923879
+-0.025893 0.631540 0.774911
+-0.000000 -0.000000 1.000000
+0.682840 0.668821 0.293952
+0.923104 0.037847 0.382684
+0.999161 0.040964 -0.000001
+0.682840 0.668821 0.293952
+0.999161 0.040964 -0.000001
+0.748368 0.663283 -0.000002
+0.923104 0.037847 0.382684
+0.521592 0.653986 0.547946
+0.706513 0.028967 0.707107
+0.521592 0.653986 0.547946
+0.923104 0.037847 0.382684
+0.682840 0.668821 0.293952
+0.923104 0.037847 -0.382684
+0.521593 0.653986 -0.547944
+0.682840 0.668821 -0.293953
+0.521593 0.653986 -0.547944
+0.923104 0.037847 -0.382684
+0.706513 0.028967 -0.707107
+0.923104 0.037847 -0.382684
+0.682840 0.668821 -0.293953
+0.999161 0.040964 -0.000001
+0.748368 0.663283 -0.000002
+0.999161 0.040964 -0.000001
+0.682840 0.668821 -0.293953
+0.267477 0.651791 -0.709665
+-0.025893 0.631540 -0.774911
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+0.521593 0.653986 -0.547944
+0.267477 0.651791 -0.709665
+-0.319936 0.627708 -0.709665
+-0.573378 0.609093 -0.547945
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.025893 0.631540 -0.774911
+-0.319936 0.627708 -0.709665
+-0.735299 0.610677 -0.293954
+-0.800154 0.599795 -0.000000
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.573378 0.609093 -0.547945
+-0.735299 0.610677 -0.293954
+-0.735299 0.610677 0.293954
+-0.573378 0.609093 0.547945
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.800154 0.599795 -0.000000
+-0.735299 0.610677 0.293954
+-0.319936 0.627708 0.709665
+-0.025893 0.631540 0.774911
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.573378 0.609093 0.547945
+-0.319936 0.627708 0.709665
+0.267477 0.651791 0.709665
+0.521592 0.653986 0.547946
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+-0.025893 0.631540 0.774911
+0.267477 0.651791 0.709665
+0.682840 0.668821 0.293952
+0.748368 0.663283 -0.000002
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+0.521592 0.653986 0.547946
+0.682840 0.668821 0.293952
+0.682840 0.668821 -0.293953
+0.521593 0.653986 -0.547944
+-0.040965 0.999161 -0.000000
+-0.040965 0.999161 -0.000000
+0.748368 0.663283 -0.000002
+0.682840 0.668821 -0.293953
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.993687 -0.112187 -0.000011
+0.996406 -0.084700 -0.000008
+0.996406 -0.084700 -0.000008
+0.996406 -0.084700 -0.000008
+0.993687 -0.112187 -0.000011
+0.993687 -0.112187 -0.000011
+0.996406 -0.084700 -0.000008
+0.996406 -0.084700 -0.000008
+1.000000 0.000619 -0.000010
+1.000000 0.000619 -0.000010
+0.996406 -0.084700 -0.000008
+1.000000 0.000619 -0.000010
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+-0.998658 0.051788 0.000000
+-0.997634 0.068744 0.000000
+-0.997634 0.068744 0.000000
+-0.997634 0.068744 0.000000
+-0.998658 0.051788 0.000000
+-0.998658 0.051788 0.000000
+-0.998658 0.051788 0.000000
+-0.998658 0.051788 0.000000
+-1.000000 -0.000396 0.000000
+-1.000000 -0.000396 0.000000
+-1.000000 -0.000396 0.000000
+-0.998658 0.051788 0.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+-0.000000 0.000000 1.000000
+1.000000 0.000619 -0.000010
+0.996693 0.081259 -0.000019
+0.996693 0.081259 -0.000019
+0.996693 0.081259 -0.000019
+1.000000 0.000619 -0.000010
+1.000000 0.000619 -0.000010
+0.996693 0.081259 -0.000019
+0.994568 0.104092 -0.000024
+0.994568 0.104092 -0.000024
+0.994568 0.104092 -0.000024
+0.996693 0.081259 -0.000019
+0.996693 0.081259 -0.000019
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+-0.998584 -0.053190 0.000000
+-0.998584 -0.053190 0.000000
+-1.000000 -0.000396 0.000000
+-1.000000 -0.000396 0.000000
+-0.998584 -0.053190 0.000000
+-1.000000 -0.000396 0.000000
+-0.998584 -0.053190 0.000000
+-0.998584 -0.053190 0.000000
+-0.997494 -0.070756 0.000000
+-0.997494 -0.070756 0.000000
+-0.997494 -0.070756 0.000000
+-0.998584 -0.053190 0.000000
+</float_array>
+          <technique_common>
+            <accessor source="#Album_Cute-Normal0-array" count="4362" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="Album_Cute-UV0">
+          <float_array id="Album_Cute-UV0-array" count="2294">
+0.838327 0.609806
+0.838840 0.610393
+0.856012 0.610099
+0.855249 0.609480
+0.838840 0.609480
+0.838327 0.609480
+0.889394 0.605720
+0.888712 0.605720
+0.889394 0.605720
+0.889011 0.605720
+0.855535 0.665926
+0.854772 0.666545
+0.859689 0.577408
+0.854562 0.579732
+0.855380 0.578542
+0.808575 0.603340
+0.809387 0.604530
+0.808575 0.605720
+0.808053 0.605720
+0.808053 0.604530
+0.808053 0.603340
+0.854562 0.636467
+0.855380 0.635277
+0.855380 0.634192
+0.860111 0.605553
+0.892227 0.605720
+0.893122 0.605609
+0.865630 0.577353
+0.835977 0.579732
+0.835178 0.578542
+0.835977 0.577353
+0.836420 0.577353
+0.836420 0.578542
+0.836420 0.579732
+0.836493 0.641728
+0.854903 0.641833
+0.836493 0.643273
+0.835943 0.642460
+0.835943 0.641938
+0.836493 0.639559
+0.836493 0.640749
+0.835943 0.640749
+0.835943 0.639559
+0.836970 0.605496
+0.855380 0.606563
+0.836970 0.606962
+0.836420 0.606163
+0.836420 0.605720
+0.836970 0.603340
+0.854562 0.603340
+0.855380 0.604530
+0.836970 0.604530
+0.836420 0.604530
+0.836420 0.603340
+0.893155 0.587331
+0.893155 0.591799
+0.893155 0.594434
+0.893068 0.596244
+0.893068 0.604836
+0.893155 0.598807
+0.893155 0.602215
+0.893155 0.601962
+0.893155 0.603841
+0.869167 0.605720
+0.868873 0.605720
+0.868548 0.605720
+0.868548 0.605720
+0.868873 0.605720
+0.869167 0.605720
+0.868548 0.605720
+0.868548 0.605720
+0.864861 0.602834
+0.866030 0.605564
+0.864861 0.605150
+0.864787 0.599421
+0.864787 0.601314
+0.866030 0.594931
+0.864861 0.594581
+0.866030 0.603436
+0.889011 0.605720
+0.888712 0.605720
+0.889394 0.605720
+0.889394 0.605720
+0.864787 0.593776
+0.864787 0.592492
+0.893068 0.580148
+0.893155 0.583183
+0.893068 0.577897
+0.893155 0.579531
+0.893155 0.581640
+0.864861 0.582608
+0.866030 0.581779
+0.864787 0.587720
+0.869167 0.577353
+0.868873 0.577353
+0.868548 0.577353
+0.868548 0.577353
+0.893155 0.579732
+0.893155 0.580383
+0.893155 0.578868
+0.893068 0.577731
+0.893068 0.577660
+0.891820 0.577353
+0.893138 0.577408
+0.864824 0.577659
+0.866032 0.577353
+0.864861 0.577731
+0.866030 0.577353
+0.866032 0.577353
+0.864861 0.577660
+0.864787 0.578583
+0.864787 0.579732
+0.864787 0.579732
+0.864787 0.578542
+0.856012 0.629645
+0.855249 0.630327
+0.880107 0.605720
+0.880104 0.605720
+0.838363 0.646679
+0.838363 0.645699
+0.837850 0.645699
+0.837850 0.646082
+0.815598 0.603340
+0.815598 0.604530
+0.825793 0.603340
+0.825773 0.604530
+0.825793 0.605720
+0.815598 0.605720
+0.880517 0.605720
+0.892227 0.577353
+0.809387 0.578542
+0.808575 0.579732
+0.808053 0.579732
+0.808053 0.578542
+0.808053 0.577353
+0.808575 0.577353
+0.836493 0.649483
+0.854903 0.654576
+0.836493 0.659658
+0.835943 0.659678
+0.835943 0.649483
+0.836970 0.632753
+0.855380 0.633159
+0.836970 0.634298
+0.836420 0.634087
+0.836420 0.633565
+0.880107 0.605720
+0.880104 0.605720
+0.889011 0.605720
+0.888712 0.605720
+0.889394 0.605720
+0.889394 0.605720
+0.891820 0.596760
+0.891820 0.605607
+0.891820 0.579256
+0.880524 0.577353
+0.891822 0.577353
+0.891822 0.577353
+0.856012 0.621040
+0.838363 0.665632
+0.838363 0.658721
+0.837850 0.658735
+0.837850 0.666220
+0.880517 0.577353
+0.825793 0.579732
+0.825773 0.578542
+0.825793 0.577353
+0.855380 0.621450
+0.836970 0.616367
+0.836420 0.616347
+0.880107 0.605720
+0.880104 0.605720
+0.880107 0.605720
+0.880104 0.605720
+0.880522 0.595959
+0.880538 0.577353
+0.880541 0.577353
+0.869167 0.605720
+0.868873 0.605720
+0.868548 0.605720
+0.868548 0.605720
+0.835178 0.604530
+0.835977 0.603340
+0.836420 0.603340
+0.836420 0.604530
+0.835977 0.605720
+0.865630 0.605720
+0.836493 0.669063
+0.854085 0.670306
+0.836493 0.670306
+0.835943 0.670306
+0.835943 0.669863
+0.869167 0.605720
+0.868548 0.605720
+0.868548 0.605720
+0.868873 0.605720
+0.837850 0.666545
+0.838363 0.666545
+0.836970 0.579732
+0.836970 0.578542
+0.836420 0.579732
+0.836420 0.578542
+0.836970 0.577353
+0.836970 0.636467
+0.836970 0.635277
+0.836420 0.636467
+0.836420 0.635277
+0.854903 0.642866
+0.854903 0.640749
+0.854085 0.639559
+0.838840 0.629346
+0.838327 0.629943
+0.838327 0.630327
+0.838840 0.630327
+0.838840 0.617305
+0.838840 0.624782
+0.838327 0.617290
+0.838327 0.624782
+0.854903 0.669463
+0.893155 0.604530
+0.893155 0.603340
+0.893155 0.604540
+0.893155 0.603359
+0.893111 0.605571
+0.864787 0.603359
+0.864787 0.604540
+0.864787 0.603340
+0.864787 0.604530
+0.864824 0.605571
+0.893155 0.604449
+0.893068 0.605402
+0.893111 0.605531
+0.893155 0.604043
+0.893155 0.602367
+0.893155 0.603340
+0.893155 0.604530
+0.893155 0.603340
+0.864787 0.604449
+0.864861 0.605402
+0.864787 0.604530
+0.864787 0.603340
+0.864787 0.603340
+0.864787 0.603925
+0.864787 0.602363
+0.889394 0.605720
+0.888712 0.605720
+0.889011 0.605720
+0.889394 0.605720
+0.866030 0.605720
+0.889011 0.605720
+0.888712 0.605720
+0.889394 0.605720
+0.889394 0.605720
+0.891820 0.605720
+0.891820 0.605712
+0.880522 0.605720
+0.880522 0.605720
+0.880522 0.605647
+0.866030 0.605720
+0.891820 0.605720
+0.880522 0.604656
+0.880523 0.580361
+0.838363 0.651243
+0.837850 0.651243
+0.815598 0.579732
+0.815598 0.578542
+0.815598 0.577353
+0.836970 0.626542
+0.836420 0.626542
+0.893155 0.578583
+0.893155 0.578542
+0.893155 0.579732
+0.889011 0.577353
+0.888712 0.577353
+0.889394 0.577353
+0.889394 0.577353
+0.880104 0.577353
+0.880107 0.577353
+0.855535 0.646381
+0.854772 0.645699
+0.855535 0.654986
+0.880107 0.605720
+0.880104 0.605720
+0.869167 0.605720
+0.868873 0.605720
+0.868548 0.605720
+0.868548 0.605720
+0.864787 0.584758
+0.864787 0.578867
+0.864787 0.579191
+0.864787 0.581030
+0.864787 0.580381
+0.864787 0.581686
+0.864787 0.579519
+0.868548 0.577353
+0.868548 0.577353
+0.869461 0.577353
+0.868548 0.577353
+0.868873 0.577353
+0.868873 0.577353
+0.888712 0.598628
+0.889394 0.598628
+0.889394 0.577353
+0.889011 0.577353
+0.888995 0.577353
+0.888712 0.577353
+0.889394 0.577353
+0.889394 0.577353
+0.889011 0.577353
+0.888414 0.577353
+0.889011 0.577353
+0.889394 0.577353
+0.889394 0.577353
+0.889394 0.577353
+0.868873 0.577353
+0.868873 0.577353
+0.868548 0.577353
+0.868548 0.577353
+0.881333 0.577353
+0.879265 0.596264
+0.880104 0.577353
+0.880111 0.577353
+0.880104 0.577353
+0.868900 0.577353
+0.868548 0.577353
+0.868548 0.598628
+0.869167 0.598628
+0.880718 0.577574
+0.868927 0.577353
+0.876358 0.577353
+0.880718 0.577353
+0.183517 0.346879
+0.183517 0.345959
+0.184897 0.345959
+0.184897 0.346879
+0.185511 0.345959
+0.185511 0.346879
+0.181830 0.346879
+0.181830 0.345959
+0.182443 0.345959
+0.182443 0.346879
+0.183517 0.345345
+0.184897 0.345345
+0.183517 0.344732
+0.184897 0.344732
+0.185511 0.344732
+0.185511 0.345345
+0.181830 0.345345
+0.182443 0.345345
+0.181830 0.344732
+0.182443 0.344732
+0.183939 0.343889
+0.185511 0.343199
+0.185511 0.344119
+0.181830 0.344119
+0.181830 0.343199
+0.183364 0.342462
+0.185511 0.341972
+0.181830 0.341972
+0.183517 0.341052
+0.184897 0.341052
+0.185511 0.341052
+0.181830 0.341052
+0.182443 0.341052
+0.183517 0.340438
+0.184897 0.340438
+0.183517 0.339825
+0.184897 0.339825
+0.185511 0.339825
+0.185511 0.340438
+0.181830 0.340438
+0.182443 0.340438
+0.181830 0.339825
+0.182443 0.339825
+0.183517 0.338905
+0.184897 0.338905
+0.185511 0.338905
+0.181830 0.338905
+0.182443 0.338905
+0.178150 0.346879
+0.178150 0.345959
+0.179070 0.345959
+0.179070 0.346879
+0.180297 0.345959
+0.180297 0.346879
+0.181217 0.345959
+0.181217 0.346879
+0.178150 0.345345
+0.179070 0.345345
+0.178150 0.344732
+0.179070 0.344732
+0.180297 0.345345
+0.180297 0.344732
+0.181217 0.345345
+0.181217 0.344732
+0.188271 0.345959
+0.189191 0.345959
+0.189191 0.346879
+0.188271 0.346879
+0.187044 0.345959
+0.187044 0.346879
+0.186124 0.345959
+0.186124 0.346879
+0.188271 0.344732
+0.189191 0.344732
+0.189191 0.345345
+0.188271 0.345345
+0.187044 0.344732
+0.187044 0.345345
+0.186124 0.345345
+0.186124 0.344732
+0.478477 0.381137
+0.506672 0.362867
+0.573315 0.454693
+0.453463 0.403726
+0.514881 0.572734
+0.481591 0.572517
+0.543538 0.563971
+0.572051 0.543251
+0.594077 0.570863
+0.619225 0.586964
+0.651117 0.595635
+0.684055 0.590985
+0.712612 0.570336
+0.733008 0.541362
+0.738620 0.507325
+0.734184 0.472420
+0.720647 0.440162
+0.702223 0.411660
+0.679748 0.386546
+0.655678 0.363093
+0.633275 0.341709
+0.615773 0.322490
+0.607678 0.306920
+0.603752 0.293905
+0.597099 0.305094
+0.585551 0.317887
+0.563585 0.331816
+0.536163 0.346576
+0.478477 0.381137
+0.506672 0.362867
+0.453463 0.403726
+0.432242 0.431245
+0.419141 0.463758
+0.415961 0.498127
+0.428344 0.531571
+0.450763 0.559171
+0.514881 0.572734
+0.481591 0.572517
+0.543538 0.563971
+0.572051 0.543251
+0.594077 0.570863
+0.619225 0.586964
+0.651117 0.595635
+0.684055 0.590985
+0.712612 0.570336
+0.733008 0.541362
+0.738620 0.507325
+0.734184 0.472420
+0.720647 0.440162
+0.702223 0.411660
+0.679748 0.386546
+0.655678 0.363093
+0.633275 0.341709
+0.615773 0.322490
+0.607678 0.306920
+0.603752 0.293905
+0.597099 0.305094
+0.585551 0.317887
+0.563585 0.331816
+0.536163 0.346576
+0.432242 0.431245
+0.419141 0.463758
+0.415961 0.498127
+0.428344 0.531571
+0.450763 0.559171
+0.839870 0.639265
+0.839323 0.638377
+0.844158 0.638013
+0.844293 0.638940
+0.925635 0.562566
+0.925453 0.561975
+0.929463 0.561975
+0.929508 0.562566
+0.925453 0.637251
+0.925635 0.636554
+0.929508 0.636554
+0.929463 0.637251
+0.827693 0.638377
+0.827146 0.639265
+0.822723 0.638940
+0.822857 0.638013
+0.836537 0.707249
+0.835803 0.707067
+0.835803 0.703861
+0.836537 0.704133
+0.922908 0.637251
+0.923186 0.636554
+0.836537 0.712085
+0.835803 0.712040
+0.838626 0.705309
+0.838035 0.705492
+0.838035 0.702376
+0.838626 0.702098
+0.923186 0.562566
+0.922908 0.561975
+0.838626 0.710283
+0.838035 0.710328
+0.086447 0.468433
+0.114084 0.499200
+0.114084 0.753757
+0.086447 0.783991
+0.858938 0.562566
+0.858943 0.636516
+0.857162 0.636554
+0.857162 0.562566
+0.247542 0.958488
+0.270218 0.783991
+0.266929 0.958488
+0.292978 0.263741
+0.270216 0.468433
+0.929105 0.712095
+0.927807 0.711643
+0.929613 0.676071
+0.930001 0.676079
+0.083828 0.263737
+0.066564 0.263740
+0.862025 0.711237
+0.862025 0.674929
+0.863179 0.674932
+0.863179 0.711086
+0.864334 0.711237
+0.864334 0.674929
+0.861659 0.635952
+0.860361 0.635501
+0.862167 0.599192
+0.862555 0.599184
+0.926636 0.638747
+0.926631 0.712697
+0.924855 0.712697
+0.924855 0.638747
+0.866803 0.712095
+0.865505 0.711643
+0.867311 0.676071
+0.867699 0.676079
+0.858544 0.639357
+0.859699 0.639507
+0.859699 0.674932
+0.858544 0.674929
+0.114597 0.470609
+0.115008 0.477621
+0.115522 0.438304
+0.115008 0.463597
+0.162474 0.470609
+0.162474 0.478258
+0.162474 0.499867
+0.163912 0.437138
+0.162474 0.462959
+0.242068 0.470609
+0.241658 0.477621
+0.194191 0.478258
+0.194191 0.470609
+0.242581 0.499200
+0.194191 0.499867
+0.244020 0.438304
+0.241658 0.463597
+0.194191 0.462959
+0.195629 0.437138
+0.114597 0.781649
+0.115008 0.788719
+0.105538 0.802733
+0.115008 0.774579
+0.162474 0.781649
+0.162474 0.789362
+0.149534 0.803794
+0.162474 0.752590
+0.162474 0.773937
+0.242068 0.781649
+0.241658 0.788719
+0.194191 0.789362
+0.194191 0.781649
+0.222366 0.802733
+0.178370 0.803794
+0.242581 0.753757
+0.241658 0.774579
+0.194191 0.773937
+0.194191 0.752590
+0.115214 0.263735
+0.271654 0.263737
+0.244327 0.263735
+0.857133 0.637251
+0.858800 0.637251
+0.856936 0.640506
+0.857300 0.640369
+0.857278 0.642144
+0.856909 0.642173
+0.836537 0.724862
+0.835803 0.725221
+0.835803 0.723043
+0.836537 0.723186
+0.838626 0.723469
+0.838035 0.723105
+0.838035 0.721429
+0.838626 0.721292
+0.939418 0.636554
+0.939783 0.637251
+0.938630 0.637251
+0.938353 0.636554
+0.854427 0.639866
+0.855260 0.639088
+0.855841 0.640919
+0.853594 0.640643
+0.854747 0.641332
+0.855800 0.642260
+0.854692 0.642346
+0.855782 0.562566
+0.855787 0.561975
+0.857133 0.561975
+0.855693 0.643520
+0.854706 0.643505
+0.853719 0.643491
+0.811216 0.642260
+0.810107 0.642173
+0.810080 0.640506
+0.811175 0.640919
+0.812269 0.641332
+0.812589 0.639866
+0.813422 0.640643
+0.811756 0.639088
+0.857301 0.645670
+0.856157 0.645655
+0.855013 0.645640
+0.857373 0.699722
+0.856218 0.699564
+0.855064 0.699722
+0.832922 0.699722
+0.831768 0.699564
+0.831706 0.645655
+0.832850 0.645670
+0.830613 0.699722
+0.830563 0.645640
+0.921324 0.638747
+0.866803 0.639311
+0.867278 0.638163
+0.921329 0.638013
+0.835248 0.701336
+0.834393 0.700947
+0.834094 0.699722
+0.835248 0.699564
+0.836403 0.699722
+0.836103 0.700947
+0.860361 0.563620
+0.860908 0.562597
+0.862133 0.562126
+0.861659 0.563169
+0.983667 0.712697
+0.983662 0.713288
+0.929580 0.713138
+0.834557 0.642173
+0.834188 0.642144
+0.834166 0.640369
+0.834531 0.640506
+0.936086 0.561975
+0.935903 0.562566
+0.932030 0.562566
+0.932075 0.561975
+0.938630 0.561975
+0.939783 0.561975
+0.939418 0.562566
+0.938353 0.562566
+0.919509 0.561975
+0.919480 0.562566
+0.918369 0.562566
+0.918364 0.561975
+0.867278 0.713138
+0.866053 0.712667
+0.859699 0.638013
+0.858843 0.638333
+0.916221 0.562566
+0.916215 0.561975
+0.076671 0.958488
+0.060975 0.958488
+0.105258 0.958488
+0.222646 0.958488
+0.862025 0.639357
+0.863179 0.639507
+0.864334 0.639357
+0.835803 0.702098
+0.836537 0.702457
+0.921756 0.637251
+0.922120 0.636554
+0.919509 0.637251
+0.919480 0.636554
+0.920386 0.636554
+0.920523 0.637251
+0.836537 0.720070
+0.835803 0.720253
+0.835803 0.715279
+0.836537 0.715234
+0.936086 0.637251
+0.935903 0.636554
+0.923475 0.638747
+0.923480 0.638013
+0.924826 0.638013
+0.865505 0.639763
+0.863179 0.712686
+0.862324 0.712338
+0.864034 0.712338
+0.858544 0.711237
+0.859699 0.711086
+0.862133 0.637100
+0.860908 0.636602
+0.835666 0.642260
+0.835625 0.640919
+0.836775 0.642346
+0.836720 0.641332
+0.837039 0.639866
+0.836207 0.639088
+0.840417 0.640152
+0.837872 0.640643
+0.835929 0.638829
+0.921756 0.561975
+0.922120 0.562566
+0.926493 0.638013
+0.830241 0.642346
+0.830296 0.641332
+0.831391 0.640919
+0.831350 0.642260
+0.832458 0.642173
+0.832485 0.640506
+0.830809 0.639088
+0.829976 0.639866
+0.829144 0.640643
+0.837084 0.641469
+0.837144 0.642375
+0.826599 0.640152
+0.932075 0.637251
+0.932030 0.636554
+0.838626 0.718495
+0.838035 0.718313
+0.838035 0.713477
+0.838626 0.713522
+0.851597 0.639265
+0.852144 0.638377
+0.851050 0.640152
+0.814872 0.638377
+0.815419 0.639265
+0.815966 0.640152
+0.923480 0.713288
+0.923475 0.712697
+0.924826 0.713288
+0.831243 0.643520
+0.830256 0.643505
+0.829269 0.643491
+0.918364 0.637251
+0.918369 0.636554
+0.856218 0.701336
+0.855363 0.700947
+0.857073 0.700947
+0.831768 0.701336
+0.830912 0.700947
+0.832623 0.700947
+0.866053 0.638662
+0.863179 0.638013
+0.864034 0.638333
+0.862324 0.638333
+0.921324 0.712697
+0.921329 0.713288
+0.836760 0.643505
+0.837747 0.643491
+0.836453 0.645640
+0.835310 0.645655
+0.834166 0.645670
+0.835773 0.643520
+0.859699 0.712686
+0.858843 0.712338
+0.916215 0.637251
+0.916221 0.636554
+0.928355 0.712667
+0.844427 0.639868
+0.822589 0.639868
+0.847308 0.638013
+0.847174 0.638940
+0.847039 0.639868
+0.855248 0.730359
+0.855212 0.724067
+0.872896 0.723707
+0.874657 0.730356
+0.819977 0.639868
+0.819842 0.638940
+0.920386 0.562566
+0.163912 0.263735
+0.195629 0.263735
+0.149534 0.958488
+0.178370 0.958488
+0.268029 0.670718
+0.344946 0.669869
+0.343682 0.619097
+0.819708 0.638013
+0.430691 0.431570
+0.418152 0.463504
+0.986955 0.638013
+0.987970 0.638013
+0.987832 0.638709
+0.986926 0.638709
+0.985815 0.638709
+0.985811 0.638013
+0.812324 0.642346
+0.812309 0.643505
+0.811322 0.643520
+0.813296 0.643491
+0.927807 0.639763
+0.929105 0.639311
+0.928355 0.638662
+0.929580 0.638163
+0.811653 0.700947
+0.810798 0.701336
+0.810798 0.699564
+0.811952 0.699722
+0.985811 0.713288
+0.985815 0.712697
+0.986926 0.712697
+0.986955 0.713288
+0.854382 0.641469
+0.854322 0.642375
+0.344946 0.567265
+0.268029 0.566416
+0.987832 0.712697
+0.983667 0.638709
+0.983662 0.638013
+0.810859 0.645655
+0.812003 0.645640
+0.860554 0.638333
+0.860853 0.639357
+0.593453 0.571670
+0.619567 0.588389
+0.651049 0.596666
+0.684453 0.591948
+0.685175 0.593040
+0.713331 0.571067
+0.714756 0.571762
+0.734241 0.541223
+0.481860 0.573586
+0.515050 0.573753
+0.543932 0.564919
+0.571796 0.545350
+0.799110 0.563169
+0.797812 0.563620
+0.798360 0.562597
+0.799585 0.562126
+0.650777 0.597898
+0.619525 0.590257
+0.875998 0.982595
+0.450136 0.559998
+0.414938 0.498261
+0.427462 0.532087
+0.425585 0.533184
+0.448801 0.561757
+0.481724 0.575753
+0.515414 0.575941
+0.544778 0.566959
+0.570986 0.548312
+0.592009 0.572619
+0.855787 0.637251
+0.855782 0.636554
+0.452164 0.400241
+0.476568 0.378532
+0.477871 0.380311
+0.453044 0.402502
+0.506157 0.361981
+0.505049 0.360074
+0.596278 0.304486
+0.604185 0.291661
+0.583517 0.315365
+0.594518 0.303181
+0.584904 0.317085
+0.563079 0.330925
+0.561990 0.329006
+0.535688 0.345668
+0.534665 0.343712
+0.428011 0.432132
+0.416046 0.462964
+0.412766 0.498544
+0.853636 0.561975
+0.853631 0.562566
+0.853631 0.636554
+0.328244 0.988645
+0.656363 0.362341
+0.680859 0.386151
+0.633990 0.340985
+0.616599 0.321889
+0.610727 0.306393
+0.618447 0.321174
+0.608619 0.306542
+0.604445 0.288083
+0.809715 0.645670
+0.809942 0.700947
+0.809643 0.699722
+0.853636 0.637251
+0.328244 0.245312
+0.860554 0.712338
+0.860853 0.711237
+0.735163 0.472145
+0.739635 0.507345
+0.721538 0.439677
+0.703017 0.411025
+0.860853 0.674929
+0.867423 0.620807
+0.736541 0.540242
+0.741740 0.506855
+0.737221 0.471218
+0.723435 0.438491
+0.704730 0.409685
+0.799964 0.599179
+0.799618 0.599192
+0.635590 0.339889
+0.657881 0.361048
+0.799110 0.635952
+0.797812 0.635501
+0.799585 0.637100
+0.798360 0.636602
+0.682982 0.385487
+0.875998 0.251363
+0.718529 0.850373
+0.718529 0.853203
+0.718411 0.853203
+0.718411 0.850373
+0.718294 0.850373
+0.718294 0.853203
+0.718764 0.850373
+0.718764 0.853203
+0.718647 0.853203
+0.718647 0.850373
+0.718999 0.850373
+0.718999 0.853203
+0.718882 0.853203
+0.718882 0.850373
+0.719235 0.850373
+0.719235 0.853203
+0.719117 0.853203
+0.719117 0.850373
+0.719470 0.850373
+0.719470 0.853203
+0.719352 0.853203
+0.719352 0.850373
+0.719705 0.850373
+0.719705 0.853203
+0.719587 0.853203
+0.719587 0.850373
+0.719940 0.850373
+0.719940 0.853203
+0.719823 0.853203
+0.719823 0.850373
+0.720175 0.850373
+0.720175 0.853203
+0.720058 0.853203
+0.720058 0.850373
+0.719650 0.855375
+0.719235 0.855548
+0.719235 0.854353
+0.720066 0.855203
+0.718819 0.855375
+0.718403 0.855203
+0.718231 0.854787
+0.718059 0.854372
+0.718231 0.853956
+0.718403 0.853540
+0.718819 0.853368
+0.719235 0.853196
+0.719650 0.853368
+0.720066 0.853540
+0.720238 0.853956
+0.720411 0.854372
+0.720238 0.854787
+0.718529 0.850373
+0.718529 0.853203
+0.718411 0.853203
+0.718411 0.850373
+0.718294 0.850373
+0.718294 0.853203
+0.718764 0.850373
+0.718764 0.853203
+0.718647 0.853203
+0.718647 0.850373
+0.718999 0.850373
+0.718999 0.853203
+0.718882 0.853203
+0.718882 0.850373
+0.719235 0.850373
+0.719235 0.853203
+0.719117 0.853203
+0.719117 0.850373
+0.719470 0.850373
+0.719470 0.853203
+0.719352 0.853203
+0.719352 0.850373
+0.719705 0.850373
+0.719705 0.853203
+0.719587 0.853203
+0.719587 0.850373
+0.719940 0.850373
+0.719940 0.853203
+0.719823 0.853203
+0.719823 0.850373
+0.720175 0.850373
+0.720175 0.853203
+0.720058 0.853203
+0.720058 0.850373
+0.719650 0.855375
+0.719235 0.855548
+0.719235 0.854353
+0.720066 0.855203
+0.718819 0.855375
+0.718403 0.855203
+0.718231 0.854787
+0.718059 0.854372
+0.718231 0.853956
+0.718403 0.853540
+0.718819 0.853368
+0.719235 0.853196
+0.719650 0.853368
+0.720066 0.853540
+0.720238 0.853956
+0.720411 0.854372
+0.720238 0.854787
+0.718529 0.850373
+0.718529 0.853203
+0.718411 0.853203
+0.718411 0.850373
+0.718294 0.850373
+0.718294 0.853203
+0.718764 0.850373
+0.718764 0.853203
+0.718647 0.853203
+0.718647 0.850373
+0.718999 0.850373
+0.718999 0.853203
+0.718882 0.853203
+0.718882 0.850373
+0.719235 0.850373
+0.719235 0.853203
+0.719117 0.853203
+0.719117 0.850373
+0.719470 0.850373
+0.719470 0.853203
+0.719352 0.853203
+0.719352 0.850373
+0.719705 0.850373
+0.719705 0.853203
+0.719587 0.853203
+0.719587 0.850373
+0.719940 0.850373
+0.719940 0.853203
+0.719823 0.853203
+0.719823 0.850373
+0.720175 0.850373
+0.720175 0.853203
+0.720058 0.853203
+0.720058 0.850373
+0.719650 0.855375
+0.719235 0.855548
+0.719235 0.854353
+0.720066 0.855203
+0.718819 0.855375
+0.718403 0.855203
+0.718231 0.854787
+0.718059 0.854372
+0.718231 0.853956
+0.718403 0.853540
+0.718819 0.853368
+0.719235 0.853196
+0.719650 0.853368
+0.720066 0.853540
+0.720238 0.853956
+0.720411 0.854372
+0.720238 0.854787
+0.718529 0.850373
+0.718529 0.853203
+0.718411 0.853203
+0.718411 0.850373
+0.718294 0.850373
+0.718294 0.853203
+0.718764 0.850373
+0.718764 0.853203
+0.718647 0.853203
+0.718647 0.850373
+0.718999 0.850373
+0.718999 0.853203
+0.718882 0.853203
+0.718882 0.850373
+0.719235 0.850373
+0.719235 0.853203
+0.719117 0.853203
+0.719117 0.850373
+0.719470 0.850373
+0.719470 0.853203
+0.719352 0.853203
+0.719352 0.850373
+0.719705 0.850373
+0.719705 0.853203
+0.719587 0.853203
+0.719587 0.850373
+0.719940 0.850373
+0.719940 0.853203
+0.719823 0.853203
+0.719823 0.850373
+0.720175 0.850373
+0.720175 0.853203
+0.720058 0.853203
+0.720058 0.850373
+0.719650 0.855375
+0.719235 0.855548
+0.719235 0.854353
+0.720066 0.855203
+0.718819 0.855375
+0.718403 0.855203
+0.718231 0.854787
+0.718059 0.854372
+0.718231 0.853956
+0.718403 0.853540
+0.718819 0.853368
+0.719235 0.853196
+0.719650 0.853368
+0.720066 0.853540
+0.720238 0.853956
+0.720411 0.854372
+0.720238 0.854787
+0.094943 0.120840
+0.094943 0.066940
+0.094943 0.069806
+0.094943 0.120840
+0.094943 0.012439
+0.094943 0.018172
+0.905057 0.069806
+0.905057 0.018172
+0.905057 0.120840
+0.905057 0.012439
+0.905057 0.066940
+0.905057 0.120840
+0.094943 0.226489
+0.094943 0.226485
+0.094943 0.173541
+0.094943 0.170674
+0.905057 0.170674
+0.905057 0.226489
+0.905057 0.173541
+0.905057 0.226485
+</float_array>
+          <technique_common>
+            <accessor source="#Album_Cute-UV0-array" count="1147" stride="2">
+              <param name="S" type="float"/>
+              <param name="T" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <vertices id="Album_Cute-VERTEX">
+          <input semantic="POSITION" source="#Album_Cute-POSITION"/>
+        </vertices>
+        <triangles count="1454" material="Album_Texture">
+          <input semantic="VERTEX" offset="0" source="#Album_Cute-VERTEX"/>
+          <input semantic="NORMAL" offset="1" source="#Album_Cute-Normal0"/>
+          <input semantic="TEXCOORD" offset="2" set="0" source="#Album_Cute-UV0"/>
+          <p> 111 0 1 47 1 2 114 2 4 47 3 2 3 4 3 114 5 4 111 6 1 0 7 5 45 8 0 0 9 5 111 10 1 114 11 4 2 12 6 4 13 8 124 14 9 2 15 6 124 16 9 57 17 7 108 18 16 22 19 18 78 20 19 22 21 18 108 22 16 38 23 17 1 24 20 108 25 16 78 26 19 108 27 16 1 28 20 36 29 15 112 30 29 20 31 31 75 32 32 20 33 31 112 34 29 50 35 30 112 36 29 16 37 33 48 38 28 16 39 33 112 40 29 75 41 32 34 42 35 39 43 207 84 44 34 84 45 34 39 46 207 117 47 36 117 48 36 35 49 38 84 50 34 35 51 38 117 52 36 40 53 37 14 54 209 151 55 40 115 56 39 151 57 40 14 58 209 171 59 208 34 60 35 151 61 40 171 62 208 151 63 40 34 64 35 84 65 34 151 66 40 35 67 38 83 68 41 35 69 38 151 70 40 84 71 34 15 72 42 151 73 40 83 74 41 151 75 40 15 76 42 115 77 39 49 78 44 120 79 45 85 80 43 49 81 44 85 82 43 18 83 24 120 84 45 21 85 47 85 86 43 21 87 47 120 88 45 46 89 46 3 90 49 152 91 51 114 92 48 152 93 51 3 94 49 81 95 50 18 96 24 152 97 51 81 98 50 152 99 51 18 100 24 85 101 43 152 102 51 21 103 47 77 104 52 21 105 47 152 106 51 85 107 43 0 108 53 152 109 51 77 110 52 152 111 51 0 112 53 114 113 48 86 114 56 10 115 54 8 116 55 10 117 54 86 118 56 157 119 86 157 120 86 86 121 56 29 122 57 29 123 57 30 124 85 157 125 86 153 126 60 29 127 57 86 128 56 29 129 57 153 130 60 28 131 58 153 132 60 86 133 56 87 134 59 87 135 59 86 136 56 8 137 55 127 138 61 153 139 60 87 140 59 153 141 60 127 142 61 173 143 62 122 144 231 28 145 58 173 146 62 153 147 60 173 148 62 28 149 58 51 150 63 52 151 64 5 152 66 52 153 64 7 154 65 5 155 66 53 156 67 154 157 68 91 158 69 53 159 67 91 160 69 88 161 70 31 162 73 156 163 78 90 164 72 156 165 78 31 166 73 25 167 71 88 168 243 155 169 75 176 170 242 155 171 75 88 172 243 91 173 74 25 174 71 31 175 73 176 176 242 25 177 71 176 178 242 155 179 75 92 180 76 26 181 90 96 182 91 26 183 90 92 184 76 27 185 77 92 186 76 156 187 78 25 188 71 92 189 76 25 190 71 27 191 77 8 192 82 164 193 80 87 194 81 164 195 80 8 196 82 94 197 79 27 198 77 155 199 75 93 200 83 155 201 75 27 202 77 25 203 71 93 204 83 155 205 75 91 206 74 93 207 83 91 208 74 9 209 84 30 210 85 158 211 88 157 212 86 158 213 88 30 214 85 95 215 87 157 216 86 158 217 88 99 218 89 157 219 86 99 220 89 10 221 54 11 222 92 93 223 83 9 224 84 93 225 83 11 226 92 187 227 287 26 228 90 27 229 77 187 230 287 187 231 287 27 232 77 93 233 83 55 234 95 54 235 93 73 236 94 54 237 93 55 238 95 13 239 96 97 240 98 185 241 269 12 242 97 185 243 269 97 244 98 159 245 99 158 246 88 159 247 99 97 248 98 97 249 98 99 250 89 158 251 88 159 252 99 95 253 87 98 254 100 95 255 87 159 256 99 158 257 88 159 258 99 33 259 101 185 260 269 33 261 101 159 262 99 98 263 100 33 264 101 39 265 129 34 266 103 39 267 129 33 268 101 44 269 102 26 270 90 102 271 104 96 272 91 101 273 105 96 274 91 102 275 104 103 276 107 160 277 108 104 278 106 103 279 107 104 280 106 100 281 109 160 282 108 101 283 105 104 284 106 101 285 105 102 286 104 104 287 106 150 288 113 161 289 110 13 290 111 150 291 113 13 292 111 55 293 112 56 294 12 161 295 110 150 296 113 161 297 110 56 298 12 100 299 109 124 300 9 63 301 117 57 302 7 57 303 7 63 304 117 59 305 116 115 306 119 141 307 278 14 308 279 141 309 278 115 310 119 116 311 118 15 312 120 116 313 118 115 314 119 116 315 118 15 316 120 37 317 121 36 318 15 133 319 122 108 320 16 108 321 16 133 322 122 162 323 123 162 324 123 67 325 124 135 326 125 67 327 124 162 328 123 133 329 122 162 330 123 135 331 125 134 332 127 134 333 127 135 334 125 68 335 126 38 336 17 162 337 123 134 338 127 162 339 123 38 340 17 108 341 16 109 342 130 15 343 132 83 344 133 15 345 132 109 346 130 37 347 131 35 348 134 109 349 130 83 350 133 109 351 130 35 352 134 40 353 135 39 354 207 163 355 136 117 356 36 163 357 136 39 358 207 69 359 137 69 360 137 136 361 138 163 362 136 163 363 136 136 364 138 106 365 140 106 366 140 136 367 138 62 368 139 163 369 136 40 370 37 117 371 36 40 372 37 163 373 136 106 374 140 79 375 143 58 376 142 23 377 23 58 378 142 79 379 143 118 380 141 22 381 144 118 382 141 79 383 143 118 384 141 22 385 144 38 386 145 128 387 246 65 388 146 64 389 147 65 390 146 128 391 246 89 392 245 87 393 151 89 394 148 127 395 150 89 396 148 87 397 151 164 398 149 122 399 231 165 400 153 28 401 58 165 402 153 122 403 231 177 404 254 30 405 85 41 406 152 42 407 154 41 408 152 30 409 85 29 410 57 28 411 58 41 412 152 29 413 57 41 414 152 28 415 58 165 416 153 39 417 129 110 418 155 69 419 163 110 420 155 39 421 129 44 422 102 95 423 87 30 424 85 42 425 154 95 426 87 42 427 154 43 428 156 98 429 100 44 430 102 33 431 101 44 432 102 98 433 100 166 434 157 95 435 87 43 436 156 98 437 100 98 438 100 43 439 156 166 440 157 137 441 160 73 442 10 142 443 280 73 444 10 137 445 160 119 446 159 137 447 160 48 448 162 119 449 159 48 450 162 137 451 160 60 452 161 138 453 165 112 454 29 60 455 164 60 456 164 112 457 29 48 458 28 112 459 29 138 460 165 62 461 166 62 462 166 50 463 30 112 464 29 139 465 168 49 466 44 61 467 167 49 468 44 139 469 168 120 470 45 139 471 168 46 472 46 120 473 45 46 474 46 139 475 168 68 476 169 63 477 170 52 478 64 51 479 63 52 480 64 63 481 170 64 482 171 167 483 172 154 484 68 65 485 173 65 486 173 154 487 68 53 488 67 132 489 174 96 490 91 71 491 261 96 492 91 132 493 174 92 494 76 168 495 175 160 496 108 110 497 155 110 498 155 160 499 108 103 500 107 160 501 108 168 502 175 131 503 176 131 504 176 101 505 105 160 506 108 5 507 179 3 508 180 51 509 178 47 510 177 51 511 178 3 512 180 113 513 181 0 514 183 77 515 184 0 516 183 113 517 181 45 518 182 113 519 181 21 520 47 46 521 185 21 522 47 113 523 181 77 524 184 121 525 187 82 526 218 76 527 189 82 528 218 56 529 188 76 530 189 121 531 187 20 532 190 50 533 191 20 534 190 121 535 187 76 536 189 53 537 192 7 538 194 52 539 195 7 540 194 53 541 192 88 542 193 82 543 27 103 544 107 100 545 109 82 546 27 100 547 109 56 548 12 119 549 159 16 550 196 74 551 197 16 552 196 119 553 159 48 554 162 73 555 10 119 556 159 74 557 197 73 558 10 74 559 197 55 560 11 55 561 13 169 562 199 150 563 14 169 564 199 55 565 13 74 566 198 169 567 199 16 568 200 75 569 201 16 570 200 169 571 199 74 572 198 20 573 31 169 574 199 75 575 201 169 576 199 20 577 31 76 578 202 56 579 12 169 580 199 76 581 202 169 582 199 56 583 12 150 584 14 2 585 21 170 586 204 80 587 22 170 588 204 2 589 21 72 590 203 170 591 204 1 592 205 78 593 206 1 594 205 170 595 204 72 596 203 22 597 144 170 598 204 78 599 206 170 600 204 22 601 144 79 602 143 23 603 23 170 604 204 79 605 143 170 606 204 23 607 23 80 608 22 107 609 210 1 610 212 72 611 213 1 612 212 107 613 210 36 614 211 2 615 115 57 616 114 72 617 213 72 618 213 57 619 114 107 620 210 59 621 158 140 622 214 172 623 215 172 624 215 140 625 214 133 626 217 133 627 217 140 628 214 67 629 216 172 630 215 36 631 211 107 632 210 36 633 211 172 634 215 133 635 217 57 636 114 172 637 215 107 638 210 172 639 215 57 640 114 59 641 158 4 642 220 80 643 221 174 644 219 80 645 221 4 646 220 2 647 222 174 648 219 23 649 26 17 650 223 23 651 26 174 652 219 80 653 221 5 654 226 81 655 225 3 656 224 81 657 225 5 658 226 175 659 227 24 660 228 18 661 24 175 662 227 81 663 225 175 664 227 18 665 24 173 666 232 123 667 229 122 668 231 123 669 229 19 670 230 122 671 231 6 672 234 173 673 232 127 674 233 173 675 232 6 676 234 123 677 229 123 678 229 17 679 223 19 680 230 17 681 223 123 682 229 174 683 235 6 684 234 174 685 235 123 686 229 174 687 235 6 688 234 4 689 236 175 690 239 126 691 237 24 692 228 126 693 237 32 694 238 24 695 228 7 696 241 175 697 239 5 698 240 175 699 239 7 700 241 126 701 237 126 702 237 31 703 73 32 704 238 31 705 73 126 706 237 176 707 242 7 708 241 176 709 242 126 710 237 176 711 242 7 712 241 88 713 243 6 714 247 89 715 245 128 716 246 89 717 245 6 718 247 127 719 244 90 720 72 125 721 248 31 722 73 125 723 248 32 724 238 31 725 73 6 726 252 128 727 249 4 728 251 4 729 251 128 730 249 124 731 250 23 732 26 180 733 259 17 734 223 180 735 259 23 736 26 58 737 25 19 738 230 129 739 253 122 740 231 122 741 231 129 742 253 177 743 254 130 744 255 61 745 128 49 746 186 130 747 255 49 748 186 179 749 258 129 750 253 70 751 256 177 752 254 177 753 254 70 754 256 178 755 257 179 756 258 49 757 186 18 758 24 179 759 258 18 760 24 24 761 228 179 762 258 32 763 238 125 764 248 32 765 238 179 766 258 24 767 228 180 768 259 70 769 256 129 770 253 70 771 256 180 772 259 130 773 255 19 774 230 180 775 259 129 776 253 180 777 259 19 778 230 17 779 223 156 780 78 181 781 260 178 782 257 178 783 257 90 784 72 156 785 78 181 786 260 92 787 76 132 788 174 92 789 76 181 790 260 156 791 78 131 792 176 71 793 261 101 794 105 71 795 261 96 796 91 101 797 105 178 798 257 165 799 153 177 800 254 165 801 153 178 802 257 181 803 260 41 804 152 181 805 260 132 806 174 181 807 260 41 808 152 165 809 153 42 810 154 71 811 261 43 812 156 43 813 156 71 814 261 131 815 176 59 816 116 63 817 117 47 818 177 63 819 117 51 820 178 47 821 177 113 822 181 135 823 125 67 824 124 67 825 124 45 826 182 113 827 181 135 828 125 46 829 185 68 830 126 46 831 185 135 832 125 113 833 181 136 834 138 82 835 218 121 836 187 82 837 218 136 838 138 69 839 137 136 840 138 50 841 191 62 842 139 50 843 191 136 844 138 121 845 187 65 846 146 52 847 195 64 848 147 52 849 195 65 850 146 53 851 192 110 852 155 82 853 27 69 854 163 82 855 27 110 856 155 103 857 107 137 858 160 142 859 280 182 860 262 141 861 278 182 862 262 142 863 280 182 864 262 141 865 278 116 866 118 37 867 121 182 868 262 116 869 118 182 870 262 37 871 121 105 872 263 137 873 160 182 874 262 105 875 263 105 876 263 60 877 161 137 878 160 183 879 265 138 880 165 105 881 264 105 882 264 138 883 165 60 884 164 37 885 131 183 886 265 105 887 264 183 888 265 37 889 131 109 890 130 40 891 135 183 892 265 109 893 130 183 894 265 40 895 135 106 896 266 138 897 165 183 898 265 106 899 266 106 900 266 62 901 166 138 902 165 139 903 168 61 904 167 184 905 267 58 906 142 184 907 267 61 908 167 184 909 267 58 910 142 118 911 141 38 912 145 184 913 267 118 914 141 184 915 267 38 916 145 134 917 268 139 918 168 184 919 267 134 920 268 134 921 268 68 922 169 139 923 168 128 924 249 63 925 170 124 926 250 63 927 170 128 928 249 64 929 171 164 930 149 65 931 173 89 932 148 65 933 173 164 934 149 167 935 172 166 936 157 110 937 155 44 938 102 110 939 155 166 940 157 168 941 175 43 942 156 131 943 176 166 944 157 166 945 157 131 946 176 168 947 175 140 948 214 47 949 2 111 950 1 47 951 2 140 952 214 59 953 158 140 954 214 45 955 0 67 956 216 45 957 0 140 958 214 111 959 1 58 960 25 130 961 255 180 962 259 130 963 255 58 964 25 61 965 128 90 966 72 178 967 257 70 968 256 70 969 256 125 970 248 90 971 72 130 972 255 179 973 258 70 974 256 70 975 256 179 976 258 125 977 248 42 978 154 132 979 174 71 980 261 132 981 174 42 982 154 41 983 152 185 984 269 34 985 103 171 986 270 34 987 103 185 988 269 33 989 101 12 990 97 171 991 270 14 992 271 171 993 270 12 994 97 185 995 269 14 996 275 186 997 273 12 998 274 186 999 273 14 1000 275 141 1001 272 66 1002 277 73 1003 94 54 1004 93 73 1005 94 66 1006 277 142 1007 276 141 1008 272 66 1009 277 186 1010 273 66 1011 277 141 1012 272 142 1013 276 94 1014 79 143 1015 282 164 1016 80 164 1017 80 143 1018 282 167 1019 281 9 1020 285 154 1021 283 144 1022 284 154 1023 283 9 1024 285 91 1025 286 167 1026 281 143 1027 282 154 1028 283 143 1029 282 144 1030 284 154 1031 283 188 1032 288 100 1033 109 104 1034 106 100 1035 109 188 1036 288 161 1037 110 188 1038 288 102 1039 104 189 1040 289 102 1041 104 188 1042 288 104 1043 106 145 1044 291 189 1045 289 146 1046 290 189 1047 289 145 1048 291 188 1049 288 161 1050 110 188 1051 288 145 1052 291 145 1053 291 13 1054 111 161 1055 110 189 1056 293 187 1057 287 146 1058 292 146 1059 292 187 1060 287 11 1061 92 189 1062 293 26 1063 90 187 1064 287 26 1065 90 189 1066 293 102 1067 104 190 1068 296 13 1069 294 145 1070 295 13 1071 294 190 1072 296 54 1073 299 190 1074 296 146 1075 297 193 1076 298 146 1077 297 190 1078 296 145 1079 295 147 1080 303 8 1081 301 10 1082 302 8 1083 301 147 1084 303 94 1085 300 10 1086 306 191 1087 305 147 1088 304 191 1089 305 10 1090 306 99 1091 307 192 1092 309 99 1093 311 97 1094 312 99 1095 311 192 1096 309 191 1097 310 12 1098 313 192 1099 309 97 1100 312 192 1101 309 12 1102 313 186 1103 308 193 1104 315 11 1105 317 148 1106 314 11 1107 317 193 1108 315 146 1109 316 147 1110 303 143 1111 319 94 1112 300 143 1113 319 147 1114 303 149 1115 318 190 1116 296 194 1117 321 66 1118 322 66 1119 322 54 1120 299 190 1121 296 194 1122 321 190 1123 296 195 1124 320 195 1125 320 190 1126 296 193 1127 298 11 1128 324 9 1129 325 148 1130 323 144 1131 326 148 1132 323 9 1133 325 143 1134 319 148 1135 323 144 1136 326 148 1137 323 143 1138 319 149 1139 327 191 1140 310 194 1141 321 195 1142 320 194 1143 321 191 1144 310 192 1145 309 186 1146 308 66 1147 322 192 1148 309 192 1149 309 66 1150 322 194 1151 321 195 1152 329 148 1153 323 149 1154 327 148 1155 323 195 1156 329 193 1157 328 191 1158 305 149 1159 327 147 1160 304 149 1161 327 191 1162 305 195 1163 330 200 1164 332 239 1165 334 197 1166 331 239 1167 334 200 1168 332 216 1169 333 196 1170 336 216 1171 333 199 1172 335 216 1173 333 196 1174 336 239 1175 334 201 1176 338 240 1177 340 198 1178 337 240 1179 340 201 1180 338 217 1181 339 197 1182 331 217 1183 339 200 1184 332 217 1185 339 197 1186 331 240 1187 340 241 1188 342 200 1189 332 242 1190 341 200 1191 332 241 1192 342 216 1193 333 203 1194 343 241 1195 342 242 1196 341 241 1197 342 203 1198 343 218 1199 344 224 1200 346 218 1201 344 202 1202 345 224 1203 346 241 1204 342 218 1205 344 199 1206 335 216 1207 333 224 1208 346 241 1209 342 224 1210 346 216 1211 333 225 1212 347 243 1213 348 217 1214 339 217 1215 339 201 1216 338 225 1217 347 219 1218 350 225 1219 347 204 1220 349 243 1221 348 225 1222 347 219 1223 350 243 1224 348 203 1225 343 242 1226 341 203 1227 343 243 1228 348 219 1229 350 200 1230 332 243 1231 348 242 1232 341 243 1233 348 200 1234 332 217 1235 339 218 1236 344 203 1237 343 206 1238 351 206 1239 351 205 1240 352 226 1241 353 218 1242 344 206 1243 351 226 1244 353 218 1245 344 226 1246 353 202 1247 345 227 1248 354 219 1249 350 204 1250 349 206 1251 351 219 1252 350 227 1253 354 227 1254 354 207 1255 355 206 1256 356 206 1257 351 203 1258 343 219 1259 350 206 1260 356 208 1261 357 205 1262 352 207 1263 355 209 1264 358 206 1265 356 206 1266 356 211 1267 359 220 1268 360 208 1269 357 206 1270 356 220 1271 360 208 1272 357 220 1273 360 210 1274 361 206 1275 356 209 1276 358 221 1277 363 221 1278 363 209 1279 358 212 1280 362 221 1281 363 211 1282 359 206 1283 356 211 1284 359 244 1285 365 220 1286 360 244 1287 365 211 1288 359 245 1289 364 214 1290 366 244 1291 365 245 1292 364 244 1293 365 214 1294 366 222 1295 367 222 1296 367 213 1297 368 228 1298 369 222 1299 367 228 1300 369 244 1301 365 244 1302 365 228 1303 369 220 1304 360 228 1305 369 210 1306 361 220 1307 360 229 1308 370 246 1309 371 221 1310 363 229 1311 370 221 1312 363 212 1313 362 223 1314 373 229 1315 370 215 1316 372 229 1317 370 223 1318 373 246 1319 371 214 1320 366 246 1321 371 223 1322 373 246 1323 371 214 1324 366 245 1325 364 211 1326 359 246 1327 371 245 1328 364 246 1329 371 211 1330 359 221 1331 363 247 1332 375 214 1333 366 231 1334 374 214 1335 366 247 1336 375 222 1337 367 222 1338 367 247 1339 375 230 1340 376 230 1341 376 213 1342 368 222 1343 367 248 1344 378 215 1345 372 232 1346 377 215 1347 372 248 1348 378 223 1349 373 248 1350 378 231 1351 374 223 1352 373 231 1353 374 214 1354 366 223 1355 373 249 1356 382 215 1357 380 233 1358 381 215 1359 380 249 1360 382 232 1361 379 250 1362 384 233 1363 381 234 1364 383 233 1365 381 250 1366 384 249 1367 382 235 1368 385 251 1369 386 250 1370 384 235 1371 385 250 1372 384 234 1373 383 201 1374 338 251 1375 386 235 1376 385 251 1377 386 201 1378 338 198 1379 337 229 1380 387 252 1381 388 233 1382 381 233 1383 381 215 1384 380 229 1385 387 212 1386 389 209 1387 390 229 1388 387 252 1389 388 229 1390 387 209 1391 390 252 1392 388 253 1393 391 234 1394 383 234 1395 383 233 1396 381 252 1397 388 253 1398 391 252 1399 388 207 1400 392 252 1401 388 209 1402 390 207 1403 392 254 1404 393 234 1405 383 253 1406 391 234 1407 383 254 1408 393 235 1409 385 254 1410 393 207 1411 392 227 1412 394 207 1413 392 254 1414 393 253 1415 391 225 1416 347 227 1417 394 204 1418 349 227 1419 394 225 1420 347 254 1421 393 201 1422 338 235 1423 385 225 1424 347 225 1425 347 235 1426 385 254 1427 393 255 1428 398 236 1429 395 230 1430 397 236 1431 395 213 1432 396 230 1433 397 256 1434 400 237 1435 399 255 1436 398 237 1437 399 236 1438 395 255 1439 398 238 1440 401 196 1441 336 199 1442 335 196 1443 336 238 1444 401 257 1445 402 257 1446 402 237 1447 399 256 1448 400 237 1449 399 257 1450 402 238 1451 401 228 1452 405 258 1453 406 208 1454 403 228 1455 405 208 1456 403 210 1457 404 258 1458 406 228 1459 405 236 1460 395 236 1461 395 228 1462 405 213 1463 396 258 1464 406 259 1465 408 205 1466 407 205 1467 407 208 1468 403 258 1469 406 259 1470 408 258 1471 406 237 1472 399 237 1473 399 258 1474 406 236 1475 395 224 1476 346 238 1477 401 199 1478 335 238 1479 401 224 1480 346 260 1481 409 226 1482 410 224 1483 346 202 1484 345 224 1485 346 226 1486 410 260 1487 409 260 1488 409 205 1489 407 259 1490 408 205 1491 407 260 1492 409 226 1493 410 260 1494 409 237 1495 399 238 1496 401 237 1497 399 260 1498 409 259 1499 408 262 1500 411 263 1501 412 261 1502 413 262 1503 411 261 1504 413 264 1505 414 266 1506 415 265 1507 416 261 1508 413 266 1509 415 261 1510 413 267 1511 417 267 1512 417 261 1513 413 268 1514 418 269 1515 419 268 1516 418 261 1517 413 270 1518 420 269 1519 419 261 1520 413 270 1521 420 261 1522 413 271 1523 421 271 1524 421 261 1525 413 272 1526 422 273 1527 423 272 1528 422 261 1529 413 274 1530 424 273 1531 423 261 1532 413 274 1533 424 261 1534 413 275 1535 425 275 1536 425 261 1537 413 276 1538 426 277 1539 427 276 1540 426 261 1541 413 278 1542 428 277 1543 427 261 1544 413 278 1545 428 261 1546 413 279 1547 429 279 1548 429 261 1549 413 280 1550 430 281 1551 431 280 1552 430 261 1553 413 282 1554 432 281 1555 431 261 1556 413 282 1557 432 261 1558 413 283 1559 433 283 1560 433 261 1561 413 284 1562 434 285 1563 435 284 1564 434 261 1565 413 286 1566 436 285 1567 435 261 1568 413 286 1569 436 261 1570 413 287 1571 437 287 1572 437 261 1573 413 288 1574 438 263 1575 412 288 1576 438 261 1577 413 290 1578 440 262 1579 411 289 1580 439 262 1581 411 290 1582 440 263 1583 412 291 1584 441 289 1585 439 262 1586 411 291 1587 441 262 1588 411 264 1589 414 264 1590 414 261 1591 413 292 1592 442 293 1593 443 292 1594 442 261 1595 413 294 1596 444 293 1597 443 261 1598 413 294 1599 444 261 1600 413 295 1601 445 295 1602 445 261 1603 413 296 1604 446 265 1605 416 296 1606 446 261 1607 413 298 1608 447 297 1609 448 266 1610 415 265 1611 416 266 1612 415 297 1613 448 267 1614 417 298 1615 447 266 1616 415 298 1617 447 267 1618 417 299 1619 449 268 1620 418 299 1621 449 267 1622 417 299 1623 449 268 1624 418 300 1625 450 301 1626 451 300 1627 450 269 1628 419 269 1629 419 300 1630 450 268 1631 418 269 1632 419 270 1633 420 301 1634 451 270 1635 420 302 1636 452 301 1637 451 270 1638 420 271 1639 421 303 1640 453 270 1641 420 303 1642 453 302 1643 452 271 1644 421 272 1645 422 304 1646 454 271 1647 421 304 1648 454 303 1649 453 272 1650 422 273 1651 423 304 1652 454 273 1653 423 305 1654 455 304 1655 454 273 1656 423 306 1657 456 305 1658 455 306 1659 456 273 1660 423 274 1661 424 307 1662 457 306 1663 456 274 1664 424 274 1665 424 275 1666 425 307 1667 457 308 1668 458 307 1669 457 275 1670 425 275 1671 425 276 1672 426 308 1673 458 276 1674 426 277 1675 427 308 1676 458 308 1677 458 277 1678 427 309 1679 459 309 1680 459 277 1681 427 278 1682 428 309 1683 459 278 1684 428 310 1685 460 310 1686 460 278 1687 428 311 1688 461 278 1689 428 279 1690 429 311 1691 461 312 1692 462 311 1693 461 279 1694 429 312 1695 462 279 1696 429 280 1697 430 313 1698 463 280 1699 430 281 1700 431 280 1701 430 313 1702 463 312 1703 462 313 1704 463 281 1705 431 282 1706 432 313 1707 463 282 1708 432 314 1709 464 314 1710 464 282 1711 432 315 1712 465 282 1713 432 283 1714 433 315 1715 465 315 1716 465 284 1717 434 316 1718 466 284 1719 434 315 1720 465 283 1721 433 317 1722 467 284 1723 434 285 1724 435 284 1725 434 317 1726 467 316 1727 466 317 1728 467 286 1729 436 318 1730 468 286 1731 436 317 1732 467 285 1733 435 319 1734 469 318 1735 468 286 1736 436 319 1737 469 286 1738 436 287 1739 437 320 1740 470 319 1741 469 287 1742 437 320 1743 470 287 1744 437 288 1745 438 290 1746 440 288 1747 438 263 1748 412 288 1749 438 290 1750 440 320 1751 470 321 1752 471 264 1753 414 292 1754 442 264 1755 414 321 1756 471 291 1757 441 322 1758 472 292 1759 442 293 1760 443 292 1761 442 322 1762 472 321 1763 471 323 1764 473 293 1765 443 294 1766 444 293 1767 443 323 1768 473 322 1769 472 295 1770 445 323 1771 473 294 1772 444 323 1773 473 295 1774 445 324 1775 474 296 1776 446 324 1777 474 295 1778 445 324 1779 474 296 1780 446 325 1781 475 297 1782 448 325 1783 475 265 1784 416 296 1785 446 265 1786 416 325 1787 475 340 1788 479 328 1789 476 339 1790 478 339 1791 478 328 1792 476 327 1793 477 341 1794 482 330 1795 480 329 1796 481 330 1797 480 341 1798 482 342 1799 483 335 1800 487 332 1801 485 336 1802 486 332 1803 485 335 1804 487 331 1805 484 334 1806 489 337 1807 491 333 1808 488 337 1809 491 334 1810 489 338 1811 490 478 1812 495 343 1813 493 357 1814 494 343 1815 493 478 1816 495 333 1817 492 331 1818 484 483 1819 497 332 1820 485 483 1821 497 331 1822 484 482 1823 496 333 1824 492 532 1825 499 343 1826 493 532 1827 499 333 1828 492 337 1829 498 501 1830 502 344 1831 500 327 1832 501 344 1833 500 501 1834 502 476 1835 503 330 1836 480 504 1837 504 329 1838 481 503 1839 505 329 1840 481 504 1841 504 344 1842 500 533 1843 506 327 1844 501 339 1845 507 327 1846 501 533 1847 506 385 1848 511 346 1849 508 389 1850 510 389 1851 510 346 1852 508 345 1853 509 401 1854 515 350 1855 513 397 1856 514 350 1857 513 401 1858 515 349 1859 512 352 1860 516 351 1861 517 349 1862 518 349 1863 518 348 1864 520 350 1865 519 348 1866 520 349 1867 518 351 1868 517 354 1869 522 355 1870 524 353 1871 521 355 1872 524 354 1873 522 356 1874 523 357 1875 525 346 1876 508 358 1877 526 363 1878 528 364 1879 530 362 1880 527 364 1881 530 363 1882 528 365 1883 529 367 1884 532 364 1885 530 365 1886 529 364 1887 530 367 1888 532 366 1889 531 366 1890 534 369 1891 536 368 1892 533 369 1893 536 366 1894 534 367 1895 535 370 1896 538 506 1897 540 358 1898 537 506 1899 540 370 1900 538 458 1901 539 372 1902 542 373 1903 544 371 1904 541 373 1905 544 372 1906 542 363 1907 543 375 1908 546 356 1909 548 354 1910 545 356 1911 548 375 1912 546 376 1913 547 377 1914 549 378 1915 550 346 1916 508 345 1917 509 346 1918 508 378 1919 550 379 1920 551 380 1921 552 346 1922 508 346 1923 508 380 1924 552 377 1925 549 377 1926 549 531 1927 553 378 1928 550 378 1929 550 531 1930 553 543 1931 554 378 1932 550 534 1933 555 345 1934 509 534 1935 555 378 1936 550 543 1937 554 379 1938 551 542 1939 556 380 1940 552 538 1941 557 380 1942 552 542 1943 556 531 1944 553 380 1945 552 538 1946 557 380 1947 552 531 1948 553 377 1949 549 540 1950 561 382 1951 559 544 1952 560 382 1953 559 540 1954 561 381 1955 558 535 1956 563 382 1957 559 347 1958 562 382 1959 559 535 1960 563 544 1961 560 384 1962 565 541 1963 567 383 1964 564 541 1965 567 384 1966 565 539 1967 566 381 1968 558 540 1969 561 384 1970 565 384 1971 565 540 1972 561 539 1973 566 348 1974 520 382 1975 559 381 1976 558 348 1977 520 347 1978 562 382 1979 559 348 1980 520 384 1981 565 383 1982 564 348 1983 520 381 1984 558 384 1985 565 385 1986 511 386 1987 568 387 1988 569 385 1989 511 387 1990 569 388 1991 570 389 1992 510 390 1993 571 385 1994 511 385 1995 511 390 1996 571 386 1997 568 386 1998 568 530 1999 572 387 2000 569 551 2001 573 387 2002 569 530 2003 572 387 2004 569 550 2005 574 388 2006 570 550 2007 574 387 2008 569 551 2009 573 389 2010 510 549 2011 575 390 2012 571 545 2013 576 390 2014 571 549 2015 575 390 2016 571 530 2017 572 386 2018 568 530 2019 572 390 2020 571 545 2021 576 392 2022 578 547 2023 580 391 2024 577 547 2025 580 392 2026 578 552 2027 579 553 2028 582 392 2029 578 393 2030 581 392 2031 578 553 2032 582 552 2033 579 395 2034 584 548 2035 586 394 2036 583 548 2037 586 395 2038 584 546 2039 585 547 2040 580 395 2041 584 391 2042 577 395 2043 584 547 2044 580 546 2045 585 351 2046 517 392 2047 578 391 2048 577 351 2049 517 393 2050 581 392 2051 578 351 2052 517 395 2053 584 394 2054 583 351 2055 517 391 2056 577 395 2057 584 346 2058 508 357 2059 525 379 2060 551 379 2061 551 357 2062 525 343 2063 587 383 2064 564 396 2065 588 348 2066 520 396 2067 588 383 2068 564 486 2069 589 394 2070 583 348 2071 520 351 2072 517 348 2073 520 394 2074 583 347 2075 562 397 2076 514 399 2077 591 398 2078 590 399 2079 591 397 2080 514 350 2081 513 349 2082 593 401 2083 594 400 2084 592 402 2085 595 400 2086 592 401 2087 594 350 2088 519 348 2089 520 396 2090 588 350 2091 597 396 2092 598 399 2093 596 399 2094 596 396 2095 598 405 2096 599 352 2097 603 400 2098 601 412 2099 602 400 2100 601 352 2101 603 349 2102 600 414 2103 607 409 2104 604 413 2105 606 409 2106 604 408 2107 605 413 2108 606 412 2109 609 417 2110 610 415 2111 608 417 2112 610 412 2113 609 400 2114 592 415 2115 608 418 2116 612 416 2117 611 418 2118 612 415 2119 608 417 2120 610 419 2121 613 418 2122 612 417 2123 610 418 2124 612 419 2125 613 420 2126 614 402 2127 595 417 2128 610 400 2129 592 417 2130 610 402 2131 595 419 2132 613 402 2133 617 404 2134 615 403 2135 616 404 2136 615 402 2137 617 401 2138 515 421 2139 619 419 2140 613 403 2141 618 402 2142 595 403 2143 618 419 2144 613 422 2145 620 420 2146 614 421 2147 619 419 2148 613 421 2149 619 420 2150 614 398 2151 622 426 2152 624 425 2153 621 426 2154 624 398 2155 622 399 2156 623 426 2157 624 427 2158 626 408 2159 625 408 2160 625 427 2161 626 413 2162 627 405 2163 628 426 2164 624 399 2165 623 426 2166 624 405 2167 628 427 2168 626 403 2169 618 439 2170 630 421 2171 619 439 2172 630 403 2173 618 438 2174 629 421 2175 619 441 2176 631 422 2177 620 441 2178 631 421 2179 619 439 2180 630 437 2181 633 438 2182 629 436 2183 632 438 2184 629 437 2185 633 439 2186 630 437 2187 633 441 2188 631 439 2189 630 441 2190 631 437 2191 633 440 2192 634 445 2193 636 496 2194 638 444 2195 635 496 2196 638 445 2197 636 526 2198 637 433 2199 639 527 2200 640 445 2201 636 526 2202 637 445 2203 636 527 2204 640 495 2205 641 446 2206 642 444 2207 643 495 2208 641 444 2209 643 496 2210 644 452 2211 646 450 2212 648 451 2213 645 450 2214 648 452 2215 646 429 2216 647 453 2217 650 450 2218 648 454 2219 649 450 2220 648 453 2221 650 451 2222 645 455 2223 654 453 2224 652 454 2225 653 453 2226 652 455 2227 654 456 2228 651 440 2229 657 457 2230 655 441 2231 656 457 2232 655 440 2233 657 353 2234 521 458 2235 659 460 2236 661 459 2237 658 460 2238 661 458 2239 659 370 2240 660 462 2241 663 555 2242 665 461 2243 662 555 2244 665 462 2245 663 536 2246 664 418 2247 667 463 2248 668 416 2249 666 416 2250 666 463 2251 668 464 2252 669 468 2253 671 469 2254 673 467 2255 670 469 2256 673 468 2257 671 470 2258 672 452 2259 675 371 2260 541 429 2261 674 371 2262 541 452 2263 675 372 2264 542 375 2265 546 473 2266 677 471 2267 676 473 2268 677 375 2269 546 354 2270 545 470 2271 672 475 2272 678 469 2273 673 474 2274 679 469 2275 673 475 2276 678 475 2277 678 454 2278 653 474 2279 679 454 2280 653 475 2281 678 455 2282 654 385 2283 511 476 2284 680 370 2285 681 346 2286 508 370 2287 681 358 2288 526 370 2289 681 346 2290 508 385 2291 511 388 2292 570 344 2293 682 476 2294 680 476 2295 680 385 2296 511 388 2297 570 352 2298 516 393 2299 581 351 2300 517 393 2301 581 352 2302 516 511 2303 683 477 2304 685 363 2305 528 372 2306 684 363 2307 528 477 2308 685 365 2309 529 477 2310 685 367 2311 532 365 2312 529 367 2313 532 477 2314 685 456 2315 686 456 2316 651 369 2317 536 367 2318 535 369 2319 536 456 2320 651 455 2321 654 479 2322 688 357 2323 494 358 2324 687 357 2325 494 479 2326 688 478 2327 495 482 2328 496 481 2329 690 483 2330 497 481 2331 690 482 2332 496 480 2333 689 481 2334 693 484 2335 691 485 2336 692 484 2337 691 481 2338 693 480 2339 694 554 2340 697 487 2341 695 486 2342 696 487 2343 695 554 2344 697 557 2345 698 486 2346 696 405 2347 599 396 2348 598 405 2349 599 486 2350 696 487 2351 695 414 2352 607 488 2353 699 489 2354 700 488 2355 699 414 2356 607 413 2357 606 491 2358 702 507 2359 703 490 2360 701 506 2361 540 490 2362 701 507 2363 703 373 2364 544 362 2365 704 446 2366 642 362 2367 704 373 2368 544 363 2369 543 364 2370 530 493 2371 706 362 2372 527 493 2373 706 364 2374 530 492 2375 705 364 2376 530 494 2377 707 492 2378 705 494 2379 707 364 2380 530 366 2381 531 490 2382 701 496 2383 644 491 2384 702 496 2385 644 490 2386 701 495 2387 641 356 2388 548 497 2389 709 431 2390 708 497 2391 709 356 2392 548 376 2393 547 368 2394 533 494 2395 711 366 2396 534 494 2397 711 368 2398 533 433 2399 710 459 2400 658 499 2401 713 498 2402 712 499 2403 713 459 2404 658 460 2405 661 498 2406 712 500 2407 715 467 2408 714 500 2409 715 498 2410 712 499 2411 713 327 2412 477 502 2413 716 501 2414 717 502 2415 716 327 2416 477 328 2417 476 328 2418 476 503 2419 719 502 2420 716 503 2421 719 328 2422 476 329 2423 718 460 2424 661 501 2425 717 499 2426 713 499 2427 713 501 2428 717 502 2429 716 499 2430 713 502 2431 716 500 2432 715 500 2433 715 502 2434 716 503 2435 719 501 2436 717 460 2437 661 476 2438 720 476 2439 720 460 2440 661 370 2441 660 503 2442 505 505 2443 722 500 2444 721 505 2445 722 503 2446 505 504 2447 504 507 2448 703 479 2449 723 506 2450 540 358 2451 537 506 2452 540 479 2453 723 509 2454 727 480 2455 725 508 2456 726 480 2457 725 509 2458 727 484 2459 724 479 2460 729 507 2461 728 508 2462 726 507 2463 728 509 2464 727 508 2465 726 508 2466 726 510 2467 731 478 2468 730 478 2469 730 479 2470 729 508 2471 726 482 2472 732 510 2473 731 480 2474 725 480 2475 725 510 2476 731 508 2477 726 500 2478 715 505 2479 733 467 2480 714 467 2481 714 505 2482 733 468 2483 734 334 2484 489 482 2485 732 331 2486 735 482 2487 732 334 2488 489 510 2489 731 510 2490 731 334 2491 489 333 2492 488 333 2493 488 478 2494 730 510 2495 731 488 2496 699 560 2497 736 489 2498 700 537 2499 737 489 2500 700 560 2501 736 556 2502 741 512 2503 739 559 2504 740 512 2505 739 556 2506 741 511 2507 738 512 2508 743 415 2509 608 561 2510 742 415 2511 608 512 2512 743 412 2513 609 561 2514 742 416 2515 611 461 2516 744 416 2517 611 561 2518 742 415 2519 608 412 2520 602 511 2521 738 352 2522 603 511 2523 738 412 2524 602 512 2525 739 464 2526 669 461 2527 662 416 2528 666 461 2529 662 464 2530 669 462 2531 663 487 2532 745 427 2533 626 405 2534 628 427 2535 626 487 2536 745 562 2537 746 562 2538 746 413 2539 627 427 2540 626 413 2541 627 562 2542 746 488 2543 747 513 2544 749 459 2545 750 514 2546 748 459 2547 750 513 2548 749 458 2549 539 515 2550 752 509 2551 727 491 2552 751 507 2553 728 491 2554 751 509 2555 727 516 2556 753 484 2557 724 515 2558 752 509 2559 727 515 2560 752 484 2561 724 485 2562 692 516 2563 754 517 2564 755 516 2565 754 485 2566 692 484 2567 691 473 2568 757 437 2569 633 471 2570 756 437 2571 633 473 2572 757 440 2573 634 472 2574 758 437 2575 633 436 2576 632 437 2577 633 472 2578 758 471 2579 756 494 2580 760 445 2581 636 492 2582 759 445 2583 636 494 2584 760 433 2585 639 493 2586 761 445 2587 636 444 2588 635 445 2589 636 493 2590 761 492 2591 759 493 2592 762 446 2593 642 362 2594 704 446 2595 642 493 2596 762 444 2597 643 453 2598 764 477 2599 685 451 2600 763 477 2601 685 453 2602 764 456 2603 686 477 2604 685 452 2605 765 451 2606 763 452 2607 765 477 2608 685 372 2609 684 429 2610 674 518 2611 766 519 2612 767 518 2613 766 429 2614 674 371 2615 541 518 2616 766 513 2617 749 519 2618 767 514 2619 748 519 2620 767 513 2621 749 515 2622 752 527 2623 640 516 2624 753 527 2625 640 515 2626 752 526 2627 637 526 2628 637 515 2629 752 491 2630 751 491 2631 751 496 2632 638 526 2633 637 474 2634 770 524 2635 768 469 2636 769 525 2637 771 524 2638 768 474 2639 770 525 2640 771 514 2641 773 524 2642 768 514 2643 773 525 2644 771 519 2645 772 498 2646 712 514 2647 773 459 2648 658 514 2649 773 498 2650 712 524 2651 768 498 2652 712 467 2653 714 524 2654 768 467 2655 714 469 2656 769 524 2657 768 497 2658 709 435 2659 775 431 2660 708 435 2661 775 497 2662 709 448 2663 774 429 2664 647 519 2665 772 450 2666 648 525 2667 771 450 2668 648 519 2669 772 450 2670 648 474 2671 770 454 2672 649 474 2673 770 450 2674 648 525 2675 771 528 2676 777 516 2677 754 527 2678 776 516 2679 754 528 2680 777 517 2681 755 527 2682 776 433 2683 710 528 2684 777 368 2685 533 528 2686 777 433 2687 710 473 2688 778 353 2689 521 440 2690 657 353 2691 521 473 2692 778 354 2693 522 341 2694 779 329 2695 718 340 2696 479 340 2697 479 329 2698 718 328 2699 476 342 2700 483 332 2701 485 330 2702 480 332 2703 485 342 2704 483 336 2705 486 331 2706 735 338 2707 490 334 2708 489 338 2709 490 331 2710 735 335 2711 780 330 2712 480 483 2713 497 504 2714 504 483 2715 497 330 2716 480 332 2717 485 341 2718 482 536 2719 664 342 2720 483 536 2721 664 341 2722 482 555 2723 665 536 2724 664 537 2725 737 342 2726 483 342 2727 483 537 2728 737 336 2729 486 337 2730 498 557 2731 698 532 2732 499 554 2733 697 532 2734 499 557 2735 698 558 2736 782 339 2737 478 559 2738 781 339 2739 478 558 2740 782 340 2741 479 555 2742 783 341 2743 779 558 2744 782 558 2745 782 341 2746 779 340 2747 479 336 2748 486 560 2749 736 335 2750 487 560 2751 736 336 2752 486 537 2753 737 533 2754 506 559 2755 740 339 2756 507 559 2757 740 533 2758 506 556 2759 741 563 2760 786 337 2761 784 338 2762 785 337 2763 784 563 2764 786 557 2765 787 560 2766 788 338 2767 490 335 2768 780 338 2769 490 560 2770 788 563 2771 789 389 2772 510 345 2773 509 549 2774 575 549 2775 575 345 2776 509 534 2777 555 475 2778 678 369 2779 536 455 2780 654 369 2781 536 475 2782 678 528 2783 777 373 2784 544 518 2785 766 371 2786 541 495 2787 641 373 2788 544 446 2789 642 373 2790 544 495 2791 641 518 2792 766 504 2793 504 483 2794 497 505 2795 722 505 2796 722 483 2797 497 481 2798 690 505 2799 790 481 2800 693 468 2801 671 468 2802 671 481 2803 693 485 2804 692 513 2805 749 506 2806 540 458 2807 539 506 2808 540 513 2809 749 490 2810 701 518 2811 766 490 2812 701 513 2813 749 490 2814 701 518 2815 766 495 2816 641 537 2817 737 536 2818 664 462 2819 663 462 2820 663 489 2821 700 537 2822 737 463 2823 668 409 2824 604 464 2825 669 464 2826 669 409 2827 604 414 2828 607 485 2829 692 470 2830 672 468 2831 671 470 2832 672 485 2833 692 517 2834 755 540 2835 561 538 2836 557 539 2837 566 538 2838 557 540 2839 561 531 2840 553 538 2841 557 541 2842 567 539 2843 566 541 2844 567 538 2845 557 542 2846 556 535 2847 563 534 2848 555 543 2849 554 535 2850 563 543 2851 554 544 2852 560 543 2853 554 540 2854 561 544 2855 560 540 2856 561 543 2857 554 531 2858 553 545 2859 576 547 2860 580 530 2861 572 547 2862 580 545 2863 576 546 2864 585 545 2865 576 548 2866 586 546 2867 585 548 2868 586 545 2869 576 549 2870 575 551 2871 573 552 2872 579 550 2873 574 553 2874 582 550 2875 574 552 2876 579 551 2877 573 547 2878 580 552 2879 579 547 2880 580 551 2881 573 530 2882 572 542 2883 556 343 2884 587 532 2885 791 343 2886 587 542 2887 556 379 2888 551 541 2889 567 486 2890 589 383 2891 564 486 2892 589 541 2893 567 554 2894 792 542 2895 556 554 2896 792 541 2897 567 554 2898 792 542 2899 556 532 2900 791 548 2901 586 347 2902 562 394 2903 583 347 2904 562 548 2905 586 535 2906 563 549 2907 575 535 2908 563 548 2909 586 535 2910 563 549 2911 575 534 2912 555 528 2913 777 368 2914 533 369 2915 536 344 2916 682 550 2917 574 533 2918 793 550 2919 574 344 2920 682 388 2921 570 511 2922 683 553 2923 582 393 2924 581 553 2925 582 511 2926 683 556 2927 794 533 2928 793 553 2929 582 556 2930 794 553 2931 582 533 2932 793 550 2933 574 464 2934 669 489 2935 700 462 2936 663 489 2937 700 464 2938 669 414 2939 607 457 2940 795 353 2941 796 355 2942 797 528 2943 777 475 2944 678 470 2945 672 470 2946 672 517 2947 755 528 2948 777 558 2949 782 561 2950 742 461 2951 744 461 2952 744 555 2953 783 558 2954 782 561 2955 742 559 2956 781 512 2957 743 559 2958 781 561 2959 742 558 2960 782 560 2961 788 488 2962 747 563 2963 789 562 2964 746 563 2965 789 488 2966 747 557 2967 798 562 2968 746 487 2969 745 562 2970 746 557 2971 798 563 2972 789 619 2973 800 321 2974 471 322 2975 472 321 2976 471 619 2977 800 618 2978 799 409 2979 803 411 2980 804 410 2981 801 410 2982 801 408 2983 802 409 2984 803 424 2985 805 423 2986 806 411 2987 804 411 2988 804 423 2989 806 410 2990 801 410 2991 807 425 2992 621 408 2993 625 408 2994 625 425 2995 621 426 2996 624 407 2997 809 398 2998 622 425 2999 621 425 3000 621 428 3001 808 407 3002 809 425 3003 621 410 3004 807 428 3005 808 410 3006 807 423 3007 810 428 3008 808 356 3009 523 431 3010 811 355 3011 524 355 3012 524 431 3013 811 430 3014 812 431 3015 811 435 3016 813 430 3017 812 430 3018 812 435 3019 813 434 3020 814 434 3021 818 435 3022 815 447 3023 817 435 3024 815 448 3025 816 447 3026 817 465 3027 820 466 3028 821 422 3029 819 420 3030 822 422 3031 819 466 3032 821 422 3033 819 441 3034 656 457 3035 655 422 3036 819 457 3037 655 465 3038 820 420 3039 614 463 3040 823 418 3041 612 463 3042 823 420 3043 614 466 3044 824 457 3045 795 355 3046 797 529 3047 826 355 3048 797 430 3049 825 529 3050 826 465 3051 820 411 3052 804 466 3053 821 411 3054 804 465 3055 820 424 3056 805 466 3057 821 411 3058 804 463 3059 827 463 3060 827 411 3061 804 409 3062 803 457 3063 655 424 3064 805 465 3065 820 424 3066 805 457 3067 655 529 3068 828 529 3069 828 430 3070 812 434 3071 814 529 3072 828 434 3073 814 521 3074 829 521 3075 831 434 3076 818 447 3077 817 521 3078 831 447 3079 817 520 3080 830 520 3081 830 428 3082 808 521 3083 831 423 3084 810 521 3085 831 428 3086 808 529 3087 828 423 3088 806 424 3089 805 423 3090 806 529 3091 828 521 3092 829 472 3093 832 375 3094 546 471 3095 676 375 3096 546 472 3097 832 374 3098 833 580 3099 835 301 3100 451 302 3101 452 301 3102 451 580 3103 835 578 3104 834 303 3105 453 580 3106 835 302 3107 452 580 3108 835 303 3109 453 581 3110 836 304 3111 454 581 3112 836 303 3113 453 581 3114 836 304 3115 454 583 3116 837 585 3117 839 584 3118 838 583 3119 837 584 3120 838 585 3121 839 586 3122 840 305 3123 455 583 3124 837 304 3125 454 583 3126 837 305 3127 455 585 3128 839 305 3129 455 588 3130 841 585 3131 839 588 3132 841 305 3133 455 306 3134 456 298 3135 447 571 3136 842 297 3137 448 571 3138 842 298 3139 447 572 3140 843 299 3141 449 572 3142 843 298 3143 447 572 3144 843 299 3145 449 574 3146 844 300 3147 450 574 3148 844 299 3149 449 574 3150 844 300 3151 450 576 3152 845 578 3153 834 576 3154 845 301 3155 451 301 3156 451 576 3157 845 300 3158 450 472 3159 848 436 3160 849 442 3161 846 442 3162 846 374 3163 847 472 3164 848 583 3165 837 582 3166 850 581 3167 836 582 3168 850 583 3169 837 584 3170 838 582 3171 850 580 3172 835 581 3173 836 580 3174 835 582 3175 850 627 3176 851 442 3177 852 584 3178 838 586 3179 840 442 3180 852 582 3181 850 584 3182 838 571 3183 842 325 3184 475 297 3185 448 325 3186 475 571 3187 842 625 3188 853 621 3189 854 322 3190 472 323 3191 473 322 3192 472 621 3193 854 619 3194 800 324 3195 474 621 3196 854 323 3197 473 621 3198 854 324 3199 474 623 3200 855 625 3201 853 624 3202 856 623 3203 855 624 3204 856 625 3205 853 626 3206 857 625 3207 853 623 3208 855 325 3209 475 325 3210 475 623 3211 855 324 3212 474 570 3213 858 625 3214 853 571 3215 842 625 3216 853 570 3217 858 626 3218 857 572 3219 843 570 3220 858 571 3221 842 570 3222 858 572 3223 843 573 3224 859 572 3225 843 574 3226 844 575 3227 860 575 3228 860 573 3229 859 572 3230 843 574 3231 844 576 3232 845 577 3233 861 577 3234 861 575 3235 860 574 3236 844 576 3237 845 578 3238 834 577 3239 861 577 3240 861 578 3241 834 579 3242 862 627 3243 851 578 3244 834 580 3245 835 578 3246 834 627 3247 851 579 3248 862 406 3249 864 397 3250 514 398 3251 590 406 3252 864 398 3253 590 407 3254 863 401 3255 515 406 3256 864 404 3257 615 406 3258 864 401 3259 515 397 3260 514 564 3261 867 569 3262 865 565 3263 866 569 3264 865 564 3265 867 568 3266 868 564 3267 867 291 3268 441 568 3269 868 291 3270 441 564 3271 867 289 3272 439 567 3273 869 289 3274 439 564 3275 867 289 3276 439 567 3277 869 290 3278 440 566 3279 870 564 3280 867 565 3281 866 564 3282 867 566 3283 870 567 3284 869 618 3285 799 291 3286 441 321 3287 471 291 3288 441 618 3289 799 568 3290 868 316 3291 466 317 3292 467 609 3293 871 609 3294 871 608 3295 872 316 3296 466 609 3297 871 612 3298 873 610 3299 874 612 3300 873 609 3301 871 611 3302 875 317 3303 467 318 3304 468 611 3305 875 611 3306 875 609 3307 871 317 3308 467 611 3309 875 613 3310 876 612 3311 873 612 3312 873 613 3313 876 614 3314 877 318 3315 468 319 3316 469 611 3317 875 613 3318 876 611 3319 875 319 3320 469 613 3321 876 615 3322 878 614 3323 877 614 3324 877 615 3325 878 616 3326 879 613 3327 876 320 3328 470 615 3329 878 320 3330 470 613 3331 876 319 3332 469 566 3333 870 615 3334 878 567 3335 869 615 3336 878 566 3337 870 616 3338 879 615 3339 878 290 3340 440 567 3341 869 290 3342 440 615 3343 878 320 3344 470 618 3345 799 569 3346 865 568 3347 868 617 3348 880 569 3349 865 618 3350 799 620 3351 881 617 3352 880 619 3353 800 619 3354 800 617 3355 880 618 3356 799 619 3357 800 621 3358 854 620 3359 881 622 3360 882 620 3361 881 621 3362 854 621 3363 854 623 3364 855 624 3365 856 624 3366 856 622 3367 882 621 3368 854 438 3369 883 403 3370 616 404 3371 615 438 3372 883 404 3373 615 443 3374 884 404 3375 615 406 3376 864 443 3377 884 443 3378 884 406 3379 864 523 3380 885 436 3381 849 438 3382 883 443 3383 884 443 3384 884 442 3385 846 436 3386 849 582 3387 850 443 3388 886 627 3389 851 573 3390 859 443 3391 886 570 3392 858 443 3393 886 582 3394 850 442 3395 852 443 3396 886 626 3397 857 570 3398 858 579 3399 862 575 3400 860 577 3401 861 579 3402 862 443 3403 886 575 3404 860 443 3405 886 579 3406 862 627 3407 851 575 3408 860 443 3409 886 573 3410 859 624 3411 856 443 3412 886 622 3413 882 443 3414 886 624 3415 856 626 3416 857 599 3417 887 598 3418 888 311 3419 461 599 3420 887 311 3421 461 312 3422 462 601 3423 889 599 3424 887 312 3425 462 601 3426 889 312 3427 462 313 3428 463 601 3429 889 314 3430 464 603 3431 890 314 3432 464 601 3433 889 313 3434 463 603 3435 890 606 3436 891 604 3437 892 606 3438 891 603 3439 890 605 3440 893 314 3441 464 315 3442 465 603 3443 890 603 3444 890 315 3445 465 605 3446 893 315 3447 465 316 3448 466 605 3449 893 608 3450 872 605 3451 893 316 3452 466 605 3453 893 608 3454 872 606 3455 891 607 3456 894 606 3457 891 608 3458 872 522 3459 895 407 3460 809 520 3461 830 407 3462 809 428 3463 808 520 3464 830 448 3465 816 449 3466 896 447 3467 817 447 3468 817 449 3469 896 432 3470 897 432 3471 897 522 3472 895 447 3473 817 520 3474 830 447 3475 817 522 3476 895 608 3477 872 610 3478 874 607 3479 894 610 3480 874 608 3481 872 609 3482 871 407 3483 863 522 3484 898 406 3485 864 523 3486 885 406 3487 864 522 3488 898 569 3489 865 617 3490 880 523 3491 899 610 3492 874 523 3493 899 607 3494 894 443 3495 886 523 3496 899 622 3497 882 622 3498 882 523 3499 899 620 3500 881 620 3501 881 523 3502 899 617 3503 880 612 3504 873 523 3505 899 610 3506 874 614 3507 877 523 3508 899 612 3509 873 616 3510 879 523 3511 899 614 3512 877 566 3513 870 523 3514 899 616 3515 879 565 3516 866 523 3517 899 566 3518 870 523 3519 899 565 3520 866 569 3521 865 497 3522 709 359 3523 901 449 3524 900 497 3525 709 449 3526 900 448 3527 774 589 3528 903 308 3529 458 591 3530 902 308 3531 458 589 3532 903 307 3533 457 591 3534 902 309 3535 459 593 3536 904 309 3537 459 591 3538 902 308 3539 458 309 3540 459 310 3541 460 593 3542 904 593 3543 904 310 3544 460 595 3545 905 374 3546 833 361 3547 906 375 3548 546 375 3549 546 361 3550 906 376 3551 547 497 3552 709 376 3553 547 361 3554 906 361 3555 906 359 3556 901 497 3557 709 360 3558 907 586 3559 840 587 3560 908 588 3561 841 586 3562 840 585 3563 839 587 3564 908 586 3565 840 588 3566 841 588 3567 841 589 3568 903 587 3569 908 587 3570 908 589 3571 903 590 3572 909 306 3573 456 307 3574 457 588 3575 841 588 3576 841 307 3577 457 589 3578 903 589 3579 903 591 3580 902 590 3581 909 592 3582 910 590 3583 909 591 3584 902 591 3585 902 593 3586 904 592 3587 910 594 3588 911 592 3589 910 593 3590 904 593 3591 904 595 3592 905 594 3593 911 596 3594 912 594 3595 911 595 3596 905 442 3597 846 360 3598 913 374 3599 847 374 3600 847 360 3601 913 361 3602 914 442 3603 852 586 3604 840 360 3605 907 595 3606 905 311 3607 461 598 3608 888 311 3609 461 595 3610 905 310 3611 460 599 3612 887 601 3613 889 602 3614 915 602 3615 915 600 3616 916 599 3617 887 601 3618 889 603 3619 890 604 3620 892 604 3621 892 602 3622 915 601 3623 889 359 3624 918 361 3625 914 360 3626 913 360 3627 913 326 3628 917 359 3629 918 359 3630 918 326 3631 917 449 3632 920 326 3633 917 432 3634 919 449 3635 920 590 3636 909 360 3637 907 587 3638 908 595 3639 905 598 3640 888 597 3641 921 597 3642 921 596 3643 912 595 3644 905 598 3645 888 599 3646 887 600 3647 916 600 3648 916 597 3649 921 598 3650 888 326 3651 922 606 3652 891 607 3653 894 522 3654 898 432 3655 919 523 3656 885 326 3657 917 523 3658 885 432 3659 919 326 3660 922 607 3661 894 523 3662 899 326 3663 922 604 3664 892 606 3665 891 326 3666 922 602 3667 915 604 3668 892 326 3669 922 600 3670 916 602 3671 915 600 3672 916 326 3673 922 597 3674 921 596 3675 912 326 3676 922 594 3677 911 326 3678 922 596 3679 912 597 3680 921 592 3681 910 326 3682 922 360 3683 907 326 3684 922 592 3685 910 594 3686 911 592 3687 910 360 3688 907 590 3689 909 645 3690 926 637 3691 924 653 3692 925 637 3693 924 645 3694 926 629 3695 923 645 3696 926 636 3697 928 628 3698 927 636 3699 928 645 3700 926 653 3701 925 654 3702 931 646 3703 932 630 3704 929 630 3705 929 638 3706 930 654 3707 931 646 3708 932 654 3709 931 629 3710 923 629 3711 923 654 3712 931 637 3713 924 639 3714 934 647 3715 936 631 3716 933 647 3717 936 639 3718 934 655 3719 935 655 3720 935 630 3721 929 647 3722 936 630 3723 929 655 3724 935 638 3725 930 632 3726 937 640 3727 938 656 3728 939 632 3729 937 656 3730 939 648 3731 940 648 3732 940 639 3733 934 631 3734 933 639 3735 934 648 3736 940 656 3737 939 657 3738 943 633 3739 941 641 3740 942 633 3741 941 657 3742 943 649 3743 944 640 3744 938 632 3745 937 657 3746 943 657 3747 943 632 3748 937 649 3749 944 642 3750 946 650 3751 948 634 3752 945 650 3753 948 642 3754 946 658 3755 947 641 3756 942 650 3757 948 658 3758 947 650 3759 948 641 3760 942 633 3761 941 659 3762 951 651 3763 952 635 3764 949 659 3765 951 635 3766 949 643 3767 950 651 3768 952 642 3769 946 634 3770 945 642 3771 946 651 3772 952 659 3773 951 652 3774 956 636 3775 954 660 3776 955 636 3777 954 652 3778 956 628 3779 953 643 3780 950 635 3781 949 660 3782 955 635 3783 949 652 3784 956 660 3785 955 653 3786 957 637 3787 958 644 3788 959 644 3789 959 636 3790 960 653 3791 957 654 3792 961 638 3793 962 644 3794 959 644 3795 959 637 3796 958 654 3797 961 655 3798 963 639 3799 964 644 3800 959 644 3801 959 638 3802 962 655 3803 963 656 3804 965 640 3805 966 644 3806 959 644 3807 959 639 3808 964 656 3809 965 657 3810 967 641 3811 968 644 3812 959 644 3813 959 640 3814 966 657 3815 967 658 3816 969 642 3817 970 644 3818 959 644 3819 959 641 3820 968 658 3821 969 659 3822 971 643 3823 972 644 3824 959 644 3825 959 642 3826 970 659 3827 971 660 3828 973 636 3829 960 644 3830 959 644 3831 959 643 3832 972 660 3833 973 686 3834 976 678 3835 977 662 3836 974 662 3837 974 670 3838 975 686 3839 976 678 3840 977 669 3841 979 661 3842 978 669 3843 979 678 3844 977 686 3845 976 687 3846 982 679 3847 983 663 3848 980 663 3849 980 671 3850 981 687 3851 982 679 3852 983 670 3853 975 662 3854 974 670 3855 975 679 3856 983 687 3857 982 672 3858 985 680 3859 987 664 3860 984 680 3861 987 672 3862 985 688 3863 986 688 3864 986 663 3865 980 680 3866 987 663 3867 980 688 3868 986 671 3869 981 665 3870 988 673 3871 989 689 3872 990 665 3873 988 689 3874 990 681 3875 991 681 3876 991 672 3877 985 664 3878 984 672 3879 985 681 3880 991 689 3881 990 674 3882 993 682 3883 995 666 3884 992 682 3885 995 674 3886 993 690 3887 994 673 3888 989 665 3889 988 690 3890 994 690 3891 994 665 3892 988 682 3893 995 675 3894 997 683 3895 999 667 3896 996 683 3897 999 675 3898 997 691 3899 998 674 3900 993 666 3901 992 691 3902 998 691 3903 998 666 3904 992 683 3905 999 692 3906 1002 684 3907 1003 668 3908 1000 692 3909 1002 668 3910 1000 676 3911 1001 684 3912 1003 675 3913 997 667 3914 996 675 3915 997 684 3916 1003 692 3917 1002 685 3918 1007 669 3919 1005 693 3920 1006 669 3921 1005 685 3922 1007 661 3923 1004 685 3924 1007 693 3925 1006 668 3926 1000 676 3927 1001 668 3928 1000 693 3929 1006 686 3930 1008 670 3931 1009 677 3932 1010 677 3933 1010 669 3934 1011 686 3935 1008 687 3936 1012 671 3937 1013 677 3938 1010 677 3939 1010 670 3940 1009 687 3941 1012 688 3942 1014 672 3943 1015 677 3944 1010 677 3945 1010 671 3946 1013 688 3947 1014 689 3948 1016 673 3949 1017 677 3950 1010 677 3951 1010 672 3952 1015 689 3953 1016 690 3954 1018 674 3955 1019 677 3956 1010 677 3957 1010 673 3958 1017 690 3959 1018 691 3960 1020 675 3961 1021 677 3962 1010 677 3963 1010 674 3964 1019 691 3965 1020 692 3966 1022 676 3967 1023 677 3968 1010 677 3969 1010 675 3970 1021 692 3971 1022 693 3972 1024 669 3973 1011 677 3974 1010 677 3975 1010 676 3976 1023 693 3977 1024 719 3978 1027 711 3979 1028 695 3980 1025 695 3981 1025 703 3982 1026 719 3983 1027 711 3984 1028 702 3985 1030 694 3986 1029 702 3987 1030 711 3988 1028 719 3989 1027 720 3990 1033 712 3991 1034 696 3992 1031 696 3993 1031 704 3994 1032 720 3995 1033 712 3996 1034 720 3997 1033 695 3998 1025 695 3999 1025 720 4000 1033 703 4001 1026 705 4002 1036 713 4003 1038 697 4004 1035 713 4005 1038 705 4006 1036 721 4007 1037 721 4008 1037 696 4009 1031 713 4010 1038 696 4011 1031 721 4012 1037 704 4013 1032 698 4014 1039 706 4015 1040 722 4016 1041 698 4017 1039 722 4018 1041 714 4019 1042 714 4020 1042 705 4021 1036 697 4022 1035 705 4023 1036 714 4024 1042 722 4025 1041 723 4026 1045 699 4027 1043 707 4028 1044 699 4029 1043 723 4030 1045 715 4031 1046 706 4032 1040 698 4033 1039 723 4034 1045 723 4035 1045 698 4036 1039 715 4037 1046 708 4038 1048 716 4039 1050 700 4040 1047 716 4041 1050 708 4042 1048 724 4043 1049 707 4044 1044 699 4045 1043 724 4046 1049 724 4047 1049 699 4048 1043 716 4049 1050 725 4050 1053 717 4051 1054 701 4052 1051 725 4053 1053 701 4054 1051 709 4055 1052 717 4056 1054 708 4057 1048 700 4058 1047 708 4059 1048 717 4060 1054 725 4061 1053 718 4062 1058 702 4063 1056 726 4064 1057 702 4065 1056 718 4066 1058 694 4067 1055 718 4068 1058 726 4069 1057 701 4070 1051 709 4071 1052 701 4072 1051 726 4073 1057 719 4074 1059 703 4075 1060 710 4076 1061 710 4077 1061 702 4078 1062 719 4079 1059 720 4080 1063 704 4081 1064 710 4082 1061 710 4083 1061 703 4084 1060 720 4085 1063 721 4086 1065 705 4087 1066 710 4088 1061 710 4089 1061 704 4090 1064 721 4091 1065 722 4092 1067 706 4093 1068 710 4094 1061 710 4095 1061 705 4096 1066 722 4097 1067 723 4098 1069 707 4099 1070 710 4100 1061 710 4101 1061 706 4102 1068 723 4103 1069 724 4104 1071 708 4105 1072 710 4106 1061 710 4107 1061 707 4108 1070 724 4109 1071 725 4110 1073 709 4111 1074 710 4112 1061 710 4113 1061 708 4114 1072 725 4115 1073 726 4116 1075 702 4117 1062 710 4118 1061 710 4119 1061 709 4120 1074 726 4121 1075 744 4122 1079 736 4123 1077 752 4124 1078 736 4125 1077 744 4126 1079 728 4127 1076 744 4128 1079 735 4129 1081 727 4130 1080 735 4131 1081 744 4132 1079 752 4133 1078 753 4134 1084 745 4135 1085 729 4136 1082 729 4137 1082 737 4138 1083 753 4139 1084 745 4140 1085 753 4141 1084 728 4142 1076 728 4143 1076 753 4144 1084 736 4145 1077 738 4146 1087 746 4147 1089 730 4148 1086 746 4149 1089 738 4150 1087 754 4151 1088 754 4152 1088 729 4153 1082 746 4154 1089 729 4155 1082 754 4156 1088 737 4157 1083 731 4158 1090 739 4159 1091 755 4160 1092 731 4161 1090 755 4162 1092 747 4163 1093 747 4164 1093 738 4165 1087 730 4166 1086 738 4167 1087 747 4168 1093 755 4169 1092 756 4170 1096 732 4171 1094 740 4172 1095 732 4173 1094 756 4174 1096 748 4175 1097 739 4176 1091 731 4177 1090 756 4178 1096 756 4179 1096 731 4180 1090 748 4181 1097 741 4182 1099 749 4183 1101 733 4184 1098 749 4185 1101 741 4186 1099 757 4187 1100 740 4188 1095 749 4189 1101 757 4190 1100 749 4191 1101 740 4192 1095 732 4193 1094 758 4194 1104 750 4195 1105 734 4196 1102 758 4197 1104 734 4198 1102 742 4199 1103 750 4200 1105 741 4201 1099 733 4202 1098 741 4203 1099 750 4204 1105 758 4205 1104 751 4206 1109 735 4207 1107 759 4208 1108 735 4209 1107 751 4210 1109 727 4211 1106 751 4212 1109 759 4213 1108 734 4214 1102 742 4215 1103 734 4216 1102 759 4217 1108 752 4218 1110 736 4219 1111 743 4220 1112 743 4221 1112 735 4222 1113 752 4223 1110 753 4224 1114 737 4225 1115 743 4226 1112 743 4227 1112 736 4228 1111 753 4229 1114 754 4230 1116 738 4231 1117 743 4232 1112 743 4233 1112 737 4234 1115 754 4235 1116 755 4236 1118 739 4237 1119 743 4238 1112 743 4239 1112 738 4240 1117 755 4241 1118 756 4242 1120 740 4243 1121 743 4244 1112 743 4245 1112 739 4246 1119 756 4247 1120 757 4248 1122 741 4249 1123 743 4250 1112 743 4251 1112 740 4252 1121 757 4253 1122 758 4254 1124 742 4255 1125 743 4256 1112 743 4257 1112 741 4258 1123 758 4259 1124 759 4260 1126 735 4261 1113 743 4262 1112 743 4263 1112 742 4264 1125 759 4265 1126 770 4266 1128 776 4267 1129 761 4268 1127 767 4269 1130 761 4270 1127 776 4271 1129 760 4272 1131 766 4273 1132 770 4274 1128 776 4275 1129 770 4276 1128 766 4277 1132 766 4278 1132 777 4279 1133 776 4280 1129 777 4281 1133 766 4282 1132 769 4283 1134 776 4284 1129 777 4285 1133 767 4286 1130 767 4287 1130 777 4288 1133 768 4289 1135 769 4290 1134 763 4291 1136 771 4292 1137 769 4293 1134 771 4294 1137 777 4295 1133 762 4296 1138 777 4297 1133 771 4298 1137 777 4299 1133 762 4300 1138 768 4301 1135 770 4302 1128 763 4303 1136 760 4304 1131 763 4305 1136 770 4306 1128 771 4307 1137 771 4308 1137 770 4309 1128 761 4310 1127 761 4311 1127 762 4312 1138 771 4313 1137 772 4314 1139 764 4315 1140 774 4316 1141 772 4317 1139 774 4318 1141 778 4319 1142 761 4320 1127 778 4321 1142 774 4322 1141 778 4323 1142 761 4324 1127 767 4325 1130 767 4326 1130 779 4327 1143 778 4328 1142 779 4329 1143 767 4330 1130 768 4331 1135 778 4332 1142 773 4333 1144 772 4334 1139 773 4335 1144 778 4336 1142 779 4337 1143 775 4338 1145 779 4339 1143 762 4340 1138 768 4341 1135 762 4342 1138 779 4343 1143 765 4344 1146 773 4345 1144 775 4346 1145 779 4347 1143 775 4348 1145 773 4349 1144 774 4350 1141 775 4351 1145 761 4352 1127 761 4353 1127 775 4354 1145 762 4355 1138 775 4356 1145 774 4357 1141 764 4358 1140 764 4359 1140 765 4360 1146 775 4361 1145</p>
+        </triangles>
+      </mesh>
+    </geometry>
+    <geometry id="page-lib" name="pageMesh">
+      <mesh>
+        <source id="page-POSITION">
+          <float_array id="page-POSITION-array" count="12">
+-5.405307 -0.000000 6.538295
+5.442408 -0.000000 6.538295
+-5.405307 0.000000 -6.647713
+5.442408 0.000000 -6.647713
+</float_array>
+          <technique_common>
+            <accessor source="#page-POSITION-array" count="4" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="page-Normal0">
+          <float_array id="page-Normal0-array" count="12">
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+</float_array>
+          <technique_common>
+            <accessor source="#page-Normal0-array" count="4" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="page-UV0">
+          <float_array id="page-UV0-array" count="8">
+0.413038 0.204575
+0.403514 0.204575
+0.413038 0.195051
+0.403514 0.195051
+</float_array>
+          <technique_common>
+            <accessor source="#page-UV0-array" count="4" stride="2">
+              <param name="S" type="float"/>
+              <param name="T" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <vertices id="page-VERTEX">
+          <input semantic="POSITION" source="#page-POSITION"/>
+          <input semantic="NORMAL" source="#page-Normal0"/>
+        </vertices>
+        <triangles count="2" material="Album_Texture">
+          <input semantic="VERTEX" offset="0" source="#page-VERTEX"/>
+          <input semantic="TEXCOORD" offset="1" set="0" source="#page-UV0"/>
+          <p> 1 1 3 3 0 0 0 0 3 3 2 2</p>
+        </triangles>
+      </mesh>
+    </geometry>
+    <geometry id="cover_image-lib" name="cover_imageMesh">
+      <mesh>
+        <source id="cover_image-POSITION">
+          <float_array id="cover_image-POSITION-array" count="48">
+-3.207907 -6.562253 1.606693
+-1.067386 -6.535131 1.601104
+1.073134 -6.508008 1.595516
+3.213655 -6.480886 1.589928
+-3.235029 -4.421724 1.606737
+-1.094509 -4.394602 1.601149
+1.046012 -4.367480 1.595561
+3.186533 -4.340358 1.589973
+-3.262151 -2.281197 1.606782
+-1.121631 -2.254075 1.601194
+1.018890 -2.226953 1.595605
+3.159411 -2.199830 1.590017
+-3.289273 -0.140668 1.606827
+-1.148753 -0.113546 1.601238
+0.991768 -0.086424 1.595650
+3.132289 -0.059302 1.590062
+</float_array>
+          <technique_common>
+            <accessor source="#cover_image-POSITION-array" count="16" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="cover_image-Normal0">
+          <float_array id="cover_image-Normal0-array" count="48">
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002610 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002610 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+0.002611 0.000012 0.999997
+</float_array>
+          <technique_common>
+            <accessor source="#cover_image-Normal0-array" count="16" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="cover_image-UV0">
+          <float_array id="cover_image-UV0-array" count="32">
+0.000000 0.000000
+0.333333 0.000000
+0.666667 0.000000
+1.000000 0.000000
+0.000000 0.333333
+0.333333 0.333333
+0.666667 0.333333
+1.000000 0.333333
+0.000000 0.666667
+0.333333 0.666667
+0.666667 0.666667
+1.000000 0.666667
+0.000000 1.000000
+0.333333 1.000000
+0.666667 1.000000
+1.000000 1.000000
+</float_array>
+          <technique_common>
+            <accessor source="#cover_image-UV0-array" count="16" stride="2">
+              <param name="S" type="float"/>
+              <param name="T" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <vertices id="cover_image-VERTEX">
+          <input semantic="POSITION" source="#cover_image-POSITION"/>
+          <input semantic="NORMAL" source="#cover_image-Normal0"/>
+        </vertices>
+        <triangles count="18" material="Album_Cute_00011_lambert4">
+          <input semantic="VERTEX" offset="0" source="#cover_image-VERTEX"/>
+          <input semantic="TEXCOORD" offset="1" set="0" source="#cover_image-UV0"/>
+          <p> 4 4 1 1 5 5 1 1 4 4 0 0 6 6 5 5 1 1 6 6 1 1 2 2 6 6 3 3 7 7 3 3 6 6 2 2 8 8 5 5 9 9 5 5 8 8 4 4 9 9 6 6 10 10 6 6 9 9 5 5 10 10 7 7 11 11 7 7 10 10 6 6 12 12 9 9 13 13 9 9 12 12 8 8 14 14 13 13 9 9 14 14 9 9 10 10 14 14 11 11 15 15 11 11 14 14 10 10</p>
+        </triangles>
+      </mesh>
+    </geometry>
+    <geometry id="BBOX-lib" name="BBOXMesh">
+      <mesh>
+        <source id="BBOX-POSITION">
+          <float_array id="BBOX-POSITION-array" count="24">
+-9.381669 -7.673521 3.543655
+9.381669 -7.673521 3.543655
+-9.381669 7.673521 3.543655
+9.381669 7.673521 3.543655
+-9.381669 7.673521 -3.543655
+9.381669 7.673521 -3.543655
+-9.381669 -7.673521 -3.543655
+9.381669 -7.673521 -3.543655
+</float_array>
+          <technique_common>
+            <accessor source="#BBOX-POSITION-array" count="8" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="BBOX-Normal0">
+          <float_array id="BBOX-Normal0-array" count="108">
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 0.000000 1.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.000000 1.000000 0.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 0.000000 -1.000000
+0.000000 -1.000000 0.000000
+0.000000 -1.000000 0.000000
+0.000000 -1.000000 0.000000
+0.000000 -1.000000 0.000000
+0.000000 -1.000000 0.000000
+0.000000 -1.000000 0.000000
+1.000000 0.000000 0.000000
+1.000000 0.000000 0.000000
+1.000000 0.000000 0.000000
+1.000000 0.000000 0.000000
+1.000000 0.000000 0.000000
+1.000000 0.000000 0.000000
+-1.000000 0.000000 0.000000
+-1.000000 0.000000 0.000000
+-1.000000 0.000000 0.000000
+-1.000000 0.000000 0.000000
+-1.000000 0.000000 0.000000
+-1.000000 0.000000 0.000000
+</float_array>
+          <technique_common>
+            <accessor source="#BBOX-Normal0-array" count="36" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="BBOX-UV0">
+          <float_array id="BBOX-UV0-array" count="28">
+0.375000 0.000000
+0.625000 0.000000
+0.375000 0.250000
+0.625000 0.250000
+0.375000 0.500000
+0.625000 0.500000
+0.375000 0.750000
+0.625000 0.750000
+0.375000 1.000000
+0.625000 1.000000
+0.875000 0.000000
+0.875000 0.250000
+0.125000 0.000000
+0.125000 0.250000
+</float_array>
+          <technique_common>
+            <accessor source="#BBOX-UV0-array" count="14" stride="2">
+              <param name="S" type="float"/>
+              <param name="T" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <vertices id="BBOX-VERTEX">
+          <input semantic="POSITION" source="#BBOX-POSITION"/>
+        </vertices>
+        <triangles count="12" material="lambert1">
+          <input semantic="VERTEX" offset="0" source="#BBOX-VERTEX"/>
+          <input semantic="NORMAL" offset="1" source="#BBOX-Normal0"/>
+          <input semantic="TEXCOORD" offset="2" set="0" source="#BBOX-UV0"/>
+          <p> 3 0 3 2 1 2 0 2 0 3 3 3 0 4 0 1 5 1 2 6 2 3 7 3 5 8 5 2 9 2 5 10 5 4 11 4 7 12 7 6 13 6 4 14 4 7 15 7 4 16 4 5 17 5 1 18 9 0 19 8 6 20 6 1 21 9 6 22 6 7 23 7 7 24 10 5 25 11 1 26 1 3 27 3 1 28 1 5 29 11 2 30 2 6 31 12 0 32 0 6 33 12 2 34 2 4 35 13</p>
+        </triangles>
+      </mesh>
+    </geometry>
+  </library_geometries>
+  <library_controllers>
+    <controller id="Album_CuteController">
+      <skin source="#Album_Cute-lib">
+        <bind_shape_matrix>-1.000000 0.000000 -0.000000 0.588980 -0.000000 0.000000 1.000000 0.054709 0.000000 1.000000 -0.000000 0.818401 0.000000 0.000000 0.000000 1.000000
+</bind_shape_matrix>
+        <source id="Album_CuteController-Joints">
+          <Name_array id="Album_CuteController-Joints-array" count="8">
+ joint1 joint2 joint3 joint4 joint8 joint5 joint6 joint7</Name_array>
+          <technique_common>
+            <accessor source="#Album_CuteController-Joints-array" count="8">
+              <param type="name"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="Album_CuteController-Matrices">
+          <float_array id="Album_CuteController-Matrices-array" count="128">
+
+1.000000 0.000000 0.000000 -0.015813 -0.000000 1.000000 0.000000 -0.000000 0.000000 -0.000000 1.000000 2.335608 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 0.999990 2.253925 0.000000 1.000000 0.000000 0.000000 -0.999990 0.000000 -0.004360 -5.645527 0.000000 0.000000 0.000000 1.000000
+0.126663 -0.000000 0.991946 -0.487129 -0.000000 1.000000 -0.000000 -0.000000 -0.991946 -0.000000 0.126663 -5.758953 0.000000 0.000000 0.000000 1.000000
+0.999966 -0.000000 0.008294 5.572175 -0.000000 1.000000 -0.000000 -0.000000 -0.008294 -0.000000 0.999966 -1.762244 0.000000 0.000000 0.000000 1.000000
+1.000000 -0.000000 0.000000 -2.959492 -0.000000 1.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000000 -1.786851 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 -5.798358 -0.000000 1.000000 0.000000 -0.000000 0.000000 -0.000000 1.000000 2.378103 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 -5.841162 -0.000000 1.000000 0.000000 -0.000000 0.000000 -0.000000 1.000000 -1.918753 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 -3.408634 -0.000000 1.000000 0.000000 -0.000000 0.000000 -0.000000 1.000000 -2.282387 0.000000 0.000000 0.000000 1.000000</float_array>
+          <technique_common>
+            <accessor source="#Album_CuteController-Matrices-array" count="8" stride="16">
+              <param type="float4x4"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="Album_CuteController-Weights">
+          <float_array id="Album_CuteController-Weights-array" count="823">
+
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.631068 0.368932 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 0.631068 0.368932 1.000000 1.000000 1.000000 0.631068 0.368932 1.000000 0.631068 0.368932 0.631068 0.368932 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.631068 0.368932 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.631068 0.368932 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.631068 0.368932 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.631068 0.368932 1.000000 0.631068 0.368932 1.000000 0.631068 0.368932 1.000000 0.631068
+0.368932 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.582524 0.417476 0.582524 0.417476 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.407767 0.592233 0.407767 0.592233
+0.582524 0.417476 0.582524 0.417476 0.407767 0.592233 0.407767 0.592233 0.048544 0.951456 0.048544 0.951456 1.000000 0.048544 0.951456 0.048544
+0.951456 0.582524 0.417476 0.582524 0.417476 0.407767 0.592233 0.407767 0.592233 1.000000 1.000000 1.000000 1.000000 1.000000 0.582524 0.417476
+0.582524 0.417476 0.407767 0.592233 0.407767 0.592233 0.048544 0.951456 0.048544 0.951456 0.048544 0.951456 0.048544 0.951456 0.407767 0.592233
+0.582524 0.417476 1.000000 0.048544 0.951456 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.582524 0.417476 1.000000 0.048544 0.951456 0.407767 0.592233 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
+1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000</float_array>
+          <technique_common>
+            <accessor source="#Album_CuteController-Weights-array" count="823">
+              <param type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <joints>
+          <input semantic="JOINT" source="#Album_CuteController-Joints"/>
+          <input semantic="INV_BIND_MATRIX" source="#Album_CuteController-Matrices"/>
+        </joints>
+        <vertex_weights count="780">
+          <input semantic="JOINT" offset="0" source="#Album_CuteController-Joints"/>
+          <input semantic="WEIGHT" offset="1" source="#Album_CuteController-Weights"/>
+          <vcount>1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1</vcount>
+          <v>6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 5 9 5 10 5 11 5 12 0 13 0 14 0 15 0 16 0 17 6 18 6 19 6 20 0 21 6 22 6 23 6 24 6 25 5 26 5 27 5 28 5 29 5 30 5 31 5 32 6 33 0 34 0 35 0 36 6 37 0 38 6 39 0 40 0 41 5 42 5 43 0 44 5 45 0 46 6 47 6 48 6 49 0 50 6 51 0 52 6 53 6 54 5 55 0 56 0 57 0 58 6 59 6 60 6 61 0 62 6 63 0 64 6 65 6 66 5 67 0 68 6 69 6 70 0 71 6 72 5 73 6 74 0 75 0 76 0 77 0 78 6 79 6 80 6 81 6 82 6 83 0 84 0 85 0 86 6 87 5 88 5 89 5 90 5 91 5 92 5 93 5 94 5 95 5 96 0 97 5 98 5 99 0 100 0 101 0 102 5 103 0 104 0 105 5 106 0 107 5 108 0 109 0 110 0 111 0 112 6 113 6 114 0 115 0 116 6 117 0 118 6 119 6 120 0 121 0 122 0 123 6 124 0 125 6 126 0 127 5 128 6 129 6 130 6 131 6 132 5 133 6 134 6 135 6 136 0 137 5 138 5 139 6 140 6 141 6 142 0 143 0 144 0 145 6 146 6 147 0 148 0 149 5 150 5 151 0 152 0 153 5 154 5 155 5 156 5 157 0 158 0 159 6 160 5 161 5 162 5 163 5 164 5 165 0 166 5 167 0 168 0 169 0 170 6 171 0 172 5 173 5 174 0 175 5 176 0 177 0 178 6 179 0 180 6 181 5 182 6 183 6 184 5 185 5 186 5 187 6 188 6 189 5 190 0 191 0 192 6 193 0 194 0 195 5 196 0 197 0 198 5 199 0 200 0 201 5 202 0 203 0 204 5 205 0 206 0 207 5 208 6 209 6 210 6 211 6 212 6 213 6 214 6 215 6 216 6 217 6 218 6 219 6 220 6 221 6 222 6 223 6 224 6 225 6 226 6 227 6 228 6 229 6 230 6 231 6 232 6 233 6 234 6 235 6 236 6 237 6 238 6 239 6 240 6 241 6 242 6 243 6 244 6 245 6 246 6 247 6 248 6 249 6 250 6 251 6 252 6 253 6 254 6 255 6 256 6 257 6 258 6 259 6 260 6 261 6 262 6 263 6 264 6 265 6 266 6 267 6 268 6 269 6 270 6 271 6 272 6 273 3 274 3 275 3 276 3 277 3 278 3 279 3 280 3 281 3 282 3 283 3 284 3 285 3 286 3 287 3 288 3 289 3 290 3 291 3 292 3 293 3 294 3 295 3 296 3 297 3 298 3 299 3 300 3 301 3 302 3 303 3 304 3 305 3 306 3 307 3 308 3 309 3 310 3 311 3 312 3 313 3 314 3 315 3 316 3 317 3 318 3 319 3 320 3 321 3 322 3 323 3 324 3 325 3 326 3 327 3 328 3 329 3 330 3 331 3 332 3 333 3 334 3 335 3 336 3 337 3 338 3 339 0 340 0 341 0 342 0 343 0 344 0 345 0 346 0 347 0 348 0 349 0 350 0 351 0 352 0 353 0 354 0 355 0 356 0 357 0 358 0 359 0 360 2 361 2 362 3 363 2 364 3 365 2 366 2 367 3 368 3 369 3 370 3 371 0 372 0 373 3 374 3 375 3 376 0 377 0 378 0 379 0 380 0 381 0 382 0 383 0 384 0 385 0 386 0 387 0 388 3 389 3 390 3 391 0 392 0 393 0 394 0 395 0 396 0 397 0 398 0 399 0 400 0 401 0 402 0 403 0 404 0 405 0 406 0 407 0 408 0 409 0 410 2 411 2 412 3 413 2 414 3 415 2 416 3 417 2 418 3 419 2 420 3 421 2 422 3 423 2 424 3 425 2 426 3 427 2 428 2 429 3 430 2 431 3 432 2 433 3 434 2 435 3 436 2 437 3 438 2 439 3 440 2 441 2 442 2 443 2 444 2 445 2 446 3 447 2 448 3 449 2 450 3 451 2 452 3 453 2 454 3 455 2 456 3 457 2 458 3 459 2 460 3 461 2 462 3 463 2 464 3 465 2 466 2 467 3 468 0 469 3 470 3 471 3 472 0 473 3 474 3 475 3 476 3 477 3 478 3 479 3 480 3 481 3 482 3 483 0 484 0 485 0 486 3 487 3 488 3 489 0 490 0 491 0 492 0 493 0 494 0 495 0 496 3 497 0 498 0 499 0 500 0 501 0 502 2 503 3 504 2 505 2 506 3 507 2 508 3 509 0 510 0 511 0 512 0 513 3 514 3 515 3 516 0 517 0 518 0 519 0 520 0 521 0 522 0 523 0 524 0 525 0 526 0 527 0 528 0 529 0 530 0 531 0 532 0 533 0 534 0 535 0 536 0 537 0 538 0 539 3 540 0 541 0 542 0 543 0 544 0 545 0 546 0 547 0 548 0 549 0 550 0 551 0 552 0 553 0 554 0 555 0 556 0 557 0 558 0 559 0 560 0 561 0 562 3 563 3 564 3 565 3 566 0 567 0 568 0 569 0 570 0 571 3 572 0 573 0 574 0 575 0 576 0 577 0 578 0 579 0 580 0 581 0 582 0 583 0 584 0 585 0 586 0 587 0 588 0 589 0 590 0 591 0 592 0 593 0 594 0 595 0 596 0 597 0 598 0 599 0 600 0 601 0 602 0 603 0 604 0 605 0 606 3 607 3 608 3 609 3 610 3 611 3 612 3 613 3 614 3 615 3 616 3 617 3 618 3 619 3 620 3 621 3 622 3 623 3 624 3 625 3 626 3 627 3 628 3 629 3 630 3 631 3 632 3 633 3 634 3 635 3 636 3 637 3 638 3 639 3 640 3 641 3 642 3 643 3 644 3 645 3 646 3 647 3 648 3 649 3 650 3 651 3 652 3 653 3 654 3 655 3 656 3 657 3 658 3 659 3 660 3 661 3 662 3 663 3 664 3 665 3 666 3 667 3 668 3 669 3 670 6 671 6 672 6 673 6 674 6 675 6 676 6 677 6 678 6 679 6 680 6 681 6 682 6 683 6 684 6 685 6 686 6 687 6 688 6 689 6 690 6 691 6 692 6 693 6 694 6 695 6 696 6 697 6 698 6 699 6 700 6 701 6 702 6 703 6 704 6 705 6 706 6 707 6 708 6 709 6 710 6 711 6 712 6 713 6 714 6 715 6 716 6 717 6 718 6 719 6 720 6 721 6 722 6 723 6 724 6 725 6 726 6 727 6 728 6 729 6 730 6 731 6 732 6 733 6 734 6 735 6 736 6 737 6 738 6 739 6 740 6 741 6 742 6 743 6 744 6 745 6 746 6 747 6 748 6 749 6 750 6 751 6 752 6 753 6 754 6 755 6 756 6 757 6 758 6 759 6 760 6 761 6 762 6 763 6 764 6 765 6 766 6 767 6 768 6 769 6 770 6 771 6 772 6 773 6 774 6 775 6 776 6 777 6 778 6 779 6 780 6 781 6 782 6 783 6 784 6 785 6 786 6 787 6 788 6 789 6 790 6 791 6 792 6 793 6 794 6 795 6 796 6 797 6 798 6 799 6 800 6 801 6 802 0 803 0 804 0 805 0 806 0 807 0 808 0 809 0 810 0 811 0 812 0 813 0 814 0 815 0 816 0 817 0 818 0 819 0 820 0 821 0 822</v>
+        </vertex_weights>
+      </skin>
+    </controller>
+  </library_controllers>
+  <library_animations>
+    <animation id="joint1-anim" name="joint1">
+      <animation>
+        <source id="joint1-Matrix-animation-input">
+          <float_array id="joint1-Matrix-animation-input-array" count="48">
+
+0.041667 0.083333 0.125000 0.166667 0.208333 0.250000 0.291667 0.333333 0.375000 0.416667 0.458333 0.500000 0.541667 0.583333 0.625000 0.666667
+0.708333 0.750000 0.791667 0.833333 0.875000 0.916667 0.958333 1.000000 1.041667 1.083333 1.125000 1.166667 1.208333 1.250000 1.291667 1.333333
+1.375000 1.416667 1.458333 1.500000 1.541667 1.583333 1.625000 1.666667 1.708333 1.750000 1.791667 1.833333 1.875000 1.916667 1.958333 2.000000</float_array>
+          <technique_common>
+            <accessor source="#joint1-Matrix-animation-input-array" count="48">
+              <param name="TIME" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint1-Matrix-animation-output-transform">
+          <float_array id="joint1-Matrix-animation-output-transform-array" count="768">
+
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000
+1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000</float_array>
+          <technique_common>
+            <accessor source="#joint1-Matrix-animation-output-transform-array" count="48" stride="16">
+              <param type="float4x4"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint1-Interpolations">
+          <Name_array id="joint1-Interpolations-array" count="48">
+ LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR</Name_array>
+          <technique_common>
+            <accessor source="#joint1-Interpolations-array" count="48">
+              <param type="name"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <sampler id="joint1-Matrix-animation-transform">
+          <input semantic="INPUT" source="#joint1-Matrix-animation-input"/>
+          <input semantic="OUTPUT" source="#joint1-Matrix-animation-output-transform"/>
+          <input semantic="INTERPOLATION" source="#joint1-Interpolations"/>
+        </sampler>
+        <channel source="#joint1-Matrix-animation-transform" target="joint1/matrix"/>
+      </animation>
+    </animation>
+    <animation id="joint2-anim" name="joint2">
+      <animation>
+        <source id="joint2-Matrix-animation-input">
+          <float_array id="joint2-Matrix-animation-input-array" count="48">
+
+0.041667 0.083333 0.125000 0.166667 0.208333 0.250000 0.291667 0.333333 0.375000 0.416667 0.458333 0.500000 0.541667 0.583333 0.625000 0.666667
+0.708333 0.750000 0.791667 0.833333 0.875000 0.916667 0.958333 1.000000 1.041667 1.083333 1.125000 1.166667 1.208333 1.250000 1.291667 1.333333
+1.375000 1.416667 1.458333 1.500000 1.541667 1.583333 1.625000 1.666667 1.708333 1.750000 1.791667 1.833333 1.875000 1.916667 1.958333 2.000000</float_array>
+          <technique_common>
+            <accessor source="#joint2-Matrix-animation-input-array" count="48">
+              <param name="TIME" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint2-Matrix-animation-output-transform">
+          <float_array id="joint2-Matrix-animation-output-transform-array" count="768">
+
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000
+-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000</float_array>
+          <technique_common>
+            <accessor source="#joint2-Matrix-animation-output-transform-array" count="48" stride="16">
+              <param type="float4x4"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint2-Interpolations">
+          <Name_array id="joint2-Interpolations-array" count="48">
+ LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR</Name_array>
+          <technique_common>
+            <accessor source="#joint2-Interpolations-array" count="48">
+              <param type="name"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <sampler id="joint2-Matrix-animation-transform">
+          <input semantic="INPUT" source="#joint2-Matrix-animation-input"/>
+          <input semantic="OUTPUT" source="#joint2-Matrix-animation-output-transform"/>
+          <input semantic="INTERPOLATION" source="#joint2-Interpolations"/>
+        </sampler>
+        <channel source="#joint2-Matrix-animation-transform" target="joint2/matrix"/>
+      </animation>
+    </animation>
+    <animation id="joint3-anim" name="joint3">
+      <animation>
+        <source id="joint3-Matrix-animation-input">
+          <float_array id="joint3-Matrix-animation-input-array" count="48">
+
+0.041667 0.083333 0.125000 0.166667 0.208333 0.250000 0.291667 0.333333 0.375000 0.416667 0.458333 0.500000 0.541667 0.583333 0.625000 0.666667
+0.708333 0.750000 0.791667 0.833333 0.875000 0.916667 0.958333 1.000000 1.041667 1.083333 1.125000 1.166667 1.208333 1.250000 1.291667 1.333333
+1.375000 1.416667 1.458333 1.500000 1.541667 1.583333 1.625000 1.666667 1.708333 1.750000 1.791667 1.833333 1.875000 1.916667 1.958333 2.000000</float_array>
+          <technique_common>
+            <accessor source="#joint3-Matrix-animation-input-array" count="48">
+              <param name="TIME" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint3-Matrix-animation-output-transform">
+          <float_array id="joint3-Matrix-animation-output-transform-array" count="768">
+
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.992168 -0.000000 0.124908 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.124908 -0.000000 0.992168 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.994206 -0.000000 0.107487 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.107487 -0.000000 0.994206 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.996801 -0.000000 0.079926 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.079926 -0.000000 0.996801 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.999056 -0.000000 0.043437 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.043437 -0.000000 0.999056 -0.000000 0.000000 0.000000 0.000000 1.000000
+1.000000 -0.000000 -0.000717 3.491203 0.000000 1.000000 0.000000 0.000000 0.000717 -0.000000 1.000000 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.998688 -0.000000 -0.051203 3.491203 0.000000 1.000000 0.000000 0.000000 0.051203 -0.000000 0.998688 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.994302 -0.000000 -0.106602 3.491203 0.000000 1.000000 0.000000 0.000000 0.106602 -0.000000 0.994302 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.986222 -0.000000 -0.165425 3.491203 0.000000 1.000000 0.000000 0.000000 0.165425 -0.000000 0.986222 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.974096 -0.000000 -0.226136 3.491203 0.000000 1.000000 0.000000 0.000000 0.226136 -0.000000 0.974096 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.957872 -0.000000 -0.287194 3.491203 0.000000 1.000000 0.000000 0.000000 0.287194 -0.000000 0.957872 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.937826 -0.000000 -0.347107 3.491203 0.000000 1.000000 0.000000 0.000000 0.347107 -0.000000 0.937826 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.914549 -0.000000 -0.404474 3.491203 0.000000 1.000000 0.000000 0.000000 0.404474 -0.000000 0.914549 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.888932 -0.000000 -0.458039 3.491203 0.000000 1.000000 0.000000 0.000000 0.458039 -0.000000 0.888932 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.862115 -0.000000 -0.506713 3.491203 0.000000 1.000000 0.000000 0.000000 0.506713 -0.000000 0.862115 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.835433 -0.000000 -0.549592 3.491203 0.000000 1.000000 0.000000 0.000000 0.549592 -0.000000 0.835433 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.810352 -0.000000 -0.585943 3.491203 0.000000 1.000000 0.000000 0.000000 0.585943 -0.000000 0.810352 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.788393 -0.000000 -0.615172 3.491203 0.000000 1.000000 0.000000 0.000000 0.615172 -0.000000 0.788393 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.771063 -0.000000 -0.636759 3.491203 0.000000 1.000000 0.000000 0.000000 0.636759 -0.000000 0.771063 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.759776 -0.000000 -0.650185 3.491203 0.000000 1.000000 0.000000 0.000000 0.650185 -0.000000 0.759776 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.755777 -0.000000 -0.654829 3.491203 0.000000 1.000000 0.000000 0.000000 0.654829 -0.000000 0.755777 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.756856 -0.000000 -0.653581 3.491203 0.000000 1.000000 0.000000 0.000000 0.653581 -0.000000 0.756856 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.759546 -0.000000 -0.650453 3.491203 0.000000 1.000000 0.000000 0.000000 0.650453 -0.000000 0.759546 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.763024 -0.000000 -0.646371 3.491203 0.000000 1.000000 0.000000 0.000000 0.646371 -0.000000 0.763024 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.766479 -0.000000 -0.642269 3.491203 0.000000 1.000000 0.000000 0.000000 0.642269 -0.000000 0.766479 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.769122 -0.000000 -0.639101 3.491203 0.000000 1.000000 0.000000 0.000000 0.639101 -0.000000 0.769122 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.770176 -0.000000 -0.637831 3.491203 0.000000 1.000000 0.000000 0.000000 0.637831 -0.000000 0.770176 -0.000000 0.000000 0.000000 0.000000 1.000000</float_array>
+          <technique_common>
+            <accessor source="#joint3-Matrix-animation-output-transform-array" count="48" stride="16">
+              <param type="float4x4"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint3-Interpolations">
+          <Name_array id="joint3-Interpolations-array" count="48">
+ LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR</Name_array>
+          <technique_common>
+            <accessor source="#joint3-Interpolations-array" count="48">
+              <param type="name"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <sampler id="joint3-Matrix-animation-transform">
+          <input semantic="INPUT" source="#joint3-Matrix-animation-input"/>
+          <input semantic="OUTPUT" source="#joint3-Matrix-animation-output-transform"/>
+          <input semantic="INTERPOLATION" source="#joint3-Interpolations"/>
+        </sampler>
+        <channel source="#joint3-Matrix-animation-transform" target="joint3/matrix"/>
+      </animation>
+    </animation>
+    <animation id="joint4-anim" name="joint4">
+      <animation>
+        <source id="joint4-Matrix-animation-input">
+          <float_array id="joint4-Matrix-animation-input-array" count="48">
+
+0.041667 0.083333 0.125000 0.166667 0.208333 0.250000 0.291667 0.333333 0.375000 0.416667 0.458333 0.500000 0.541667 0.583333 0.625000 0.666667
+0.708333 0.750000 0.791667 0.833333 0.875000 0.916667 0.958333 1.000000 1.041667 1.083333 1.125000 1.166667 1.208333 1.250000 1.291667 1.333333
+1.375000 1.416667 1.458333 1.500000 1.541667 1.583333 1.625000 1.666667 1.708333 1.750000 1.791667 1.833333 1.875000 1.916667 1.958333 2.000000</float_array>
+          <technique_common>
+            <accessor source="#joint4-Matrix-animation-input-array" count="48">
+              <param name="TIME" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint4-Matrix-animation-output-transform">
+          <float_array id="joint4-Matrix-animation-output-transform-array" count="768">
+
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.147905 -0.000000 0.989002 0.507404 0.000000 1.000000 -0.000000 0.000000 -0.989002 -0.000000 0.147905 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.185020 0.000000 0.982735 0.507404 -0.000000 1.000000 -0.000000 -0.000000 -0.982735 -0.000000 0.185020 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.243045 -0.000000 0.970015 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.970015 -0.000000 0.243045 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.318325 -0.000000 0.947982 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.947982 -0.000000 0.318325 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.406617 0.000000 0.913599 0.507404 -0.000000 1.000000 -0.000000 0.000000 -0.913599 -0.000000 0.406617 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.503063 0.000000 0.864250 0.507404 -0.000000 1.000000 -0.000000 0.000000 -0.864250 -0.000000 0.503063 0.000000 0.000000 0.000000 0.000000 1.000000
+0.602328 0.000000 0.798248 0.507404 -0.000000 1.000000 -0.000000 -0.000000 -0.798248 -0.000000 0.602328 0.000000 0.000000 0.000000 0.000000 1.000000
+0.698897 0.000000 0.715223 0.507404 -0.000000 1.000000 -0.000000 -0.000000 -0.715223 -0.000000 0.698897 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.787496 0.000000 0.616320 0.507404 -0.000000 1.000000 -0.000000 0.000000 -0.616320 -0.000000 0.787496 0.000000 0.000000 0.000000 0.000000 1.000000
+0.863585 0.000000 0.504203 0.507404 -0.000000 1.000000 -0.000000 0.000000 -0.504203 -0.000000 0.863585 0.000000 0.000000 0.000000 0.000000 1.000000
+0.923819 0.000000 0.382829 0.507404 -0.000000 1.000000 -0.000000 -0.000000 -0.382829 -0.000000 0.923819 0.000000 0.000000 0.000000 0.000000 1.000000
+0.966396 0.000000 0.257056 0.507404 -0.000000 1.000000 -0.000000 0.000000 -0.257056 -0.000000 0.966396 0.000000 0.000000 0.000000 0.000000 1.000000
+0.991230 0.000000 0.132148 0.507404 -0.000000 1.000000 0.000000 -0.000000 -0.132148 -0.000000 0.991230 0.000000 0.000000 0.000000 0.000000 1.000000
+0.999912 0.000000 0.013260 0.507404 -0.000000 1.000000 0.000000 -0.000000 -0.013260 -0.000000 0.999912 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.995478 0.000000 -0.094988 0.507404 -0.000000 1.000000 0.000000 0.000000 0.094988 -0.000000 0.995478 0.000000 0.000000 0.000000 0.000000 1.000000
+0.982020 0.000000 -0.188777 0.507404 -0.000000 1.000000 0.000000 0.000000 0.188777 -0.000000 0.982020 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.964203 0.000000 -0.265166 0.507404 -0.000000 1.000000 0.000000 -0.000000 0.265166 -0.000000 0.964203 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.946757 0.000000 -0.321948 0.507404 -0.000000 1.000000 0.000000 -0.000000 0.321948 -0.000000 0.946757 0.000000 0.000000 0.000000 0.000000 1.000000
+0.933971 0.000000 -0.357350 0.507404 -0.000000 1.000000 0.000000 0.000000 0.357350 -0.000000 0.933971 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.929190 0.000000 -0.369602 0.507404 -0.000000 1.000000 0.000000 0.000000 0.369602 -0.000000 0.929190 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.930811 0.000000 -0.365500 0.507404 -0.000000 1.000000 0.000000 0.000000 0.365500 -0.000000 0.930811 0.000000 0.000000 0.000000 0.000000 1.000000
+0.934785 0.000000 -0.355213 0.507404 -0.000000 1.000000 0.000000 0.000000 0.355213 -0.000000 0.934785 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.939781 0.000000 -0.341776 0.507404 -0.000000 1.000000 0.000000 -0.000000 0.341776 -0.000000 0.939781 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.944584 0.000000 -0.328269 0.507404 -0.000000 1.000000 0.000000 -0.000000 0.328269 -0.000000 0.944584 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.948147 0.000000 -0.317833 0.507404 -0.000000 1.000000 0.000000 0.000000 0.317833 -0.000000 0.948147 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000
+0.949539 0.000000 -0.313648 0.507404 -0.000000 1.000000 0.000000 0.000000 0.313648 -0.000000 0.949539 -0.000000 0.000000 0.000000 0.000000 1.000000</float_array>
+          <technique_common>
+            <accessor source="#joint4-Matrix-animation-output-transform-array" count="48" stride="16">
+              <param type="float4x4"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint4-Interpolations">
+          <Name_array id="joint4-Interpolations-array" count="48">
+ LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR</Name_array>
+          <technique_common>
+            <accessor source="#joint4-Interpolations-array" count="48">
+              <param type="name"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <sampler id="joint4-Matrix-animation-transform">
+          <input semantic="INPUT" source="#joint4-Matrix-animation-input"/>
+          <input semantic="OUTPUT" source="#joint4-Matrix-animation-output-transform"/>
+          <input semantic="INTERPOLATION" source="#joint4-Interpolations"/>
+        </sampler>
+        <channel source="#joint4-Matrix-animation-transform" target="joint4/matrix"/>
+      </animation>
+    </animation>
+    <animation id="joint5-anim" name="joint5">
+      <animation>
+        <source id="joint5-Matrix-animation-input">
+          <float_array id="joint5-Matrix-animation-input-array" count="48">
+
+0.041667 0.083333 0.125000 0.166667 0.208333 0.250000 0.291667 0.333333 0.375000 0.416667 0.458333 0.500000 0.541667 0.583333 0.625000 0.666667
+0.708333 0.750000 0.791667 0.833333 0.875000 0.916667 0.958333 1.000000 1.041667 1.083333 1.125000 1.166667 1.208333 1.250000 1.291667 1.333333
+1.375000 1.416667 1.458333 1.500000 1.541667 1.583333 1.625000 1.666667 1.708333 1.750000 1.791667 1.833333 1.875000 1.916667 1.958333 2.000000</float_array>
+          <technique_common>
+            <accessor source="#joint5-Matrix-animation-input-array" count="48">
+              <param name="TIME" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint5-Matrix-animation-output-transform">
+          <float_array id="joint5-Matrix-animation-output-transform-array" count="768">
+
+1.000000 0.000000 0.000000 5.782546 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.999960 0.000000 0.008897 5.782546 0.000000 1.000000 0.000000 0.000000 -0.008897 0.000000 0.999960 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.999429 0.000000 0.033798 5.782546 0.000000 1.000000 0.000000 0.000000 -0.033798 0.000000 0.999429 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.997406 0.000000 0.071988 5.782546 0.000000 1.000000 0.000000 0.000000 -0.071988 0.000000 0.997406 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.992693 0.000000 0.120668 5.782546 0.000000 1.000000 0.000000 0.000000 -0.120668 0.000000 0.992693 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.984222 0.000000 0.176937 5.782546 0.000000 1.000000 0.000000 0.000000 -0.176937 0.000000 0.984222 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.971310 0.000000 0.237816 5.782546 0.000000 1.000000 0.000000 0.000000 -0.237816 0.000000 0.971310 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.953839 0.000000 0.300317 5.782546 0.000000 1.000000 0.000000 0.000000 -0.300317 0.000000 0.953839 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.932351 0.000000 0.361554 5.782546 0.000000 1.000000 0.000000 0.000000 -0.361554 0.000000 0.932351 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.908056 0.000000 0.418848 5.782546 0.000000 1.000000 0.000000 0.000000 -0.418848 0.000000 0.908056 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.882762 0.000000 0.469821 5.782546 0.000000 1.000000 0.000000 0.000000 -0.469821 0.000000 0.882762 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.858735 0.000000 0.512420 5.782546 0.000000 1.000000 0.000000 0.000000 -0.512420 0.000000 0.858735 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.838514 0.000000 0.544880 5.782546 0.000000 1.000000 0.000000 0.000000 -0.544880 0.000000 0.838514 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.824684 0.000000 0.565594 5.782546 0.000000 1.000000 0.000000 0.000000 -0.565594 0.000000 0.824684 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.819619 0.000000 0.572909 5.782546 0.000000 1.000000 0.000000 0.000000 -0.572909 0.000000 0.819619 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.823967 0.000000 0.566638 5.782546 0.000000 1.000000 0.000000 0.000000 -0.566638 0.000000 0.823967 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.834626 0.000000 0.550817 5.782546 0.000000 1.000000 0.000000 0.000000 -0.550817 0.000000 0.834626 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.848028 0.000000 0.529951 5.782546 0.000000 1.000000 0.000000 0.000000 -0.529951 0.000000 0.848028 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.860909 0.000000 0.508759 5.782546 0.000000 1.000000 0.000000 0.000000 -0.508759 0.000000 0.860909 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.870458 0.000000 0.492243 5.782546 0.000000 1.000000 0.000000 0.000000 -0.492243 0.000000 0.870458 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000
+0.874188 0.000000 0.485587 5.782546 0.000000 1.000000 0.000000 0.000000 -0.485587 0.000000 0.874188 -0.042495 0.000000 0.000000 0.000000 1.000000</float_array>
+          <technique_common>
+            <accessor source="#joint5-Matrix-animation-output-transform-array" count="48" stride="16">
+              <param type="float4x4"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint5-Interpolations">
+          <Name_array id="joint5-Interpolations-array" count="48">
+ LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR</Name_array>
+          <technique_common>
+            <accessor source="#joint5-Interpolations-array" count="48">
+              <param type="name"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <sampler id="joint5-Matrix-animation-transform">
+          <input semantic="INPUT" source="#joint5-Matrix-animation-input"/>
+          <input semantic="OUTPUT" source="#joint5-Matrix-animation-output-transform"/>
+          <input semantic="INTERPOLATION" source="#joint5-Interpolations"/>
+        </sampler>
+        <channel source="#joint5-Matrix-animation-transform" target="joint5/matrix"/>
+      </animation>
+    </animation>
+    <animation id="joint6-anim" name="joint6">
+      <animation>
+        <source id="joint6-Matrix-animation-input">
+          <float_array id="joint6-Matrix-animation-input-array" count="48">
+
+0.041667 0.083333 0.125000 0.166667 0.208333 0.250000 0.291667 0.333333 0.375000 0.416667 0.458333 0.500000 0.541667 0.583333 0.625000 0.666667
+0.708333 0.750000 0.791667 0.833333 0.875000 0.916667 0.958333 1.000000 1.041667 1.083333 1.125000 1.166667 1.208333 1.250000 1.291667 1.333333
+1.375000 1.416667 1.458333 1.500000 1.541667 1.583333 1.625000 1.666667 1.708333 1.750000 1.791667 1.833333 1.875000 1.916667 1.958333 2.000000</float_array>
+          <technique_common>
+            <accessor source="#joint6-Matrix-animation-input-array" count="48">
+              <param name="TIME" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint6-Matrix-animation-output-transform">
+          <float_array id="joint6-Matrix-animation-output-transform-array" count="768">
+
+1.000000 0.000000 0.000000 0.042804 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 4.296856 0.000000 0.000000 0.000000 1.000000
+0.999987 0.000000 0.005175 0.042804 0.000000 1.000000 0.000000 0.000000 -0.005175 0.000000 0.999987 4.296856 0.000000 0.000000 0.000000 1.000000
+0.999801 0.000000 0.019944 0.042804 0.000000 1.000000 0.000000 0.000000 -0.019944 0.000000 0.999801 4.296856 0.000000 0.000000 0.000000 1.000000
+0.999068 0.000000 0.043166 0.042804 0.000000 1.000000 0.000000 0.000000 -0.043166 0.000000 0.999068 4.296856 0.000000 0.000000 0.000000 1.000000
+0.997282 0.000000 0.073681 0.042804 0.000000 1.000000 0.000000 0.000000 -0.073681 0.000000 0.997282 4.296856 0.000000 0.000000 0.000000 1.000000
+0.993899 0.000000 0.110296 0.042804 0.000000 1.000000 0.000000 0.000000 -0.110296 0.000000 0.993899 4.296856 0.000000 0.000000 0.000000 1.000000
+0.988414 0.000000 0.151780 0.042804 0.000000 1.000000 0.000000 0.000000 -0.151780 0.000000 0.988414 4.296856 0.000000 0.000000 0.000000 1.000000
+0.980430 0.000000 0.196869 0.042804 0.000000 1.000000 0.000000 0.000000 -0.196869 0.000000 0.980430 4.296856 0.000000 0.000000 0.000000 1.000000
+0.969704 0.000000 0.244281 0.042804 0.000000 1.000000 0.000000 0.000000 -0.244281 0.000000 0.969704 4.296856 0.000000 0.000000 0.000000 1.000000
+0.956194 0.000000 0.292733 0.042804 0.000000 1.000000 0.000000 0.000000 -0.292733 0.000000 0.956194 4.296856 0.000000 0.000000 0.000000 1.000000
+0.940073 0.000000 0.340974 0.042804 0.000000 1.000000 0.000000 0.000000 -0.340974 0.000000 0.940073 4.296856 0.000000 0.000000 0.000000 1.000000
+0.921738 0.000000 0.387814 0.042804 0.000000 1.000000 0.000000 0.000000 -0.387814 0.000000 0.921738 4.296856 0.000000 0.000000 0.000000 1.000000
+0.901803 0.000000 0.432148 0.042804 0.000000 1.000000 0.000000 0.000000 -0.432148 0.000000 0.901803 4.296856 0.000000 0.000000 0.000000 1.000000
+0.881074 0.000000 0.472978 0.042804 0.000000 1.000000 0.000000 0.000000 -0.472978 0.000000 0.881074 4.296856 0.000000 0.000000 0.000000 1.000000
+0.860515 0.000000 0.509425 0.042804 0.000000 1.000000 0.000000 0.000000 -0.509425 0.000000 0.860515 4.296856 0.000000 0.000000 0.000000 1.000000
+0.841205 0.000000 0.540717 0.042804 0.000000 1.000000 0.000000 0.000000 -0.540717 0.000000 0.841205 4.296856 0.000000 0.000000 0.000000 1.000000
+0.824285 0.000000 0.566174 0.042804 0.000000 1.000000 0.000000 0.000000 -0.566174 0.000000 0.824285 4.296856 0.000000 0.000000 0.000000 1.000000
+0.810909 0.000000 0.585172 0.042804 0.000000 1.000000 0.000000 0.000000 -0.585172 0.000000 0.810909 4.296856 0.000000 0.000000 0.000000 1.000000
+0.802178 0.000000 0.597085 0.042804 0.000000 1.000000 0.000000 0.000000 -0.597085 0.000000 0.802178 4.296856 0.000000 0.000000 0.000000 1.000000
+0.799078 0.000000 0.601228 0.042804 0.000000 1.000000 0.000000 0.000000 -0.601228 0.000000 0.799078 4.296856 0.000000 0.000000 0.000000 1.000000
+0.806328 0.000000 0.591468 0.042804 0.000000 1.000000 0.000000 0.000000 -0.591468 0.000000 0.806328 4.296856 0.000000 0.000000 0.000000 1.000000
+0.823932 0.000000 0.566689 0.042804 0.000000 1.000000 0.000000 0.000000 -0.566689 0.000000 0.823932 4.296856 0.000000 0.000000 0.000000 1.000000
+0.845676 0.000000 0.533697 0.042804 0.000000 1.000000 0.000000 0.000000 -0.533697 0.000000 0.845676 4.296856 0.000000 0.000000 0.000000 1.000000
+0.866099 0.000000 0.499872 0.042804 0.000000 1.000000 0.000000 0.000000 -0.499872 0.000000 0.866099 4.296856 0.000000 0.000000 0.000000 1.000000
+0.880891 0.000000 0.473319 0.042804 0.000000 1.000000 0.000000 0.000000 -0.473319 0.000000 0.880891 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000
+0.886581 0.000000 0.462574 0.042804 0.000000 1.000000 0.000000 0.000000 -0.462574 0.000000 0.886581 4.296856 0.000000 0.000000 0.000000 1.000000</float_array>
+          <technique_common>
+            <accessor source="#joint6-Matrix-animation-output-transform-array" count="48" stride="16">
+              <param type="float4x4"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="joint6-Interpolations">
+          <Name_array id="joint6-Interpolations-array" count="48">
+ LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR
+LINEAR</Name_array>
+          <technique_common>
+            <accessor source="#joint6-Interpolations-array" count="48">
+              <param type="name"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <sampler id="joint6-Matrix-animation-transform">
+          <input semantic="INPUT" source="#joint6-Matrix-animation-input"/>
+          <input semantic="OUTPUT" source="#joint6-Matrix-animation-output-transform"/>
+          <input semantic="INTERPOLATION" source="#joint6-Interpolations"/>
+        </sampler>
+        <channel source="#joint6-Matrix-animation-transform" target="joint6/matrix"/>
+      </animation>
+    </animation>
+  </library_animations>
+  <library_visual_scenes>
+    <visual_scene id="" name="">
+      <node name="polySurface17" id="polySurface17" sid="polySurface17">
+        <matrix sid="matrix">-1.000000 0.000000 0.000000 0.588980 0.000000 0.000000 1.000000 0.054709 0.000000 1.000000 -0.000000 0.818401 0.000000 0.000000 0.000000 1.000000</matrix>
+        <extra>
+          <technique profile="FCOLLADA">
+            <visibility>1.000000</visibility>
+          </technique>
+        </extra>
+        <node name="Album_Cute" id="Album_Cute" sid="Album_Cute">
+          <instance_controller url="#Album_CuteController">
+            <bind_material>
+              <technique_common>
+                <instance_material symbol="Album_Texture" target="#Album_Texture"/>
+              </technique_common>
+            </bind_material>
+          </instance_controller>
+          <extra>
+            <technique profile="FCOLLADA">
+              <visibility>1.000000</visibility>
+            </technique>
+          </extra>
+        </node>
+      </node>
+      <node name="page" id="page" sid="page">
+        <matrix sid="matrix">1.000000 0.000000 0.000000 -0.145980 0.000000 0.000000 -1.000000 0.000000 -0.000000 1.000000 0.000000 1.283335 0.000000 0.000000 0.000000 1.000000</matrix>
+        <instance_geometry url="#page-lib">
+          <bind_material>
+            <technique_common>
+              <instance_material symbol="Album_Texture" target="#Album_Texture"/>
+            </technique_common>
+          </bind_material>
+        </instance_geometry>
+        <extra>
+          <technique profile="FCOLLADA">
+            <visibility>1.000000</visibility>
+          </technique>
+        </extra>
+      </node>
+      <node name="joint1" id="joint1" sid="joint1" type="JOINT">
+        <matrix sid="matrix">1.000000 0.000000 0.000000 0.015813 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -2.335608 0.000000 0.000000 0.000000 1.000000</matrix>
+        <extra>
+          <technique profile="FCOLLADA">
+            <visibility>1.000000</visibility>
+          </technique>
+        </extra>
+        <node name="joint2" id="joint2" sid="joint2" type="JOINT">
+          <matrix sid="matrix">-0.004360 0.000000 -0.999990 -5.651458 0.000000 1.000000 0.000000 0.000000 0.999990 0.000000 -0.004360 0.057088 0.000000 0.000000 0.000000 1.000000</matrix>
+          <extra>
+            <technique profile="FCOLLADA">
+              <visibility>1.000000</visibility>
+            </technique>
+          </extra>
+          <node name="joint3" id="joint3" sid="joint3" type="JOINT">
+            <matrix sid="matrix">0.991384 -0.000000 0.130987 3.491203 -0.000000 1.000000 0.000000 0.000000 -0.130987 -0.000000 0.991384 -0.000000 0.000000 0.000000 0.000000 1.000000</matrix>
+            <extra>
+              <technique profile="FCOLLADA">
+                <visibility>1.000000</visibility>
+              </technique>
+            </extra>
+            <node name="joint4" id="joint4" sid="joint4" type="JOINT">
+              <matrix sid="matrix">0.134885 0.000000 0.990861 0.507404 -0.000000 1.000000 0.000000 0.000000 -0.990861 -0.000000 0.134885 -0.000000 0.000000 0.000000 0.000000 1.000000</matrix>
+              <extra>
+                <technique profile="FCOLLADA">
+                  <visibility>1.000000</visibility>
+                </technique>
+              </extra>
+              <node name="joint8" id="joint8" sid="joint8" type="JOINT">
+                <matrix sid="matrix">0.999966 -0.000000 0.008294 8.546385 0.000000 1.000000 -0.000000 -0.000000 -0.008294 0.000000 0.999966 -0.000000 0.000000 0.000000 0.000000 1.000000</matrix>
+                <extra>
+                  <technique profile="FCOLLADA">
+                    <visibility>1.000000</visibility>
+                  </technique>
+                </extra>
+              </node>
+              <node name="cover_image" id="cover_image" sid="cover_image">
+                <matrix sid="matrix">0.999966 -0.000000 0.008294 5.572175 -0.000000 1.000000 -0.000000 0.000000 -0.008294 -0.000000 0.999966 -1.762244 0.000000 0.000000 0.000000 1.000000</matrix>
+                <instance_geometry url="#cover_image-lib">
+                  <bind_material>
+                    <technique_common>
+                      <instance_material symbol="Album_Cute_00011_lambert4" target="#Album_Cute_00011_lambert4"/>
+                    </technique_common>
+                  </bind_material>
+                </instance_geometry>
+                <extra>
+                  <technique profile="FCOLLADA">
+                    <visibility>1.000000</visibility>
+                  </technique>
+                </extra>
+              </node>
+            </node>
+          </node>
+        </node>
+        <node name="joint5" id="joint5" sid="joint5" type="JOINT">
+          <matrix sid="matrix">1.000000 0.000000 0.000000 5.782546 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 -0.042495 0.000000 0.000000 0.000000 1.000000</matrix>
+          <extra>
+            <technique profile="FCOLLADA">
+              <visibility>1.000000</visibility>
+            </technique>
+          </extra>
+          <node name="joint6" id="joint6" sid="joint6" type="JOINT">
+            <matrix sid="matrix">1.000000 0.000000 0.000000 0.042804 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 4.296856 0.000000 0.000000 0.000000 1.000000</matrix>
+            <extra>
+              <technique profile="FCOLLADA">
+                <visibility>1.000000</visibility>
+              </technique>
+            </extra>
+            <node name="joint7" id="joint7" sid="joint7" type="JOINT">
+              <matrix sid="matrix">1.000000 0.000000 0.000000 -2.432528 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.363634 0.000000 0.000000 0.000000 1.000000</matrix>
+              <extra>
+                <technique profile="FCOLLADA">
+                  <visibility>1.000000</visibility>
+                </technique>
+              </extra>
+            </node>
+          </node>
+        </node>
+      </node>
+      <extra>
+        <technique profile="MAX3D">
+          <frame_rate>24.000000</frame_rate>
+        </technique>
+        <technique profile="FCOLLADA">
+          <start_time>0.041667</start_time>
+          <end_time>2.000000</end_time>
+        </technique>
+      </extra>
+    </visual_scene>
+  </library_visual_scenes>
+  <scene>
+    <instance_visual_scene url="#"></instance_visual_scene>
+  </scene>
+</COLLADA>
+
diff --git a/demo/models/AlbumCute.dali-bin b/demo/models/AlbumCute.dali-bin
new file mode 100644 (file)
index 0000000..3af03c1
Binary files /dev/null and b/demo/models/AlbumCute.dali-bin differ
diff --git a/demo/models/Kitten.png b/demo/models/Kitten.png
new file mode 100644 (file)
index 0000000..276f4cd
Binary files /dev/null and b/demo/models/Kitten.png differ
diff --git a/examples/blocks/blocks-example.cpp b/examples/blocks/blocks-example.cpp
new file mode 100644 (file)
index 0000000..5285326
--- /dev/null
@@ -0,0 +1,917 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <sstream>
+#include <iostream>
+#include <vector>
+#include <string>
+#include <algorithm>
+
+#include <boost/any.hpp>
+#include <boost/function.hpp>
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+#include "../shared/view.h"
+
+using namespace std;
+using namespace Dali;
+using namespace Dali::Toolkit;
+using namespace DemoHelper;
+
+namespace
+{
+const char* BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-default.png" );
+const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
+const char* APPLICATION_TITLE( "DALi Blocks" );
+const char* BALL_IMAGE = DALI_IMAGE_DIR "ball.png";
+const char* PADDLE_IMAGE = DALI_IMAGE_DIR "paddle.png";
+const char* PADDLE_HANDLE_IMAGE = DALI_IMAGE_DIR "paddle_handle.png";
+
+const char* BRICK_IMAGE_PATH[] =    { DALI_IMAGE_DIR "brick1.png",
+                                      DALI_IMAGE_DIR "brick2.png",
+                                      DALI_IMAGE_DIR "brick3.png",
+                                      DALI_IMAGE_DIR "brick4.png" };
+
+const int TOTAL_BRICKS(4);                                                  ///< Total bricks in game.
+const Vector3 ICON_SIZE(100.0f, 100.0f, 0.0f);
+
+const float SCREEN_MARGIN = 10.0f;                                          ///< Margin indentation around screen
+const Vector3 MENU_BUTTON_SIZE = Vector3(0.15f, 0.05f, 1.0f);               ///< Standard Menu Buttons.
+
+const float MAX_ANIMATION_DURATION = 60.0f;                                 ///< 60 seconds animations. Long enough for ball to hit an obstacle.
+const float BALL_VELOCITY = 300.0f;                                         ///< Ball velocity in pixels/second.
+const float MAX_VELOCITY = 500.0f;                                          ///< Max. velocity in pixels/second.
+const Vector3 PADDLE_COLLISION_MARGIN(0.0f, 0.0f, 0.0f);                    ///< Collision margin for ball-paddle detection.
+const Vector3 BRICK_COLLISION_MARGIN(0.0f, 0.0f, 0.0f);                     ///< Collision margin for ball-brick detection.
+const Vector3 INITIAL_BALL_DIRECTION(1.0f, 1.0f, 0.0f);                     ///< Initial ball direction.
+
+const std::string WOBBLE_PROPERTY_NAME("wobble-property");                  ///< Wobble property name.
+const std::string COLLISION_PROPERTY_NAME("collision-property");            ///< Collision property name.
+
+const Vector2 BRICK_SIZE(0.1f, 0.05f );                                     ///< Brick size relative to width of stage.
+const Vector2 BALL_SIZE( 0.05f, 0.05f );                                    ///< Ball size relative to width of stage.
+const Vector2 PADDLE_SIZE( 0.2f, 0.05f );                                   ///< Paddle size relative to width of stage.
+const Vector2 PADDLE_HANDLE_SIZE( 0.3f, 0.3f );                             ///< Paddle handle size relative to width of stage.
+const Vector2 BALL_START_POSITION(0.5f, 0.8f);                              ///< Ball start position relative to stage size.
+const Vector2 PADDLE_START_POSITION(0.5f, 0.9f);                            ///< Paddler start position relative to stage size.
+const Vector2 PADDLE_HIT_MARGIN( 0.1, 0.15f );                              ///< Extra hit Area for Paddle when touching.
+
+const int TOTAL_LIVES(3);                                                   ///< Total lives in game before it's game over!
+const int TOTAL_LEVELS(3);                                                  ///< 3 Levels total, then repeats.
+
+// constraints ////////////////////////////////////////////////////////////////
+
+/**
+ * CollisionConstraint generates a collision vector
+ * between two actors a and b, assuming they're rectangular
+ * based on their size.
+ */
+struct CollisionConstraint
+{
+  /**
+   * Collision Constraint constructor
+   * The adjust (optional) parameter can be used to add a margin
+   * to the actors. A +ve size will result in larger collisions,
+   * while a -ve size will result in tighter collisions.
+   *
+   * @param[in] adjust (optional) Adjusts the rectangular size detection
+   */
+  CollisionConstraint(Vector3 adjust = Vector3::ZERO)
+  : mAdjust(adjust)
+  {
+  }
+
+  /**
+   * Generates collision vector indicating whether Actor's A and B
+   * have overlapped eachother, and the relative position of Actor B to A.
+   *
+   * @param[in] current The current collision-property (ignored)
+   * @param[in] propertyA Actor A's Position property.
+   * @param[in] propertyB Actor B's Position property.
+   * @param[in] propertySizeA Actor A's Size property.
+   * @param[in] propertySizeB Actor B's Size property.
+   * @return The collision vector is returned.
+   */
+  Vector3 operator()(const Vector3& current,
+                     const PropertyInput& propertyA,
+                     const PropertyInput& propertyB,
+                     const PropertyInput& propertySizeA,
+                     const PropertyInput& propertySizeB)
+  {
+    const Vector3& a = propertyA.GetVector3();
+    const Vector3& b = propertyB.GetVector3();
+    const Vector3& sizeA = propertySizeA.GetVector3();
+    const Vector3& sizeB = propertySizeB.GetVector3();
+    const Vector3 sizeComb = (sizeA + sizeB + mAdjust) * 0.5f;
+
+    // get collision relative to a.
+    Vector3 delta = b - a;
+
+    // Check if not overlapping Actors.
+    if( (fabsf(delta.x) > sizeComb.width) ||
+        (fabsf(delta.y) > sizeComb.height) )
+    {
+      delta = Vector3::ZERO; // not overlapping
+    }
+
+    return delta; // overlapping, return overlap vector relative to actor a.
+  }
+
+  const Vector3 mAdjust;            ///< Size Adjustment value
+};
+
+/**
+ * CollisionCircleRectangleConstraint generates a collision vector
+ * between two actors a (circle) and b (rectangle)
+ */
+struct CollisionCircleRectangleConstraint
+{
+  /**
+   * Collision Constraint constructor
+   * The adjust (optional) parameter can be used to add a margin
+   * to the actors. A +ve size will result in larger collisions,
+   * while a -ve size will result in tighter collisions.
+   *
+   * @param[in] adjustPosition (optional) Adjusts the position offset of detection
+   * @param[in] adjustSize (optional) Adjusts the rectangular size of detection
+   */
+  CollisionCircleRectangleConstraint(Vector3 adjustPosition = Vector3::ZERO,
+                                     Vector3 adjustSize = Vector3::ZERO)
+  : mAdjustPosition(adjustPosition),
+    mAdjustSize(adjustSize)
+  {
+  }
+
+  /**
+   * Generates collision vector indicating whether Actor's A and B
+   * have overlapped eachother, and the relative position of Actor B to A.
+   *
+   * @param[in] current The current collision-property (ignored)
+   * @param[in] propertyA Actor A's Position property.
+   * @param[in] propertyB Actor B's Position property.
+   * @param[in] propertySizeA Actor A's Size property.
+   * @param[in] propertySizeB Actor B's Size property.
+   * @return The collision vector is returned.
+   */
+  Vector3 operator()(const Vector3& current,
+                     const PropertyInput& propertyA,
+                     const PropertyInput& propertyB,
+                     const PropertyInput& propertySizeA,
+                     const PropertyInput& propertySizeB)
+  {
+    const Vector3& a = propertyA.GetVector3();
+    const Vector3 b = propertyB.GetVector3() + mAdjustPosition;
+    const Vector3& sizeA = propertySizeA.GetVector3();
+    const Vector3& sizeB = propertySizeB.GetVector3();
+    const Vector3 sizeA2 = sizeA * 0.5f; // circle radius
+    const Vector3 sizeB2 = (sizeB + mAdjustSize) * 0.5f; // rectangle half rectangle.
+
+    // get collision relative to a (rectangle).
+    Vector3 delta = a - b;
+
+    // reduce rectangle to 0.
+    if (delta.x > sizeB2.x)
+    {
+      delta.x -= sizeB2.x;
+    }
+    else if (delta.x < -sizeB2.x)
+    {
+      delta.x += sizeB2.x;
+    }
+    else
+    {
+      delta.x = 0;
+    }
+
+    if (delta.y > sizeB2.y)
+    {
+      delta.y -= sizeB2.y;
+    }
+    else if (delta.y < -sizeB2.y)
+    {
+      delta.y += sizeB2.y;
+    }
+    else
+    {
+      delta.y = 0;
+    }
+
+    // now calculate collision vector vs origin. (assume A is a circle, not ellipse)
+    if(delta.Length() < sizeA2.x)
+    {
+      delta.Normalize();
+      return delta;
+    }
+
+    return Vector3::ZERO;
+  }
+
+  const Vector3 mAdjustPosition;            ///< Position Adjustment value
+  const Vector3 mAdjustSize;                ///< Size Adjustment value
+};
+
+/**
+ * WobbleConstraint generates a decaying sinusoidial rotation.
+ * The result when applied to an Actor, is the Actor rotating left/right
+ * initially a large amount (deviation degrees, when wobble property is 0.0f)
+ * then eventually coming to a stop (once wobble property reaches 1.0f)
+ */
+struct WobbleConstraint
+{
+  /**
+   * Wobble Constraint constructor
+   * Generates a sinusoidial rotation that starts with
+   * high amplitude (deviation), and then decays to zero over input 0.0f to 1.0f
+   *
+   * @param[in] deviation The max. deviation of wobble effect in degrees.
+   */
+  WobbleConstraint(float deviation)
+  : mDeviation(Radian(Degree(deviation)))
+  {
+
+  }
+
+  /**
+   * @param[in] current The current rotation property (ignored)
+   * @param[in] propertyWobble The wobble property (value from 0.0f to 1.0f)
+   * @return The rotation (quaternion) is generated.
+   */
+  Quaternion operator()(const Quaternion& current,
+                     const PropertyInput& propertyWobble)
+  {
+    const float& wobble = propertyWobble.GetFloat();
+
+    float f = sinf(wobble * 10.0f) * (1.0f-wobble);
+
+    Quaternion q(mDeviation * f, Vector3::ZAXIS);
+
+    return q;
+  }
+
+  const float mDeviation;           ///< Deviation factor in radians.
+};
+
+} // unnamed namespace
+
+/**
+ * This example shows how to use PropertyNotifications
+ */
+class ExampleController : public ConnectionTracker
+{
+public:
+
+  /**
+   * Constructor
+   * @param application Application class, stored as reference
+   */
+  ExampleController( Application& application )
+  : mApplication( application ),
+    mView()
+  {
+    // Connect to the Application's Init and orientation changed signal
+    mApplication.InitSignal().Connect(this, &ExampleController::Create);
+  }
+
+  /**
+   * This method gets called once the main loop of application is up and running
+   * @param[in] application Reference to the application instance
+   */
+  void Create(Application& application)
+  {
+    Stage::GetCurrent().KeyEventSignal().Connect(this, &ExampleController::OnKeyEvent);
+
+    // Creates a default view with a default tool bar.
+    // The view is added to the stage.
+    Toolkit::ToolBar toolBar;
+    mContentLayer = DemoHelper::CreateView( application,
+                                            mView,
+                                            toolBar,
+                                            BACKGROUND_IMAGE,
+                                            TOOLBAR_IMAGE,
+                                            APPLICATION_TITLE );
+
+    // Add an extra space on the right to center the title text.
+    toolBar.AddControl( Actor::New(), DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight );
+
+    // Create the content layer, which is where game actors appear.
+    AddContentLayer();
+  }
+
+private:
+
+  /**
+   * Adds a new layer to the stage, containing game actors.
+   */
+  void AddContentLayer()
+  {
+    Stage stage = Stage::GetCurrent();
+    const Vector3 stageSize(stage.GetSize());
+
+    // Ball setup
+    mBallStartPosition = stageSize * Vector3( BALL_START_POSITION );
+    mBall = CreateImage(BALL_IMAGE);
+    mBall.SetPosition( mBallStartPosition );
+    mBall.SetSize( BALL_SIZE * stageSize.width );
+    mContentLayer.Add(mBall);
+    mBallVelocity = Vector3::ZERO;
+
+    // Paddle setup
+    mPaddleHitMargin = Vector2(stageSize) * PADDLE_HIT_MARGIN;
+    mPaddle = Actor::New();
+    mPaddleHandle = CreateImage(PADDLE_HANDLE_IMAGE);
+    mPaddleImage = CreateImage(PADDLE_IMAGE);
+    mPaddle.Add( mPaddleHandle );
+    mPaddle.Add( mPaddleImage );
+    mPaddleHandle.SetParentOrigin( ParentOrigin::TOP_CENTER );
+    mPaddleHandle.SetAnchorPoint( AnchorPoint::TOP_CENTER );
+    mPaddleHandle.SetPosition( 0.0f, stageSize.width * 0.0125f );
+    mPaddleImage.SetParentOrigin( ParentOrigin::TOP_CENTER );
+    mPaddleImage.SetAnchorPoint( AnchorPoint::TOP_CENTER );
+    mPaddle.SetParentOrigin( ParentOrigin::TOP_LEFT );
+    mPaddle.SetAnchorPoint( AnchorPoint::CENTER );
+    mPaddleFullSize = PADDLE_SIZE * stageSize.width;
+    mPaddle.SetSize( mPaddleFullSize + mPaddleHitMargin );
+    mPaddleHandle.SetSize( PADDLE_HANDLE_SIZE * stageSize.width );
+    mPaddleImage.SetSize( mPaddleFullSize );
+
+    mWobbleProperty = mPaddle.RegisterProperty(WOBBLE_PROPERTY_NAME, 0.0f);
+    Constraint wobbleConstraint = Constraint::New<Quaternion>( Actor::ROTATION,
+                                                    LocalSource(mWobbleProperty),
+                                                    WobbleConstraint(10.0f));
+    mPaddle.ApplyConstraint(wobbleConstraint);
+
+    mPaddle.SetPosition( stageSize * Vector3( PADDLE_START_POSITION ) );
+    mContentLayer.Add(mPaddle);
+    mPaddle.TouchedSignal().Connect(this, &ExampleController::OnTouchPaddle);
+    mContentLayer.TouchedSignal().Connect(this, &ExampleController::OnTouchLayer);
+
+    const float margin(BALL_SIZE.width * stageSize.width * 0.5f);
+
+    // Set up notifications for ball's collisions against walls.
+    PropertyNotification leftNotification = mBall.AddPropertyNotification( Actor::POSITION_X, LessThanCondition(margin) );
+    leftNotification.NotifySignal().Connect( this, &ExampleController::OnHitLeftWall );
+
+    PropertyNotification rightNotification = mBall.AddPropertyNotification( Actor::POSITION_X, GreaterThanCondition(stageSize.width - margin) );
+    rightNotification.NotifySignal().Connect( this, &ExampleController::OnHitRightWall );
+
+    PropertyNotification topNotification = mBall.AddPropertyNotification( Actor::POSITION_Y, LessThanCondition(margin) );
+    topNotification.NotifySignal().Connect( this, &ExampleController::OnHitTopWall );
+
+    PropertyNotification bottomNotification = mBall.AddPropertyNotification( Actor::POSITION_Y, GreaterThanCondition(stageSize.height + margin) );
+    bottomNotification.NotifySignal().Connect( this, &ExampleController::OnHitBottomWall );
+
+    // Set up notification for ball colliding against paddle.
+    Actor delegate = Actor::New();
+    stage.Add(delegate);
+    Property::Index property = delegate.RegisterProperty(COLLISION_PROPERTY_NAME, Vector3::ZERO);
+    Constraint constraint = Constraint::New<Vector3>( property,
+                                                    Source(mBall, Actor::POSITION),
+                                                    Source(mPaddle, Actor::POSITION),
+                                                    Source(mBall, Actor::SIZE),
+                                                    Source(mPaddle, Actor::SIZE),
+                                                    CollisionCircleRectangleConstraint( -Vector3(0.0f, mPaddleHitMargin.height * 0.575f, 0.0f),-Vector3(mPaddleHitMargin) ));
+    delegate.ApplyConstraint(constraint);
+
+    PropertyNotification paddleNotification = delegate.AddPropertyNotification( property, GreaterThanCondition(0.0f) );
+    paddleNotification.NotifySignal().Connect( this, &ExampleController::OnHitPaddle );
+
+    RestartGame();
+  }
+
+  /**
+   * Restarts Game
+   * Resets Lives count and other stats, and loads level
+   */
+  void RestartGame()
+  {
+    mLives = TOTAL_LIVES;
+    mLevel = 0;
+    mBall.SetPosition( mBallStartPosition );
+    mBallVelocity = Vector3::ZERO;
+    mPaddle.SetSize( mPaddleFullSize + mPaddleHitMargin );
+    mPaddleImage.SetSize( mPaddleFullSize );
+
+    LoadLevel(mLevel);
+  }
+
+  /**
+   * Loads level
+   * All existing level content is removed, and new bricks
+   * are added.
+   * @param[in] level Level index to load.
+   */
+  void LoadLevel(int level)
+  {
+    if(mLevelContainer && mLevelContainer.GetParent() == mContentLayer)
+    {
+      mContentLayer.Remove( mLevelContainer );
+    }
+
+    mLevelContainer = Actor::New();
+    mLevelContainer.SetAnchorPoint( AnchorPoint::CENTER );
+    mLevelContainer.SetParentOrigin( ParentOrigin::CENTER );
+    mLevelContainer.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+    mContentLayer.Add( mLevelContainer );
+
+    mBrickCount = 0;
+
+    switch(level%TOTAL_LEVELS)
+    {
+      case 0:
+      {
+        GenerateLevel0();
+        break;
+      }
+      case 1:
+      {
+        GenerateLevel1();
+        break;
+      }
+      case 2:
+      {
+        GenerateLevel2();
+        break;
+      }
+      default:
+      {
+        break;
+      }
+    } // end switch
+  }
+
+  /**
+   * Generates level 0
+   */
+  void GenerateLevel0()
+  {
+    Vector2 stageSize(Stage::GetCurrent().GetSize());
+    const Vector2 brickSize(BRICK_SIZE * stageSize.width);
+
+    const int columns = (0.85f * stageSize.width) / brickSize.width; // 85 percent of the width of the screen covered with bricks.
+    const int rows = (0.3f * stageSize.height) / brickSize.height;   // 30 percent of the height of the screen covered with bricks.
+    const Vector2 offset( (stageSize.x - (columns * brickSize.width)) * 0.5f,
+                           stageSize.y * 0.125f );
+
+    for(int j = 0; j < rows; j++)
+    {
+      for(int i = 0; i < columns; i++)
+      {
+        Actor brick = CreateBrick(Vector2(i * brickSize.width + offset.x, j * brickSize.height + offset.y) + (brickSize * 0.5f), j % TOTAL_BRICKS );
+        mLevelContainer.Add(brick);
+        mBrickCount++;
+      }
+    }
+  }
+
+  /**
+   * Generates level 1
+   */
+  void GenerateLevel1()
+  {
+    Vector2 stageSize(Stage::GetCurrent().GetSize());
+    const Vector2 brickSize(BRICK_SIZE * stageSize.width);
+
+    const int columns = (0.85f * stageSize.width) / brickSize.width; // 85 percent of the width of the screen covered with bricks.
+    const int rows = (0.3f * stageSize.height) / brickSize.height;   // 30 percent of the height of the screen covered with bricks.
+    const Vector2 offset( (stageSize.x - (columns * brickSize.width)) * 0.5f,
+                           stageSize.y * 0.125f );
+
+    for(int j = 0; j < rows; j++)
+    {
+      for(int i = 0; i < columns; i++)
+      {
+        int i2 = columns - i - 1;
+        int j2 = rows - j - 1;
+        int brickIndex = std::min( std::min(i, j), std::min(i2, j2) ) % TOTAL_BRICKS;
+
+        Actor brick = CreateBrick(Vector2(i * brickSize.width + offset.x, j * brickSize.height + offset.y) + (brickSize * 0.5f), brickIndex );
+
+        mLevelContainer.Add(brick);
+        mBrickCount++;
+      }
+    }
+  }
+
+  /**
+   * Generates level 2
+   */
+  void GenerateLevel2()
+  {
+    Vector2 stageSize(Stage::GetCurrent().GetSize());
+    const Vector2 brickSize(BRICK_SIZE * stageSize.width);
+
+    const int columns = (0.85f * stageSize.width) / brickSize.width; // 85 percent of the width of the screen covered with bricks.
+    const int rows = (0.3f * stageSize.height) / brickSize.height;   // 30 percent of the height of the screen covered with bricks.
+    const Vector2 offset( (stageSize.x - (columns * brickSize.width)) * 0.5f,
+                           stageSize.y * 0.125f );
+
+    // lays down bricks in a spiral formation starting at i,j = (0,0) top left corner
+    // travelling right di,dj = (1,0) initially
+    int i = 0;
+    int j = 0;
+    int di = 1;
+    int dj = 0;
+
+    // contracting boundaries
+    int left = 0;
+    int right = columns - 1;
+    int top = 2;
+    int bottom = rows - 1;
+
+    // length of current line. we stop laying down bricks when the length is 1 brick or less.
+    int length = 0;
+    while(true)
+    {
+      Actor brick = CreateBrick(Vector2(i * brickSize.width + offset.x, j * brickSize.height + offset.y) + (brickSize * 0.5f), 0 );
+      mLevelContainer.Add(brick);
+      i+=di;
+      j+=dj;
+      bool turn(false);
+      if((i==right) && (di==1))
+      {
+        right -= 2;
+        turn = true;
+      }
+      if((j==bottom) && (dj==1))
+      {
+        bottom -= 2;
+        turn = true;
+      }
+      if((i==left) && (di==-1))
+      {
+        left += 2;
+        turn = true;
+      }
+      if((j==top) && (dj==-1))
+      {
+        top += 2;
+        turn = true;
+      }
+      if(turn)
+      {
+        // turn 90 degrees clockwise.
+        swap(di, dj);
+        di = -di;
+        if (length<=1)
+        {
+          break;
+        }
+        length = 0;
+      }
+      length++;
+      mBrickCount++;
+    }
+  }
+
+
+  /**
+   * Creates a brick at a specified position on the stage
+   * @param[in] position the position for the brick
+   * @param[in] type the type of brick
+   * @return The Brick Actor is returned.
+   */
+  Actor CreateBrick( const Vector2& position, int type )
+  {
+    Vector2 stageSize(Stage::GetCurrent().GetSize());
+    const Vector2 brickSize(BRICK_SIZE * Vector2(stageSize.x, stageSize.x));
+
+    ImageAttributes attr;
+    attr.SetSize( 128, 64 );
+    attr.SetScalingMode( ImageAttributes::ScaleToFill );
+    Image img = Image::New(BRICK_IMAGE_PATH[type], attr);
+    ImageActor brick = ImageActor::New(img);
+    brick.SetParentOrigin(ParentOrigin::TOP_LEFT);
+    brick.SetAnchorPoint(AnchorPoint::CENTER);
+    brick.SetSize( brickSize );
+    brick.SetPosition( Vector3( position ) );
+
+    // Add a constraint on the brick between it and the ball generating a collision-property
+    Property::Index property = brick.RegisterProperty(COLLISION_PROPERTY_NAME, Vector3::ZERO);
+    Constraint constraint = Constraint::New<Vector3>( property,
+                                                    Source(mBall, Actor::POSITION),
+                                                    Source(brick, Actor::POSITION),
+                                                    Source(mBall, Actor::SIZE),
+                                                    Source(brick, Actor::SIZE),
+                                                    CollisionCircleRectangleConstraint(BRICK_COLLISION_MARGIN));
+    brick.ApplyConstraint(constraint);
+
+    // Now add a notification on this collision-property
+
+    PropertyNotification brickNotification = brick.AddPropertyNotification( property, GreaterThanCondition(0.0f) );
+    brickNotification.NotifySignal().Connect( this, &ExampleController::OnHitBrick );
+
+    return brick;
+  }
+
+  /**
+   * Creates an Image (Helper)
+   *
+   * @param[in] filename the path of the image.
+   */
+  ImageActor CreateImage(const std::string& filename)
+  {
+    Image img = Image::New(filename);
+    ImageActor actor = ImageActor::New(img);
+    actor.SetParentOrigin(ParentOrigin::TOP_LEFT);
+    actor.SetAnchorPoint(AnchorPoint::CENTER);
+    return actor;
+  }
+
+  /**
+   * Continue animation (based on current velocity)
+   */
+  void ContinueAnimation()
+  {
+    if(mBallAnimation)
+    {
+      mBallAnimation.Clear();
+    }
+
+    mBallAnimation = Animation::New(MAX_ANIMATION_DURATION);
+    mBallAnimation.AnimateBy( Property( mBall, Actor::POSITION ), mBallVelocity * MAX_ANIMATION_DURATION);
+    mBallAnimation.Play();
+  }
+
+  /**
+   * Signal invoked whenever user touches the Paddle.
+   * @param[in] actor The actor touched
+   * @param[in] event The touch event
+   */
+  bool OnTouchPaddle(Actor actor, const TouchEvent& event)
+  {
+    if(event.GetPointCount()>0)
+    {
+      const TouchPoint& point = event.GetPoint(0);
+      if(point.state==TouchPoint::Down) // Commence dragging
+      {
+        // Get point where user touched paddle (relative to paddle's center)
+        mRelativeDragPoint = Vector3(point.screen.x, point.screen.y, 0.0f);
+        mRelativeDragPoint -= actor.GetCurrentPosition();
+
+        mDragActor = actor;
+        mDragAnimation = Animation::New(0.25f);
+        mDragAnimation.AnimateTo( Property(mDragActor, Actor::SCALE), Vector3(1.1f, 1.1f, 1.0f), AlphaFunctions::EaseOut);
+        mDragAnimation.AnimateTo( Property(mPaddleHandle, Actor::COLOR), Vector4(1.0f, 1.0f, 1.0f, 0.0f), AlphaFunctions::EaseOut);
+        mDragAnimation.Play();
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Signal invoked whenever user touches anywhere on the screen.
+   * @param[in] actor The actor touched
+   * @param[in] event The touch event
+   */
+  bool OnTouchLayer(Actor actor, const TouchEvent& event)
+  {
+    if(event.GetPointCount()>0)
+    {
+      const TouchPoint& point = event.GetPoint(0);
+      if(mDragActor)
+      {
+        Vector3 position(point.screen.x, point.screen.y, 0.0f);
+        mPaddle.SetPosition( position - mRelativeDragPoint );
+
+        if(point.state==TouchPoint::Up) // Stop dragging
+        {
+          mDragAnimation = Animation::New(0.25f);
+          mDragAnimation.AnimateTo( Property(mDragActor, Actor::SCALE), Vector3(1.0f, 1.0f, 1.0f), AlphaFunctions::EaseIn);
+          mDragAnimation.AnimateTo( Property(mPaddleHandle, Actor::COLOR), Vector4(1.0f, 1.0f, 1.0f, 1.0f), AlphaFunctions::EaseOut);
+          mDragAnimation.Play();
+          mDragActor.Reset();
+        }
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Notification: Ball hit left wall
+   * @param source The notification
+   */
+  void OnHitLeftWall(PropertyNotification& source)
+  {
+    mBallVelocity.x = fabsf(mBallVelocity.x);
+    ContinueAnimation();
+  }
+
+  /**
+   * Notification: Ball hit right wall
+   * @param source The notification
+   */
+  void OnHitRightWall(PropertyNotification& source)
+  {
+    mBallVelocity.x = -fabsf(mBallVelocity.x);
+    ContinueAnimation();
+  }
+
+  /**
+   * Notification: Ball hit top wall
+   * @param source The notification
+   */
+  void OnHitTopWall(PropertyNotification& source)
+  {
+    mBallVelocity.y = fabsf(mBallVelocity.y);
+    ContinueAnimation();
+  }
+
+  /**
+   * Notification: Ball hit bottom wall
+   * @param source The notification
+   */
+  void OnHitBottomWall(PropertyNotification& source)
+  {
+    if(mBallAnimation)
+    {
+      mBallAnimation.Clear();
+    }
+
+    if(mLives>0)
+    {
+      mLives--;
+      const float f(static_cast<float>(mLives) / TOTAL_LIVES);
+      mBallVelocity = Vector3::ZERO;
+
+      Animation shrink = Animation::New(0.5f);
+      shrink.AnimateTo( Property(mPaddle, Actor::SIZE_WIDTH), mPaddleFullSize.x * f + mPaddleHitMargin.x);
+      shrink.AnimateTo( Property(mPaddleImage, Actor::SIZE_WIDTH), mPaddleFullSize.x * f );
+
+      shrink.FinishedSignal().Connect( this, &ExampleController::OnPaddleShrunk );
+      shrink.Play();
+    }
+  }
+
+  /**
+   * Paddle Shrink Animation complete.
+   * @param[in] source The animation responsible for shrinking the paddle.
+   */
+  void OnPaddleShrunk( Animation &source )
+  {
+    // Reposition Ball in start position, and make ball appear.
+    mBall.SetPosition( mBallStartPosition );
+    mBall.SetColor( Vector4(1.0f, 1.0f, 1.0f, 0.1f) );
+    Animation appear = Animation::New(0.5f);
+    appear.AnimateTo( Property(mBall, Actor::COLOR), Vector4(1.0f, 1.0f, 1.0f, 1.0f) );
+    appear.Play();
+
+    if(!mLives)
+    {
+      RestartGame();
+    }
+  }
+
+  /**
+   * Notification: Ball hit paddle
+   * @param source The notification
+   */
+  void OnHitPaddle(PropertyNotification& source)
+  {
+    Actor delegate = Actor::DownCast(source.GetTarget());
+    Vector3 collisionVector = delegate.GetProperty<Vector3>(source.GetTargetProperty());
+    Vector3 ballRelativePosition(mBall.GetCurrentPosition() - mPaddle.GetCurrentPosition());
+    ballRelativePosition.Normalize();
+
+    collisionVector.x += ballRelativePosition.x * 0.5f;
+
+    if(mBallVelocity.LengthSquared() < Math::MACHINE_EPSILON_1)
+    {
+      mBallVelocity += collisionVector * BALL_VELOCITY;
+    }
+    else
+    {
+      const float normalVelocity = fabsf(mBallVelocity.Dot(collisionVector));
+      mBallVelocity += collisionVector * normalVelocity * 2.0f;
+      const float currentSpeed = mBallVelocity.Length();
+      const float limitedSpeed = std::min( currentSpeed, MAX_VELOCITY );
+      mBallVelocity = mBallVelocity * limitedSpeed / currentSpeed;
+    }
+
+    ContinueAnimation();
+
+    // wobble paddle
+    mWobbleAnimation = Animation::New(0.5f);
+    mWobbleAnimation.AnimateTo( Property( mPaddle, mWobbleProperty ), 1.0f );
+    mWobbleAnimation.Play();
+    mPaddle.SetProperty(mWobbleProperty, 0.0f);
+  }
+
+  /**
+   * Notification: Ball hit brick
+   * @param source The notification
+   */
+  void OnHitBrick(PropertyNotification& source)
+  {
+    Actor brick = Actor::DownCast(source.GetTarget());
+    Vector3 collisionVector = brick.GetProperty<Vector3>(source.GetTargetProperty());
+
+    const float normalVelocity = fabsf(mBallVelocity.Dot(collisionVector));
+    mBallVelocity += collisionVector * normalVelocity * 2.0f;
+    const float currentSpeed = mBallVelocity.Length();
+    const float limitedSpeed = std::min( currentSpeed, MAX_VELOCITY );
+    mBallVelocity = mBallVelocity * limitedSpeed / currentSpeed;
+
+    ContinueAnimation();
+
+    // remove collision-constraint and notification.
+    brick.RemovePropertyNotification(source);
+    brick.RemoveConstraints();
+
+    // fade brick (destroy)
+    Animation destroyAnimation = Animation::New(0.5f);
+    destroyAnimation.AnimateTo( Property( brick, Actor::COLOR_ALPHA ), 0.0f, AlphaFunctions::EaseIn );
+    destroyAnimation.Play();
+    destroyAnimation.FinishedSignal().Connect( this, &ExampleController::OnBrickDestroyed );
+    mDestroyAnimationMap[destroyAnimation] = brick;
+  }
+
+  /**
+   * Brick Destruction Animation complete.
+   * @param[in] source The animation responsible for destroying the brick
+   */
+  void OnBrickDestroyed( Animation& source )
+  {
+    // Remove brick from stage, it's constraint and property notification should also remove themselves.
+    Actor brick = mDestroyAnimationMap[source];
+    mDestroyAnimationMap.erase(source);
+    brick.GetParent().Remove(brick);
+    mBrickCount--;
+
+    if(!mBrickCount)
+    {
+      mLevel++;
+      LoadLevel(mLevel);
+    }
+  }
+
+  /**
+   * Main key event handler
+   */
+  void OnKeyEvent(const KeyEvent& event)
+  {
+    if(event.state == KeyEvent::Down)
+    {
+      if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+      {
+        mApplication.Quit();
+      }
+    }
+  }
+
+private:
+
+  Application& mApplication;                            ///< Application instance
+  Toolkit::View mView;                                  ///< The View instance.
+  Layer mContentLayer;                                  ///< The content layer (contains game actors)
+  ImageActor mBall;                                     ///< The Moving ball image.
+  Vector3 mBallStartPosition;                           ///< Ball Start position
+  Vector3 mBallVelocity;                                ///< Ball's current direction.
+  Animation mBallAnimation;                             ///< Ball's animation
+  Actor mPaddle;                                        ///< The paddle including hit area.
+  ImageActor mPaddleImage;                              ///< The paddle's image.
+  ImageActor mPaddleHandle;                             ///< The paddle's handle (where the user touches)
+  Vector2 mPaddleHitMargin;                             ///< The paddle hit margin.
+  Animation mWobbleAnimation;                           ///< Paddle's animation when hit (wobbles)
+  Property::Index mWobbleProperty;                      ///< The wobble property (generated from animation)
+  Actor mLevelContainer;                                ///< The level container (contains bricks)
+
+  // actor - dragging functionality
+
+  Animation mDragAnimation;                             ///< Animation for dragging. (grows - affects ACTOR::SCALE)
+  Actor mDragActor;                                     ///< The actor which is being dragged (if any)
+  Vector3 mRelativeDragPoint;                           ///< The point the user touched, relative to the actor.
+  std::map<Animation, Actor> mDestroyAnimationMap;      ///< Keep track of which actors are to be destroyed.
+  Vector2 mPaddleFullSize;                              ///< Initial 100% size of the paddle.
+  int mLevel;                                           ///< Current level
+  int mLives;                                           ///< Total lives.
+  int mBrickCount;                                      ///< Total bricks on screen.
+};
+
+void RunTest(Application& app)
+{
+  ExampleController test(app);
+
+  app.MainLoop();
+}
+
+int main(int argc, char **argv)
+{
+  Application app = Application::New(&argc, &argv);
+
+  RunTest(app);
+
+  return 0;
+}
diff --git a/examples/cluster/cluster-example.cpp b/examples/cluster/cluster-example.cpp
new file mode 100644 (file)
index 0000000..af3a37c
--- /dev/null
@@ -0,0 +1,860 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <sstream>
+#include <iomanip>
+
+#include "../shared/view.h"
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+using namespace std;
+using namespace DemoHelper;
+
+namespace // unnamed namespace
+{
+
+const char* BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-default.png" );
+const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
+const char* APPLICATION_TITLE( "Clusters" );
+const char* CHANGE_EFFECT_IMAGE( DALI_IMAGE_DIR "icon_mode.png" );
+
+enum ClusterType
+{
+  PEOPLE,
+  TODAY,
+  PHONE,
+  PICTURES,
+  MUSIC,
+  MAGAZINE,
+
+  CLUSTER_COUNT
+};
+
+const char* PEOPLE_IMAGE_PATHS[] =   { DALI_IMAGE_DIR "people-medium-1.jpg",
+                                       DALI_IMAGE_DIR "people-medium-2.jpg",
+                                       DALI_IMAGE_DIR "people-medium-3.jpg",
+                                       DALI_IMAGE_DIR "people-medium-4.jpg",
+                                       DALI_IMAGE_DIR "people-medium-5.jpg",
+                                       DALI_IMAGE_DIR "people-medium-6.jpg",
+                                       DALI_IMAGE_DIR "people-medium-7.jpg",
+                                       DALI_IMAGE_DIR "people-medium-8.jpg",
+                                       NULL };
+
+const char* TODAY_IMAGE_PATHS[] =    { DALI_IMAGE_DIR "gallery-medium-1.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-2.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-3.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-4.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-5.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-6.jpg",
+                                       NULL };
+
+const char* PHONE_IMAGE_PATHS[] =    { DALI_IMAGE_DIR "gallery-medium-7.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-8.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-9.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-10.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-11.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-12.jpg",
+                                       NULL };
+
+const char* PICTURES_IMAGE_PATHS[] = { DALI_IMAGE_DIR "gallery-medium-13.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-14.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-15.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-16.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-17.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-18.jpg",
+                                       NULL };
+
+const char* MUSIC_IMAGE_PATHS[] =    { DALI_IMAGE_DIR "gallery-medium-19.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-20.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-21.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-22.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-23.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-24.jpg",
+                                       NULL };
+
+const char* MAGAZINE_IMAGE_PATHS[] = { DALI_IMAGE_DIR "gallery-medium-25.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-26.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-27.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-28.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-29.jpg",
+                                       DALI_IMAGE_DIR "gallery-medium-30.jpg",
+                                       NULL };
+
+const char **IMAGE_GROUPS[] = {PEOPLE_IMAGE_PATHS,
+                               TODAY_IMAGE_PATHS,
+                               PHONE_IMAGE_PATHS,
+                               PICTURES_IMAGE_PATHS,
+                               MUSIC_IMAGE_PATHS,
+                               MAGAZINE_IMAGE_PATHS,
+                               NULL};
+
+const float CLUSTER_IMAGE_THUMBNAIL_WIDTH  = 256.0f;
+const float CLUSTER_IMAGE_THUMBNAIL_HEIGHT = 256.0f;
+
+const char* CLUSTER_SHADOW_IMAGE_PATH = DALI_IMAGE_DIR "cluster-image-shadow.png";
+const char* CLUSTER_BORDER_IMAGE_PATH = DALI_IMAGE_DIR "cluster-image-frame.png";
+const char* CLUSTER_BACKGROUND_IMAGE_PATH = DALI_IMAGE_DIR "cluster-background.png";
+
+const float CLUSTER_IMAGE_BORDER_INDENT = 14.0f;            ///< Indent of border in pixels.
+const float CLUSTER_IMAGE_BORDER_WIDTH = 128;               ///< Width of border in pixels.
+const float CLUSTER_IMAGE_BORDER_HEIGHT = 128;              ///< Height of border in pixels.
+
+const Vector4 CLUSTER_IMAGE_BORDER_ABSOLUTE( 16.0f, 16.0f, 16.0f, 16.0f ); // Border dimensions in absolute pixel coordinates.
+
+// These values depend on the border image
+const float CLUSTER_RELATIVE_SIZE = 0.65f;                  ///< Cluster size relative to screen width
+
+const float CLUSTER_GROUP_DELAY_TOP = 0.25f;                ///< Delay for top Clusters in seconds.
+const float CLUSTER_GROUP_DELAY_BOTTOM = 0.0f;              ///< Delay for bottom Clusters in seconds.
+
+const float CLUSTER_COLUMN_SPACING = 1.0f;                  ///< Spacing in screen coordinates.
+const float CLUSTER_COLUMN_INDENT = 0.1f;                   ///< Left Indentation in screen coordinates.
+const float CLUSTER_ROW_SPACING = 0.42f;                    ///< Spacing in screen coordinates.
+const float CLUSTER_ROW_INDENT = 0.13f;                     ///< Top Indentation in screen coordinates.
+const float CLUSTER_BOTTOM_SHIFT = 0.15f;                   ///< Bottom row is shifted right by 15% of screen width.
+
+const Vector3 SHEAR_EFFECT_ANCHOR_POINT(0.5f, 1.0f, 0.5f);  ///< Anchor Point used for the shear effect (extends outside of Cluster)
+const float SHEAR_EFFECT_MAX_OVERSHOOT = 30.0f;             ///< Max Overshoot for shear effect (in degrees).
+
+const float UI_MARGIN = 10.0f;                              ///< Screen Margin for placement of UI buttons
+
+const float CAROUSEL_EFFECT_RADIUS = 500.0f;                  ///< In Carousel Effect mode: Radius of carousel (Z peak depth)
+const float CAROUSEL_EFFECT_ANGLE_SWEEP = 90.0f;              ///< In Carousel Effect mode: Angle sweep from left to right of screen
+const float SPHERE_EFFECT_RADIUS = 1000.0f;                   ///< In Sphere Effect mode: Radius of sphere carousel (Z peak depth)
+const float SPHERE_EFFECT_POSITION_Z = -700.0f;               ///< In Sphere Effect mode: Z position alter (as carousel is coming out to screen we move back)
+const float SPHERE_EFFECT_ANGLE_SWEEP = 90.0f;                ///< In Sphere Effect mode: Angle sweep from edge to opposite side of circle.
+const float SPHERE_EFFECT_VERTICAL_DOMAIN = 0.15f;             ///< In Sphere Effect mode: How much the user can pan in the vertical axis. (in stageHeights)
+
+/**
+ * List of effect types that user can select through.
+ */
+enum ExampleEffectType
+{
+  NO_EFFECT,
+  WOBBLE_EFFECT,
+  CAROUSEL_EFFECT,
+  SPHERE_EFFECT,
+  TOTAL_EFFECTS
+};
+
+/**
+ * List of effect type names that appear on the Effect button.
+ */
+const char* EXAMPLE_EFFECT_LABEL[] = { "NONE",
+                                       "WOBBLE",
+                                       "CAROUSEL",
+                                       "SPHERE" };
+
+/**
+ * CarouselEffectOrientationConstraint
+ * Based on the View orientation i.e. portrait (0 degrees), landscape (90 degrees) etc.
+ * carousel shader effect should bend differently (as a function of this orientation),
+ * as shader effect is applied to the screen coordinates.
+ */
+struct CarouselEffectOrientationConstraint
+{
+  /**
+   * Constructor
+   * @param[in] angleSweep The amount of degrees to rotate by per pixel.
+   */
+  CarouselEffectOrientationConstraint( const Vector2 angleSweep )
+  : mAngleSweep( angleSweep )
+  {
+  }
+
+  /**
+   * @param[in] current The object's current property value
+   * @return The object's new property value
+   */
+  Vector2 operator()(const Vector2& current,
+                     const PropertyInput& propertyOrientation)
+  {
+    Vector3 axis;
+    float angle;
+    propertyOrientation.GetQuaternion().ToAxisAngle( axis, angle );
+    Vector2 direction( cosf(angle), sinf(angle) );
+
+    return mAngleSweep * direction;
+  }
+
+  Vector2 mAngleSweep;
+
+};
+
+/**
+ * RescaleConstraint
+ * Rescales the inputer scale by the ratio of the height:width of it's parent.
+ */
+struct RescaleConstraint
+{
+  /**
+   * Constructor
+   * @param[in] value0 Constant multiplication operand (K).
+   */
+  RescaleConstraint()
+  {
+  }
+
+  /**
+   * @param[in] current The object's current property value
+   * @param[in] property0 The first property to multiplication operand
+   * @return The object's new property value
+   */
+  Vector3 operator()(const Vector3&    current,
+                     const PropertyInput& property0)
+  {
+    return current * Vector3( property0.GetVector3().y / property0.GetVector3().x, 1.0f, 1.0f );
+  }
+
+};
+
+/**
+ * ClusterImageBorderSizeConstraint
+ */
+struct ClusterImageBorderSizeConstraint
+{
+  ClusterImageBorderSizeConstraint()
+  : mSizeOffset(Vector3(CLUSTER_IMAGE_BORDER_INDENT - 1, CLUSTER_IMAGE_BORDER_INDENT - 1, 0.0f) * 2.0f)
+  {
+  }
+
+  Vector3 operator()(const Vector3&    current,
+                     const PropertyInput& referenceSizeProperty)
+  {
+    const Vector3& referenceSize = referenceSizeProperty.GetVector3();
+
+    return referenceSize + mSizeOffset;
+  }
+
+  Vector3 mSizeOffset;                        ///< The amount to offset the size from referenceSize
+};
+
+/**
+ * ShearEffectConstraint
+ *
+ * Constrains ShearEffect's tilt to be a function of scrollview's
+ * horizontal overshoot amount.
+ */
+struct ShearEffectConstraint
+{
+  /**
+   * @param[in] stageSize The stage size (not subject to orientation)
+   * @param[in] maxOvershoot Maximum amount overshoot can affect shear.
+   * @param[in] componentMask Whether constraint should take the X shear
+   * or the Y shear component.
+   */
+  ShearEffectConstraint(Vector2 stageSize, float maxOvershoot, Vector2 componentMask)
+  : mStageSize(stageSize),
+    mMaxOvershoot(maxOvershoot),
+    mComponentMask(componentMask)
+  {
+  }
+
+  /**
+   * @param[in] current The current shear effect Angle.
+   * @param[in] scrollOvershootProperty The overshoot property from ScrollView
+   * @param[in] propertyViewOrientation The orientation of the view e.g. Portrait, Landscape.
+   * @return angle to provide ShearShaderEffect
+   */
+  float operator()(const float&    current,
+                   const PropertyInput& scrollOvershootProperty,
+                   const PropertyInput& propertyViewOrientation)
+  {
+    float f = scrollOvershootProperty.GetVector3().x;
+
+    float mag = fabsf(f);
+    float halfWidth = mStageSize.x * 0.5f;
+
+    // inverse exponential tail-off
+    float overshoot = 1.0f - halfWidth / (halfWidth + mag);
+    if (f > 0.0f)
+    {
+      overshoot = -overshoot;
+    }
+
+    // Channel this shear value into either the X or Y axis depending on
+    // the component mask passed in.
+    Vector3 axis;
+    float angle;
+    propertyViewOrientation.GetQuaternion().ToAxisAngle( axis, angle );
+    Vector2 direction( cosf(angle), sinf(angle) );
+    float yield = direction.x * mComponentMask.x + direction.y * mComponentMask.y;
+
+    return overshoot * mMaxOvershoot * yield;
+  }
+
+  Vector2 mStageSize;
+  float mMaxOvershoot;
+  Vector2 mComponentMask;
+};
+
+/**
+ * ShearEffectCenterConstraint
+ *
+ * Sets ShearEffect's center to be a function of the
+ * screen orientation (portrait or landscape).
+ */
+struct ShearEffectCenterConstraint
+{
+  /**
+   * @param[in] stageSize The stage size (not subject to orientation)
+   * @param[in] center Shear Center position based on initial orientation.
+   */
+  ShearEffectCenterConstraint(Vector2 stageSize, Vector2 center)
+  : mStageSize(stageSize),
+    mCenter(center)
+  {
+  }
+
+  /**
+   * @param[in] current The current center
+   * @param[in] propertyViewSize The current view size
+   * @return vector to provide ShearShaderEffect
+   */
+  Vector2 operator()(const Vector2&    current,
+                     const PropertyInput& propertyViewSize)
+  {
+    float f = propertyViewSize.GetVector3().width / mStageSize.width;
+    return Vector2( f * mCenter.x, mCenter.y );
+  }
+
+  Vector2 mStageSize;
+  Vector2 mCenter;
+};
+
+/**
+ * ClusterInfo struct
+ *
+ * Contains information about each cluster in mClusterInfo list.
+ */
+struct ClusterInfo
+{
+  /**
+   * Constructor
+   *
+   * @param[in] cluster The cluster instance
+   * @param[in] index The cluster's index (starting from 0 for the first cluster)
+   * @param[in] position The cluster's original position
+   * @param[in] size The cluster's original size
+   */
+  ClusterInfo(Cluster cluster, int index, const Vector3& position, const Vector3& size)
+  : mCluster(cluster),
+    mIndex(index),
+    mPosition(position),
+    mSize(size)
+  {
+
+  }
+
+  /**
+   * Copy constructor
+   *
+   * @param[in] rhs The ClusterInfo struct to be copied.
+   */
+  ClusterInfo( const ClusterInfo& rhs )
+  : mCluster(rhs.mCluster),
+    mIndex(rhs.mIndex),
+    mPosition(rhs.mPosition),
+    mSize(rhs.mSize)
+  {
+
+  }
+
+  Cluster mCluster;             ///< Cluster instance
+  int mIndex;                   ///< Cluster index
+  Vector3 mPosition;            ///< Cluster original position
+  Vector3 mSize;                ///< Cluster original size
+};
+
+/**
+ * Shrinks Actor based on parent's aspect ratio.
+ */
+struct ShrinkConstraint
+{
+  /**
+   * Constructor
+   */
+  ShrinkConstraint()
+  {
+  }
+
+  /**
+   * @param[in] current The object's current scale value
+   * @param[in] parentScale The parent's scale
+   * @return The object's new scale value
+   */
+  Vector3 operator()(const Vector3&    current,
+                     const PropertyInput& parentScale)
+  {
+    return Vector3( parentScale.GetVector3().x / parentScale.GetVector3().y, 1.0f, 1.0f );
+  }
+};
+
+} // unnamed namespace
+
+/**
+ * Custom position and size of shadow image
+ */
+namespace ShadowProperty
+{
+const Vector3 ANCHOR_POINT      (0.54f, 0.6f, 0.5f);
+const Vector3 RELATIVE_POSITION (0.0f, 0.0f, -0.1f);
+const Vector3 SIZE_SCALE        (1.4f, 1.4f, 1.0f);
+}
+
+// This example shows how to use Cluster UI control
+//
+class ClusterController : public ConnectionTracker
+{
+public:
+
+  /**
+   * Constructor
+   * @param application class, stored as reference
+   */
+  ClusterController(Application &app)
+  : mApplication(app),
+    mClusterCount(0),
+    mExampleEffect(NO_EFFECT)
+  {
+    // Connect to the Application's Init signal
+    app.InitSignal().Connect(this, &ClusterController::Create);
+  }
+
+  ~ClusterController()
+  {
+    // Nothing to do here; everything gets deleted automatically
+  }
+
+  /**
+   * This method gets called once the main loop of application is up and running
+   */
+  void Create(Application& application)
+  {
+    Stage::GetCurrent().KeyEventSignal().Connect(this, &ClusterController::OnKeyEvent);
+
+    Vector2 stageSize = Stage::GetCurrent().GetSize();
+
+    // The Init signal is received once (only) during the Application lifetime
+
+    // Hide the indicator bar
+    application.GetWindow().ShowIndicator( false );
+
+    // Creates a default view with a default tool bar.
+    // The view is added to the stage.
+    mContentLayer = DemoHelper::CreateView( application,
+                                            mView,
+                                            mToolBar,
+                                            BACKGROUND_IMAGE,
+                                            TOOLBAR_IMAGE,
+                                            "" );
+
+    // Create a effect toggle button. (right of toolbar)
+    Image imageLayout = Image::New( CHANGE_EFFECT_IMAGE );
+    Toolkit::PushButton layoutButton = Toolkit::PushButton::New();
+    layoutButton.SetBackgroundImage(imageLayout);
+    layoutButton.ClickedSignal().Connect( this, &ClusterController::OnEffectTouched );
+    mToolBar.AddControl( layoutButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING  );
+
+    // create and setup the scroll view...
+    mScrollView = ScrollView::New();
+    mScrollView.SetSize(stageSize);
+
+    // attach Wobble Effect to ScrollView
+    mScrollViewEffect = ScrollViewWobbleEffect::New();
+    mScrollView.ApplyEffect(mScrollViewEffect);
+
+    // anchor the scroll view from its center point to the middle of its parent
+    mScrollView.SetAnchorPoint(AnchorPoint::CENTER);
+    mScrollView.SetParentOrigin(ParentOrigin::CENTER);
+
+    // Scale ScrollView to fit within parent (mContentLayer)
+    Constraint constraint = Constraint::New<Vector3>( Actor::SCALE,
+                                                    LocalSource( Actor::SIZE ),
+                                                    ParentSource( Actor::SIZE ),
+                                                    ScaleToFitConstraint() );
+    mScrollView.ApplyConstraint(constraint);
+
+    // Add the scroll view to the content layer
+    mContentLayer.Add(mScrollView);
+
+    // Create the image border shared by all the cluster image actors
+    mClusterBorderImage = Image::New(CLUSTER_BORDER_IMAGE_PATH);
+
+    AddCluster( PEOPLE,   ClusterStyleStandard::New(ClusterStyleStandard::ClusterStyle1) );
+    AddCluster( TODAY,    ClusterStyleStandard::New(ClusterStyleStandard::ClusterStyle2) );
+    AddCluster( PHONE,    ClusterStyleStandard::New(ClusterStyleStandard::ClusterStyle3) );
+    AddCluster( PICTURES, ClusterStyleStandard::New(ClusterStyleStandard::ClusterStyle4) );
+    AddCluster( MUSIC,    ClusterStyleStandard::New(ClusterStyleStandard::ClusterStyle2) );
+    AddCluster( MAGAZINE, ClusterStyleStandard::New(ClusterStyleStandard::ClusterStyle3) );
+
+    SetEffect(WOBBLE_EFFECT);
+  }
+
+  /**
+   * Helper to create the cluster actors
+   */
+  Cluster CreateClusterActor(ClusterType clusterType, ClusterStyle style)
+  {
+    // Create the cluster actor with the given cluster style
+    Cluster clusterActor = Cluster::New(style);
+    clusterActor.SetParentOrigin(ParentOrigin::CENTER);
+    clusterActor.SetAnchorPoint(AnchorPoint::CENTER);
+
+    Vector2 stageSize = Dali::Stage::GetCurrent().GetSize();
+    clusterActor.SetSize(stageSize.x * CLUSTER_RELATIVE_SIZE, stageSize.x * CLUSTER_RELATIVE_SIZE, 0.0f);
+
+    DALI_ASSERT_ALWAYS(clusterType < CLUSTER_COUNT);
+    const char **paths = IMAGE_GROUPS[clusterType];
+    DALI_ASSERT_ALWAYS(paths);
+
+    // Add a background image to the cluster
+    Image bg = Image::New( CLUSTER_BACKGROUND_IMAGE_PATH );
+    ImageActor image = ImageActor::New(bg);
+    clusterActor.SetBackgroundImage(image);
+
+    // Add actors (pictures) as the children of the cluster
+    for (unsigned int i = 0; (i < style.GetMaximumNumberOfChildren()) && (*paths); i++, paths++)
+    {
+      clusterActor.AddChild(CreateClusterPictureActor(clusterType, *paths), i);
+    }
+
+    return clusterActor;
+  }
+
+  /**
+   * Helper to create the picture actors in the cluster
+   */
+  Actor CreateClusterPictureActor(ClusterType clusterType, const std::string& imagePath)
+  {
+    // Create a picture for this cluster image
+    // actor|->shadow
+    //      |->image
+    //      |->border
+    Actor actor = Actor::New();
+    actor.SetSize(CLUSTER_IMAGE_THUMBNAIL_WIDTH, CLUSTER_IMAGE_THUMBNAIL_HEIGHT);
+    actor.SetParentOrigin( ParentOrigin::CENTER );
+    actor.SetAnchorPoint( AnchorPoint::CENTER );
+
+    // Load the thumbnail
+    ImageAttributes attribs = ImageAttributes::New();
+    attribs.SetSize(CLUSTER_IMAGE_THUMBNAIL_WIDTH, CLUSTER_IMAGE_THUMBNAIL_HEIGHT);
+    attribs.SetScalingMode(Dali::ImageAttributes::ShrinkToFit);
+    attribs.SetPixelFormat( Pixel::RGB888  );
+
+    // Add a shadow image child actor
+    Image shadowImage = Image::New( CLUSTER_SHADOW_IMAGE_PATH, attribs );
+    ImageActor shadowActor = ImageActor::New(shadowImage);
+
+    // Shadow is not exactly located on the center of the image, so it is moved to a little
+    // upper-left side of the image relatively using customised AnchorPoint.
+    shadowActor.SetParentOrigin(ShadowProperty::ANCHOR_POINT);
+    shadowActor.SetAnchorPoint(AnchorPoint::CENTER);
+    shadowActor.SetPosition(Vector3(0.0f, 0.0f, -1.0f));
+
+    // Apply size constraint to the image shadow
+    shadowActor.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), RelativeToConstraint( ShadowProperty::SIZE_SCALE ) ) );
+    actor.Add(shadowActor);
+
+    // Add a picture image actor to actor.
+    Image image = Image::New( imagePath, attribs );
+    ImageActor imageActor = ImageActor::New(image);
+    imageActor.SetParentOrigin( ParentOrigin::CENTER );
+    imageActor.SetAnchorPoint( AnchorPoint::CENTER );
+    imageActor.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+    actor.Add(imageActor);
+
+    // Add a border image child actor
+    ImageActor borderActor = ImageActor::New(mClusterBorderImage);
+    borderActor.SetParentOrigin( ParentOrigin::CENTER );
+    borderActor.SetAnchorPoint( AnchorPoint::CENTER );
+    borderActor.SetStyle( ImageActor::STYLE_NINE_PATCH );
+    borderActor.SetNinePatchBorder( CLUSTER_IMAGE_BORDER_ABSOLUTE );
+    borderActor.SetPosition(Vector3(0.0f, 0.0f, 1.0f));
+
+    // Apply size constraint to the image border
+    Constraint constraint = Constraint::New<Vector3>(Actor::SIZE,
+                                                     ParentSource(Actor::SIZE),
+                                                     ClusterImageBorderSizeConstraint());
+    borderActor.ApplyConstraint(constraint);
+    actor.Add(borderActor);
+
+    return actor;
+  }
+
+
+  /**
+   * Adds a Cluster to the ScrollView
+   *
+   * @param[in] clusterType The type of cluster (determines the image content)
+   * @param[in] style The style to be used for this cluster.
+   */
+  void AddCluster(ClusterType clusterType, ClusterStyle style)
+  {
+    Vector2 stageSize = Dali::Stage::GetCurrent().GetSize();
+
+    int column = mClusterCount>>1;
+    int row = mClusterCount&1;
+    Vector3 clusterPosition = Vector3((CLUSTER_COLUMN_INDENT + row * CLUSTER_BOTTOM_SHIFT) * stageSize.width,
+                               (row * CLUSTER_ROW_SPACING + CLUSTER_ROW_INDENT) * stageSize.height, 0.0f);
+
+    Actor pageView = Actor::New();
+    mScrollView.Add(pageView);
+    pageView.SetParentOrigin(ParentOrigin::CENTER);
+    pageView.SetPosition(Vector3(stageSize.width * column, 0.0f, 0.0f));
+    pageView.SetSize(stageSize);
+
+    // Resize pageView (which contains a Cluster)
+    Constraint constraintScale = Constraint::New<Vector3>( Actor::SCALE,
+                                                           ParentSource( Actor::SCALE ),
+                                                           RescaleConstraint() );
+    constraintScale.SetRemoveAction(Constraint::Discard);
+    pageView.ApplyConstraint(constraintScale);
+
+    // Create cluster actors, add them to scroll view, and set the shear effect with the given center point.
+    Cluster cluster = CreateClusterActor(clusterType, style);
+    cluster.SetParentOrigin(ParentOrigin::TOP_LEFT);
+    cluster.SetAnchorPoint(AnchorPoint::TOP_LEFT);
+    cluster.SetPosition( clusterPosition );
+
+    pageView.Add(cluster);
+    Vector3 clusterSize = cluster.GetCurrentSize();
+
+    mClusterInfo.push_back(ClusterInfo( cluster, mClusterCount, clusterPosition, clusterSize ));
+
+    mClusterCount++;
+  }
+
+  /**
+   * Resets ScrollView and Clusters settings
+   * to reflect the new ExampleEffectType
+   *
+   * TODO: Add animation transition to fade out of existing effect,
+   * and into new effect.
+   *
+   * @param[in] type The desired effect to switch to.
+   */
+  void SetEffect(ExampleEffectType type)
+  {
+    Vector2 stageSize(Dali::Stage::GetCurrent().GetSize());
+
+    mExampleEffect = type;
+
+    std::stringstream ss(APPLICATION_TITLE);
+    ss << APPLICATION_TITLE << ": " << EXAMPLE_EFFECT_LABEL[mExampleEffect];
+    SetTitle(ss.str());
+
+    // Set up default ruler settings (fixed in horizontal, disabled in vertical)
+    RulerPtr rulerX;
+    rulerX = new FixedRuler(stageSize.x);
+    int columns = (mClusterCount + 1) >> 1;
+    rulerX->SetDomain(RulerDomain(0.0f, stageSize.x * columns, true));
+    mScrollView.SetRulerX(rulerX);
+
+    RulerPtr rulerY = new DefaultRuler();
+    rulerY->Disable();
+    mScrollView.SetRulerY(rulerY);
+
+    mScrollView.SetActorAutoSnap(false);
+
+    // Remove all shader-effects from mScrollView and it's children (the clusters)
+    mScrollView.RemoveShaderEffect();
+    mScrollView.SetPosition(Vector3::ZERO);
+
+    for( vector<ClusterInfo>::iterator i = mClusterInfo.begin(); i != mClusterInfo.end(); ++i )
+    {
+      Cluster cluster = i->mCluster;
+      cluster.RemoveShaderEffect();
+    }
+
+    // Apply new shader-effects.
+    // Move Y to origin incase we came from an effect where user could free pan in y axis.
+    const Vector3 currentScrollPosition(mScrollView.GetCurrentScrollPosition());
+    mScrollView.ScrollTo(Vector3(currentScrollPosition.x, 0.0f, 0.0f));
+
+    switch(type)
+    {
+      case NO_EFFECT:
+      {
+        break;
+      }
+      case WOBBLE_EFFECT:
+      {
+        for( vector<ClusterInfo>::iterator i = mClusterInfo.begin(); i != mClusterInfo.end(); ++i )
+        {
+          Cluster cluster = i->mCluster;
+          Vector3 position = i->mPosition;
+          Vector3 size = i->mSize;
+
+          ShearEffect shaderEffect = ShearEffect::New();
+          Vector3 shearAnchor = SHEAR_EFFECT_ANCHOR_POINT;
+
+          Vector2 shearCenter( Vector2(position.x + size.width * shearAnchor.x, position.y + size.height * shearAnchor.y) );
+          Property::Index centerProperty = shaderEffect.GetPropertyIndex(shaderEffect.GetCenterPropertyName());
+          Constraint constraint = Constraint::New<Vector2>( centerProperty,
+                                                            Source(mView, Actor::SIZE),
+                                                            ShearEffectCenterConstraint(stageSize, shearCenter) );
+          shaderEffect.ApplyConstraint(constraint);
+
+          cluster.SetShaderEffect(shaderEffect);
+
+          // Apply Constraint to Shader Effect
+          Property::Index scrollOvershootProperty = /*targetGroup*/mScrollView.GetPropertyIndex(ScrollViewWobbleEffect::EFFECT_OVERSHOOT);
+          Property::Index angleXAxisProperty = shaderEffect.GetPropertyIndex(shaderEffect.GetAngleXAxisPropertyName());
+          Property::Index angleYAxisProperty = shaderEffect.GetPropertyIndex(shaderEffect.GetAngleYAxisPropertyName());
+
+          constraint = Constraint::New<float>( angleXAxisProperty,
+                                               Source(mScrollView, scrollOvershootProperty),
+                                               Source(mView, Actor::ROTATION),
+                                               ShearEffectConstraint(stageSize, SHEAR_EFFECT_MAX_OVERSHOOT, Vector2::XAXIS) );
+          shaderEffect.ApplyConstraint(constraint);
+          constraint = Constraint::New<float>( angleYAxisProperty,
+                                               Source(mScrollView, scrollOvershootProperty),
+                                               Source(mView, Actor::ROTATION),
+                                               ShearEffectConstraint(stageSize, SHEAR_EFFECT_MAX_OVERSHOOT, Vector2::YAXIS) );
+          shaderEffect.ApplyConstraint(constraint);
+
+
+        }
+        break;
+      }
+      case CAROUSEL_EFFECT:
+      {
+        // Apply Carousel Shader Effect to scrollView
+        CarouselEffect shaderEffect = CarouselEffect::New();
+        shaderEffect.SetRadius( -CAROUSEL_EFFECT_RADIUS );
+        mScrollView.SetShaderEffect( shaderEffect );
+        mScrollView.SetPosition( Vector3( 0.0f, 0.0f, CAROUSEL_EFFECT_RADIUS ) );
+
+        const Vector2 angleSweep( CAROUSEL_EFFECT_ANGLE_SWEEP / stageSize.width,
+                                  CAROUSEL_EFFECT_ANGLE_SWEEP / stageSize.width );
+
+        Property::Index anglePerUnit = shaderEffect.GetPropertyIndex( shaderEffect.GetAnglePerUnitPropertyName() );
+        shaderEffect.ApplyConstraint( Constraint::New<Vector2>( anglePerUnit,
+                                                                Source(mView, Actor::ROTATION),
+                                                                CarouselEffectOrientationConstraint( angleSweep ) ) );
+
+        break;
+      }
+      case SPHERE_EFFECT:
+      {
+        // Change ruler to free panning...
+        RulerPtr rulerX;
+        rulerX = new DefaultRuler();
+        int columns = (mClusterCount + 1) >> 1;
+        rulerX->SetDomain(RulerDomain(0.0f, stageSize.x * columns, true));
+        mScrollView.SetRulerX(rulerX);
+
+        RulerPtr rulerY = new DefaultRuler();
+        rulerY->SetDomain(RulerDomain( -stageSize.y * SPHERE_EFFECT_VERTICAL_DOMAIN, stageSize.y * (1.0f + SPHERE_EFFECT_VERTICAL_DOMAIN), true));
+        mScrollView.SetRulerY(rulerY);
+
+        // Apply Carousel Shader Effect to scrollView (Spherical style)
+        CarouselEffect shaderEffect = CarouselEffect::New();
+
+        shaderEffect.SetRadius( SPHERE_EFFECT_RADIUS );
+        shaderEffect.SetAnglePerUnit( Vector2( SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y, SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y ) );
+        mScrollView.SetShaderEffect( shaderEffect );
+        mScrollView.SetPosition( Vector3( 0.0f, 0.0f, SPHERE_EFFECT_POSITION_Z ) );
+        break;
+      }
+      default:break;
+    }
+
+  }
+
+  /**
+   * Signal handler, called when quit button is pressed
+   */
+  bool OnEffectTouched( Toolkit::Button button )
+  {
+    // quit the application
+    SetEffect(static_cast<ExampleEffectType>( (mExampleEffect + 1) % TOTAL_EFFECTS) );
+    return true;
+  }
+
+  /**
+   * Sets/Updates the title of the View
+   * @param[in] title The new title for the view.
+   */
+  void SetTitle(const std::string& title)
+  {
+    if(!mTitleActor)
+    {
+      mTitleActor = TextView::New();
+      // Add title to the tool bar.
+      mToolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Alignment::HorizontalCenter );
+    }
+
+    Font font = Font::New();
+    mTitleActor.SetText( title );
+    mTitleActor.SetSize( font.MeasureText( title ) );
+    mTitleActor.SetStyleToCurrentText(DemoHelper::GetDefaultTextStyle());
+  }
+
+  /**
+   * Main key event handler
+   */
+  void OnKeyEvent(const KeyEvent& event)
+  {
+    if(event.state == KeyEvent::Down)
+    {
+      if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+      {
+        mApplication.Quit();
+      }
+    }
+  }
+
+private:
+
+  Application&               mApplication;            ///< Application instance
+  Toolkit::View              mView;                   ///< The View instance.
+  Toolkit::ToolBar           mToolBar;                ///< The View's Toolbar.
+  TextView                   mTitleActor;             ///< The Toolbar's Title.
+
+  Layer                      mContentLayer;           ///< Content layer (scrolling cluster content)
+
+  ScrollView                 mScrollView;             ///< The ScrollView container for all clusters
+  ScrollViewWobbleEffect     mScrollViewEffect;       ///< ScrollView Wobble effect
+  Image                      mClusterBorderImage;     ///< The border frame that appears on each image
+
+  vector<ClusterInfo>        mClusterInfo;            ///< Keeps track of each cluster's information.
+  int                        mClusterCount;           ///< Current number of clusters in use
+  ExampleEffectType          mExampleEffect;          ///< Current example effect.
+
+};
+
+void RunTest(Application& app)
+{
+  ClusterController test(app);
+
+  app.MainLoop();
+}
+
+// Entry point for Linux & SLP applications
+//
+int main(int argc, char **argv)
+{
+  Application app = Application::New(&argc, &argv);
+
+  RunTest(app);
+
+  return 0;
+}
diff --git a/examples/hello-world/hello-world-example.cpp b/examples/hello-world/hello-world-example.cpp
new file mode 100644 (file)
index 0000000..e5e68fa
--- /dev/null
@@ -0,0 +1,89 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <dali/dali.h>
+
+using namespace Dali;
+
+// This example shows how to create and display Hello World! using a simple TextActor
+//
+class HelloWorldController : public ConnectionTracker
+{
+public:
+
+  HelloWorldController( Application& application )
+  : mApplication( application )
+  {
+    std::cout << "HelloWorldController::HelloWorldController" << std::endl;
+
+    // Connect to the Application's Init signal
+    mApplication.InitSignal().Connect( this, &HelloWorldController::Create );
+  }
+
+  ~HelloWorldController()
+  {
+    // Nothing to do here;
+  }
+
+  // The Init signal is received once (only) during the Application lifetime
+  void Create( Application& application )
+  {
+    std::cout << "HelloWorldController::Create" << std::endl;
+
+    // Initialize the actor
+    TextActor textActor = TextActor::New( "Hello World" );
+
+    // Reposition the actor
+    textActor.SetParentOrigin( ParentOrigin::CENTER );
+
+    // Get a handle to the stage
+    Stage stage = Stage::GetCurrent();
+
+    // Display the actor on the stage
+    stage.Add( textActor );
+
+    // Respond to a click anywhere on the stage
+    stage.GetRootLayer().TouchedSignal().Connect( this, &HelloWorldController::OnTouch );
+  }
+
+  bool OnTouch( Actor actor, const TouchEvent& touch )
+  {
+    // quit the application
+    mApplication.Quit();
+    return true;
+  }
+
+private:
+  Application&  mApplication;
+};
+
+void RunTest( Application& application )
+{
+  HelloWorldController test( application );
+
+  application.MainLoop();
+}
+
+// Entry point for Linux & SLP applications
+//
+int main( int argc, char **argv )
+{
+  Application application = Application::New( &argc, &argv );
+
+  RunTest( application );
+
+  return 0;
+}
diff --git a/examples/magnifier-example/magnifier-example.cpp b/examples/magnifier-example/magnifier-example.cpp
new file mode 100644 (file)
index 0000000..3841368
--- /dev/null
@@ -0,0 +1,434 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// EXTERNAL INCLUDES
+
+// INTERNAL INCLUDES
+#include "../shared/view.h"
+
+#include <dali-toolkit/dali-toolkit.h>
+
+using namespace Dali;
+
+namespace
+{
+const char* BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-magnifier.jpg" );
+const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
+const char* APPLICATION_TITLE( "Magnifier Example" );
+const Vector3 MAGNIFIER_SIZE(0.25f, 0.25f, 0.0f);       ///< Magnifier sides should be 25% of the width of the stage
+const float ANIMATION_DURATION(60.0f);                  ///< Run animation for a minute before repeating.
+const float MAGNIFIER_DISPLAY_DURATION(0.125f);         ///< Duration in seconds for show/hide manual magnifier animation
+
+const float MAGNIFICATION_FACTOR(2.0f);                 ///< Amount to magnify by.
+const float MAGNIFIER_INDENT(10.0f);                    ///< Indentation around edge of stage to define where magnifiers may move.
+const float FINGER_RADIUS_INCHES(0.25f);                ///< Average finger radius in inches from the center of index finger to edge.
+
+/**
+ * MagnifierPathConstraint
+ * This constraint governs the position of the
+ * animating magnifier in a swirly pattern around
+ * the stage.
+ */
+struct MagnifierPathConstraint
+{
+  /**
+   * Constraint constructor
+   * @param[in] stageSize The stage size so that the constraint can create a path
+   * within stage bounds.
+   */
+  MagnifierPathConstraint(const Vector3& stageSize,
+                          Vector3 offset = Vector3::ZERO)
+  : mStageSize(stageSize),
+    mOffset(offset)
+  {
+  }
+
+  Vector3 operator()(const Vector3&    current,
+                     const PropertyInput& sizeProperty,
+                     const PropertyInput& animationTimeProperty)
+  {
+    float time = animationTimeProperty.GetFloat();
+    const Vector3& size = sizeProperty.GetVector3();
+
+    Vector3 range(mStageSize - size - Vector3::ONE * MAGNIFIER_INDENT * 2.0f);
+    Vector3 position(mOffset);
+
+    position.x += 0.5f * sinf(time * 0.471f) * range.width;
+    position.y += 0.5f * sinf(time * 0.8739f) * range.height;
+
+    return position;
+  }
+
+  Vector3 mStageSize;     ///< Keep track of the stage size for determining path within stage bounds
+  Vector3 mOffset;        ///< Amount to offset magnifier path
+};
+
+/**
+ * Confine Actor to boundaries of reference actor (e.g. Parent)
+ * Actor bounds (top-left position + size) are confined to reference Actor's
+ * bounds.
+ */
+struct ConfinementConstraint
+{
+  /**
+   * Confinement constraint constructor.
+   * @param[in] offsetOrigin (optional) Whether to offset the parent origin or not.
+   * @param[in] topLeftMargin (optional) Top-Left margins (defaults to 0.0f, 0.0f)
+   * @param[in] bottomRightMargin (optional) Bottom-Right margins (defaults to 0.0f, 0.0f)
+   * @param[in] flipHorizontal (optional) whether to flip Actor to the other side X if near edge, and by
+   * how much (defaults to 0.0f i.e. no flip)
+   * @param[in] flipVertical (optional) whether to flip Actor to the other side Y if near edge, and by
+   * how much (defaults to 0.0f i.e. no flip)
+   */
+  ConfinementConstraint(Vector3 offsetOrigin = Vector3::ZERO, Vector2 topLeftMargin = Vector2::ZERO, Vector2 bottomRightMargin = Vector2::ZERO, bool flipHorizontal = false, bool flipVertical = false)
+  : mOffsetOrigin(offsetOrigin),
+    mMinIndent(topLeftMargin),
+    mMaxIndent(bottomRightMargin),
+    mFlipHorizontal(flipHorizontal),
+    mFlipVertical(flipVertical)
+  {
+  }
+
+  Vector3 operator()(const Vector3&    constPosition,
+                     const PropertyInput& sizeProperty,
+                     const PropertyInput& parentOriginProperty,
+                     const PropertyInput& anchorPointProperty,
+                     const PropertyInput& referenceSizeProperty)
+  {
+    const Vector3& size = sizeProperty.GetVector3();
+    const Vector3 origin = parentOriginProperty.GetVector3();
+    const Vector3& anchor = anchorPointProperty.GetVector3();
+    const Vector3& referenceSize = referenceSizeProperty.GetVector3();
+
+    Vector3 offset(mOffsetOrigin * referenceSize);
+
+    Vector3 newPosition( constPosition + offset );
+
+    // Get actual position of Actor relative to parent's Top-Left.
+    Vector3 position(constPosition + offset + origin * referenceSize);
+
+    // if top-left corner is outside of Top-Left bounds, then push back in screen.
+    Vector3 corner(position - size * anchor - mMinIndent);
+
+    if(mFlipHorizontal && corner.x < 0.0f)
+    {
+      corner.x = 0.0f;
+      newPosition.x += size.width;
+    }
+
+    if(mFlipVertical && corner.y < 0.0f)
+    {
+      corner.y = 0.0f;
+      newPosition.y += size.height;
+    }
+
+    newPosition.x -= std::min(corner.x, 0.0f);
+    newPosition.y -= std::min(corner.y, 0.0f);
+
+    // if bottom-right corner is outside of Bottom-Right bounds, then push back in screen.
+    corner += size - referenceSize + mMinIndent + mMaxIndent;
+
+    if(mFlipHorizontal && corner.x > 0.0f)
+    {
+      corner.x = 0.0f;
+      newPosition.x -= size.width;
+    }
+
+    if(mFlipVertical && corner.y > 0.0f)
+    {
+      corner.y = 0.0f;
+      newPosition.y -= size.height;
+    }
+
+    newPosition.x -= std::max(corner.x, 0.0f);
+    newPosition.y -= std::max(corner.y, 0.0f);
+
+    return newPosition;
+  }
+
+  Vector3 mOffsetOrigin;                                ///< Manual Parent Offset Origin.
+  Vector3 mMinIndent;                                   ///< Top-Left Margin
+  Vector3 mMaxIndent;                                   ///< Bottom-Right Margin.
+  bool mFlipHorizontal;                                 ///< Whether to flip actor's position if exceeds horizontal screen bounds
+  bool mFlipVertical;                                   ///< Whether to flip actor's position if exceeds vertical screen bounds
+};
+
+}
+
+// This example shows how to use the Magnifier component.
+//
+class ExampleController : public ConnectionTracker
+{
+public:
+
+  /**
+   * The example controller constructor.
+   * @param[in] application The application instance
+   */
+  ExampleController( Application& application )
+  : mApplication( application ),
+    mView(),
+    mAnimationTime(0.0f),
+    mMagnifierShown(false)
+  {
+    // Connect to the Application's Init signal
+    mApplication.InitSignal().Connect( this, &ExampleController::Create );
+  }
+
+  /**
+   * The example controller destructor
+   */
+  ~ExampleController()
+  {
+    // Nothing to do here;
+  }
+
+  /**
+   * Invoked upon creation of application
+   * @param[in] application The application instance
+   */
+  void Create( Application& application )
+  {
+    Stage::GetCurrent().KeyEventSignal().Connect(this, &ExampleController::OnKeyEvent);
+
+    mStageSize = Stage::GetCurrent().GetSize();
+
+    // The Init signal is received once (only) during the Application lifetime
+
+    // Hide the indicator bar
+    application.GetWindow().ShowIndicator( false );
+
+    // Creates a default view with a default tool bar.
+    // The view is added to the stage.
+    Toolkit::ToolBar toolBar;
+    mContent = DemoHelper::CreateView( application,
+                                       mView,
+                                       toolBar,
+                                       BACKGROUND_IMAGE,
+                                       TOOLBAR_IMAGE,
+                                       APPLICATION_TITLE );
+
+    mContent.SetLeaveRequired(true);
+    mContent.TouchedSignal().Connect( this, &ExampleController::OnTouched );
+
+    // Create magnifier (controlled by human touch)
+    Layer overlay = Layer::New();
+    overlay.SetSensitive(false);
+    overlay.SetParentOrigin( ParentOrigin::CENTER );
+    overlay.SetSize(mStageSize);
+    Stage::GetCurrent().Add(overlay);
+
+    mMagnifier = Toolkit::Magnifier::New();
+    mMagnifier.SetSourceActor( mView.GetBackgroundLayer() );
+    mMagnifier.SetSize( MAGNIFIER_SIZE * mStageSize.width );  // Size of magnifier is in relation to stage width
+    mMagnifier.SetMagnificationFactor( MAGNIFICATION_FACTOR );
+    mMagnifier.SetFrameVisibility(false);
+    mMagnifier.SetScale(Vector3::ZERO);
+    overlay.Add( mMagnifier );
+
+    // Apply constraint to animate the position of the magnifier.
+    Constraint constraint = Constraint::New<Vector3>(Actor::POSITION,
+                                                     LocalSource(Actor::SIZE),
+                                                     LocalSource(Actor::PARENT_ORIGIN),
+                                                     LocalSource(Actor::ANCHOR_POINT),
+                                                     ParentSource(Actor::SIZE),
+                                                     ConfinementConstraint(ParentOrigin::CENTER, Vector2::ONE * MAGNIFIER_INDENT, Vector2::ONE * MAGNIFIER_INDENT));
+    constraint.SetRemoveAction(Constraint::Discard);
+    mMagnifier.ApplyConstraint( constraint );
+
+    // Create bouncing magnifier automatically bounces around screen.
+    mBouncingMagnifier = Toolkit::Magnifier::New();
+    mBouncingMagnifier.SetSourceActor( mView.GetBackgroundLayer() );
+    mBouncingMagnifier.SetSize( MAGNIFIER_SIZE * mStageSize.width ); // Size of magnifier is in relation to stage width
+    mBouncingMagnifier.SetMagnificationFactor( MAGNIFICATION_FACTOR );
+    overlay.Add( mBouncingMagnifier );
+
+    mAnimationTimeProperty = mBouncingMagnifier.RegisterProperty("animation-time", 0.0f);
+    ContinueAnimation();
+
+    // Apply constraint to animate the position of the magnifier.
+    constraint = Constraint::New<Vector3>(Actor::POSITION,
+                                          LocalSource(Actor::SIZE),
+                                          LocalSource(mAnimationTimeProperty),
+                                          MagnifierPathConstraint(mStageSize, mStageSize * 0.5f));
+    mBouncingMagnifier.ApplyConstraint( constraint );
+
+    // Apply constraint to animate the source of the magnifier.
+    constraint = Constraint::New<Vector3>(mBouncingMagnifier.GetPropertyIndex( Toolkit::Magnifier::SOURCE_POSITION_PROPERTY_NAME ),
+                                          LocalSource(Actor::SIZE),
+                                          LocalSource(mAnimationTimeProperty),
+                                          MagnifierPathConstraint(mStageSize));
+    mBouncingMagnifier.ApplyConstraint( constraint );
+  }
+
+  /**
+   * Invoked whenever the animation finishes (every 60 seconds)
+   * @param[in] animation The animation
+   */
+  void OnAnimationFinished( Animation& animation )
+  {
+    animation.FinishedSignal().Disconnect(this, &ExampleController::OnAnimationFinished);
+    animation.Clear();
+    ContinueAnimation();
+  }
+
+  /**
+   * Resumes animation for another ANIMATION_DURATION seconds.
+   */
+  void ContinueAnimation()
+  {
+    Animation animation = Animation::New(ANIMATION_DURATION);
+    mAnimationTime += ANIMATION_DURATION;
+    animation.AnimateTo( Property(mBouncingMagnifier, mAnimationTimeProperty), mAnimationTime );
+    animation.Play();
+    animation.FinishedSignal().Connect(this, &ExampleController::OnAnimationFinished);
+  }
+
+  /**
+   * Invoked whenever the quit button is clicked
+   * @param[in] button the quit button
+   */
+  bool OnQuitButtonClicked( Toolkit::Button button )
+  {
+    // quit the application
+    mApplication.Quit();
+    return true;
+  }
+
+  /**
+   * Invoked whenever the content (screen) is touched
+   * @param[in] actor The actor that received the touch
+   * @param[in] event The touch-event information
+   */
+  bool OnTouched( Actor actor, const TouchEvent& event )
+  {
+    if(event.GetPointCount() > 0)
+    {
+      const TouchPoint& point = event.GetPoint(0);
+      switch(point.state)
+      {
+        case TouchPoint::Down:
+        case TouchPoint::Motion:
+        {
+          ShowMagnifier();
+          break;
+        }
+        case TouchPoint::Up:
+        case TouchPoint::Leave:
+        case TouchPoint::Interrupted:
+        {
+          HideMagnifier();
+          break;
+        }
+        default:
+        {
+          break;
+        }
+      } // end switch
+
+      Vector3 touchPoint(point.screen);
+
+      SetMagnifierPosition(touchPoint - mStageSize * 0.5f);
+    }
+
+    return false;
+  }
+
+  /**
+   * Shows the magnifier
+   */
+  void ShowMagnifier()
+  {
+    if(!mMagnifierShown)
+    {
+      Animation animation = Animation::New(MAGNIFIER_DISPLAY_DURATION);
+      animation.AnimateTo(Property(mMagnifier, Actor::SCALE), Vector3::ONE, AlphaFunctions::EaseIn);
+      animation.Play();
+      mMagnifierShown = true;
+    }
+  }
+
+  /**
+   * Hides the magnifier
+   */
+  void HideMagnifier()
+  {
+    if(mMagnifierShown)
+    {
+      Animation animation = Animation::New(MAGNIFIER_DISPLAY_DURATION);
+      animation.AnimateTo(Property(mMagnifier, Actor::SCALE), Vector3::ZERO, AlphaFunctions::EaseOut);
+      animation.Play();
+      mMagnifierShown = false;
+    }
+  }
+
+  /**
+   * Manually sets the magnifier position
+   * @param[in] position The magnifier's position relative to center of stage
+   */
+  void SetMagnifierPosition(const Vector3 position)
+  {
+    mMagnifier.SetSourcePosition( position );
+
+    // position magnifier glass such that bottom edge is touching/near top of finger.
+    Vector3 glassPosition(position);
+    glassPosition.y -= mStageSize.width * MAGNIFIER_SIZE.height * 0.5f + Stage::GetCurrent().GetDpi().height * FINGER_RADIUS_INCHES;
+
+    mMagnifier.SetPosition( glassPosition );
+  }
+
+  void OnKeyEvent(const KeyEvent& event)
+  {
+    if(event.state == KeyEvent::Down)
+    {
+      if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+      {
+        mApplication.Quit();
+      }
+    }
+  }
+
+private:
+
+  Application&  mApplication;                             ///< Application instance
+  Toolkit::View mView;                                    ///< The view
+  Layer mContent;                                         ///< The content layer
+  Toolkit::Magnifier mMagnifier;                          ///< The manually controlled magnifier
+  Toolkit::Magnifier mBouncingMagnifier;                  ///< The animating magnifier (swirly animation)
+  Vector3 mStageSize;                                     ///< The size of the stage
+  float mAnimationTime;                                   ///< Keep track of start animation time.
+  Property::Index mAnimationTimeProperty;                 ///< Animation time property (responsible for swirly animation)
+  bool mMagnifierShown;                                   ///< Flag indicating whether the magnifier is being shown or not.
+
+};
+
+void RunTest( Application& application )
+{
+  ExampleController test( application );
+
+  application.MainLoop();
+}
+
+// Entry point for Linux & SLP applications
+//
+int main( int argc, char **argv )
+{
+  Application application = Application::New( &argc, &argv );
+
+  RunTest( application );
+
+  return 0;
+}
diff --git a/examples/motion-blur/motion-blur-example.cpp b/examples/motion-blur/motion-blur-example.cpp
new file mode 100644 (file)
index 0000000..6fd9f0e
--- /dev/null
@@ -0,0 +1,550 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <sstream>
+#include <iomanip>
+
+#include "../shared/view.h"
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+using namespace std;
+
+
+
+namespace // unnamed namespace
+{
+
+////////////////////////////////////////////////////
+//
+// Demo setup parameters
+//
+
+//#define MULTIPLE_MOTION_BLURRED_ACTORS
+#ifndef MULTIPLE_MOTION_BLURRED_ACTORS
+
+const float MOTION_BLUR_ACTOR_WIDTH = 256;                                          // actor size on screen
+const float MOTION_BLUR_ACTOR_HEIGHT = 256;                                         // ""
+
+#else //#ifndef MULTIPLE_MOTION_BLURRED_ACTORS
+
+const float MOTION_BLUR_ACTOR_WIDTH = 150;                                          // actor size on screen
+const float MOTION_BLUR_ACTOR_HEIGHT = 112;                                         // ""
+
+#endif //#ifndef MULTIPLE_MOTION_BLURRED_ACTORS
+
+
+const unsigned int MOTION_BLUR_NUM_SAMPLES = 8;
+
+const int MOTION_BLUR_NUM_ACTOR_IMAGES = 5;
+const char* MOTION_BLUR_ACTOR_IMAGE1( DALI_IMAGE_DIR "image-with-border-1.jpg" );
+const char* MOTION_BLUR_ACTOR_IMAGE2( DALI_IMAGE_DIR "image-with-border-2.jpg" );
+const char* MOTION_BLUR_ACTOR_IMAGE3( DALI_IMAGE_DIR "image-with-border-3.jpg" );
+const char* MOTION_BLUR_ACTOR_IMAGE4( DALI_IMAGE_DIR "image-with-border-4.jpg" );
+const char* MOTION_BLUR_ACTOR_IMAGE5( DALI_IMAGE_DIR "image-with-border-1.jpg" );
+
+const char* MOTION_BLUR_ACTOR_IMAGES[] = {
+  MOTION_BLUR_ACTOR_IMAGE1,
+  MOTION_BLUR_ACTOR_IMAGE2,
+  MOTION_BLUR_ACTOR_IMAGE3,
+  MOTION_BLUR_ACTOR_IMAGE4,
+  MOTION_BLUR_ACTOR_IMAGE5,
+};
+
+const int NUM_ACTOR_ANIMATIONS = 4;
+const int NUM_CAMERA_ANIMATIONS = 2;
+
+
+const char* BACKGROUND_IMAGE_PATH = DALI_IMAGE_DIR "background-default.png";
+
+const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
+const char* LAYOUT_IMAGE( DALI_IMAGE_DIR "icon_mode.png" );
+const char* APPLICATION_TITLE( "Motion Blur" );
+const char* ANIM_START_ICON( DALI_IMAGE_DIR "icon_play_small.png" );
+const char* ANIM_STOP_ICON( DALI_IMAGE_DIR "icon_stop_small.png" );
+
+const float UI_MARGIN = 4.0f;                              ///< Screen Margin for placement of UI buttons
+
+const Vector3 BUTTON_SIZE_CONSTRAINT( 0.24f, 0.09f, 1.0f );
+const Vector3 BUTTON_TITLE_LABEL_TAP_HERE_SIZE_CONSTRAINT( 0.55f, 0.06f, 1.0f );
+const Vector3 BUTTON_TITLE_LABEL_INSTRUCTIONS_POPUP_SIZE_CONSTRAINT( 1.0f, 1.0f, 1.0f );
+
+// move this button down a bit so it is visible on target and not covered up by toolbar
+const float BUTTON_TITLE_LABEL_Y_OFFSET = 0.05f;
+
+const float ORIENTATION_DURATION = 0.5f;                  ///< Time to rotate to new orientation.
+} // unnamed namespace
+
+
+
+
+//
+class MotionBlurExampleApp : public ConnectionTracker
+{
+public:
+
+  /**
+     * DeviceOrientation describes the four different
+     * orientations the device can be in based on accelerometer reports.
+     */
+  enum DeviceOrientation
+  {
+    PORTRAIT = 0,
+    LANDSCAPE = 90,
+    PORTRAIT_INVERSE = 180,
+    LANDSCAPE_INVERSE = 270
+  };
+
+  /**
+   * Constructor
+   * @param application class, stored as reference
+   */
+  MotionBlurExampleApp(Application &app)
+  : mApplication(app),
+    mActorAnimationsEnabled(false),
+    mCurrentActorAnimation(0),
+    mCurrentImage(0)
+  {
+    // Connect to the Application's Init signal
+    app.InitSignal().Connect(this, &MotionBlurExampleApp::OnInit);
+  }
+
+  ~MotionBlurExampleApp()
+  {
+    // Nothing to do here; everything gets deleted automatically
+  }
+
+  /**
+   * This method gets called once the main loop of application is up and running
+   */
+  void OnInit(Application& app)
+  {
+    // The Init signal is received once (only) during the Application lifetime
+
+    Stage::GetCurrent().KeyEventSignal().Connect(this, &MotionBlurExampleApp::OnKeyEvent);
+
+
+    // Creates a default view with a default tool bar.
+    // The view is added to the stage.
+    mContentLayer = DemoHelper::CreateView( mApplication,
+                                            mView,
+                                            mToolBar,
+                                            BACKGROUND_IMAGE_PATH,
+                                            TOOLBAR_IMAGE,
+                                            APPLICATION_TITLE);
+
+    //Add an slideshow icon on the right of the title
+    mIconAnimsStart = Image::New( ANIM_START_ICON );
+    mIconAnimsStop = Image::New( ANIM_STOP_ICON );
+    mActorAnimsButton = Toolkit::PushButton::New();
+    mActorAnimsButton.SetBackgroundImage( mIconAnimsStart );
+    mActorAnimsButton.ClickedSignal().Connect( this, &MotionBlurExampleApp::OnAnimationButtonClicked );
+    mToolBar.AddControl( mActorAnimsButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalCenter, DemoHelper::DEFAULT_PLAY_PADDING);
+
+    // Creates a mode button.
+    // Create a effect toggle button. (right of toolbar)
+    Image imageLayout = Image::New( LAYOUT_IMAGE );
+    Toolkit::PushButton layoutButton = Toolkit::PushButton::New();
+    layoutButton.SetBackgroundImage(imageLayout);
+    layoutButton.ClickedSignal().Connect( this, &MotionBlurExampleApp::OnLayoutButtonClicked);
+    layoutButton.SetLeaveRequired( true );
+    mToolBar.AddControl( layoutButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING );
+
+    // Input
+    mTapGestureDetector = TapGestureDetector::New();
+    mTapGestureDetector.Attach( mContentLayer );
+    mTapGestureDetector.DetectedSignal().Connect( this, &MotionBlurExampleApp::OnTap );
+
+    Dali::Window winHandle = app.GetWindow();
+    winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT );
+    winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE );
+    winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE  );
+    winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE );
+
+    // set initial orientation
+    app.GetOrientation().ChangedSignal().Connect( this, &MotionBlurExampleApp::OnOrientationChanged );
+    unsigned int degrees = app.GetOrientation().GetDegrees();
+    Rotate( static_cast< DeviceOrientation >( degrees ) );
+
+
+    ///////////////////////////////////////////////////////
+    //
+    // Motion blurred actor
+    //
+
+    Image image = Image::New( MOTION_BLUR_ACTOR_IMAGE1 );
+    mMotionBlurImageActor = ImageActor::New(image);
+    mMotionBlurImageActor.SetParentOrigin( ParentOrigin::CENTER );
+    mMotionBlurImageActor.SetSize(MOTION_BLUR_ACTOR_WIDTH, MOTION_BLUR_ACTOR_HEIGHT);
+
+    mContentLayer.Add( mMotionBlurImageActor );
+
+    // Create shader used for doing motion blur
+    mMotionBlurEffect = MotionBlurEffect::Apply(mMotionBlurImageActor);
+
+
+#ifdef MULTIPLE_MOTION_BLURRED_ACTORS
+
+    ///////////////////////////////////////////////////////
+    //
+    // Motion blurred actor 2
+    //
+
+    mMotionBlurImageActor2 = ImageActor::New(image);
+    mMotionBlurImageActor2.SetParentOrigin( ParentOrigin::CENTER );
+    mMotionBlurImageActor2.SetSize(MOTION_BLUR_ACTOR_WIDTH, MOTION_BLUR_ACTOR_HEIGHT);
+    mMotionBlurImageActor2.SetPosition(MOTION_BLUR_ACTOR_WIDTH * 1.1f, 0.0f);
+    mMotionBlurImageActor.Add( mMotionBlurImageActor2 );
+
+    // Create shader used for doing motion blur
+    mMotionBlurEffect2 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES);
+
+    // set actor shader to the blur one
+    mMotionBlurImageActor2.SetShaderEffect( mMotionBlurEffect2 );
+
+
+    ///////////////////////////////////////////////////////
+    //
+    // Motion blurred actor 3
+    //
+
+    mMotionBlurImageActor3 = ImageActor::New(image);
+    mMotionBlurImageActor3.SetParentOrigin( ParentOrigin::CENTER );
+    mMotionBlurImageActor3.SetSize(MOTION_BLUR_ACTOR_WIDTH, MOTION_BLUR_ACTOR_HEIGHT);
+    mMotionBlurImageActor3.SetPosition(-MOTION_BLUR_ACTOR_WIDTH * 1.1f, 0.0f);
+    mMotionBlurImageActor.Add( mMotionBlurImageActor3 );
+
+    // Create shader used for doing motion blur
+    mMotionBlurEffect3 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES);
+
+    // set actor shader to the blur one
+    mMotionBlurImageActor3.SetShaderEffect( mMotionBlurEffect3 );
+
+
+    ///////////////////////////////////////////////////////
+    //
+    // Motion blurred actor 4
+    //
+
+    mMotionBlurImageActor4 = ImageActor::New(image);
+    mMotionBlurImageActor4.SetParentOrigin( ParentOrigin::CENTER );
+    mMotionBlurImageActor4.SetSize(MOTION_BLUR_ACTOR_WIDTH, MOTION_BLUR_ACTOR_HEIGHT);
+    mMotionBlurImageActor4.SetPosition(0.0f, MOTION_BLUR_ACTOR_HEIGHT * 1.1f);
+    mMotionBlurImageActor.Add( mMotionBlurImageActor4 );
+
+    // Create shader used for doing motion blur
+    mMotionBlurEffect4 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES);
+
+    // set actor shader to the blur one
+    mMotionBlurImageActor4.SetShaderEffect( mMotionBlurEffect4 );
+
+
+    ///////////////////////////////////////////////////////
+    //
+    // Motion blurred actor 5
+    //
+
+    mMotionBlurImageActor5 = ImageActor::New(image);
+    mMotionBlurImageActor5.SetParentOrigin( ParentOrigin::CENTER );
+    mMotionBlurImageActor5.SetSize(MOTION_BLUR_ACTOR_WIDTH, MOTION_BLUR_ACTOR_HEIGHT);
+    mMotionBlurImageActor5.SetPosition(0.0f, -MOTION_BLUR_ACTOR_HEIGHT * 1.1f);
+    mMotionBlurImageActor.Add( mMotionBlurImageActor5 );
+
+    // Create shader used for doing motion blur
+    mMotionBlurEffect5 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES);
+
+    // set actor shader to the blur one
+    mMotionBlurImageActor5.SetShaderEffect( mMotionBlurEffect5 );
+#endif //#ifdef MULTIPLE_MOTION_BLURRED_ACTORS
+  }
+
+  //////////////////////////////////////////////////////////////
+  //
+  // Device Orientation Support
+  //
+  //
+
+  void OnOrientationChanged( Orientation orientation )
+  {
+    unsigned int degrees = orientation.GetDegrees();
+    Rotate( static_cast< DeviceOrientation >( degrees ) );
+  }
+
+  void Rotate( DeviceOrientation orientation )
+  {
+    // Resize the root actor
+    Vector2 stageSize = Stage::GetCurrent().GetSize();
+    Vector2 targetSize = stageSize;
+    if( orientation == LANDSCAPE ||
+        orientation == LANDSCAPE_INVERSE )
+    {
+      targetSize = Vector2( stageSize.y, stageSize.x );
+    }
+
+    if( mOrientation != orientation )
+    {
+      mOrientation = orientation;
+
+      // check if actor is on stage
+      if( mView.GetParent() )
+      {
+        // has parent so we expect it to be on stage, start animation
+        mRotateAnimation = Animation::New( ORIENTATION_DURATION );
+        mRotateAnimation.SetDestroyAction( Animation::Bake );
+        mRotateAnimation.RotateTo( mView, Degree( -orientation ), Vector3::ZAXIS, AlphaFunctions::EaseOut );
+        mRotateAnimation.Resize( mView, targetSize.width, targetSize.height );
+        mRotateAnimation.Play();
+      }
+      else
+      {
+        // set the rotation to match the orientation
+        mView.SetRotation( Degree( -orientation ), Vector3::ZAXIS );
+        mView.SetSize( targetSize );
+      }
+    }
+    else
+    {
+      // for first time just set size
+      mView.SetSize( targetSize );
+    }
+  }
+
+
+  //////////////////////////////////////////////////////////////
+  //
+  // Actor Animation
+  //
+  //
+
+  // move to point on screen that was tapped
+  void OnTap( Actor actor, TapGesture tapGesture )
+  {
+    Vector3 destPos;
+    float originOffsetX, originOffsetY;
+
+    // rotate offset (from top left origin to centre) into actor space
+    Vector2 stageSize = Dali::Stage::GetCurrent().GetSize();
+    actor.ScreenToLocal(originOffsetX, originOffsetY, stageSize.width * 0.5f, stageSize.height * 0.5f);
+
+    // get dest point in local actor space
+    destPos.x = tapGesture.localPoint.x - originOffsetX;
+    destPos.y = tapGesture.localPoint.y - originOffsetY;
+    destPos.z = 0.0f;
+
+    float animDuration = 0.5f;
+    mActorTapMovementAnimation = Animation::New( animDuration );
+    if ( mMotionBlurImageActor )
+    {
+      mActorTapMovementAnimation.AnimateTo( Property(mMotionBlurImageActor, Actor::POSITION), destPos, AlphaFunctions::EaseInOutSine, TimePeriod(animDuration) );
+    }
+    mActorTapMovementAnimation.SetEndAction( Animation::Bake );
+    mActorTapMovementAnimation.Play();
+
+
+    // perform some spinning etc
+    if(mActorAnimationsEnabled)
+    {
+      switch(mCurrentActorAnimation)
+      {
+        // spin around y
+        case 0:
+        {
+          float animDuration = 1.0f;
+          mActorAnimation = Animation::New(animDuration);
+          mActorAnimation.RotateBy(mMotionBlurImageActor, Degree(720), Vector3::YAXIS, AlphaFunctions::EaseInOut);
+          mActorAnimation.SetEndAction( Animation::Bake );
+          mActorAnimation.Play();
+        }
+        break;
+
+        // spin around z
+        case 1:
+        {
+          float animDuration = 1.0f;
+          mActorAnimation = Animation::New(animDuration);
+          mActorAnimation.RotateBy(mMotionBlurImageActor, Degree(720), Vector3::ZAXIS, AlphaFunctions::EaseInOut);
+          mActorAnimation.SetEndAction( Animation::Bake );
+          mActorAnimation.Play();
+        }
+        break;
+
+        // spin around y and z
+        case 2:
+        {
+          float animDuration = 1.0f;
+          mActorAnimation = Animation::New(animDuration);
+          mActorAnimation.RotateBy(mMotionBlurImageActor, Degree(360), Vector3::YAXIS, AlphaFunctions::EaseInOut);
+          mActorAnimation.RotateBy(mMotionBlurImageActor, Degree(360), Vector3::ZAXIS, AlphaFunctions::EaseInOut);
+          mActorAnimation.SetEndAction( Animation::Bake );
+          mActorAnimation.Play();
+        }
+        break;
+
+        // scale
+        case 3:
+        {
+          float animDuration = 1.0f;
+          mActorAnimation = Animation::New(animDuration);
+          mActorAnimation.ScaleBy(mMotionBlurImageActor, Vector3(2.0f, 2.0f, 2.0f), AlphaFunctions::Bounce, 0.0f, 1.0f);
+          mActorAnimation.SetEndAction( Animation::Bake );
+          mActorAnimation.Play();
+        }
+        break;
+
+        default:
+          break;
+      }
+
+      mCurrentActorAnimation++;
+      if(NUM_ACTOR_ANIMATIONS == mCurrentActorAnimation)
+      {
+        mCurrentActorAnimation = 0;
+      }
+    }
+  }
+
+  void ToggleActorAnimations()
+  {
+    if(!mActorAnimationsEnabled)
+    {
+      mActorAnimationsEnabled = true;
+      mActorAnimsButton.SetBackgroundImage( mIconAnimsStop );
+    }
+    else
+    {
+      mActorAnimationsEnabled = false;
+      mActorAnimsButton.SetBackgroundImage( mIconAnimsStart );
+    }
+  }
+
+  //////////////////////////////////////////////////////////////
+  //
+  // Input handlers
+  //
+  //
+
+  bool OnLayoutButtonClicked( Toolkit::Button button )
+  {
+    ChangeImage();
+    return true;
+  }
+
+  bool OnAnimationButtonClicked( Toolkit::Button button )
+  {
+    ToggleActorAnimations();
+    return true;
+  }
+
+  /**
+   * Main key event handler
+   */
+  void OnKeyEvent(const KeyEvent& event)
+  {
+    if(event.state == KeyEvent::Down)
+    {
+      if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+      {
+        mApplication.Quit();
+      }
+    }
+  }
+
+  //////////////////////////////////////////////////////////////
+  //
+  // Misc
+  //
+  //
+
+
+  void ChangeImage()
+  {
+    mCurrentImage++;
+    if(MOTION_BLUR_NUM_ACTOR_IMAGES == mCurrentImage)
+    {
+      mCurrentImage = 0;
+    }
+
+    Image blurImage = Image::New( MOTION_BLUR_ACTOR_IMAGES[mCurrentImage] );
+    mMotionBlurImageActor.SetImage(blurImage);
+  }
+
+
+private:
+  Application&               mApplication;            ///< Application instance
+  Toolkit::View              mView;
+  Toolkit::ToolBar           mToolBar;
+  TextView                   mTitleActor;             ///< The Toolbar's Title.
+  Image                      mIconAnimsStart;
+  Image                      mIconAnimsStop;
+
+  Layer                      mContentLayer;           ///< Content layer (contains actor for this blur demo)
+
+  PushButton                 mActorAnimsButton;       ///< The actor animation toggling Button.
+
+  // Motion blur
+  MotionBlurEffect mMotionBlurEffect;
+  ImageActor mMotionBlurImageActor;
+
+#ifdef MULTIPLE_MOTION_BLURRED_ACTORS
+  MotionBlurEffect mMotionBlurEffect2;
+  MotionBlurEffect mMotionBlurEffect3;
+  MotionBlurEffect mMotionBlurEffect4;
+  MotionBlurEffect mMotionBlurEffect5;
+
+  ImageActor mMotionBlurImageActor2;
+  ImageActor mMotionBlurImageActor3;
+  ImageActor mMotionBlurImageActor4;
+  ImageActor mMotionBlurImageActor5;
+#endif //#ifdef MULTIPLE_MOTION_BLURRED_ACTORS
+
+  // animate actor to position where user taps screen
+  Animation mActorTapMovementAnimation;
+
+  // show different animations to demonstrate blur effect working on an object only movement basis
+  bool mActorAnimationsEnabled;
+  Animation mActorAnimation;
+  int mCurrentActorAnimation;
+
+  // offer a selection of images that user can cycle between
+  int mCurrentImage;
+
+  TapGestureDetector mTapGestureDetector;
+
+  DeviceOrientation mOrientation;               ///< Current Device orientation
+  Animation mRotateAnimation;                   ///< Animation for rotating between landscape and portrait.
+
+  Popup mInstructionsPopup;                     ///< Info Popup
+};
+
+void RunTest(Application& app)
+{
+  MotionBlurExampleApp test(app);
+
+  app.MainLoop();
+}
+
+// Entry point for Linux & SLP applications
+//
+int main(int argc, char **argv)
+{
+  Application app = Application::New(&argc, &argv);
+
+  RunTest(app);
+
+  return 0;
+}
diff --git a/examples/motion-stretch/motion-stretch-example.cpp b/examples/motion-stretch/motion-stretch-example.cpp
new file mode 100644 (file)
index 0000000..fd93142
--- /dev/null
@@ -0,0 +1,448 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <sstream>
+#include <iomanip>
+
+#include "../shared/view.h"
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+using namespace std;
+
+
+
+namespace // unnamed namespace
+{
+
+////////////////////////////////////////////////////
+//
+// Demo setup parameters
+//
+
+const float MOTION_STRETCH_ACTOR_WIDTH = 256;                                          // actor size on screen
+const float MOTION_STRETCH_ACTOR_HEIGHT = 256;                                         // ""
+
+const int MOTION_STRETCH_NUM_ACTOR_IMAGES = 5;
+const char* MOTION_STRETCH_ACTOR_IMAGE1( DALI_IMAGE_DIR "image-with-border-1.jpg" );
+const char* MOTION_STRETCH_ACTOR_IMAGE2( DALI_IMAGE_DIR "image-with-border-2.jpg" );
+const char* MOTION_STRETCH_ACTOR_IMAGE3( DALI_IMAGE_DIR "image-with-border-3.jpg" );
+const char* MOTION_STRETCH_ACTOR_IMAGE4( DALI_IMAGE_DIR "image-with-border-4.jpg" );
+const char* MOTION_STRETCH_ACTOR_IMAGE5( DALI_IMAGE_DIR "image-with-border-5.jpg" );
+
+const char* MOTION_STRETCH_ACTOR_IMAGES[] = {
+  MOTION_STRETCH_ACTOR_IMAGE1,
+  MOTION_STRETCH_ACTOR_IMAGE2,
+  MOTION_STRETCH_ACTOR_IMAGE3,
+  MOTION_STRETCH_ACTOR_IMAGE4,
+  MOTION_STRETCH_ACTOR_IMAGE5,
+};
+
+const int NUM_ACTOR_ANIMATIONS = 4;
+const int NUM_CAMERA_ANIMATIONS = 2;
+
+
+const char* BACKGROUND_IMAGE_PATH = DALI_IMAGE_DIR "background-default.png";
+
+const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
+const char* LAYOUT_IMAGE( DALI_IMAGE_DIR "icon_mode.png" );
+const char* APPLICATION_TITLE( "Motion Stretch" );
+const char* ANIM_START_ICON( DALI_IMAGE_DIR "icon_play_small.png" );
+const char* ANIM_STOP_ICON( DALI_IMAGE_DIR "icon_stop_small.png" );
+
+// These values depend on the button background image
+const Vector4 BUTTON_IMAGE_BORDER( Vector4::ONE * 3.0f );
+
+const float UI_MARGIN = 4.0f;                              ///< Screen Margin for placement of UI buttons
+
+const Vector3 BUTTON_SIZE_CONSTRAINT( 0.24f, 0.09f, 1.0f );
+
+// move this button down a bit so it is visible on target and not covered up by toolbar
+const float BUTTON_TITLE_LABEL_Y_OFFSET = 0.05f;
+
+const float ORIENTATION_DURATION = 0.5f;                  ///< Time to rotate to new orientation.
+} // unnamed namespace
+
+
+
+
+//
+class MotionStretchExampleApp : public ConnectionTracker
+{
+public:
+
+  /**
+     * DeviceOrientation describes the four different
+     * orientations the device can be in based on accelerometer reports.
+     */
+  enum DeviceOrientation
+  {
+    PORTRAIT = 0,
+    LANDSCAPE = 90,
+    PORTRAIT_INVERSE = 180,
+    LANDSCAPE_INVERSE = 270
+  };
+
+  /**
+   * Constructor
+   * @param application class, stored as reference
+   */
+  MotionStretchExampleApp(Application &app)
+  : mApplication(app),
+    mActorAnimationsEnabled(false),
+    mCurrentActorAnimation(0),
+    mCurrentImage(0)
+  {
+    // Connect to the Application's Init signal
+    app.InitSignal().Connect(this, &MotionStretchExampleApp::OnInit);
+  }
+
+  ~MotionStretchExampleApp()
+  {
+    // Nothing to do here; everything gets deleted automatically
+  }
+
+  /**
+   * This method gets called once the main loop of application is up and running
+   */
+  void OnInit(Application& app)
+  {
+    // The Init signal is received once (only) during the Application lifetime
+
+    Stage::GetCurrent().KeyEventSignal().Connect(this, &MotionStretchExampleApp::OnKeyEvent);
+
+    // Creates a default view with a default tool bar.
+    // The view is added to the stage.
+    mContentLayer = DemoHelper::CreateView( mApplication,
+                                            mView,
+                                            mToolBar,
+                                            BACKGROUND_IMAGE_PATH,
+                                            TOOLBAR_IMAGE,
+                                            APPLICATION_TITLE);
+
+    //Add an slideshow icon on the right of the title
+    mIconAnimsStart = Image::New( ANIM_START_ICON );
+    mIconAnimsStop = Image::New( ANIM_STOP_ICON );
+    mActorAnimsButton = Toolkit::PushButton::New();
+    mActorAnimsButton.SetBackgroundImage( mIconAnimsStart );
+    mActorAnimsButton.ClickedSignal().Connect( this, &MotionStretchExampleApp::OnAnimationButtonClicked );
+    mToolBar.AddControl( mActorAnimsButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalCenter, DemoHelper::DEFAULT_PLAY_PADDING );
+
+    // Creates a mode button.
+    // Create a effect toggle button. (right of toolbar)
+    Image imageLayout = Image::New( LAYOUT_IMAGE );
+    Toolkit::PushButton layoutButton = Toolkit::PushButton::New();
+    layoutButton.SetBackgroundImage(imageLayout);
+    layoutButton.ClickedSignal().Connect( this, &MotionStretchExampleApp::OnLayoutButtonClicked);
+    layoutButton.SetLeaveRequired( true );
+    mToolBar.AddControl( layoutButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING );
+
+    // Input
+    mTapGestureDetector = TapGestureDetector::New();
+    mTapGestureDetector.Attach( mContentLayer );
+    mTapGestureDetector.DetectedSignal().Connect( this, &MotionStretchExampleApp::OnTap );
+
+    // set initial orientation
+    Dali::Window winHandle = app.GetWindow();
+    winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT );
+    winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE );
+    winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE  );
+    winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE );
+
+    app.GetOrientation().ChangedSignal().Connect( this, &MotionStretchExampleApp::OnOrientationChanged );
+    unsigned int degrees = app.GetOrientation().GetDegrees();
+    Rotate( static_cast< DeviceOrientation >( degrees ) );
+
+
+    ///////////////////////////////////////////////////////
+    //
+    // Motion stretched actor
+    //
+
+    Image image = Image::New( MOTION_STRETCH_ACTOR_IMAGE1 );
+    mMotionStretchImageActor = ImageActor::New(image);
+    mMotionStretchImageActor.SetParentOrigin( ParentOrigin::CENTER );
+    mMotionStretchImageActor.SetAnchorPoint( AnchorPoint::CENTER );
+    mMotionStretchImageActor.SetSize(MOTION_STRETCH_ACTOR_WIDTH, MOTION_STRETCH_ACTOR_HEIGHT);
+
+    mContentLayer.Add( mMotionStretchImageActor );
+
+    // Create shader used for doing motion stretch
+    mMotionStretchEffect = MotionStretchEffect::Apply(mMotionStretchImageActor);
+  }
+
+  //////////////////////////////////////////////////////////////
+  //
+  // Device Orientation Support
+  //
+  //
+
+  void OnOrientationChanged( Orientation orientation )
+  {
+    unsigned int degrees = orientation.GetDegrees();
+    Rotate( static_cast< DeviceOrientation >( degrees ) );
+  }
+
+  void Rotate( DeviceOrientation orientation )
+  {
+    // Resize the root actor
+    Vector2 stageSize = Stage::GetCurrent().GetSize();
+    Vector2 targetSize = stageSize;
+    if( orientation == LANDSCAPE ||
+        orientation == LANDSCAPE_INVERSE )
+    {
+      targetSize = Vector2( stageSize.y, stageSize.x );
+    }
+
+    if( mOrientation != orientation )
+    {
+      mOrientation = orientation;
+
+      // check if actor is on stage
+      if( mView.GetParent() )
+      {
+        // has parent so we expect it to be on stage, start animation
+        mRotateAnimation = Animation::New( ORIENTATION_DURATION );
+        mRotateAnimation.SetDestroyAction( Animation::Bake );
+        mRotateAnimation.RotateTo( mView, Degree( -orientation ), Vector3::ZAXIS, AlphaFunctions::EaseOut );
+        mRotateAnimation.Resize( mView, targetSize.width, targetSize.height );
+        mRotateAnimation.Play();
+      }
+      else
+      {
+        // set the rotation to match the orientation
+        mView.SetRotation( Degree( -orientation ), Vector3::ZAXIS );
+        mView.SetSize( targetSize );
+      }
+    }
+    else
+    {
+      // for first time just set size
+      mView.SetSize( targetSize );
+    }
+  }
+
+  //////////////////////////////////////////////////////////////
+  //
+  // Actor Animation
+  //
+  //
+
+  // move to point on screen that was tapped
+  void OnTap( Actor actor, TapGesture tapGesture )
+  {
+    Vector3 destPos;
+    float originOffsetX, originOffsetY;
+
+    // rotate offset (from top left origin to centre) into actor space
+    Vector2 stageSize = Dali::Stage::GetCurrent().GetSize();
+    actor.ScreenToLocal(originOffsetX, originOffsetY, stageSize.width * 0.5f, stageSize.height * 0.5f);
+
+    // get dest point in local actor space
+    destPos.x = tapGesture.localPoint.x - originOffsetX;
+    destPos.y = tapGesture.localPoint.y - originOffsetY;
+    destPos.z = 0.0f;
+
+    float animDuration = 0.5f;
+    mActorTapMovementAnimation = Animation::New( animDuration );
+    if ( mMotionStretchImageActor )
+    {
+      mActorTapMovementAnimation.AnimateTo( Property(mMotionStretchImageActor, Actor::POSITION), destPos, AlphaFunctions::EaseInOutSine, TimePeriod(animDuration) );
+    }
+    mActorTapMovementAnimation.SetEndAction( Animation::Bake );
+    mActorTapMovementAnimation.Play();
+
+
+    // perform some spinning etc
+    if(mActorAnimationsEnabled)
+    {
+      switch(mCurrentActorAnimation)
+      {
+        // spin around y
+        case 0:
+        {
+          float animDuration = 1.0f;
+          mActorAnimation = Animation::New(animDuration);
+          mActorAnimation.RotateBy(mMotionStretchImageActor, Degree(720), Vector3::YAXIS, AlphaFunctions::EaseInOut);
+          mActorAnimation.SetEndAction( Animation::Bake );
+          mActorAnimation.Play();
+        }
+        break;
+
+        // spin around z
+        case 1:
+        {
+          float animDuration = 1.0f;
+          mActorAnimation = Animation::New(animDuration);
+          mActorAnimation.RotateBy(mMotionStretchImageActor, Degree(720), Vector3::ZAXIS, AlphaFunctions::EaseInOut);
+          mActorAnimation.SetEndAction( Animation::Bake );
+          mActorAnimation.Play();
+        }
+        break;
+
+        // spin around y and z
+        case 2:
+        {
+          float animDuration = 1.0f;
+          mActorAnimation = Animation::New(animDuration);
+          mActorAnimation.RotateBy(mMotionStretchImageActor, Degree(360), Vector3::YAXIS, AlphaFunctions::EaseInOut);
+          mActorAnimation.RotateBy(mMotionStretchImageActor, Degree(360), Vector3::ZAXIS, AlphaFunctions::EaseInOut);
+          mActorAnimation.SetEndAction( Animation::Bake );
+          mActorAnimation.Play();
+        }
+        break;
+
+        // scale
+        case 3:
+        {
+          float animDuration = 1.0f;
+          mActorAnimation = Animation::New(animDuration);
+          mActorAnimation.ScaleBy(mMotionStretchImageActor, Vector3(2.0f, 2.0f, 2.0f), AlphaFunctions::Bounce, 0.0f, 1.0f);
+          mActorAnimation.SetEndAction( Animation::Bake );
+          mActorAnimation.Play();
+        }
+        break;
+
+        default:
+          break;
+      }
+
+      mCurrentActorAnimation++;
+      if(NUM_ACTOR_ANIMATIONS == mCurrentActorAnimation)
+      {
+        mCurrentActorAnimation = 0;
+      }
+    }
+  }
+
+  void ToggleActorAnimations()
+  {
+    if(!mActorAnimationsEnabled)
+    {
+      mActorAnimationsEnabled = true;
+      mActorAnimsButton.SetBackgroundImage( mIconAnimsStop );
+    }
+    else
+    {
+      mActorAnimationsEnabled = false;
+      mActorAnimsButton.SetBackgroundImage( mIconAnimsStart );
+    }
+  }
+
+  //////////////////////////////////////////////////////////////
+  //
+  // Input handlers
+  //
+  //
+
+  bool OnLayoutButtonClicked( Toolkit::Button button )
+  {
+    ChangeImage();
+    return true;
+  }
+
+  /**
+   * Main key event handler
+   */
+  void OnKeyEvent(const KeyEvent& event)
+  {
+    if(event.state == KeyEvent::Down)
+    {
+      if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+      {
+        mApplication.Quit();
+      }
+    }
+  }
+
+  bool OnAnimationButtonClicked( Toolkit::Button button )
+  {
+    ToggleActorAnimations();
+    return true;
+  }
+
+  //////////////////////////////////////////////////////////////
+  //
+  // Misc
+  //
+  //
+
+
+  void ChangeImage()
+  {
+    mCurrentImage++;
+    if(MOTION_STRETCH_NUM_ACTOR_IMAGES == mCurrentImage)
+    {
+      mCurrentImage = 0;
+    }
+
+    Image stretchImage = Image::New( MOTION_STRETCH_ACTOR_IMAGES[mCurrentImage] );
+    mMotionStretchImageActor.SetImage(stretchImage);
+  }
+
+
+private:
+  Application&               mApplication;            ///< Application instance
+  Toolkit::View              mView;
+  Toolkit::ToolBar           mToolBar;
+  TextView                   mTitleActor;             ///< The Toolbar's Title.
+  Image                      mIconAnimsStart;
+  Image                      mIconAnimsStop;
+  Layer                      mContentLayer;           ///< Content layer (contains actor for this stretch demo)
+
+  PushButton                 mActorAnimsButton;       ///< The actor animation toggling Button.
+
+  // Motion stretch
+  MotionStretchEffect mMotionStretchEffect;
+  ImageActor mMotionStretchImageActor;
+
+  // animate actor to position where user taps screen
+  Animation mActorTapMovementAnimation;
+
+  // show different animations to demonstrate stretch effect working on an object only movement basis
+  bool mActorAnimationsEnabled;
+  Animation mActorAnimation;
+  int mCurrentActorAnimation;
+
+  // offer a selection of images that user can cycle between
+  int mCurrentImage;
+
+  TapGestureDetector mTapGestureDetector;
+
+  DeviceOrientation mOrientation;               ///< Current Device orientation
+  Animation mRotateAnimation;                   ///< Animation for rotating between landscape and portrait.
+
+};
+
+void RunTest(Application& app)
+{
+  MotionStretchExampleApp test(app);
+
+  app.MainLoop();
+}
+
+// Entry point for Linux & SLP applications
+//
+int main(int argc, char **argv)
+{
+  Application app = Application::New(&argc, &argv);
+
+  RunTest(app);
+
+  return 0;
+}
diff --git a/examples/page-turn-view/page-turn-view-example.cpp b/examples/page-turn-view/page-turn-view-example.cpp
new file mode 100644 (file)
index 0000000..4dfa623
--- /dev/null
@@ -0,0 +1,340 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <assert.h>
+#include <cstdlib>
+#include <string.h>
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+
+// LOCAL STUFF
+namespace
+{
+// The content amount of one page between portrait and landscape view are different
+// set a ratio to modify the current page number when the rotation is changed
+const float PAGE_NUMBER_CORRESPONDING_RATIO(1.25f);
+
+const char* BOOK_COVER_PORTRAIT = ( DALI_IMAGE_DIR "book-portrait-cover.jpg" );
+const char* BOOK_COVER_LANDSCAPE = ( DALI_IMAGE_DIR "book-landscape-cover.jpg" );
+const char* BOOK_COVER_BACK_LANDSCAPE = ( DALI_IMAGE_DIR "book-landscape-cover-back.jpg" );
+
+const char* PAGE_IMAGES_PORTRAIT[] =
+{
+  DALI_IMAGE_DIR "book-portrait-p1.jpg",
+  DALI_IMAGE_DIR "book-portrait-p2.jpg",
+  DALI_IMAGE_DIR "book-portrait-p3.jpg",
+  DALI_IMAGE_DIR "book-portrait-p4.jpg",
+  DALI_IMAGE_DIR "book-portrait-p5.jpg"
+};
+const unsigned int NUMBER_OF_PORTRAIT_IMAGE( sizeof(PAGE_IMAGES_PORTRAIT) / sizeof(PAGE_IMAGES_PORTRAIT[0]) );
+
+const char* PAGE_IMAGES_LANDSCAPE[] =
+{
+  DALI_IMAGE_DIR "book-landscape-p1.jpg",
+  DALI_IMAGE_DIR "book-landscape-p2.jpg",
+  DALI_IMAGE_DIR "book-landscape-p3.jpg",
+  DALI_IMAGE_DIR "book-landscape-p4.jpg",
+  DALI_IMAGE_DIR "book-landscape-p5.jpg",
+  DALI_IMAGE_DIR "book-landscape-p6.jpg",
+  DALI_IMAGE_DIR "book-landscape-p7.jpg",
+  DALI_IMAGE_DIR "book-landscape-p8.jpg"
+};
+const unsigned int NUMBER_OF_LANDSCAPE_IMAGE( sizeof(PAGE_IMAGES_LANDSCAPE) / sizeof(PAGE_IMAGES_LANDSCAPE[0]) );
+
+}// end LOCAL STUFF
+
+class PortraitPageFactory : public PageFactory
+{
+  /**
+   * Query the number of pages available from the factory.
+   * The maximum available page has an ID of GetNumberOfPages()-1.
+   */
+  virtual unsigned int GetNumberOfPages()
+  {
+    return 5*NUMBER_OF_PORTRAIT_IMAGE + 1;
+  }
+  /**
+   * Create an image actor to represent a page.
+   * @param[in] pageId The ID of the page to create.
+   * @return An image actor, or an uninitialized pointer if the ID is out of range.
+   */
+  virtual Actor NewPage( unsigned int pageId )
+  {
+    if( pageId == 0 )
+    {
+      return ImageActor::New( Image::New( BOOK_COVER_PORTRAIT ) );
+    }
+    else
+    {
+      return ImageActor::New( Image::New( PAGE_IMAGES_PORTRAIT[ (pageId-1) % NUMBER_OF_PORTRAIT_IMAGE ] ) );
+    }
+  }
+};
+
+class LandscapePageFactory : public PageFactory
+{
+  /**
+   * Query the number of pages available from the factory.
+   * The maximum available page has an ID of GetNumberOfPages()-1.
+   */
+  virtual unsigned int GetNumberOfPages()
+  {
+    return 5*NUMBER_OF_LANDSCAPE_IMAGE / 2 + 1;
+  }
+  /**
+   * Create an image actor to represent a page.
+   * @param[in] pageId The ID of the page to create.
+   * @return An image actor, or an uninitialized pointer if the ID is out of range.
+   */
+  virtual Actor NewPage( unsigned int pageId )
+  {
+    ImageActor pageFront;
+    ImageActor pageBack;
+    if( pageId == 0 )
+    {
+       pageFront = ImageActor::New( Image::New( BOOK_COVER_LANDSCAPE ) );
+       pageBack = ImageActor::New( Image::New( BOOK_COVER_BACK_LANDSCAPE ) );
+    }
+    else
+    {
+      unsigned int imageId = (pageId-1)*2;
+      pageFront = ImageActor::New( Image::New( PAGE_IMAGES_LANDSCAPE[ imageId % NUMBER_OF_LANDSCAPE_IMAGE ] ) );
+      pageBack = ImageActor::New( Image::New( PAGE_IMAGES_LANDSCAPE[ (imageId+1) % NUMBER_OF_LANDSCAPE_IMAGE ] ) );
+    }
+    pageFront.Add(pageBack);
+    return pageFront;
+  }
+};
+
+/**
+ * This example shows how to use the page turn UI control to implement the page-turn demo
+ * The effect follows the pan gesture to animate the page
+ * Pan the image inwards, the page will bent,
+ * Depends on the distance of the panning, the image might turn over or slide back
+ * Also, in portrait view, the pan gesture outwards from position near the spine could turn the previous page back
+ * Allows to turn multiple pages one by one quickly towards the same direction, multiple animations are launched in this case
+*/
+class PageTurnController : public ConnectionTracker
+{
+public:
+  PageTurnController( Application &app );
+  ~PageTurnController();
+
+  //This method gets called once the main loop of application is up and running
+  void OnInit( Application& app );
+
+private:
+
+  /**
+   * This method gets called when the screen is rotated, switch between portrait and landscape views
+   * param [in] view The view receiving the orientation change signal
+   * param [in] animation The Orientation Rotating animation
+   * param [in] orientation The current screen orientation
+   */
+  void OnOrientationAnimationStarted( View view, Animation& animation, const Orientation& orientation );
+
+  /**
+   * Main key event handler
+   */
+  void OnKeyEvent(const KeyEvent& event);
+
+  /**
+   * Callback function of page turned signal
+   * @param[in] pageTurnView The handle of the PageTurnPortraitView or PageTurnLandscapeView
+   * @param[in] pageIndex The index of the page turned over
+   * @param[in] isTurningForward The turning direction, forwards or backwards
+   */
+  void OnPageStartedTurn( PageTurnView pageTurnView, unsigned int pageIndex, bool isTurningForward );
+
+  /**
+   * Callback function of page turned signal
+   * @param[in] pageTurnView The handle of the PageTurnPortraitView or PageTurnLandscapeView
+   * @param[in] pageIndex The index of the page turned over
+   * @param[in] isTurningForward The turning direction, forwards or backwards
+   */
+  void OnPageFinishedTurn( PageTurnView pageTurnView, unsigned int pageIndex, bool isTurningForward );
+
+  /**
+   * Callback function of page started pan signal
+   *
+   * @param[in] pageTurnView The calling page turn view
+   */
+  void OnPageStartedPan( PageTurnView pageTurnView );
+
+  /**
+   * Callback function of page finished pan signal
+   *
+   * @param[in] pageTurnView The calling page turn view
+   */
+  void OnPageFinishedPan( PageTurnView pageTurnView );
+
+private:
+
+  Application&                mApplication;
+  View                        mView;
+
+  PageTurnView                mPageTurnPortraitView;
+  PageTurnView                mPageTurnLandscapeView;
+  PortraitPageFactory         mPortraitPageFactory;
+  LandscapePageFactory        mLandscapePageFactory;
+
+  bool                        mIsPortrait;
+};
+
+PageTurnController::PageTurnController( Application &app )
+:mApplication( app ),
+ mIsPortrait( true )
+{
+  // Connect to the Application's Init signal
+  app.InitSignal().Connect( this, &PageTurnController::OnInit );
+}
+
+PageTurnController::~PageTurnController()
+{
+}
+
+
+void PageTurnController::OnInit( Application& app )
+{
+  // The Init signal is received once ( only ) during the Application lifetime
+
+  Stage::GetCurrent().KeyEventSignal().Connect(this, &PageTurnController::OnKeyEvent);
+
+  Stage stage = Stage::GetCurrent();
+  Vector2 stageSize =  stage.GetSize();
+
+  // Create default View.
+  mView = View::New();
+  stage.Add( mView );
+
+  Dali::Window winHandle = app.GetWindow();
+  winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT );
+  winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE );
+  winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE  );
+  winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE );
+  app.GetOrientation().ChangedSignal().Connect( &mView, &View::OrientationChanged );
+  // view will response to orientation change to display portrait or landscape views
+  mView.OrientationAnimationStartedSignal().Connect( this, &PageTurnController::OnOrientationAnimationStarted );
+
+  mPageTurnPortraitView = PageTurnPortraitView::New( mPortraitPageFactory, stageSize );
+  mPageTurnPortraitView.SetSpineShadowParameter( Vector2(70.f, 30.f) );
+  mPageTurnPortraitView.PageTurnStartedSignal().Connect( this, &PageTurnController::OnPageStartedTurn );
+  mPageTurnPortraitView.PageTurnFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedTurn );
+  mPageTurnPortraitView.PagePanStartedSignal().Connect( this, &PageTurnController::OnPageStartedPan );
+  mPageTurnPortraitView.PagePanFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedPan );
+  mPageTurnPortraitView.SetPositionInheritanceMode( USE_PARENT_POSITION );
+
+  mPageTurnLandscapeView = PageTurnLandscapeView::New( mLandscapePageFactory, Vector2(stageSize.y*0.5f, stageSize.x) );
+  mPageTurnLandscapeView.PageTurnStartedSignal().Connect( this, &PageTurnController::OnPageStartedTurn );
+  mPageTurnLandscapeView.PageTurnFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedTurn );
+  mPageTurnLandscapeView.PagePanStartedSignal().Connect( this, &PageTurnController::OnPageStartedPan );
+  mPageTurnLandscapeView.PagePanFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedPan );
+  mPageTurnLandscapeView.SetPositionInheritanceMode( USE_PARENT_POSITION );
+
+  mView.Add(mPageTurnPortraitView);
+}
+
+void PageTurnController::OnOrientationAnimationStarted( View view, Animation& animation, const Orientation& orientation )
+{
+  switch( orientation.GetDegrees() )
+  {
+    // portrait view, display page in the right side only
+    case 0:
+    case 180:
+    {
+      if( !mIsPortrait )
+      {
+        mView.Remove( mPageTurnLandscapeView );
+        mView.Add( mPageTurnPortraitView );
+        int currentPage = floor( static_cast<float>(mPageTurnLandscapeView.GetCurrentPage()) * PAGE_NUMBER_CORRESPONDING_RATIO );
+        mPageTurnPortraitView.GoToPage( currentPage );
+        mIsPortrait = true;
+      }
+      break;
+    }
+    // display pages in both sides
+    case 90:
+    case 270:
+    {
+      if( mIsPortrait )
+      {
+        mView.Remove( mPageTurnPortraitView );
+        mView.Add( mPageTurnLandscapeView );
+        int currentPage = ceil( static_cast<float>(mPageTurnPortraitView.GetCurrentPage()) / PAGE_NUMBER_CORRESPONDING_RATIO );
+        mPageTurnLandscapeView.GoToPage( currentPage );
+        mIsPortrait = false;
+      }
+      break;
+    }
+    default:
+    break;
+  }
+}
+
+/**
+ * Main key event handler
+ */
+void PageTurnController::OnKeyEvent(const KeyEvent& event)
+{
+  if(event.state == KeyEvent::Down)
+  {
+    if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+    {
+      mApplication.Quit();
+    }
+  }
+}
+
+void PageTurnController::OnPageStartedTurn( PageTurnView pageTurnView, unsigned int pageIndex, bool isTurningForward )
+{
+  std::cout<< ( ( pageTurnView == mPageTurnPortraitView ) ? " portrait: " : " Landscape: " )
+           << " page " << pageIndex
+           << ( isTurningForward ? " is starting to turn forward" : " is starting to turn backward" )
+           << std::endl;
+}
+
+void PageTurnController::OnPageFinishedTurn( PageTurnView pageTurnView, unsigned int pageIndex, bool isTurningForward )
+{
+  std::cout<< ( ( pageTurnView == mPageTurnPortraitView ) ? " portrait: " : " Landscape: " )
+           << " page " << pageIndex
+           << ( isTurningForward ? " has finished turning forward" : " has finished turning backward" )
+           << std::endl;
+}
+
+void PageTurnController::OnPageStartedPan( PageTurnView pageTurnView )
+{
+  std::cout<< "Starting to pan" << std::endl;
+}
+
+void PageTurnController::OnPageFinishedPan( PageTurnView pageTurnView )
+{
+  std::cout<< "Finished panning" << std::endl;
+}
+
+// Entry point for applications
+int main( int argc, char **argv )
+{
+  Application app = Application::New(&argc, &argv);
+  PageTurnController test ( app );
+
+  app.MainLoop();
+
+  return 0;
+}
+
diff --git a/examples/shader-effect/bubble-effect-example.cpp b/examples/shader-effect/bubble-effect-example.cpp
new file mode 100644 (file)
index 0000000..20716fc
--- /dev/null
@@ -0,0 +1,507 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <stdio.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <sstream>
+#include <dali/dali.h>
+#include "dali-toolkit/dali-toolkit.h"
+
+#include "../shared/view.h"
+
+using namespace Dali;
+
+using Dali::Material;
+
+namespace
+{
+const char * const TEXTURE_IMAGE ( DALI_IMAGE_DIR "bubble-effect-texture-border.png" );
+const char * const TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
+const char * const APPLICATION_TITLE( "Bubble Effect" );
+const char * const CHANGE_IMAGE_ICON( DALI_IMAGE_DIR "icon_mode.png" );
+
+const char* BACKGROUND_IMAGES[]=
+{
+  DALI_IMAGE_DIR "background-1.jpg",
+  DALI_IMAGE_DIR "background-2.jpg",
+  DALI_IMAGE_DIR "background-3.jpg",
+  DALI_IMAGE_DIR "background-4.jpg",
+};
+const unsigned int NUM_BACKGROUND_IMAGES( sizeof(BACKGROUND_IMAGES) / sizeof(BACKGROUND_IMAGES[0]) );
+
+const float MIN_DISTANCE( 2.f);
+const float MAX_DISTANCE( 200.f);
+const float BUBBLE_SIZE( 40.f );
+const float BUBBLE_MIN_SIZE( 5.f );
+const unsigned long MAX_TIME_INTERVAL(100);
+const unsigned int NUMBER_OF_BUBBLES( 100 );  //this value cannot be bigger than 100;
+const unsigned int NUMBER_OF_GROUP( 7 );
+const unsigned int TOTAL_NUMBER_OF_BUBBLES( NUMBER_OF_BUBBLES * NUMBER_OF_GROUP );
+} // unnamed namespace
+
+class BubbleEffect : public ShaderEffect
+{
+public:
+
+  BubbleEffect()
+  {}
+
+  static BubbleEffect New( unsigned int numberOfBubble )
+  {
+    std::ostringstream meshVertexStringStream;
+    meshVertexStringStream << "#define NUMBER_OF_BUBBLE "<< numberOfBubble << "\n";
+    std::string meshVertex(
+    "  uniform float uGravity; \n"
+    "  uniform vec4 uStartAndEndPos[NUMBER_OF_BUBBLE];\n"
+    "  uniform float uEasing[NUMBER_OF_BUBBLE];\n"
+    "  uniform float uPercentage[NUMBER_OF_BUBBLE];\n"
+    "  uniform vec2 uStageSize; \n"
+    "  uniform vec2 offset[9]; \n"
+    "  varying float vPercentage;\n"
+    "  varying vec2  vEffectTexCoord;\n"
+    "  void main()\n"
+    "  {\n"
+    "    mediump vec4 position = vec4( aPosition.x, aPosition.y, 0.0, 1.0 );\n"
+    "    int zCoord = int(aPosition.z); \n"
+    "    int idx = int(mod(aPosition.z, float(NUMBER_OF_BUBBLE)));\n"
+    "    int groupIdx = (zCoord - idx) / NUMBER_OF_BUBBLE;\n"
+    "    vec4 startAndEnd = uStartAndEndPos[idx]; \n"
+    "    startAndEnd.zw += offset[groupIdx];\n"
+    "\n"
+    "    if( uPercentage[idx] < 1.0 )\n"
+    "    {\n"
+    "      float positionDelta = uPercentage[idx];\n"
+    "      if (mod(uEasing[idx], 4.0) > 1.5) { positionDelta = pow(uPercentage[idx], 2.0); } \n"
+    "      else if (mod(uEasing[idx], 8.0) > 3.5) { positionDelta = 1.0 - pow((1.0-uPercentage[idx]),2.0); }\n"
+    "      else if (mod(uEasing[idx], 16.0) > 7.5) { positionDelta = pow(2.0, 10.0 * (uPercentage[idx] - 1.0)) - 0.001; }\n"
+    "      else if (mod(uEasing[idx], 32.0) > 15.5) { positionDelta = 1.001 * (-pow(2.0, -10.0 * uPercentage[idx]) + 1.0); }\n"
+
+    "      position.xy = position.xy + startAndEnd.xy + startAndEnd.zw * positionDelta; \n"
+    "      if (mod(uEasing[idx],64.0) > 31.5) { position.y = position.y - (0.5*uGravity * pow(uPercentage[idx]+0.1, 2.0)); }\n"
+    "    }\n"
+    "    gl_Position = uMvpMatrix * position;\n"
+    "\n"
+    "    mediump vec2 start = uCustomTextureCoords.xy;\n"
+    "    mediump vec2 scale = uCustomTextureCoords.zw;\n"
+    "    vTexCoord = vec2( start.x + aTexCoord.x * scale.x, start.y + aTexCoord.y * scale.y );\n"
+    "    vPercentage = uPercentage[idx];\n"
+    "    vEffectTexCoord = startAndEnd.xy / uStageSize; \n"
+    "  }\n" );
+    meshVertexStringStream << meshVertex;
+
+    std::string meshFragment(
+    "  varying float vPercentage;\n"
+    "  varying vec2  vEffectTexCoord;\n"
+    "\n"
+    "  void main()\n"
+    "  {\n"
+    "    vec4 fragColor = texture2D(sEffect, vEffectTexCoord);\n"
+    "    fragColor.rgb *= 1.2; \n"
+    "    fragColor *= uColor;\n"
+    "    fragColor.a  *= texture2D(sTexture, vTexCoord).a * ( 1.0-vPercentage*vPercentage );\n"
+    "    gl_FragColor = fragColor;\n"
+    "  }\n");
+
+    ShaderEffect shaderEffect = ShaderEffect::New( meshVertexStringStream.str(), meshFragment,
+                                                   GeometryType( GEOMETRY_TYPE_TEXTURED_MESH),
+                                                   ShaderEffect::GeometryHints( ShaderEffect::HINT_BLENDING ) );
+    BubbleEffect handle( shaderEffect );
+    handle.mNumOfBubbles = numberOfBubble;
+    handle.SetUniform( "uGravity", 100.f );
+    handle.SetUniform( "uStageSize", Stage::GetCurrent().GetSize() );
+    for( unsigned int i=0; i<numberOfBubble; i++ )
+    {
+      handle.SetPercentage( i, 1.f);
+    }
+
+    srand(time(NULL));
+
+    return handle;
+  }
+
+  void SetBubbleParameter(unsigned int idx, const Vector2& emitPosition, Vector2 direction)
+  {
+     Vector2 randomVec(rand()%400-200, rand()%400-200);
+     float length = randomVec.Length();
+     randomVec /= length;
+     direction.Normalize();
+     Vector2 endPos = (randomVec -  direction*4.f);
+     endPos.Normalize();
+     Vector4 startAndEndPos( emitPosition.x, emitPosition.y, endPos.x*length, endPos.y*length );
+     SetStartAndEndPos( idx, startAndEndPos );
+
+     float easing = pow( 2, rand()%5-1 ) + ( rand()%2-1 )*32;
+     SetEasing( idx, easing );
+
+     SetPercentage( idx, 0.f);
+
+     float offset = 100.f;
+     SetUniform("offset[0]", Vector2(0.f,0.f));
+     SetUniform("offset[1]", Vector2(offset,0.f));
+     SetUniform("offset[2]", Vector2(-offset,0.f));
+     SetUniform("offset[3]", Vector2(0.f,offset));
+     SetUniform("offset[4]", Vector2(0.f,-offset));
+     SetUniform("offset[5]", Vector2(offset,offset)*0.707f );
+     SetUniform("offset[6]", Vector2(offset,-offset)*0.707f);
+     SetUniform("offset[7]", Vector2(-offset,offset)*0.707f);
+     SetUniform("offset[8]", Vector2(-offset,-offset)*0.707f);
+  }
+
+  std::string GetPercentagePropertyName( unsigned int idx ) const
+  {
+    assert( idx < mNumOfBubbles );
+    std::ostringstream oss;
+    oss<< "uPercentage["<< idx << "]";
+    return oss.str();
+  }
+
+private:
+  // Helper for New()
+  BubbleEffect( ShaderEffect handle )
+  : ShaderEffect( handle )
+  {}
+
+  void SetStartAndEndPos( unsigned int idx, const Vector4& startAndEndPos )
+  {
+    assert( idx < mNumOfBubbles );
+    std::ostringstream oss;
+    oss<< "uStartAndEndPos["<< idx << "]";
+    SetUniform( oss.str(), startAndEndPos );
+  }
+
+  void SetEasing( unsigned int idx, float easing )
+  {
+    assert( idx < mNumOfBubbles );
+    std::ostringstream oss;
+    oss<< "uEasing["<< idx << "]";
+    SetUniform( oss.str(), easing );
+  }
+
+  void SetPercentage( unsigned int idx, float percentage )
+  {
+    assert( idx < mNumOfBubbles );
+    std::ostringstream oss;
+    oss<< "uPercentage["<< idx << "]";
+    SetUniform( oss.str(), percentage );
+  }
+
+private:
+
+  unsigned int mNumOfBubbles;
+};
+
+class BubbleEffectExample : public ConnectionTracker
+{
+public:
+  BubbleEffectExample(Application &app)
+  : mApp(app),
+    mCurrentUniform( 0 ),
+    mTouchable( false ),
+    mLastTouchTime( 0 ),
+    mRescoucesCleared( false ),
+    mCurrentBackgroundImageId( 0 )
+  {
+    app.InitSignal().Connect(this, &BubbleEffectExample::Create);
+  }
+
+  ~BubbleEffectExample()
+  {
+  }
+
+public:
+
+  void Create(Application& app)
+  {
+    Stage stage = Stage::GetCurrent();
+    Vector2 size = stage.GetSize();
+
+    // Creates a default view with a default tool bar.
+    // The view is added to the stage.
+    Toolkit::ToolBar toolBar;
+    mContent = DemoHelper::CreateView( app,
+                                       mView,
+                                       toolBar,
+                                       "",
+                                       TOOLBAR_IMAGE,
+                                       APPLICATION_TITLE );
+
+    // Create a effect toggle button. (right of toolbar)
+    Image imageLayout = Image::New( CHANGE_IMAGE_ICON );
+    Toolkit::PushButton layoutButton = Toolkit::PushButton::New();
+    layoutButton.SetBackgroundImage(imageLayout);
+    layoutButton.ClickedSignal().Connect( this, &BubbleEffectExample::OnImageChageIconClicked );
+    toolBar.AddControl( layoutButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING  );
+
+    mRoot = Actor::New();
+    mRoot.SetParentOrigin( ParentOrigin::CENTER );
+    stage.Add(mRoot);
+
+    mFrameBufferImage = FrameBufferImage::New( size.width/4.f, size.height/4.f, Pixel::RGBA8888, Dali::Image::Unused );
+    mTimer = Timer::New( 1000 );
+    mTimer.TickSignal().Connect( this, &BubbleEffectExample::ClearBlurResource );
+
+    SetImage( BACKGROUND_IMAGES[ mCurrentBackgroundImageId ] );
+
+    GenMaterial();
+    MeshData meshData;
+    ConstructBubbleMesh( meshData, NUMBER_OF_BUBBLES*9, BUBBLE_SIZE);
+    for(unsigned int i=0; i < NUMBER_OF_GROUP; i++ )
+    {
+      mMesh[i] = Mesh::New( meshData );
+      mMeshActor[i] = MeshActor::New( mMesh[i] );
+      mMeshActor[i].SetAffectedByLighting( false );
+      mMeshActor[i].SetParentOrigin(ParentOrigin::TOP_LEFT);
+      stage.Add( mMeshActor[i] );
+      mEffect[i] = BubbleEffect::New( NUMBER_OF_BUBBLES );
+      mEffect[i].SetEffectImage( mFrameBufferImage );
+      mMeshActor[i].SetShaderEffect( mEffect[i] );
+    }
+
+    Stage::GetCurrent().KeyEventSignal().Connect(this, &BubbleEffectExample::OnKeyEvent);
+  }
+
+  void OnKeyEvent(const KeyEvent& event)
+  {
+    if(event.state == KeyEvent::Down)
+    {
+      if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+      {
+        mApp.Quit();
+      }
+    }
+  }
+
+  void SetImage( const std::string& imagePath )
+  {
+    mTouchable = false;
+
+    if( mScreen )
+    {
+      mScreen.TouchedSignal().Disconnect( this, &BubbleEffectExample::OnTouch );
+      mRoot.Remove( mScreen );
+      ClearBlurResource();
+    }
+
+    Stage stage = Stage::GetCurrent();
+
+    Image image = Image::New( imagePath );
+    mScreen = ImageActor::New( image );
+    mScreen.SetSize( stage.GetSize() );
+    mScreen.SetZ( -1.f );
+    mScreen.SetParentOrigin(ParentOrigin::CENTER);
+    mRoot.Add(mScreen);
+    mScreen.TouchedSignal().Connect( this, &BubbleEffectExample::OnTouch );
+
+    mGaussianBlurView = Toolkit::GaussianBlurView::New( 7, 2.5f, Pixel::RGBA8888, 0.25f, 0.25f, true );
+    mGaussianBlurView.SetParentOrigin(ParentOrigin::CENTER);
+    mGaussianBlurView.SetSize(stage.GetSize());
+    mGaussianBlurView.SetUserImageAndOutputRenderTarget(  image, mFrameBufferImage );
+    stage.Add( mGaussianBlurView );
+    mGaussianBlurView.Activate();
+
+    mRescoucesCleared = false;
+    mTimer.Start();
+
+    mTouchable = true;
+  }
+
+  bool ClearBlurResource()
+  {
+    if( !mRescoucesCleared )
+    {
+      Stage::GetCurrent().Remove( mGaussianBlurView );
+      mGaussianBlurView.Deactivate();
+      mGaussianBlurView.Reset();
+      mRescoucesCleared = true;
+    }
+    return false;
+ }
+
+  void GenMaterial()
+  {
+    mCustomMaterial = Material::New("CustomMaterial");
+    mCustomMaterial.SetOpacity(1.0f);
+    mCustomMaterial.SetDiffuseColor(Color::WHITE);
+    mCustomMaterial.SetAmbientColor(Vector4(0.0, 0.1, 0.1, 1.0));
+    mCustomMaterial.SetMapU( Material::MAPPING_MODE_WRAP );
+    mCustomMaterial.SetMapV( Material::MAPPING_MODE_WRAP );
+    mCustomMaterial.SetDiffuseTexture( Image::New( TEXTURE_IMAGE ) );
+  }
+
+  void AddVertex(MeshData::VertexContainer& vertices, Vector3 V, Vector2 UV)
+  {
+    MeshData::Vertex meshVertex;
+    meshVertex.x = V.x;
+    meshVertex.y = V.y;
+    meshVertex.z = V.z;
+    meshVertex.u = UV.x;
+    meshVertex.v = UV.y;
+    vertices.push_back(meshVertex);
+  }
+
+  void AddTriangle(MeshData::FaceIndices& faces,
+                   size_t v0, size_t v1, size_t v2)
+  {
+    faces.push_back(v0);
+    faces.push_back(v1);
+    faces.push_back(v2);
+  }
+
+  void ConstructBubbleMesh( MeshData& meshData, unsigned int numOfBubble, int size )
+  {
+    MeshData::VertexContainer    vertices;
+    MeshData::FaceIndices        faces;
+    BoneContainer                bones(0);
+
+    for(unsigned int index = 0; index < numOfBubble; index ++)
+    {
+      float curSize =  static_cast<float>( rand()%size + BUBBLE_MIN_SIZE);
+      float depth = static_cast<float>( index );
+      AddVertex( vertices, Vector3(0.f,0.f,depth), Vector2(0.f,0.f) );
+      AddVertex( vertices, Vector3(0.f,curSize,depth), Vector2( 0.f,1.f ));
+      AddVertex( vertices, Vector3(curSize,curSize,depth), Vector2(1.f,1.f) );
+      AddVertex( vertices, Vector3(curSize,0.f,depth), Vector2(1.f,0.f) );
+
+      unsigned int idx = index * 4;
+      AddTriangle( faces, idx, idx+1, idx+2);
+      AddTriangle( faces, idx, idx+2, idx+3);
+    }
+
+    meshData.SetData(vertices, faces, bones, mCustomMaterial);
+    meshData.SetHasColor(false);
+    meshData.SetHasNormals(true);
+    meshData.SetHasTextureCoords(true);
+  }
+
+  void SetUpAnimation( Vector2 emitPosition, Vector2 direction )
+  {
+    unsigned int curUniform = mCurrentUniform  % NUMBER_OF_BUBBLES;
+    unsigned int groupIdx = mCurrentUniform / NUMBER_OF_BUBBLES;
+    mEffect[groupIdx].SetBubbleParameter(curUniform, emitPosition, direction);
+    float duration = RandomRange( 1.f, 2.f );
+    mAnimation[mCurrentUniform] = Animation::New( duration );
+    mAnimationIndexPair[mAnimation[mCurrentUniform]] = mCurrentUniform;
+    mAnimation[mCurrentUniform].AnimateTo( Property( mEffect[groupIdx], mEffect[groupIdx].GetPercentagePropertyName(curUniform) ),
+                                           1.f, AlphaFunctions::DoubleEaseInOutSine60 );
+    mAnimation[mCurrentUniform].Play();
+    mAnimation[mCurrentUniform].FinishedSignal().Connect(this, &BubbleEffectExample::OnAnimationFinished);
+
+    mCurrentUniform = (mCurrentUniform + 1) % (TOTAL_NUMBER_OF_BUBBLES);
+  }
+
+  void OnAnimationFinished( Animation& source )
+  {
+    mAnimation[mAnimationIndexPair[source]].Reset();
+    mAnimationIndexPair.erase( source );
+  }
+
+  float RandomRange(float f0, float f1)
+  {
+    return f0 + (rand() & 0xfff) * (f1-f0) * (1.0f/4095.0f);
+  }
+
+  bool OnTouch(Dali::Actor actor, const Dali::TouchEvent& event)
+  {
+    if(!mTouchable)
+    {
+      return false;
+    }
+
+    if ( event.GetPointCount() > 0 )
+    {
+      const TouchPoint &point = event.GetPoint(0);
+      float distance = hypotf( point.local.x - mLastTouchPosition.x, point.local.y - mLastTouchPosition.y );
+      if ( distance > MIN_DISTANCE )
+      {
+        // when the finger moves fast, interpolate linearly between two touch points
+        if(event.time - mLastTouchTime < MAX_TIME_INTERVAL  && distance < MAX_DISTANCE)
+        {
+          float num = floor(distance / MIN_DISTANCE);
+          unsigned int numStep = static_cast<unsigned int>( num );
+          Vector2 step = ( point.screen - mLastTouchPosition ) * MIN_DISTANCE / distance;
+          for(unsigned int i = 0; i<numStep; i++)
+          {
+            SetUpAnimation( mLastTouchPosition + step*i, step );
+          }
+        }
+        else
+        {
+          SetUpAnimation( point.screen, point.screen-mLastTouchPosition );
+        }
+
+        mLastTouchTime = event.time;
+        mLastTouchPosition = point.screen;
+      }
+    }
+    return true;
+  }
+
+  bool OnImageChageIconClicked( Toolkit::Button button )
+  {
+    mCurrentBackgroundImageId = (mCurrentBackgroundImageId + 1 ) % NUM_BACKGROUND_IMAGES;
+    SetImage( BACKGROUND_IMAGES[ mCurrentBackgroundImageId ] );
+    return true;
+  }
+
+private:
+  Application&                      mApp;
+  Actor                             mRoot;
+  ImageActor                        mScreen;
+  Mesh                              mMesh[NUMBER_OF_GROUP];
+  MeshActor                         mMeshActor[NUMBER_OF_GROUP];
+  Material                          mCustomMaterial;
+  BubbleEffect                      mEffect[NUMBER_OF_GROUP];
+  unsigned int                      mCurrentUniform;
+  Animation                         mAnimation[TOTAL_NUMBER_OF_BUBBLES];
+  bool                              mTouchable;
+  std::map<Animation, unsigned int> mAnimationIndexPair;
+  unsigned long                     mLastTouchTime;
+  Vector2                           mLastTouchPosition;
+
+  Toolkit::GaussianBlurView         mGaussianBlurView;
+  FrameBufferImage                  mFrameBufferImage;
+  Timer                             mTimer;
+  bool                              mRescoucesCleared;
+
+  Layer                             mContent;
+  Toolkit::View                     mView;
+  unsigned int                      mCurrentBackgroundImageId;
+};
+
+/*****************************************************************************/
+
+static void
+RunTest(Application& app)
+{
+  BubbleEffectExample theApp(app);
+  app.MainLoop();
+}
+
+/*****************************************************************************/
+
+int
+main(int argc, char **argv)
+{
+  Application app = Application::New(&argc, &argv);
+
+  RunTest(app);
+
+  return 0;
+}
+
+
+
diff --git a/examples/shader-effect/dissolve-effect-example.cpp b/examples/shader-effect/dissolve-effect-example.cpp
new file mode 100644 (file)
index 0000000..0c3ecbc
--- /dev/null
@@ -0,0 +1,405 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// EXTERNAL INCLUDES
+#include <math.h>
+
+// INTERNAL INCLUDES
+#include "../shared/view.h"
+
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+
+using namespace Dali;
+
+// LOCAL STUFF
+namespace
+{
+
+const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
+const char* APPLICATION_TITLE_HIGHP( "Dissolve Effect(highp)" );
+const char* APPLICATION_TITLE_MEDIUMP( "Dissolve Effect(mediump)" );
+const char* CHANGE_EFFECT_IMAGE( DALI_IMAGE_DIR "icon_mode.png" );
+const char* PLAY_ICON( DALI_IMAGE_DIR "icon-play.png" );
+const char* STOP_ICON( DALI_IMAGE_DIR "icon-stop.png" );
+
+const char* IMAGES[] =
+{
+  DALI_IMAGE_DIR "gallery-large-1.jpg",
+  DALI_IMAGE_DIR "gallery-large-2.jpg",
+  DALI_IMAGE_DIR "gallery-large-3.jpg",
+  DALI_IMAGE_DIR "gallery-large-4.jpg",
+  DALI_IMAGE_DIR "gallery-large-5.jpg",
+  DALI_IMAGE_DIR "gallery-large-6.jpg",
+  DALI_IMAGE_DIR "gallery-large-7.jpg",
+  DALI_IMAGE_DIR "gallery-large-8.jpg",
+  DALI_IMAGE_DIR "gallery-large-9.jpg",
+  DALI_IMAGE_DIR "gallery-large-10.jpg",
+  DALI_IMAGE_DIR "gallery-large-11.jpg",
+  DALI_IMAGE_DIR "gallery-large-12.jpg",
+  DALI_IMAGE_DIR "gallery-large-13.jpg",
+  DALI_IMAGE_DIR "gallery-large-14.jpg",
+  DALI_IMAGE_DIR "gallery-large-15.jpg",
+  DALI_IMAGE_DIR "gallery-large-16.jpg",
+  DALI_IMAGE_DIR "gallery-large-17.jpg",
+  DALI_IMAGE_DIR "gallery-large-18.jpg",
+  DALI_IMAGE_DIR "gallery-large-19.jpg",
+  DALI_IMAGE_DIR "gallery-large-20.jpg",
+  DALI_IMAGE_DIR "gallery-large-21.jpg",
+};
+
+const int NUM_IMAGES( sizeof(IMAGES) / sizeof(IMAGES[0]) );
+
+// The duration of the current image staying on screen when slideshow is on
+const int VIEWINGTIME = 2000; // 2 seconds
+
+const float TRANSITION_DURATION = 2.5f; //2.5 second
+
+const float INITIAL_DEPTH = -10.0f;
+} // namespace
+
+class DissolveEffectApp : public ConnectionTracker
+{
+public:
+
+  /**
+   * Constructor
+   * @param application class, stored as reference
+   */
+  DissolveEffectApp( Application& application );
+
+  ~DissolveEffectApp();
+
+private:
+
+  /**
+   * This method gets called once the main loop of application is up and running
+   */
+  void OnInit( Application& application );
+  /**
+   * PanGesture callback. This method gets called when the pan gesture is detected.
+   * @param[in] actor The actor receiving the pan gesture.
+   * @param[in] gesture The detected pan gesture.
+   */
+  void OnPanGesture( Actor actor, PanGesture gesture );
+
+  /**
+   * Set up the animations for transition
+   * @param[in] position The point ( locates within rectange {(0,0),(0,1),(1,0),(1,1)} ) passing through the central line of the dissolve effect
+   * @param[in] displacement The direction of the central line of the dissolve effect
+   */
+  void StartTransition(Vector2 position, Vector2 displacement);
+  /**
+   * Callback function of effect-switch button
+   * Change the precision of the effect shader when the effect button is clicked
+   * @param[in] button The handle of the clicked button
+   */
+  bool OnEffectButtonClicked( Toolkit::Button button );
+  /**
+   * Callback function of slideshow button
+   * Start or stop the automatical image display when the slideshow button is clicked
+   * @param[in] button The handle of the clicked button
+   */
+  bool OnSildeshowButtonClicked( Toolkit::Button button );
+  /**
+   * Callback function of cube transition completed signal
+   * @param[in] effect The cube effect used for the transition
+   * @param[in] imageActor The target imageActor of the completed transition
+   */
+  void OnTransitionCompleted(Animation& source);
+  /**
+   * Callback function of timer tick
+   * The timer is used to count the image display duration after cube transition in slideshow,
+   */
+  bool OnTimerTick();
+
+  /**
+   * Main key event handler
+   */
+  void OnKeyEvent(const KeyEvent& event);
+
+private:
+  Application&                    mApplication;
+  Toolkit::View                   mView;
+  Toolkit::ToolBar                mToolBar;
+  Layer                           mContent;
+  Toolkit::TextView               mTitleActor;
+
+  ImageActor                      mCurrentImage;
+  ImageActor                      mNextImage;
+  unsigned int                    mIndex;
+  Constraint                      mSizeConstraint;
+
+  Toolkit::DissolveEffect         mCurrentImageEffect;
+  Toolkit::DissolveEffect         mNextImageEffect;
+  bool                            mUseHighPrecision;
+  Animation                       mAnimation;
+
+  PanGestureDetector              mPanGestureDetector;
+  bool                            mIsTransiting;
+
+  bool                            mSlideshow;
+  Timer                           mViewTimer;
+  bool                            mTimerReady;
+  unsigned int                    mCentralLineIndex;
+
+  Image                           mIconPlay;
+  Image                           mIconStop;
+  Toolkit::PushButton             mPlayStopButton;
+};
+
+DissolveEffectApp::DissolveEffectApp( Application& application )
+: mApplication( application ),
+  mIndex( 0 ),
+  mUseHighPrecision(true),
+  mIsTransiting( false ),
+  mSlideshow( false ),
+  mTimerReady( false ),
+  mCentralLineIndex( 0 )
+{
+  mApplication.InitSignal().Connect( this, &DissolveEffectApp::OnInit );
+}
+
+DissolveEffectApp::~DissolveEffectApp()
+{
+  //Nothing to do
+}
+
+void DissolveEffectApp::OnInit( Application& application )
+{
+  Stage::GetCurrent().KeyEventSignal().Connect(this, &DissolveEffectApp::OnKeyEvent);
+
+  // Creates a default view with a default tool bar, the view is added to the stage.
+  mContent = DemoHelper::CreateView( application, mView,mToolBar, "", TOOLBAR_IMAGE, "" );
+
+  // Add an effect-changing button on the right of the tool bar.
+  Image imageChangeEffect = Image::New( CHANGE_EFFECT_IMAGE );
+  Toolkit::PushButton effectChangeButton = Toolkit::PushButton::New();
+  effectChangeButton.SetBackgroundImage(imageChangeEffect);
+  effectChangeButton.ClickedSignal().Connect( this, &DissolveEffectApp::OnEffectButtonClicked );
+  mToolBar.AddControl( effectChangeButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING );
+
+  // Add title to the tool bar.
+  mTitleActor = Toolkit::TextView::New();
+  mTitleActor.SetText( APPLICATION_TITLE_HIGHP );
+  mTitleActor.SetStyleToCurrentText(DemoHelper::GetDefaultTextStyle());
+  mToolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Toolkit::Alignment::HorizontalCenter );
+
+  // Add an slide-show button on the right of the title
+  mIconPlay = Image::New( PLAY_ICON );
+  mIconStop = Image::New( STOP_ICON );
+  mPlayStopButton = Toolkit::PushButton::New();
+  mPlayStopButton.SetBackgroundImage( mIconPlay );
+  mPlayStopButton.ClickedSignal().Connect( this, &DissolveEffectApp::OnSildeshowButtonClicked );
+  mToolBar.AddControl( mPlayStopButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalCenter, DemoHelper::DEFAULT_PLAY_PADDING );
+
+  // use pan gesture to detect the cursor or finger movement
+  mPanGestureDetector = PanGestureDetector::New();
+  mPanGestureDetector.DetectedSignal().Connect( this, &DissolveEffectApp::OnPanGesture );
+
+  // create the dissolve effect object
+  mCurrentImageEffect = Toolkit::DissolveEffect::New(mUseHighPrecision);
+  mNextImageEffect = Toolkit::DissolveEffect::New(mUseHighPrecision);
+
+
+  mViewTimer = Timer::New( VIEWINGTIME );
+  mViewTimer.TickSignal().Connect( this, &DissolveEffectApp::OnTimerTick );
+  mTimerReady = true;
+
+  mSizeConstraint= Constraint::New<Vector3>( Actor::SCALE, LocalSource( Actor::SIZE ), ParentSource( Actor::SIZE ), ScaleToFitKeepAspectRatioConstraint() );
+
+  // show the first image
+  mCurrentImage = ImageActor::New( Image::New( IMAGES[mIndex] ) );
+  mCurrentImage.SetPositionInheritanceMode(USE_PARENT_POSITION_PLUS_LOCAL_POSITION);
+  mCurrentImage.ApplyConstraint( mSizeConstraint );
+  mContent.Add(mCurrentImage);
+  mPanGestureDetector.Attach( mCurrentImage );
+}
+
+// signal handler, called when the pan gesture is detected
+void DissolveEffectApp::OnPanGesture( Actor actor, PanGesture gesture )
+{
+  // does not response when the animation has not finished
+  if( mIsTransiting || mSlideshow )
+  {
+    return;
+  }
+
+  if( gesture.state == Gesture::Continuing )
+  {
+    if( gesture.displacement.x < 0)
+    {
+      mIndex = (mIndex + 1)%NUM_IMAGES;
+    }
+    else
+    {
+      mIndex = (mIndex + NUM_IMAGES -1)%NUM_IMAGES;
+    }
+
+    Image image = Image::New( IMAGES[ mIndex ] );
+    mNextImage = ImageActor::New( image );
+    mNextImage.SetPositionInheritanceMode(USE_PARENT_POSITION_PLUS_LOCAL_POSITION);
+    mNextImage.ApplyConstraint( mSizeConstraint );
+    mNextImage.SetZ(INITIAL_DEPTH);
+    mContent.Add(mNextImage);
+    Vector2 size = Vector2( mCurrentImage.GetCurrentSize() );
+    StartTransition( gesture.position / size, gesture.displacement * Vector2(1.0, size.x/size.y));
+  }
+}
+
+void DissolveEffectApp::StartTransition(Vector2 position, Vector2 displacement)
+{
+  mAnimation = Animation::New(TRANSITION_DURATION);
+
+  mCurrentImageEffect.SetCentralLine(position,displacement);
+  mCurrentImageEffect.SetDistortion(0.0f);
+  mCurrentImage.SetShaderEffect(mCurrentImageEffect);
+  mAnimation.AnimateTo( Property(mCurrentImageEffect, mCurrentImageEffect.GetDistortionPropertyName()), 1.0f, AlphaFunctions::Linear );
+
+  mNextImage.SetOpacity(0.0f);
+  mAnimation.OpacityTo( mNextImage, 1.0, AlphaFunctions::Linear );
+
+  if(mUseHighPrecision)
+  {
+    mNextImageEffect.SetCentralLine(position,-displacement);
+    mNextImageEffect.SetDistortion(1.0f);
+    mNextImage.SetShaderEffect(mNextImageEffect);
+    mAnimation.AnimateTo( Property(mNextImageEffect, mNextImageEffect.GetDistortionPropertyName()), 0.0f, AlphaFunctions::Linear );
+  }
+  else
+  {
+    mAnimation.MoveTo(mNextImage, Vector3(0.0f, 0.0f, 0.0f), AlphaFunctions::Linear);
+  }
+
+  mAnimation.FinishedSignal().Connect( this, &DissolveEffectApp::OnTransitionCompleted );
+  mAnimation.Play();
+  mIsTransiting = true;
+}
+
+void DissolveEffectApp::OnKeyEvent(const KeyEvent& event)
+{
+  if(event.state == KeyEvent::Down)
+  {
+    if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+    {
+      mApplication.Quit();
+    }
+  }
+}
+
+bool DissolveEffectApp::OnEffectButtonClicked( Toolkit::Button button )
+{
+  mUseHighPrecision = !mUseHighPrecision;
+  mCurrentImageEffect = Toolkit::DissolveEffect::New(mUseHighPrecision);
+  if(mUseHighPrecision)
+  {
+    mTitleActor.SetText( APPLICATION_TITLE_HIGHP );
+  }
+  else
+  {
+    mTitleActor.SetText( APPLICATION_TITLE_MEDIUMP );
+  }
+  mTitleActor.SetStyleToCurrentText(DemoHelper::GetDefaultTextStyle());
+
+  return true;
+}
+
+bool DissolveEffectApp::OnSildeshowButtonClicked( Toolkit::Button button )
+{
+  mSlideshow = !mSlideshow;
+  if( mSlideshow )
+  {
+    mPlayStopButton.SetBackgroundImage( mIconStop );
+    mPanGestureDetector.Detach( mContent );
+    mViewTimer.Start();
+    mTimerReady = false;
+  }
+  else
+  {
+    mPlayStopButton.SetBackgroundImage( mIconPlay );
+    mTimerReady = true;
+    mPanGestureDetector.Attach( mContent );
+  }
+  return true;
+}
+
+void DissolveEffectApp::OnTransitionCompleted( Animation& source )
+{
+  mCurrentImage.RemoveShaderEffect();
+  mNextImage.RemoveShaderEffect();
+  mContent.Remove(mCurrentImage);
+  mPanGestureDetector.Detach( mCurrentImage );
+  mCurrentImage = mNextImage;
+  mPanGestureDetector.Attach( mCurrentImage );
+  mIsTransiting = false;
+
+  if( mSlideshow)
+  {
+    mViewTimer.Start();
+    mTimerReady = false;
+  }
+}
+
+bool DissolveEffectApp::OnTimerTick()
+{
+  mTimerReady = true;
+  if(mSlideshow)
+  {
+    mIndex = (mIndex + 1)%NUM_IMAGES;
+    Image image = Image::New( IMAGES[ mIndex ] );
+    mNextImage = ImageActor::New( image );
+    mNextImage.SetPositionInheritanceMode(USE_PARENT_POSITION_PLUS_LOCAL_POSITION);
+    mNextImage.ApplyConstraint( mSizeConstraint );
+    mNextImage.SetZ(INITIAL_DEPTH);
+    mContent.Add(mNextImage);
+    switch(mCentralLineIndex%4)
+    {
+      case 0:
+      {
+        StartTransition(Vector2(1.0f,0.5f), Vector2(-1.0f, 0.0f));
+        break;
+      }
+      case 1:
+      {
+        StartTransition(Vector2(0.5f,0.0f), Vector2(0.0f, 1.0f));
+        break;
+      }
+      case 2:
+      {
+        StartTransition(Vector2(0.0f,0.5f), Vector2(1.0f, 0.0f));
+        break;
+      }
+      default:
+      {
+        StartTransition(Vector2(0.5f,1.0f), Vector2(0.0f, -1.0f));
+        break;
+      }
+
+    }
+    mCentralLineIndex++;
+  }
+  return false;   //return false to stop the timer
+}
+
+// Entry point for Linux & SLP applications
+int main( int argc, char **argv )
+{
+  Application application = Application::New( &argc, &argv );
+  DissolveEffectApp test( application );
+  application.MainLoop();
+
+  return 0;
+}
diff --git a/examples/shadows/shadow-bone-lighting-example.cpp b/examples/shadows/shadow-bone-lighting-example.cpp
new file mode 100644 (file)
index 0000000..520abbb
--- /dev/null
@@ -0,0 +1,537 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// INTERNAL INCLUDES
+#include "../shared/view.h"
+
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+using std::string;
+using namespace DemoHelper;
+
+namespace
+{
+const char* gModelFile = DALI_MODEL_DIR "AlbumCute.dae";
+const char* gBinaryModelFile = DALI_MODEL_DIR "AlbumCute.dali-bin";
+
+const char* BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-default.png" );
+const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
+
+const char* APPLICATION_TITLE_PAN_LIGHT( "Lighting: Pan Light" );
+const char* APPLICATION_TITLE_PAN_OBJECT( "Lighting: Pan Object" );
+const char* APPLICATION_TITLE_PAN_SCENE( "Lighting: Pan Scene" );
+const char* APPLICATION_TITLE_ROTATE_SCENE( "Lighting: Rotate Scene" );
+const char* CHANGE_EFFECT_IMAGE( DALI_IMAGE_DIR "icon_mode.png" );
+const char* RESET_ICON( DALI_IMAGE_DIR "icon_stop_small.png" );
+
+const Quaternion JAUNTY_ROTATION(Math::PI/5.0f, Math::PI/5.0f, 0.0f); // Euler angles
+const float MIN_PINCH_SCALE( 0.3f );
+const float MAX_PINCH_SCALE( 2.05f );
+
+const float R3_2(0.8660254);
+const Vector3 TOP_POINT(  0.0f, -1.0f,  0.0f);
+const Vector3 LEFT_POINT( -R3_2, 0.5f,  0.0f);
+const Vector3 RIGHT_POINT( R3_2, 0.5f,  0.0f);
+const Vector3 FRONT_POINT( 0.0f, 0.0f, 20.0f);
+
+const Vector2 DEFAULT_STAGE_SIZE( 480.0f, 800.0f );
+
+}
+
+/**
+ * This example shows a fixed point light onto an animating model
+ * casting a shadow onto a wall. The whole scene can be rotated.
+ */
+
+class TestApp : public ConnectionTracker
+{
+public:
+
+  /**
+   * Constructor
+   * @param application class, stored as reference
+   */
+  TestApp(Application &app)
+  : mApp(app),
+    mPaused(false),
+    mTranslation(Vector3::ZERO),
+    mLongitudinal(15.0f),
+    mAxisTilt(30.0f),
+    mLightLongitudinal(0.0f),
+    mLightAxisTilt(0.0f),
+    mObjectLongitudinal(0.0f),
+    mObjectAxisTilt(0.0f),
+    mPinchScale(0.5f),
+    mScaleAtPinchStart(0.5f),
+    mPanState(PAN_SCENE)
+  {
+    app.InitSignal().Connect(this, &TestApp::Create);
+    app.TerminateSignal().Connect(this, &TestApp::Terminate);
+  }
+
+  ~TestApp()
+  {
+    // Nothing to do here; All the members of this class get deleted automatically and they delete their children
+  }
+
+public:
+  struct PositionInFrontOf
+  {
+    PositionInFrontOf()
+    {
+    }
+
+    Vector3 operator()( const Vector3& current, const PropertyInput& property )
+    {
+      Vector3 position = property.GetVector3();
+      position.z += 1.0f;
+      return position;
+    }
+  };
+
+  struct QuaternionEqualToConstraint
+  {
+    QuaternionEqualToConstraint()
+    {
+    }
+
+    Quaternion operator()( const Quaternion& current, const PropertyInput& property )
+    {
+      return property.GetQuaternion();
+    }
+  };
+
+
+  /**
+   * This method gets called once the main loop of application is up and running
+   */
+  void Create(Application& app)
+  {
+    srand(0); // Want repeatable path
+
+    Stage::GetCurrent().KeyEventSignal().Connect(this, &TestApp::OnKeyEvent);
+
+    mModel = Model::New(gBinaryModelFile);  // trigger model load
+    mModel.LoadingFinishedSignal().Connect(this, &TestApp::BinaryModelLoaded);
+
+    CreateToolbarAndView(app);
+    CreateShadowViewAndLights();
+  }
+
+  void CreateToolbarAndView(Application& app)
+  {
+    // Creates a default view with a default tool bar.
+    // The view is added to the stage.
+    Toolkit::ToolBar toolBar;
+    mContents = DemoHelper::CreateView( app,
+                                        mView,
+                                        toolBar,
+                                        BACKGROUND_IMAGE,
+                                        TOOLBAR_IMAGE,
+                                        "" );
+
+    // Add an effect-changing button on the right of the tool bar.
+    Image imageChangeEffect = Image::New( CHANGE_EFFECT_IMAGE );
+    Toolkit::PushButton effectChangeButton = Toolkit::PushButton::New();
+    effectChangeButton.SetBackgroundImage(imageChangeEffect);
+    effectChangeButton.ClickedSignal().Connect( this, &TestApp::OnEffectButtonClicked );
+    toolBar.AddControl( effectChangeButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING );
+
+    // Add title to the tool bar.
+    mTitleActor = Toolkit::TextView::New();
+    toolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Toolkit::Alignment::HorizontalCenter );
+
+    // Set Title text
+    mTitleActor.SetText( APPLICATION_TITLE_PAN_SCENE );
+    mTitleActor.SetSize( Font::New().MeasureText( APPLICATION_TITLE_PAN_SCENE ) );
+    mTitleActor.SetStyleToCurrentText( DemoHelper::GetDefaultTextStyle() );
+
+    //Add a reset button
+    Image resetImage = Image::New( RESET_ICON );
+    Toolkit::PushButton resetButton = Toolkit::PushButton::New();
+    resetButton.SetBackgroundImage( resetImage );
+    resetButton.ClickedSignal().Connect( this, &TestApp::OnResetPressed );
+    toolBar.AddControl( resetButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalCenter, DemoHelper::DEFAULT_PLAY_PADDING );
+
+    // Setup
+    mView.SetPosition(Vector3(0.0f, 0.0f, -50));
+
+    mContents.SetPosition(mTranslation);
+    mContents.SetRotation(CalculateWorldRotation(Radian(mLongitudinal), Radian(mAxisTilt)));
+    mContents.SetScale(mPinchScale, mPinchScale, mPinchScale);
+
+    mPanGestureDetector = PanGestureDetector::New();
+    mPanGestureDetector.Attach( mView );
+    mPanGestureDetector.DetectedSignal().Connect(this, &TestApp::OnPan);
+
+    mPinchGestureDetector = PinchGestureDetector::New();
+    mPinchGestureDetector.Attach( mView );
+    mPinchGestureDetector.DetectedSignal().Connect(this, &TestApp::OnPinch);
+
+    mTapGestureDetector = TapGestureDetector::New(1, 1);
+    mTapGestureDetector.Attach( mView );
+    mTapGestureDetector.DetectedSignal().Connect(this, &TestApp::OnTap);
+  }
+
+  /**
+   * This method gets called once the model is loaded by the resource manager
+   */
+  void BinaryModelLoaded(Model model)
+  {
+    if( model.GetLoadingState() == ResourceLoadingSucceeded )
+    {
+      std::cout << "Succeeded loading binary model" << std::endl;
+
+      ModelReady();
+    }
+    else
+    {
+      std::cout << "Failed loading binary model" << std::endl;
+
+      mModel = Model::New(gModelFile);
+      mModel.LoadingFinishedSignal().Connect(this, &TestApp::ModelLoaded);
+    }
+  }
+
+  void ModelLoaded(Model model)
+  {
+    if( model.GetLoadingState() == ResourceLoadingSucceeded )
+    {
+      std::cout << "Succeeded loading collada model" << std::endl;
+
+      model.Save(gBinaryModelFile);
+      ModelReady();
+    }
+    else
+    {
+      std::cout << "Failed loading collada model" << std::endl;
+
+      mApp.Quit();
+    }
+  }
+
+  void CreateShadowViewAndLights()
+  {
+    mShadowView = Toolkit::ShadowView::New();
+    mShadowView.SetName("Container");
+    mShadowView.SetParentOrigin(ParentOrigin::CENTER);
+    mShadowView.SetAnchorPoint(AnchorPoint::CENTER);
+    mShadowView.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+    mShadowView.SetPointLightFieldOfView( Math::PI / 2.0f);
+    mContents.Add(mShadowView);
+
+    Image brickWall = Image::New(DALI_IMAGE_DIR "brick-wall.jpg");
+    mShadowPlaneBg = ImageActor::New(brickWall);
+    mShadowPlaneBg.SetParentOrigin(ParentOrigin::CENTER);
+    mShadowPlaneBg.SetAnchorPoint(AnchorPoint::CENTER);
+    mShadowPlaneBg.SetName("Plane");
+    mShadowPlaneBg.SetSize(1000.0f, 1000.0f);
+    mContents.Add(mShadowPlaneBg);
+    mShadowPlaneBg.SetPosition(Vector3(50.0f, 50.0f, -200.0f));
+
+    mShadowView.SetShadowPlane(mShadowPlaneBg);
+    mShadowView.Activate();
+
+    mLightAnchor = Actor::New();
+    mLightAnchor.SetParentOrigin(ParentOrigin::CENTER);
+    mLightAnchor.SetAnchorPoint(AnchorPoint::CENTER);
+    mLightAnchor.SetRotation(CalculateWorldRotation(Radian(mLightLongitudinal), Radian(mLightAxisTilt)));
+
+    // Work out a scaling factor as the initial light position was calculated for desktop
+    // Need to scale light position as model size is based on stage size (i.e. much bigger on device)
+    Vector2 stageSize( Stage::GetCurrent().GetSize() );
+    float scaleFactor = stageSize.x / DEFAULT_STAGE_SIZE.x;
+
+    mCastingLight = Actor::New();
+    mCastingLight.SetParentOrigin(ParentOrigin::CENTER);
+    mCastingLight.SetAnchorPoint(AnchorPoint::CENTER);
+    mCastingLight.SetPosition( Vector3( 0.0f, 0.0f, 800.0f ) * scaleFactor );
+
+    TextActor text = TextActor::New("Light", Font::New(FontParameters("Times New Roman", "Book", PointSize(20.0f))));
+    text.SetColor(Color::BLUE);
+
+    mCastingLight.Add(text);
+    mLightAnchor.Add(mCastingLight);
+    mShadowPlaneBg.Add(mLightAnchor);
+
+    text.SetParentOrigin(ParentOrigin::CENTER);
+    mShadowView.SetPointLight(mCastingLight);
+  }
+
+  void ModelReady()
+  {
+    mModelActor = ModelActorFactory::BuildActorTree(mModel, "");  // Gets root actor
+
+    if (mModelActor)
+    {
+      Vector2 stageSize(Stage::GetCurrent().GetSize());
+
+      mModelActor.SetSize(250.0f, 250.0f);
+      mModelActor.SetPosition(0.0f, 0.0f, 130.0f);
+
+      //Create a Key light
+      Light keylight = Light::New("KeyLight");
+      keylight.SetFallOff(Vector2(10000.0f, 10000.0f));
+      //keylight.SetSpecularColor(Vector3::ZERO);
+      mKeyLightActor = LightActor::New();
+      mKeyLightActor.SetParentOrigin(ParentOrigin::CENTER);
+      mKeyLightActor.SetName(keylight.GetName());
+
+      //Add all the actors to the stage
+      mCastingLight.Add(mKeyLightActor);
+      mKeyLightActor.SetLight(keylight);
+
+      mShadowView.Add(mModelActor);
+
+
+      if (mModel.NumberOfAnimations())
+      {
+        mModelAnimation = ModelActorFactory::BuildAnimation(mModel, mModelActor, 0);
+        mModelAnimation.SetDuration(4.0f);
+        mModelAnimation.SetLooping(true);
+        mModelAnimation.Play();
+      }
+
+      //StartAnimation();
+    }
+  }
+
+  Quaternion CalculateWorldRotation(Radian longitude, Radian axisTilt )
+  {
+    Quaternion q(longitude, Vector3::YAXIS);
+    Quaternion p(axisTilt, Vector3::XAXIS);
+    return p*q;
+  }
+
+  void OnTap(Dali::Actor actor, TapGesture gesture)
+  {
+    if( ! mPaused )
+    {
+      //mAnimation.Pause();
+      mModelAnimation.Pause();
+      mPaused = true;
+    }
+    else
+    {
+      //mAnimation.Play();
+      mModelAnimation.Play();
+      mPaused = false;
+    }
+  }
+
+  void OnPan(Actor actor, PanGesture gesture)
+  {
+    switch (gesture.state)
+    {
+      case Gesture::Continuing:
+      {
+        switch(mPanState)
+        {
+          case PAN_LIGHT:
+          {
+            mLightLongitudinal += gesture.displacement.x/4.0f;
+            mLightAxisTilt -= gesture.displacement.y/6.0f;
+            mLightAxisTilt = Clamp<float>(mLightAxisTilt, -90.0f, 90.0f);
+            mLightAnchor.SetRotation(CalculateWorldRotation(Radian(mLightLongitudinal), Radian(mLightAxisTilt)));
+            break;
+          }
+
+          case PAN_SCENE:
+          {
+            mTranslation += Vector3(gesture.displacement.x, gesture.displacement.y, 0.f);
+            mContents.SetPosition(mTranslation);
+            break;
+          }
+
+          case ROTATE_SCENE:
+          {
+            mLongitudinal += gesture.displacement.x/4.0f;
+            mAxisTilt -= gesture.displacement.y/6.0f;
+            mAxisTilt = Clamp<float>(mAxisTilt, -90.0f, 90.0f);
+            mContents.SetRotation(CalculateWorldRotation(Radian(mLongitudinal), Radian(mAxisTilt)));
+            break;
+          }
+
+          case PAN_OBJECT:
+          {
+            mObjectLongitudinal += gesture.displacement.x/4.0f;
+            mObjectAxisTilt -= gesture.displacement.y/6.0f;
+            mObjectAxisTilt = Clamp<float>(mObjectAxisTilt, -90.0f, 90.0f);
+            mModelActor.SetRotation(CalculateWorldRotation(Radian(mObjectLongitudinal), Radian(mObjectAxisTilt)));
+            break;
+          }
+        }
+      }
+      break;
+
+      case Gesture::Finished:
+        // Start animation at last known speed
+        break;
+
+      default:
+        break;
+    }
+  }
+
+  void OnPinch(Actor actor, PinchGesture gesture)
+  {
+    if (gesture.state == Gesture::Started)
+    {
+      mScaleAtPinchStart = mContents.GetCurrentScale().x;
+    }
+    mPinchScale = Clamp(mScaleAtPinchStart * gesture.scale, MIN_PINCH_SCALE, MAX_PINCH_SCALE);
+
+    mContents.SetScale(mPinchScale, mPinchScale, mPinchScale);
+  }
+
+  void Terminate(Application& app)
+  {
+    if( mModelActor )
+    {
+      Stage::GetCurrent().Remove(mModelActor);
+    }
+    if( mKeyLightActor )
+    {
+      Stage::GetCurrent().Remove(mKeyLightActor);
+    }
+    if( mView )
+    {
+      Stage::GetCurrent().Remove(mView);
+    }
+  }
+
+  void OnKeyEvent(const KeyEvent& event)
+  {
+    if(event.state == KeyEvent::Down)
+    {
+      if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+      {
+        mApp.Quit();
+      }
+    }
+  }
+
+  bool OnEffectButtonClicked( Toolkit::Button button )
+  {
+    switch(mPanState)
+    {
+      case PAN_SCENE:
+        mPanState = ROTATE_SCENE;
+        mTitleActor.SetText( APPLICATION_TITLE_ROTATE_SCENE );
+        mTitleActor.SetSize( Font::New().MeasureText( APPLICATION_TITLE_ROTATE_SCENE ) );
+        break;
+      case ROTATE_SCENE:
+        mPanState = PAN_LIGHT;
+        mTitleActor.SetText( APPLICATION_TITLE_PAN_LIGHT );
+        mTitleActor.SetSize( Font::New().MeasureText( APPLICATION_TITLE_PAN_LIGHT ) );
+        break;
+      case PAN_LIGHT:
+        mPanState = PAN_OBJECT;
+        mTitleActor.SetText( APPLICATION_TITLE_PAN_OBJECT );
+        mTitleActor.SetSize( Font::New().MeasureText( APPLICATION_TITLE_PAN_OBJECT ) );
+        break;
+      case PAN_OBJECT:
+        mPanState = PAN_SCENE;
+        mTitleActor.SetText( APPLICATION_TITLE_PAN_SCENE );
+        mTitleActor.SetSize( Font::New().MeasureText( APPLICATION_TITLE_PAN_SCENE ) );
+        break;
+      default:
+        break;
+    }
+
+    mTitleActor.SetStyleToCurrentText(DemoHelper::GetDefaultTextStyle());
+
+    return true;
+  }
+
+  bool OnResetPressed( Toolkit::Button button )
+  {
+    // Reset translation
+    mTranslation = Vector3::ZERO;
+    mContents.SetPosition(mTranslation);
+    // Align scene so that light anchor orientation is Z Axis
+    mAxisTilt = -mLightAxisTilt;
+    mLongitudinal = -mLightLongitudinal;
+    mContents.SetRotation(CalculateWorldRotation(Radian(mLongitudinal), Radian(mAxisTilt)));
+
+    return true;
+  }
+
+private:
+  Application&              mApp;
+  Toolkit::View             mView;
+  Layer                     mContents;
+  Model                     mModel;
+  Actor                     mModelActor;
+  LightActor                mKeyLightActor;
+  Animation                 mAnimation;
+  Animation                 mModelAnimation;
+  bool                      mPaused;
+  Toolkit::ShadowView       mShadowView;
+  ImageActor                mShadowPlaneBg;
+  ImageActor                mShadowPlane;
+  Actor                     mCastingLight;
+  Actor                     mLightAnchor;
+
+  PanGestureDetector        mPanGestureDetector;
+  PinchGestureDetector      mPinchGestureDetector;
+  TapGestureDetector        mTapGestureDetector;
+  Vector3                   mTranslation;
+  Degree                    mLongitudinal;
+  Degree                    mAxisTilt;
+  Degree                    mLightLongitudinal;
+  Degree                    mLightAxisTilt;
+  Degree                    mObjectLongitudinal;
+  Degree                    mObjectAxisTilt;
+  float                     mPinchScale;
+  float                     mScaleAtPinchStart;
+
+  Toolkit::TextView         mTitleActor;
+
+  enum PanState
+  {
+    PAN_SCENE,
+    ROTATE_SCENE,
+    PAN_LIGHT,
+    PAN_OBJECT
+  };
+
+  PanState                  mPanState;
+};
+
+/*****************************************************************************/
+
+static void
+RunTest(Application& app)
+{
+  TestApp theApp(app);
+  app.MainLoop();
+}
+
+/*****************************************************************************/
+
+int
+main(int argc, char **argv)
+{
+  Application app = Application::New(&argc, &argv);
+
+  RunTest(app);
+
+  return 0;
+}
diff --git a/examples/shared/view.h b/examples/shared/view.h
new file mode 100644 (file)
index 0000000..ff8d6a1
--- /dev/null
@@ -0,0 +1,175 @@
+#ifndef __DALI_DEMO_HELPER_VIEW_H__
+#define __DALI_DEMO_HELPER_VIEW_H__
+
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <dali-toolkit/dali-toolkit.h>
+
+namespace DemoHelper
+{
+
+/**
+ * Provide a style for the view and its tool bar.
+ */
+struct ViewStyle
+{
+  ViewStyle( float toolBarButtonPercentage, float toolBarTitlePercentage, float dpi, float toolBarHeight, float toolBarPadding )
+  : mToolBarButtonPercentage( toolBarButtonPercentage ),
+    mToolBarTitlePercentage( toolBarTitlePercentage ),
+    mDpi( dpi ),
+    mToolBarHeight( toolBarHeight ),
+    mToolBarPadding( toolBarPadding )
+  {}
+
+  float mToolBarButtonPercentage; ///< The tool bar button width is a percentage of the tool bar width.
+  float mToolBarTitlePercentage;  ///< The tool bar title width is a percentage of the tool bar width.
+  float mDpi;                     ///< This style is indented for the given dpi.
+  float mToolBarHeight;           ///< The tool bar height for the given dpi above.
+  float mToolBarPadding;          ///< The tool bar padding between controls for the given dpi above.
+};
+
+const ViewStyle DEFAULT_VIEW_STYLE( 0.1f, 0.7f, 315.f, 80.f, 4.f );
+
+const char*                   DEFAULT_TEXT_STYLE_FONT_FAMILY("HelveticaNue");
+const char*                   DEFAULT_TEXT_STYLE_FONT_STYLE("Regular");
+const Dali::PointSize         DEFAULT_TEXT_STYLE_POINT_SIZE( 8.0f );
+const Dali::TextStyle::Weight DEFAULT_TEXT_STYLE_WEIGHT(Dali::TextStyle::EXTRALIGHT);
+const Dali::Vector4           DEFAULT_TEXT_STYLE_COLOR(0.0f, 0.0f, 0.0f, 1.0f);
+
+const Dali::Toolkit::Alignment::Padding DEFAULT_PLAY_PADDING(12.0f, 12.0f, 12.0f, 12.0f);
+const Dali::Toolkit::Alignment::Padding DEFAULT_MODE_SWITCH_PADDING(8.0f, 8.0f, 8.0f, 8.0f);
+
+static Dali::TextStyle defaultTextStyle;
+static bool textStyleSet=false;
+
+Dali::TextStyle& GetDefaultTextStyle()
+{
+  if(!textStyleSet)
+  {
+    defaultTextStyle.SetFontName(DEFAULT_TEXT_STYLE_FONT_FAMILY);
+    defaultTextStyle.SetFontStyle(DEFAULT_TEXT_STYLE_FONT_STYLE);
+    defaultTextStyle.SetFontPointSize(DEFAULT_TEXT_STYLE_POINT_SIZE);
+    defaultTextStyle.SetWeight(DEFAULT_TEXT_STYLE_WEIGHT);
+    defaultTextStyle.SetTextColor(DEFAULT_TEXT_STYLE_COLOR);
+    textStyleSet = true;
+  }
+
+  return defaultTextStyle;
+}
+
+Dali::Layer CreateView( Dali::Application& application,
+                        Dali::Toolkit::View& view,
+                        Dali::Toolkit::ToolBar& toolBar,
+                        const std::string& backgroundImagePath,
+                        const std::string& toolbarImagePath,
+                        const std::string& title,
+                        const ViewStyle& style,
+                        const Dali::TextStyle& textStyle )
+{
+  Dali::Stage stage = Dali::Stage::GetCurrent();
+
+  // Create default View.
+  view = Dali::Toolkit::View::New();
+
+  // Add the view to the stage before setting the background.
+  stage.Add( view );
+
+  // Set background image.
+  if ( ! backgroundImagePath.empty() )
+  {
+    Dali::Image backgroundImage = Dali::Image::New( backgroundImagePath );
+    Dali::ImageActor backgroundImageActor = Dali::ImageActor::New( backgroundImage );
+    view.SetBackground( backgroundImageActor );
+  }
+
+  // Connects the orientation signal with the View::OrientationChanged method.
+  application.GetOrientation().ChangedSignal().Connect( &view, &Dali::Toolkit::View::OrientationChanged );
+
+  // Create default ToolBar
+
+  Dali::Vector2 dpi = stage.GetDpi();
+
+  // Create toolbar layer.
+  Dali::Layer toolBarLayer = Dali::Layer::New();
+  toolBarLayer.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
+  toolBarLayer.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
+  toolBarLayer.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::SourceWidthFixedHeight( style.mToolBarHeight * dpi.y / style.mDpi ) ) );
+  toolBarLayer.SetSize( 0.0f, style.mToolBarHeight * dpi.y / style.mDpi );
+
+  // Add tool bar layer to the view.
+  view.AddContentLayer( toolBarLayer );
+
+  // Raise tool bar layer to the top.
+  toolBarLayer.RaiseToTop();
+
+  // Tool bar
+  Dali::Image image = Dali::Image::New( toolbarImagePath );
+  Dali::ImageActor toolBarBackground = Dali::ImageActor::New( image );
+  toolBar = Dali::Toolkit::ToolBar::New();
+  toolBar.SetBackground( toolBarBackground );
+  toolBar.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
+  toolBar.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
+  toolBar.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::EqualToConstraint() ) );
+  toolBar.SetSize( 0.0f, style.mToolBarHeight * dpi.y / style.mDpi );
+  toolBarBackground.SetSortModifier(1.0f);
+
+  // Add the tool bar to the too bar layer.
+  toolBarLayer.Add( toolBar );
+
+  Dali::Font font = Dali::Font::New();
+
+  // Tool bar text.
+  if( !title.empty() )
+  {
+    Dali::Toolkit::TextView titleActor = Dali::Toolkit::TextView::New();
+    titleActor.SetName( "ToolbarTitle" );
+    titleActor.SetText( title );
+    titleActor.SetSize( font.MeasureText( title ) );
+    titleActor.SetStyleToCurrentText(textStyle);
+
+    // Add title to the tool bar.
+    const float padding( style.mToolBarPadding * dpi.x / style.mDpi );
+    toolBar.AddControl( titleActor, style.mToolBarTitlePercentage, Dali::Toolkit::Alignment::HorizontalCenter, Dali::Toolkit::Alignment::Padding( padding, padding, padding, padding ) );
+  }
+
+  // Create a content layer.
+  Dali::Layer contentLayer = Dali::Layer::New();
+  contentLayer.SetAnchorPoint( Dali::AnchorPoint::CENTER );
+  contentLayer.SetParentOrigin( Dali::ParentOrigin::CENTER );
+  contentLayer.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::EqualToConstraint() ) );
+  view.AddContentLayer( contentLayer );
+  contentLayer.LowerBelow( toolBarLayer );
+
+  return contentLayer;
+}
+
+Dali::Layer CreateView( Dali::Application& application,
+                        Dali::Toolkit::View& view,
+                        Dali::Toolkit::ToolBar& toolBar,
+                        const std::string& backgroundImagePath,
+                        const std::string& toolbarImagePath,
+                        const std::string& title,
+                        const ViewStyle& style  = DEFAULT_VIEW_STYLE )
+{
+  return CreateView( application, view, toolBar, backgroundImagePath, toolbarImagePath, title, style,
+                     GetDefaultTextStyle() );
+}
+
+
+} // DemoHelper
+
+#endif // __DALI_DEMO_HELPER_VIEW_H__
diff --git a/examples/transition/cube-transition-effect-example.cpp b/examples/transition/cube-transition-effect-example.cpp
new file mode 100644 (file)
index 0000000..39e51fa
--- /dev/null
@@ -0,0 +1,413 @@
+//
+// Copyright (c) 2014 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// EXTERNAL INCLUDES
+#include <math.h>
+
+// INTERNAL INCLUDES
+#include "../shared/view.h"
+
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+
+using namespace Dali;
+
+// LOCAL STUFF
+namespace
+{
+
+const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
+const char* APPLICATION_TITLE_WAVE( "Cube Transition: Wave" );
+const char* APPLICATION_TITLE_CROSS( "Cube Transition: Cross" );
+const char* APPLICATION_TITLE_FOLD( "Cube Transition: Fold" );
+const char* CHANGE_EFFECT_IMAGE( DALI_IMAGE_DIR "icon_mode.png" );
+const char* SLIDE_SHOW_START_ICON( DALI_IMAGE_DIR "icon-play.png" );
+const char* SLIDE_SHOW_STOP_ICON( DALI_IMAGE_DIR "icon-stop.png" );
+
+const char* IMAGES[] =
+{
+  DALI_IMAGE_DIR "gallery-large-1.jpg",
+  DALI_IMAGE_DIR "gallery-large-2.jpg",
+  DALI_IMAGE_DIR "gallery-large-3.jpg",
+  DALI_IMAGE_DIR "gallery-large-4.jpg",
+  DALI_IMAGE_DIR "gallery-large-5.jpg",
+  DALI_IMAGE_DIR "gallery-large-6.jpg",
+  DALI_IMAGE_DIR "gallery-large-7.jpg",
+  DALI_IMAGE_DIR "gallery-large-8.jpg",
+  DALI_IMAGE_DIR "gallery-large-9.jpg",
+  DALI_IMAGE_DIR "gallery-large-10.jpg",
+  DALI_IMAGE_DIR "gallery-large-11.jpg",
+  DALI_IMAGE_DIR "gallery-large-12.jpg",
+  DALI_IMAGE_DIR "gallery-large-13.jpg",
+  DALI_IMAGE_DIR "gallery-large-14.jpg",
+  DALI_IMAGE_DIR "gallery-large-15.jpg",
+  DALI_IMAGE_DIR "gallery-large-16.jpg",
+  DALI_IMAGE_DIR "gallery-large-17.jpg",
+  DALI_IMAGE_DIR "gallery-large-18.jpg",
+  DALI_IMAGE_DIR "gallery-large-19.jpg",
+  DALI_IMAGE_DIR "gallery-large-20.jpg",
+  DALI_IMAGE_DIR "gallery-large-21.jpg",
+};
+const int NUM_IMAGES( sizeof(IMAGES) / sizeof(IMAGES[0]) );
+
+// the number of cubes: NUM_COLUMNS*NUM_ROWS
+// better choose the numbers that can divide viewAreaSize.x
+const int NUM_COLUMNS_WAVE(16);
+const int NUM_COLUMNS_CROSS(8);
+const int NUM_COLUMNS_FOLD(8);
+// better choose the numbers that can divide viewAreaSize.y
+const int NUM_ROWS_WAVE(20);
+const int NUM_ROWS_CROSS(10);
+const int NUM_ROWS_FOLD(10);
+//transition effect duration
+const float ANIMATION_DURATION_WAVE(1.5f);
+const float ANIMATION_DURATION_CROSS(1.f);
+const float ANIMATION_DURATION_FOLD(1.f);
+//transition effect displacement
+const float CUBE_DISPLACEMENT_WAVE(70.f);
+const float CUBE_DISPLACEMENT_CROSS(30.f);
+
+// The duration of the current image staying on screen when slideshow is on
+const int VIEWINGTIME = 2000; // 2 seconds
+} // namespace
+
+class CubeTransitionApp : public ConnectionTracker
+{
+public:
+
+  /**
+   * Constructor
+   * @param application class, stored as reference
+   */
+  CubeTransitionApp( Application& application );
+
+  ~CubeTransitionApp();
+
+private:
+
+  /**
+   * This method gets called once the main loop of application is up and running
+   */
+  void OnInit( Application& application );
+  /**
+   * PanGesture callback. This method gets called when the pan gesture is detected.
+   * @param[in] actor The actor receiving the pan gesture.
+   * @param[in] gesture The detected pan gesture.
+   */
+  void OnPanGesture( Actor actor, PanGesture gesture );
+  /**
+   * Load the next image and start the transition;
+   */
+  void GoToNextImage();
+  /**
+   * Callback function of image resource loading succeed
+   * Start the transition
+   * @param[in] image The image content of the imageActor for transition
+   */
+  void OnImageLoaded(Image image);
+  /**
+   * Main key event handler
+   */
+  void OnKeyEvent(const KeyEvent& event);
+  /**
+   * Callback function of effect-switch button
+   * Change the effect when the effect button is clicked
+   * @param[in] button The handle of the clicked button
+   */
+  bool OnEffectButtonClicked( Toolkit::Button button );
+  /**
+   * Callback function of slideshow button
+   * Start or stop the automatical image display when the slideshow button is clicked
+   * @param[in] button The handle of the clicked button
+   */
+  bool OnSildeshowButtonClicked( Toolkit::Button button );
+  /**
+   * Callback function of cube transition completed signal
+   * @param[in] effect The cube effect used for the transition
+   * @param[in] imageActor The target imageActor of the completed transition
+   */
+  void OnTransitionCompleted(Toolkit::CubeTransitionEffect effect, ImageActor imageActor);
+  /**
+   * Callback function of timer tick
+   * The timer is used to count the image display duration in slideshow,
+   */
+  bool OnTimerTick();
+
+private:
+  Application&                    mApplication;
+  Toolkit::View                   mView;
+  Toolkit::ToolBar                mToolBar;
+  Layer                           mContent;
+  Toolkit::TextView               mTitleActor;
+  Actor                           mParent;
+
+  Vector2                         mViewSize;
+
+  ImageActor                      mCurrentImage;
+  ImageActor                      mNextImage;
+  unsigned int                    mIndex;
+  bool                            mIsImageLoading;
+  Constraint                      mImageConstraint;
+
+  PanGestureDetector              mPanGestureDetector;
+
+  Toolkit::CubeTransitionEffect   mCubeWaveEffect;
+  Toolkit::CubeTransitionEffect   mCubeCrossEffect;
+  Toolkit::CubeTransitionEffect   mCubeFoldEffect;
+  Toolkit::CubeTransitionEffect   mCurrentEffect;
+
+  bool                            mSlideshow;
+  Timer                           mViewTimer;
+  Toolkit::PushButton             mSlideshowButton;
+  Image                           mIconSlideshowStart;
+  Image                           mIconSlideshowStop;
+
+  Vector2                         mPanPosition;
+  Vector2                         mPanDisplacement;
+};
+
+CubeTransitionApp::CubeTransitionApp( Application& application )
+: mApplication( application ),
+  mIndex( 0 ),
+  mIsImageLoading( false ),
+  mSlideshow( false )
+{
+  mApplication.InitSignal().Connect( this, &CubeTransitionApp::OnInit );
+}
+
+CubeTransitionApp::~CubeTransitionApp()
+{
+  //Nothing to do
+}
+
+void CubeTransitionApp::OnInit( Application& application )
+{
+  Stage::GetCurrent().KeyEventSignal().Connect(this, &CubeTransitionApp::OnKeyEvent);
+
+  // Creates a default view with a default tool bar, the view is added to the stage.
+  mContent = DemoHelper::CreateView( application, mView, mToolBar, "", TOOLBAR_IMAGE, "" );
+
+  // Add an effect-changing button on the right of the tool bar.
+  Image imageChangeEffect = Image::New( CHANGE_EFFECT_IMAGE );
+  Toolkit::PushButton effectChangeButton = Toolkit::PushButton::New();
+  effectChangeButton.SetBackgroundImage(imageChangeEffect);
+  effectChangeButton.ClickedSignal().Connect( this, &CubeTransitionApp::OnEffectButtonClicked );
+  mToolBar.AddControl( effectChangeButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING );
+
+  // Add title to the tool bar.
+  mTitleActor = Toolkit::TextView::New();
+  mToolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Toolkit::Alignment::HorizontalCenter );
+
+  //Add an slideshow icon on the right of the title
+  mIconSlideshowStart = Image::New( SLIDE_SHOW_START_ICON );
+  mIconSlideshowStop = Image::New( SLIDE_SHOW_STOP_ICON );
+  mSlideshowButton = Toolkit::PushButton::New();
+  mSlideshowButton.SetBackgroundImage( mIconSlideshowStart );
+  mSlideshowButton.ClickedSignal().Connect( this, &CubeTransitionApp::OnSildeshowButtonClicked );
+  mToolBar.AddControl( mSlideshowButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalCenter, DemoHelper::DEFAULT_PLAY_PADDING );
+
+  // Set size to stage size to avoid seeing a black border on transition
+  mViewSize = Stage::GetCurrent().GetSize();
+
+  mParent = Actor::New();
+  mParent.SetSize( mViewSize );
+  mParent.SetPositionInheritanceMode( USE_PARENT_POSITION );
+  mContent.Add( mParent );
+
+  // use pan gesture to detect the cursor or finger movement
+  mPanGestureDetector = PanGestureDetector::New();
+  mPanGestureDetector.DetectedSignal().Connect( this, &CubeTransitionApp::OnPanGesture );
+  mPanGestureDetector.Attach( mParent );
+
+  //use small cubes
+  mCubeWaveEffect = Toolkit::CubeTransitionWaveEffect::New(NUM_ROWS_WAVE, NUM_COLUMNS_WAVE, mViewSize);
+  mCubeWaveEffect.SetTransitionDuration( ANIMATION_DURATION_WAVE );
+  mCubeWaveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT_WAVE );
+  mCubeWaveEffect.TransitionCompletedSignal().Connect(this, &CubeTransitionApp::OnTransitionCompleted);
+  mParent.Add(mCubeWaveEffect.GetRoot());
+  // use big cubes
+  mCubeCrossEffect = Toolkit::CubeTransitionCrossEffect::New(NUM_ROWS_CROSS, NUM_COLUMNS_CROSS, mViewSize);
+  mCubeCrossEffect.SetTransitionDuration( ANIMATION_DURATION_CROSS);
+  mCubeCrossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT_CROSS );
+  mCubeCrossEffect.TransitionCompletedSignal().Connect(this, &CubeTransitionApp::OnTransitionCompleted);
+  mParent.Add(mCubeCrossEffect.GetRoot());
+
+  mCubeFoldEffect = Toolkit::CubeTransitionFoldEffect::New(NUM_ROWS_FOLD, NUM_COLUMNS_FOLD, mViewSize);
+  mCubeFoldEffect.SetTransitionDuration( ANIMATION_DURATION_FOLD);
+  mCubeFoldEffect.TransitionCompletedSignal().Connect(this, &CubeTransitionApp::OnTransitionCompleted);
+  mParent.Add(mCubeFoldEffect.GetRoot());
+
+  mViewTimer = Timer::New( VIEWINGTIME );
+  mViewTimer.TickSignal().Connect( this, &CubeTransitionApp::OnTimerTick );
+
+  // show the first image
+  mImageConstraint = Constraint::New<Vector3>( Actor::SCALE, LocalSource( Actor::SIZE ), ParentSource( Actor::SIZE ), ScaleToFitKeepAspectRatioConstraint() );
+
+  mCurrentImage = ImageActor::New( Image::New( IMAGES[mIndex] ) );
+  mCurrentImage.SetPositionInheritanceMode( USE_PARENT_POSITION );
+  mCurrentImage.ApplyConstraint( mImageConstraint );
+  mParent.Add( mCurrentImage );
+
+  mCurrentEffect = mCubeWaveEffect;
+  mCurrentEffect.SetCurrentImage( mCurrentImage );
+
+  // Set Title text
+  mTitleActor.SetText( APPLICATION_TITLE_WAVE );
+  mTitleActor.SetSize( Font::New().MeasureText( APPLICATION_TITLE_WAVE ) );
+  mTitleActor.SetStyleToCurrentText( DemoHelper::GetDefaultTextStyle() );
+}
+
+// signal handler, called when the pan gesture is detected
+void CubeTransitionApp::OnPanGesture( Actor actor, PanGesture gesture )
+{
+  // does not response when the transition has not finished
+  if( mIsImageLoading || mCubeWaveEffect.IsTransiting() || mCubeCrossEffect.IsTransiting() || mCubeFoldEffect.IsTransiting() || mSlideshow )
+  {
+    return;
+  }
+
+  if( gesture.state == Gesture::Continuing )
+  {
+    if( gesture.displacement.x < 0)
+    {
+      mIndex = (mIndex + 1)%NUM_IMAGES;
+    }
+    else
+    {
+      mIndex = (mIndex + NUM_IMAGES -1)%NUM_IMAGES;
+    }
+
+    mPanPosition = gesture.position;
+    mPanDisplacement = gesture.displacement;
+    GoToNextImage();
+  }
+}
+
+void CubeTransitionApp::GoToNextImage()
+{
+  Image image = Image::New( IMAGES[ mIndex ] );
+  mNextImage = ImageActor::New( image );
+  mNextImage.SetPositionInheritanceMode(USE_PARENT_POSITION);
+  mNextImage.ApplyConstraint( mImageConstraint );
+  mCurrentEffect.SetTargetImage(mNextImage);
+  mIsImageLoading = true;
+  if( image.GetLoadingState() == ResourceLoadingSucceeded )
+  {
+      OnImageLoaded( image );
+  }
+  else
+  {
+    image.LoadingFinishedSignal().Connect( this, &CubeTransitionApp::OnImageLoaded );
+  }
+}
+
+void CubeTransitionApp::OnImageLoaded(Image image)
+{
+   mIsImageLoading = false;
+   mCurrentEffect.StartTransition( mPanPosition, mPanDisplacement );
+   mParent.Remove(mCurrentImage);
+   mParent.Add(mNextImage);
+   mCurrentImage = mNextImage;
+}
+
+bool CubeTransitionApp::OnEffectButtonClicked( Toolkit::Button button )
+{
+  if(mCurrentEffect == mCubeWaveEffect)
+  {
+    mCurrentEffect = mCubeCrossEffect;
+    mTitleActor.SetText( APPLICATION_TITLE_CROSS );
+    mTitleActor.SetSize( Font::New().MeasureText( APPLICATION_TITLE_CROSS ) );
+  }
+  else if(mCurrentEffect == mCubeCrossEffect)
+  {
+    mCurrentEffect = mCubeFoldEffect;
+    mTitleActor.SetText( APPLICATION_TITLE_FOLD );
+    mTitleActor.SetSize( Font::New().MeasureText( APPLICATION_TITLE_FOLD ) );
+  }
+  else
+  {
+    mCurrentEffect = mCubeWaveEffect;
+    mTitleActor.SetText( APPLICATION_TITLE_WAVE );
+    mTitleActor.SetSize( Font::New().MeasureText( APPLICATION_TITLE_WAVE ) );
+  }
+  mTitleActor.SetStyleToCurrentText(DemoHelper::GetDefaultTextStyle());
+
+  // Set the current image to cube transition effect
+  // only need to set at beginning or change from another effect
+  mCurrentEffect.SetCurrentImage(mCurrentImage);
+  return true;
+}
+
+bool CubeTransitionApp::OnSildeshowButtonClicked( Toolkit::Button button )
+{
+  mSlideshow = !mSlideshow;
+  if( mSlideshow )
+  {
+    mPanGestureDetector.Detach( mParent );
+    mSlideshowButton.SetBackgroundImage( mIconSlideshowStop );
+    mPanPosition = Vector2( mViewSize.width, mViewSize.height*0.5f );
+    mPanDisplacement = Vector2( -10.f, 0.f );
+    mViewTimer.Start();
+  }
+  else
+  {
+    mPanGestureDetector.Attach( mParent );
+    mSlideshowButton.SetBackgroundImage( mIconSlideshowStart );
+    mViewTimer.Stop();
+  }
+  return true;
+}
+
+void CubeTransitionApp::OnTransitionCompleted(Toolkit::CubeTransitionEffect effect, ImageActor imageActor)
+{
+  if( mSlideshow )
+  {
+    mViewTimer.Start();
+  }
+}
+
+bool CubeTransitionApp::OnTimerTick()
+{
+  if(mSlideshow)
+  {
+    mIndex = (mIndex + 1)%NUM_IMAGES;
+    GoToNextImage();
+  }
+
+  //return false to stop the timer
+  return false;
+}
+
+void CubeTransitionApp::OnKeyEvent(const KeyEvent& event)
+{
+  if(event.state == KeyEvent::Down)
+  {
+    if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+    {
+      mApplication.Quit();
+    }
+  }
+}
+
+// Entry point for Linux & SLP applications
+int main( int argc, char **argv )
+{
+  Application application = Application::New( &argc, &argv );
+  CubeTransitionApp test( application );
+  application.MainLoop();
+
+  return 0;
+}
diff --git a/packaging/com.samsung.dali-demo.spec b/packaging/com.samsung.dali-demo.spec
new file mode 100755 (executable)
index 0000000..21904ad
--- /dev/null
@@ -0,0 +1,117 @@
+Name:       com.samsung.dali-demo
+Summary:    The OpenGLES Canvas Core Demo
+Version:    0.9.13
+Release:    1
+Group:      System/Libraries
+License:    Flora
+URL:        https://review.tizen.org/git/?p=platform/core/uifw/dali-demo.git;a=summary
+Source0:    %{name}-%{version}.tar.gz
+
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+Requires: dali
+Requires: dali-adaptor
+Requires: dali-toolkit
+BuildRequires:  boost-devel
+BuildRequires:  pkgconfig
+BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(capi-media-player)
+BuildRequires:  pkgconfig(aul)
+BuildRequires:  dali-toolkit-devel
+BuildRequires:  dali-adaptor-devel
+BuildRequires:  pkgconfig(dlog)
+ExclusiveArch:  armv7l
+
+%description
+The OpenGLES Canvas Core Demo is a collection of examples and demonstrations
+of the capability of the toolkit.
+
+##############################
+# Preparation
+##############################
+%prep
+%setup -q
+%define dali_app_ro_dir       /opt/apps/com.samsung.dali-demo/
+%define dali_app_exe_dir      %{dali_app_ro_dir}/bin/
+%define dali_xml_file_dir     /usr/share/packages/
+%define dali_icon_dir         /usr/share/icons/
+%define smack_rule_dir        /etc/smack/accesses2.d/
+
+##############################
+# Build
+##############################
+%build
+PREFIX="/usr"
+CXXFLAGS+=" -Wall -g -O2"
+LDFLAGS+=" -Wl,--rpath=$PREFIX/lib -Wl,--as-needed -fPIC"
+
+%if 0%{?sec_build_binary_debug_enable}
+export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
+export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
+%endif
+
+%ifarch %{arm}
+EXTRA_CONFIGURE_OPTIONS=" --host=arm"
+CXXFLAGS+=" -D_ARCH_ARM_"
+%endif
+
+libtoolize --force
+cd %{_builddir}/%{name}-%{version}/build/tizen && autoreconf --install
+cd %{_builddir}/%{name}-%{version}/build/tizen && CXXFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS DALI_APP_DIR=%{dali_app_ro_dir} ./configure --prefix=$PREFIX $EXTRA_CONFIGURE_OPTIONS
+
+make %{?jobs:-j%jobs}
+
+##############################
+# Installation
+##############################
+%install
+rm -rf %{buildroot}
+cd build/tizen
+%make_install DALI_APP_DIR=%{dali_app_ro_dir}
+
+mkdir -p %{buildroot}/%{dali_app_exe_dir}
+mv %{buildroot}/%{_bindir}/* %{buildroot}/%{dali_app_exe_dir}
+
+mkdir -p %{buildroot}%{dali_xml_file_dir}
+cp -f %{_builddir}/%{name}-%{version}/%{name}.xml %{buildroot}%{dali_xml_file_dir}
+
+mkdir -p %{buildroot}%{dali_icon_dir}
+mv %{buildroot}/%{dali_app_ro_dir}/images/%{name}.png %{buildroot}%{dali_icon_dir}
+
+mkdir -p %{buildroot}%{smack_rule_dir}
+cp -f %{_builddir}/%{name}-%{version}/%{name}.rule %{buildroot}%{smack_rule_dir}
+
+# LICENSE
+mkdir -p %{buildroot}/usr/share/license
+cp -af %{_builddir}/%{name}-%{version}/LICENSE %{buildroot}/usr/share/license/%{name}
+
+##############################
+# Post Install
+##############################
+%post
+/sbin/ldconfig
+exit 0
+
+##############################
+# Post Uninstall
+##############################
+%postun
+/sbin/ldconfig
+exit 0
+
+##############################
+# Files in Binary Packages
+##############################
+
+%files
+%manifest com.samsung.dali-demo.manifest
+%defattr(-,root,root,-)
+%{dali_app_exe_dir}/dali-demo
+%{dali_app_exe_dir}/*.example
+%{dali_app_ro_dir}/images/*
+%{dali_app_ro_dir}/models/*
+%{dali_xml_file_dir}/%{name}.xml
+%{dali_icon_dir}/*
+%config %{smack_rule_dir}/%{name}.rule
+%{_datadir}/license/%{name}