pax_global_header00006660000000000000000000000064136120604150014510gustar00rootroot0000000000000052 comment=3402eb7db523da47d8df87734cd0ed1c9df96bee tiled-1.3.2/000077500000000000000000000000001361206041500126145ustar00rootroot00000000000000tiled-1.3.2/.github/000077500000000000000000000000001361206041500141545ustar00rootroot00000000000000tiled-1.3.2/.github/FUNDING.yml000066400000000000000000000001351361206041500157700ustar00rootroot00000000000000# These are supported funding model platforms github: bjorn liberapay: tiled patreon: bjorn tiled-1.3.2/.github/workflows/000077500000000000000000000000001361206041500162115ustar00rootroot00000000000000tiled-1.3.2/.github/workflows/ubuntu-latest.yml000066400000000000000000000010061361206041500215450ustar00rootroot00000000000000name: Compile on latest Ubuntu on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: install dependencies run: | sudo apt update sudo apt install qt5-default libqt5svg5-dev qttools5-dev-tools zlib1g-dev qtdeclarative5-dev qtdeclarative5-private-dev qbs python3-dev - name: setup qbs run: | qbs setup-toolchains --detect qbs setup-qt --detect - name: build run: qbs build profile:qt-5-9-5 tiled-1.3.2/AUTHORS000066400000000000000000000131431361206041500136660ustar00rootroot00000000000000Main developer and maintainer: Thorbjørn Lindeijer Other contributors: Stefan Beller Erik Schilling Samuli Tuomola Jeff Bland Petr Viktorin Mauricio Muñoz Lucero Jake Petroules Mamed Ibrahimov Yohann Ferreira mauve Alex Vega (semtiko) Martin Ziel Hiroki Utsunomiya Mike Thomas Parker Miller seeseekey monolifed Roderic Morris Will Luongo Ketan Gupta Michael Bickel Olexandr Nesterenko Porfírio Ribeiro Sean Humeniuk wayfu Ben Longbons Jonatas de Moraes Junior Manu Evans Mikolai Fajer zhaosting Alejandro Cámara Oskar Wiksten Peter André Johansen Tamir Atias (KonoM) Tim Baker Hendrik Brummermann Mohammad Mehdi Salem Naraghi Omnomnobot Andrew G. Crowell Balázs Úr Cheuk Yin Ng Clint Bellanger Dennis Honeyman Henrik Heino Igor Laete Meireles Michael Woerister Mohamed Thabet Sebastian Pidek Yehnan Chiang ekeimaja Alexander Kuhrt Andreas Abraham Arseniy Tsyro Bdtrotte Bilge Theall Champi080 Christian Henz Christoph Schnackenberg Christophe Conceicao Clyde Dale Kim HenryJia Janis Kirsteins Kenney Phillis Kim Maus Nathan Tolbert Niek Pierre-David Bélanger Porfirio Przemysław Grzywacz Seanba Wodann Yuriy juniperbrew nuriu oktonion tolbert zigal Любомир Василев Aban Acuion Adam Rippon Ahmad Hamdani Alejandro Alvarez Alessandro Portale Alex Koz Alexei Bratuhin Andrew Motrenko Ansis Māliņš Antonio Ricci Ava Brumfield Bendegúz Nagy Bin Wu Brandon Dillon Brian Cain CaptainFrog Carisius Dennis Hostetler Dmitry Hrabrov Dmitry Marakasov Dobes Vandermeer Dylan Wilson Eduardo Medeiros Pereira Edward Hutchins Emmanuel Barroga Eric Kidd Firas Assaad Flyte Glavak Gornova Gregory Nickonov Guilherme Rodrigues Caetano Gurkenlabs Hanmac Harri Berglund Harry Hsiao Hermann Döppes Ian Langworth ☠ Jack Roper Jared Adams Joel Leclerc Johel Ernesto Guerrero Peña Jonathan Bayle JonesBlunt Juan Rodriguez Justas Bistrickas Justin Jacobs Kimmo Rundelin Kody Kurtz Kyle Delaney Lennert Raesch Leon Moctezuma Ludolph Neethling Luis Garcia MHendricks Marce Coll Marco Fras Mark van Rij Matt Styles Mattia Basaglia Michael Aquilina Michael Williams Mitch Curtis Mohammed SLIMANI Nikita Razdobreev Nuri Uzunoğlu Okami Oliver Zell Phil Hagelberg Postremus Prayag Verma Robert Maes Roberto Raggi RyanSchmittDev Sausage Johnson Sebastian Grillmaier Sharganov Artem Sibiot Simião Sébastien BURILLARD Todd Carnes Tom Linthwaite Tomasz Kubiak Vincent Petithory Vitek1425 Vsevolod Klementjev Wade Brainerd Xenodora YFdyh000 Ying-Chun Liu (PaulLiu) Zach Reizner Zachary Jia arcrowel arntro-4 assofohdz bitJericho buckle2000 devnewton endlesstravel endstation erem2k fireraccoon i-ka iskolbin kekd.ck leeonix luan-cestari mhussa mogemimi nicolaichuk nykm ranjak theHacker tomerdaniel 최아영 Translators: Ahmad Hamdani (Czech) Alex Vega (Russian) Antonio Ricci (Italian) Bilge Theall (Chinese) Bin Wu (Chinese) Damene Abdelkader (Arabic, Algeria) Eduardo Medeiros Pereira (Portuguese, Brazil) ekeimaja (Finnish) Gornova (Italian) Hiroki Utsunomiya (Japanese) Jonatas de Moraes Junior (Portuguese, Brazil) jurkan (German) Jānis Kiršteins (Latvian) Laete Meireles (Portuguese, Brazil) Lyubomir Vasilev (Bulgarian) Mauricio Muñoz Lucero (Spanish) miru2533 (Korean) Nuri Uzunoğlu (Turkish) Olexandr Nesterenko (Ukrainian) Peter André Johansen (Norwegian Bokmål) Petr Viktorin (Czech) Porfírio Ribeiro (Portuguese) Sebastian Grillmaier (German) Sébastien Burillard (French) seeseekey (German) SshipSunBee (Korean) Tamir Atias (KonoM) (Hebrew) Thorbjørn Lindeijer (Dutch) Tomasz Kubiak (Polish) Tomer Daniel (Hebrew) Úr Balázs (Hungarian) Yohann Ferreira (French) Zhao Sting (Chinese) Acknowledgements: Most of the icons are from the GNOME and GIMP icon themes (GPL) Some Icons are Copyright (C) Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 license. See http://p.yusukekamiyamane.com/ The dice icon is based on an SVG by Steaphan Greene that I found on Wikipedia: http://en.wikipedia.org/wiki/File:2-Dice-Icon.svg Inkscape icons by Barbara Muraus, Jakub Steiner and Josh Andler (CC-BY-SA 3.0) * src/tiled/images/14/hidden.png * src/tiled/images/14/visible.png * src/tiled/images/16/hidden.png * src/tiled/images/16/visible.png * src/tiled/images/24/hidden.png * src/tiled/images/24/visible.png Icons from the Elementary icon theme (GPLv3) * src/tiled/images/scalable/edit-delete-symbolic.svg * src/tiled/images/scalable/edit-undo-symbolic.svg * src/tiled/images/scalable/software-update-available-symbolic.svg * src/tiled/images/16/dialog-error.png * src/tiled/images/16/dialog-warning.png * src/tiled/images/24/dialog-error.png * src/tiled/images/24/dialog-warning.png * src/tiled/images/32/dialog-error.png * src/tiled/images/32/dialog-warning.png Tilesets: perspective_walls.png - (C) Clint Bellanger, released as Public Domain isometric_grass_and_water.png - (C) Clint Bellanger, released as GPL2, GPL3, CC-BY-SA3 tmw_desert_spacing.png - (C) The Mana World Development Team, GPL sewer_tileset.png - (C) Blues Brothers RPG developers, GPL Replica Island - (C) Chris Pruett and Genki Mine, Apache (except hotspots.png) hexmini.png - Public Domain, http://opengameart.org/content/pixel-hex-tilesets-enhanced buch-outdoor.png - (C) Michele "Buch" Bucelli, CC-BY 3.0, http://opengameart.org/users/buch examples/sticker-knight - (C) Ponywolf, CC0, http://opengameart.org/content/sticker-knight-platformer tiled-1.3.2/CONTRIBUTING.md000066400000000000000000000036121361206041500150470ustar00rootroot00000000000000# Contributing to Tiled All kinds of contributions are very appreciated, be it documentation, code or build system improvements, be it a small patch, a feature or maybe even becoming a co-maintainer of Tiled. Bug reports and feature requests are of course welcome too! ## Reporting an Issue Make sure to mention the following things: * How the issue can reproduced * What behavior you expected instead * What actually happened * Tiled version, operating system, etc. if possibly relevant. Also, please consider adding a screenshot or video if it helps illustrate the issue. ## Requesting a Feature First of all, look around the already open issues to see if the feature was already requested in some form. In that case it's better to comment on the existing feature instead. If you're not entirely sure about what feature you need, consider to [post your problem on the forum](http://discourse.mapeditor.org/) instead. In any case, be sure to describe the feature in enough detail, to consider its implications on existing parts of the software if relevant and to describe how it would help you in particular. Also, please consider including a mockup if the issue includes UI changes. ## Submitting a Patch * Ideally, start with something small to get familiar with the review process and work up from there. * Make an effort to follow the overal coding style, which is roughly based on the [Qt Creator coding style](https://doc-snapshots.qt.io/qtcreator-extending/coding-style.html). * Be prepared for detailed feedback on your patch and to make several revisions. * Each pull request will be built automatically for Windows, Linux and macOS. If the build fails anywhere, please check if it may be a problem with your patch. ## Making a Donation You can also support further development of Tiled with [a monthly donation to Thorbjørn](https://www.patreon.com/bjorn) on Patreon. Thanks a lot for your contribution! tiled-1.3.2/COPYING000066400000000000000000000016551361206041500136560ustar00rootroot00000000000000Several independent works are being distributed along with Tiled that fall under different licenses. You can find the license that applies to each file in the comment at the top, but for clarity they are also listed here: Software Directory License ------------------------------------------------------------------- Tiled src/tiled GPL Tiled plugins src/plugins GPL libtiled src/libtiled BSD 2-clause license libtiled-java util/java/libtiled-java BSD 2-clause license qtpropertybrowser src/qtpropertybrowser BSD 3-clause license tmxrasterizer src/tmxrasterizer BSD 2-clause license tmxviewer src/tmxviewer BSD 2-clause license tmxviewer-java util/java/tmxviewer-java BSD 2-clause license The full text of each license is provided in the files LICENSE.GPL and LICENSE.BSD. tiled-1.3.2/Doxyfile000066400000000000000000000221101361206041500143160ustar00rootroot00000000000000# Doxyfile 1.6.1 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "Tiled (Qt)" PROJECT_NUMBER = OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = NO REPEAT_BRIEF = YES ABBREVIATE_BRIEF = ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO EXTENSION_MAPPING = BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES DISTRIBUTE_GROUP_DOC = NO SUBGROUPING = YES TYPEDEF_HIDES_STRUCT = NO SYMBOL_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = YES SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_MEMBERS_CTORS_1ST = NO SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES SHOW_DIRECTORIES = NO SHOW_FILES = YES SHOW_NAMESPACES = YES FILE_VERSION_FILTER = LAYOUT_FILE = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = src INPUT_ENCODING = UTF-8 FILE_PATTERNS = RECURSIVE = YES EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = */moc_*.cpp \ */ui_*.h \ */qrc_*.cpp EXCLUDE_SYMBOLS = EXAMPLE_PATH = EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO REFERENCES_LINK_SOURCE = YES USE_HTAGS = NO VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES HTML_DYNAMIC_SECTIONS = NO GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" DOCSET_BUNDLE_ID = org.doxygen.Project GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO CHM_INDEX_ENCODING = BINARY_TOC = NO TOC_EXPAND = NO GENERATE_QHP = NO QCH_FILE = "../tiled-0.1.qch" QHP_NAMESPACE = org.mapeditor.tiled QHP_VIRTUAL_FOLDER = "tiled-0.1" QHP_CUST_FILTER_NAME = QHP_CUST_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS = QHG_LOCATION = "qhelpgenerator" DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO USE_INLINE_TREES = NO TREEVIEW_WIDTH = 250 FORMULA_FONTSIZE = 10 SEARCHENGINE = NO #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO LATEX_SOURCE_CODE = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES MSCGEN_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO DOT_FONTNAME = FreeSans DOT_FONTSIZE = 10 DOT_FONTPATH = CLASS_GRAPH = YES COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = YES DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES DOT_CLEANUP = YES tiled-1.3.2/LICENSE.APACHE000066400000000000000000000261351361206041500145500ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ 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. 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, 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 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 in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) 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 (d) 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. 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 Apache License to your work. To apply the Apache 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 Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0 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. tiled-1.3.2/LICENSE.BSD000066400000000000000000000023041361206041500142270ustar00rootroot00000000000000Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. tiled-1.3.2/LICENSE.GPL000066400000000000000000000432541361206041500142520ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. tiled-1.3.2/NEWS.md000066400000000000000000001617211361206041500137220ustar00rootroot00000000000000### Tiled 1.3.2 (22 January 2020) * Fixed initialization of selected layers (#2719) * Fixed stamp action shortcuts not being configurable (#2684) * Fixed the tileset view to respect the 'wheel zooms by default' preference * Fixed insertion position when using drag-n-drop to rearrange layers * Fixed displayed layer data format in Properties * Fixed repeating of export when map is saved by a custom command (#2709) * Fixed issue when multiple worlds are loaded that use pattern matching * Issues view can now be hidden by clicking the status bar counters * macOS: Fixed black toolbar when enabling OpenGL rendering (#1839) * Windows: Fixed context menus activating first item on release (#2693) * Windows installer: Include the 'defoldcollection' plugin (#2677) * libtiled: Avoid inheriting Properties from QVariantMap (#2679) * docs: Added some notes to Python and JavaScript pages (#2725) * Updated Qt from 5.12.5 to 5.12.6 * Updated Finnish translation (by Tuomas Lähteenmäki and odamite) * Updated part of Italian translation (by Katia Piazza) ### Tiled 1.3.1 (20 November 2019) * Added reloading of object types when changed externally (by Jacob Coughenour, #2674) * Added a status bar to the startup screen * Made the shortcuts for the tools configurable (#2666) * Made Undo/Redo shortcuts configurable (#2669) * Fixed importing of keyboard settings (.kms files) (#2671) * Fixed small window showing up on startup for a split second * Windows: Fixed the shipped version of OpenSSL (fixes new version notification) * Tiled Quick: Don't compile/install by default (#2673) ### Tiled 1.3.0 (13 November 2019) * Added support for extending Tiled with JavaScript (#949) * Added error and warning counts to the status bar * Added Issues view where you can see warnings and errors and interact with them * Added configuration of keyboard shortcuts (#215) * Added status bar notification on new releases (replacing Sparkle and WinSparkle) * Added option to show tile collision shapes on the map (#799) * Added switching current layer with Ctrl + Right Click in map view * Added search filter to the Objects view (#1467) * Added icons to objects in the Objects view * Added dynamic wrapping mode to the tileset view (#1241) * Added a \*.world file filter when opening a world file * Added support for .world files in tmxrasterizer (by Samuel Magnan, #2067) * Added synchronization of selected layers and tileset when switching between maps in a world (by JustinZhengBC, #2087) * Added actions to show/hide and lock/unlock the selected layers * Added toggle button for "Highlight Current Layer" action * Added custom output chunk size option to map properties (by Markus, #2130) * Added support for Zstandard compression and configurable compression level (with BRULE Herman and Michael de Lang, #1888) * Added option to minimize output on export (#944) * Added export to Defold .collection files (by CodeSpartan, #2084) * Added a warning when custom file properties point to non-existing files (#2080) * Added shortcuts for next/previous tileset (#1238) * Added saving of the last export target and format in the map/tileset file (#1610) * Added option to repeat the last export on save (#1610) * Added Fit Map in View action (by Mateo de Mayo, #2206) * Tile Collision Editor: Added objects list view * Changed the Type property from a text box to an editable combo box (#823) * Changed animation preview to follow zoom factor for tiles (by Ruslan Gainutdinov, #2050) * Changed the shortcut for AutoMap from A to Ctrl+M * AutoMapping: Added "OverflowBorder" and "WrapBorder" options (by João Baptista de Paula e Silva, #2141) * AutoMapping: Allow any supported map format to be used for rule maps * Python plugin: Added support for loading external tileset files (by Ruin0x11, #2085) * Python plugin: Added Tile.type() and MapObject.effectiveType() (by Ruin0x11, #2124) * Python plugin: Added Object.propertyType() (by Ruin0x11, #2125) * Python plugin: Added Tileset.sharedPointer() function (#2191) * tmxrasterizer: Load plugins to support additional map formats (by Nathan Tolbert, #2152) * tmxrasterizer: Added rendering of object layers (by oncer, #2187) * Fixed missing native styles when compiled against Qt 5.10 or later (#1977) * Fixed file change notifications no longer triggering when file was replaced (by Nathan Tolbert, #2158) * Fixed layer IDs getting re-assigned when resizing the map (#2160) * Fixed performance issues when switching to a new map in a world with many maps (by Simon Parzer, #2159) * Fixed restoring of expanded group layers in Objects view * Fixed tileset view to keep position at mouse stable when zooming (#2039) * libtiled-java: Added support for image layers and flipped tiles (by Sergey Savchuk, #2006) * libtiled-java: Optimized map reader and fixed path separator issues (by Pavel Bondoronok, #2006) * Updated builds on all platforms to Qt 5.12 (except snap release) * Raised minimum supported Qt version from 5.5 to 5.6 * Raised minimum supported macOS version from 10.7 to 10.12 * Removed option to include a DTD in the saved files * Removed the automappingconverter tool * snap: Updated from Ubuntu 16.04 to 18.04 (core18, Qt 5.9) * Updated Chinese, Portuguese (Portugal), Turkish and Ukrainian translations ### Tiled 1.2.5 (9 October 2019) * Fixed exporting to a file name containing multiple dots (#2149) * Fixed possible crash in AutoMapper (#2157) * Fixed crash when unloading certain plugins * Fixed duplicated entries in Objects view after grouping layers * Fixed adjacent maps within a world not being properly clickable * Fixed empty maps within a world not being clickable * Fixed handling of negative multiplierX/Y in a world file ### Tiled 1.2.4 (15 May 2019) * Fixed view boundaries to take into account layer offsets (#2090) * Fixed map size when switching infinite off (#2051) * Fixed the image cache to check file modification time (#2081) * Fixed updating a few things when changing tileset drawing offset * Fixed position of tile object outline on isometric maps * Fixed saving of tile stamps when using the Shape Fill Tool * tBIN plugin: Fixed loading of some tilesets on Linux * tBIN plugin: Fixed possible crash when images can't be found (#2106) * Python plugin: Disable this plugin by default, to avoid crashes on startup (#2091) * JSON plugin: Fixed writing of position for objects without ID * Added Swedish translation (by Anton R) ### Tiled 1.2.3 (12 March 2019) * Fixed cut/copy in Tile Collision Editor (#2075) * Fixed crash when trying to add Wang colors without a selected Wang set (#2083) * tBIN plugin: Fixed hang when locating missing tileset image (#2068) * CSV plugin: Fixed exporting of grouped tile layers ### Tiled 1.2.2 (29 January 2019) * Added 'json1' plugin that exports to the old JSON format (#2058) * Enable the adding of point objects in Tile Collision Editor (#2043) * Reload AutoMapping rules when they have changed on disk (by Justin Zheng, #1997) * Fixed remembering of last used export filter * Fixed label color to update when object layer color is changed (by Justin Zheng, #1976) * Fixed stamp and fill tools to adjust when tile probability is changed (by Justin Zheng, #1996) * Fixed misbehavior when trying to open non-existing files * Fixed mini-map bounds when layer offsets are used in combination with group layers * Fixed Templates view missing from the Views menu (#2054) * Fixed Copy Path / Open Folder actions for embedded tilesets (#2059) * Python plugin: Made the API more complete (#1867) * Updated Chinese, German, Korean, Norwegian Bokmål, Portuguese (Portugal) and Ukrainian translations ### Tiled 1.2.1 (14 November 2018) * Fixed JSON templates not being visible in Templates view (#2009) * Fixed Maps view to show all readable map formats * Fixed crash when deleting a command using the context menu (by Robert Lewicki, #2014) * Fixed crash after a world file failed to load * Fixed Select None action to be enabled when there is any selection * Fixed disappearing of tile types on export/import of a tileset (#2023) * Fixed tool shortcuts when using Spanish translation * Fixed saving of the "Justify" alignment option for text objects (#2026) * Changed Cut, Copy and Delete actions to apply based on selected layer types * Windows: Updated builds to Qt 5.9.7 * Updated Russian translation (by Rafael Osipov, #2017) ### Tiled 1.2.0 (19 September 2018) * Added multi-layer selection, including multi-layer tile layer editing * Added support for multi-map worlds (#1669) * Added ability to extend existing polylines (with Ketan Gupta, #1683) * Added option to highlight the hovered object (#1190) * Added news from website to the status bar (#1898) * Added option to show object labels for hovered objects * Added option to embed tilesets on export (#1850) * Added option to detach templates on export (#1850) * Added option to resolve object types and properties on export (#1850) * Added Escape for switching to the Select Objects tool and for clearing the selection * Added Escape to cancel the current action in all object layer tools * Added double-click on polygon objects to switch to Edit Polygons tool * Added interaction with segments for polygons, for selection and dragging * Added double-clicking a polygon segment for inserting a new point at that location * Added action to lock/unlock all other layers (by kralle333, #1883) * Added --export-tileset command line argument (by Josh Bramlett, #1872) * Added unique persistent layer IDs (#1892) * Added 'version' and 'tiledversion' to external tileset files * Added full paths to Recent Files menu as tool tips (by Gauthier Billot, #1992) * Create Object Tools: Show preview already on hover (#537) * Objects view: Only center view on object on press or activation * Objects view: When clicking a layer, make it the current one (by kralle333, #1931) * Unified the Create Polygon and Create Polyline tools * JSON plugin: Made the JSON format easier to parse (by saeedakhter, #1868) * Tile Collision Editor: Allowed using object templates * Templates view: Don't allow hiding the template object * Python plugin: Updated to Python 3 (by Samuli Tuomola) * Python plugin: Fixed startup messages not appearing in debug console * Python plugin: Fixed file change watching for main script files * Lua plugin: Include properties from templates (#1901) * Lua plugin: Include tileset column count in export (by Matt Drollette, #1969) * tBIN plugin: Don't ignore objects that aren't perfectly aligned (#1985) * tBIN plugin: Fixed "Unsupported property type" error for newly added float properties * Automapping: Report error when no output layers are found * AutoMapping: Changed matching outside of map boundaries and added 'MatchOutsideMap' option * Linux: Modernized the appstream file (by Patrick Griffis) * libtiled: Allow qrc-based tileset images (#1947) * libtiled-java: Fixed loading maps with multiple external tilesets * Optimized deletion of many objects (#1972) * Make Ctrl+Q work for quitting also on Windows (#1998) * Fixed randomizing of terrain, Wang tiles and stamp variations (#1949) * Fixed tilesets getting added to maps when they shouldn't be (#2002) * Fixed issue with default font size in combination with custom family (#1994) * Fixed the tile grid to render below labels, handles and selection indicators * Fixed confirming overwrite when exporting a tileset * Fixed reading of infinite maps that don't use chunked layer data * Updated Bulgarian, Dutch, French, German, Norwegian Bokmål, Portuguese (Portugal) and Turkish translations ### Tiled 1.1.6 (17 July 2018) * Fixed Terrain Brush issue on staggered isometric maps (#1951) * Fixed objects to stay selected when moving them between layers * Fixed small tab bar rendering issue on high DPI displays * Fixed rendering of arrows on scroll bar buttons * Fixed object labels to adjust properly to the font DPI * Fixed resize handle locations for multiple zero-sized objects * Fixed handling of arrow keys on focused layer combo box (#1973) * Tile Collision Editor: Fixed handling of tile offset (#1955) * Tile Collision Editor: Fixed potential crash on Undo (#1965) * Python plugin: Added some missing API to the Cell class * Windows and Linux: Downgraded builds to Qt 5.9 (fixes #1928) * macOS: Fixed library loading issues for tmxrasterizer and terraingenerator * macOS: Downgraded to Qt 5.6 (fixes resizing of undocked views and reduces minimum macOS version to 10.7) * Updates to German, Hungarian, Norwegian Bokmål, Polish, Portuguese (Portugal), Russian and Ukrainian translations ### Tiled 1.1.5 (25 April 2018) * Fixed erasing mode of the Terrain Brush * Fixed crash after editing a template * Fixed rendering of eye/lock icons in Layers view * Fixed object index when undoing Move Object to Layer action (#1932) * Fixed shortcuts for flipping and rotating objects (#1926) * Fixed dynamic retranslation of tools and tool actions * Fixed possible crash when undoing/redoing Wang color changes * Fixed handling of sub-properties in Object Type Editor (#1936) * Fixed crash when deleting an object right before dragging it (#1933) * Adjust Wang tile data when tileset column count changes (#1851) * Improved fill behavior in case of selection on infinite map (#1921) * Removed ability to hide tile collision objects (#1929) * Remove tile collision layer along with the last object (#1230) * JSON plugin: Made the reader more strict about object types (#1922) * JSON plugin: Added support for Wang sets ### Tiled 1.1.4 (28 March 2018) * Fixed exporting of external tilesets to JSON or TSX formats * Fixed problem with embedding or exporting tilesets with Wang sets * Fixed tiles placed by the terrain tool being considered different (#1913) * Fixed text alignment values appearing at random in Properties view (#1767) * macOS: Fixed eye/lock icon display in Layers view * Re-enabled Space for toggling layer visibility * Migrate properties set on tile collision layer to the tile (#1912) * Don't reset stamp brush state when pressing Alt * Automapping: Apply rules to selected area when there is one * Windows and Linux: Updated builds to Qt 5.10.1 * Linux: Indicate Tiled can open multiple files at once in desktop file * Lowered the minimum supported version of Qt to 5.5 ### Tiled 1.1.3 (6 March 2018) * Fixed crash when removing a tileset referenced by multiple objects * Fixed crash on paste when it introduced more than one new tileset * Fixed Invert Selection for non-infinite maps * Fixed Select All to not select objects on locked layers * Fixed logic determining the tilesets used by a tile layer * Fixed copy/paste changing object order (#1896) * Fixed tileset getting loaded twice when used by the map and a template * Fixed repainting issues on undo/redo for new maps (#1887) * JSON plugin: Fixed loading of infinite maps using CSV tile layer format (#1878) * Linux: Updated AppImage to Qt 5.9.4 * Updated Hungarian, Japanese, Norwegian Bokmål, Portuguese and Ukrainian translations ### Tiled 1.1.2 (31 January 2018) * Fixed possible crash while editing polygons * Fixed hang when loading map file with empty compressed layer data * Fixed selection of tile stamp to work on mouse click * Fixed tools not being up to date on modifier keys after activation * Fixed "Offset Map" action for infinite maps (#1866) * Templates view: Keep template centered when resizing view * Tile Collision Editor: Keep tile centered when resizing view * Tile Collision Editor: Display tool info text in status bar * JSON plugin: Fixed reading of infinite maps (#1858) * libtiled-java: Fixed some bugs (by Henry Wang, #1840) * libtiled-java: Fixed tile offset value not being considered (by digitalhoax, #1863) ### Tiled 1.1.1 (4 January 2018) * Fixed crash on load for template instances of non-tile objects * Windows Installer: Include the Qt SVG image plugin ### Tiled 1.1.0 (3 January 2018) * Added support for infinite maps (by Ketan Gupta, #260) * Added support for Wang tiles and related tools (by Benjamin Trotter) * Added support for reusable object templates (by Mohamed Thabet) * Added working directory setting for custom commands (by Ketan Gupta, #1580) * Added output of custom commands in Debug Console (by Ketan Gupta, #1552) * Added autocrop action based on tile layers (by Ketan Gupta, #642) * Added tool bar with tool-specific actions and settings (by Ketan Gupta, #1084) * Added shape fill tool for filling rectangles or circles (by Benjamin Trotter, #1272) * Added option to lock/unlock a layer (by Ketan Gupta, #734) * Added .xml as possible file extension for TMX files * Added keyboard shortcut for Save All (by Thomas ten Cate) * Added actions to remove a segment from polygon or to split a polyline (by Ketan Gupta, #1685) * Added icon for animation editor in the tileset editor (by Ketan Gupta, #1706) * Added display of flip bits for hovered tile in status bar (#1707) * Added ability to capture tiles while using fill tools (#790) * Added option to have mouse wheel zoom by default (#1472) * Added tab closing actions to context menu, and close by middle-click (by Justin Jacobs, #1720) * Added ability to reorder terrain types (by Justin Jacobs, #1603) * Added a point object for marking locations (by Antoine Gersant, #1325) * Added 'New Tileset' button when no tileset is opened (by Rhenaud Dubois, #1789) * Added 'Open File' button when no file opened (by Rhenaud Dubois, #1818) * Added support for custom input formats and TMX output to the --export-map command-line option * Added island RPG example based on Beach tileset by finalbossblues * Added file-related context menu actions to tileset tabs * Added action to reset to default window layout (by Keshav Sharma, #1794) * Added support for exporting tilesets, including to Lua format (by Conrad Mercer, #1213) * Keep object types sorted alphabetically (by Antoine Gersant, #1679) * Improved polygon node handles and drag behavior * Fixed %executablepath variable for executables found in PATH (#1648) * Fixed Delete key to delete selected polygon nodes when appropriate (by Ketan Gupta, #1555) * Fixed Terrain Brush going wild in some scenarios (#1632) * Fixed the "Embed in Map" checkbox to be persistent (#1664) * Fixed crash when saving two new maps using the same file name (#1734) * Fixed issues caused by paths not being cleaned (#1713) * Fixed suggested file name for tilesets to match the tileset name (by killerasus, #1783) * Fixed selection rectangle's shadow offset when zooming (by Antoine Gersant, #1796) * Fixed save dialog to reopen after heeding the file extension warning (by Antoine Gersant, #1782) * Fixed potential crash when zooming out too much (#1824) * Fixed potential crash after deleting object or group layers * Fixed Object Selection tool clearing selection on double-click * Enabled building with Qbs on macOS, including the Python plugin (by Jake Petroules) * Automapping: Don't fail if an input/inputnot layer isn't found * Automapping: Added a "StrictEmpty" flag to input layers * GMX plugin: Added support for defining views with objects (by William Taylor, #1621) * GMX plugin: Added support for setting scale and origin for instances (#1427) * GMX plugin: Added support for setting the creation code for instances and the map * GMX plugin: Start counting default tile layer depth from 1000000 (#1814) * tBIN plugin: Added read/write support for the tBIN map format (by Chase Warrington, #1560) * libtiled-java: Generate classes from XSD, some fixes and build with Maven (by Mike Thomas, #1637) * libtiled-java: Added support for manipulating non-consecutive tile IDs in a tileset (by Stéphane Seng) * Python plugin: Adjusted example scripts to API changes (by spiiin, #1769) * Flare plugin: Various changes (by Justin Jacobs, #1781) * TMW plugin: Removed since it is no longer needed * Updated Dutch, Bulgarian, English, French, German, Korean, Norwegian Bokmål, Spanish and Turkish translations ### Tiled 1.0.3 (29 August 2017) * Fixed crash on reload map (#1659, #1694) * Fixed possible crash on undo/redo in collision editor (#1695) * Fixed tile replacement to add tileset when needed (by Mohamed Thabet, #1641) * Fixed the display of the image source property for tilesets * Fixed shortcut for 'Copy tile coordinates' (Alt+C) in Portuguese translation (by olueiro) * JSON plugin: Fixed reading of tileset column count * JSON plugin: Fixed reading of custom properties on tile collision object group ### Tiled 1.0.2 (27 June 2017) * Added read-only tile and terrain properties in map editor (#1615) * Fixed Terrains view to display all tilesets with terrain * Fixed hang when trying to fill with a pasted stamp (#1617, #1624) * Fixed crash when editing collision when tile image wasn't loaded * Fixed rendering of tile objects when the image couldn't be loaded * Fixed rendering of tile object outlines for resized objects * Fixed labels shown on objects hidden via a group layer * Fixed updating of label positions when moving a group layer * GMX plugin: Fixed tile type inheritance for tile objects * Restored Ctrl+N shortcut on "New Map" action ### Tiled 1.0.1 (13 June 2017) * Made the zoom level used in Tilesets view persistent * Fixed mixed up polygon and polyline icons (by Ketan Gupta, #1588) * Fixed reset of font size when using font dialog (#1596) * Fixed several issues with the Properties dock (#1583, #1611) * Fixed centering on object on layer with offset (#1600) * Fixed handling of symbolic links in Recent Files menu and Maps view (#1589) * Fixed labels for objects in grouped object layers * Reverted the file format version back to "1.0" and added "tiledversion" attribute * Lua plugin: Fixed group layers being exported with "imagelayer" type (#1595) * Added Korean translation (by miru2533 and SshipSunBee, #1604) * Updated Russian and Chinese translations ### Tiled 1.0.0 (25 May 2017) * Added support for editing external tilesets (#242) * Added a text object with configurable font and wrapping (#1429) * Added layer grouping (#1038) * Added Tile.type and inherit tile object properties from the tile (#436, #1248) * Added a start page * Added selection of underlying objects with Alt modifier (by Yuriy, #1491) * Added an option to disable safe writing of files (#1402, #1404) * Added invert selection action (by Leon Moctezuma, #1423) * Added support for isometric terrain overlays and tile collision objects (#419, #757) * Added 180-degree mirroring mode to terrain brush with Alt modifier * Added short and consistent map format names to use with --export-map (by Marce Coll, #1382) * Added Swap Tiles action (by Alexander Münch, #866) * Added tileset background color property (#227) * Added 60 degree tile rotation support for hexagonal maps (by Victor Nicolaichuk, #1447) * Added a check for duplicates when adding tiles (by Simião, #1227) * Added option to run commands from menu as well as edit them (by Ketan Gupta, #943) * Added custom shortcuts for commands (by Ketan Gupta, #1456) * Added optional ID and Position columns to objects view (by i-ka, #1462) * Added an executable picker for custom commands (by Ketan Gupta, #942) * Added marching ants effect on selected objects (by Mohamed Thabet, #1489) * Added all open tilesets to the Tilesets view * Added auto-show/hide all views (Clear View) action (by erem2k, #563) * Added minimap in the resizing dialog (by Yuriy, #1516) * Added drag-n-drop support in Layers view (#178) * Added support for storing object type definitions in JSON format (#1313) * Added cut/copy/paste actions for custom properties (#515) * Allow changing the tile of tile objects (by Mohamed Thabet, #409) * Allow selecting a folder to fix multiple broken links at once * Added support for dragging external tilesets into the Tilesets dock * Added support for dragging images into image collection tilesets * Write out Tiled version in TMX/JSON "version" attribute (#1416) * Remember last view on map also for closed files (#905) * Remember tileset zoom level in the tileset editor (by Artem Sharganov, #408) * Change current layer depending on selected objects (by Glavak, #1424) * Improved support for using Tiled on HiDpi screens * Improved the behavior of the tile selection tool * Made Ctrl+D duplicate objects instead of deleting them * Use an eye icon instead of a checkbox for layer visibility (by Ketan Gupta, #1127) * JSON tileset: Save width/height of individual tile images * Linux: Added MIME type for tileset files * Fixed hexagonal rotation of tile stamps (by Bdtrotte, #1476) * Fixed handling of broken tile references, which now render as a red marker * Fixed manual reloading of images for image collection tilesets * Fixed Offset Layers tool to wait until mouse is moved * Fixed current stamp to always update when a tile is clicked * Fixed handling of pinch gestures (#1305) * Fixed flipping a group of objects to work like expected (by Vitek1425, #1475) * Fixed stamp brush to work better on staggered maps (by Bdtrotte) * Fixed objects offsetting while resizing (by Acuion, #1518) * Fixed fill tool for hexagonal maps (#883) * Fixed potential crash in Terrain Brush * Windows: Fixed menus when using OpenGL in full screen mode (#1576) * Windows: Added Sticker Knight and Python example scripts to installer (#819) * Windows: Fixed bringing existing Tiled window to foreground (#1256) * AutoMapping: Fixed object groups always getting added * AutoMapping: Improved map boundary handling (by Stefan Beller, #1224) * AutoMapping: Apply custom properties set on output layers * terraingenerator: Made the amount of columns configurable * terraingenerator: Copy tile properties from the source tilesets * Added Ukrainian translation (by Olexandr Nesterenko) * Added Hungarian translation (by Balázs Úr) * Added Finnish translation (by ekeimaja) * Updated Bulgarian, Dutch, French, German, Russian, Spanish and Turkish translations ### Tiled 0.18.2 (21 February 2017) * Fixed crash when deleting multiple selected objects * Fixed crash when moving multiple selected objects to another object layer * Fixed updating of values displayed in Objects and Layers views * GMX plugin: Added support for image collection tilesets * Object Types Editor: Improved behavior when adding new types * Linux: Fixed shipping of image format plugins in AppImage releases ### Tiled 0.18.1 (23 January 2017) * Fixed terrain brush for isometric staggered maps (by Clyde) * Fixed crash when resizing map causes objects to get removed * Fixed crash when duplicating an object layer * Fixed position of image layer after Resize or Offset Map * Fixed the quality of the minimap on HiDpi displays * Fixed Alt-drag behavior to not override resize handles * When adding a new layer, insert it above the current one * GMX plugin: Fixed positioning for non-tile objects and support scaling * GMX plugin: Export tile objects without a type as tiles * GMX plugin: Support horizontal and vertical flipping * Windows: Fixed encoding problems with command-line output * Windows: Fixed the architecture of shipped MSVC DLLs * Updated Chinese translation (by Clyde) ### Tiled 0.18.0 (20 December 2016) * Added Layer via Copy/Cut actions * Added support for Paste in Place action for tile layers * Added context menu to change custom property type (by Dmitry Hrabrov) * Added support for higher precision for custom floating point properties * Added %mappath variable to commands (by Jack Roper) * Added snapping to pixels (by Mamed Ibrahimov) * Added right-click to clear the tile selection * Added a context menu action to reset the size of tile objects * Added exporter for Game Maker Studio room files (by Jones Blunt) * Added Move Up/Down buttons to Objects view (by iskolbin) * Added pixel coordinates to status bar for object tools (by iskolbin) * Added Sticker Knight platformer example (by Ponywolf) * tmxrasterizer: Added --size argument and support local file URLs * tmxrasterizer: Use smooth pixmap transform by default * Linux: Register tmxrasterizer as thumbnail generator for TMX files * Allow scrolling past map edges with mouse wheel * Enabled HiDpi scaling and improved the quality of some icons * Reversed the order of the objects in the Objects view * JSON plugin: Added Node.js support to the JavaScript export * Updated TMX schema definition (by assofohdz) * Fixed unfinished objects getting saved * Fixed OpenGL rendering mode when application is scaled (HiDpi screens) * Fixed Remove and Rename actions for predefined properties * Windows: Fixed console output * libtiled-java: Use Maven, deploy to OSSRH and code updates (by Mike Thomas) * libtiled-java: Added a basic isometric renderer (by Mike Thomas) * Updated Brazilian Portuguese, Chinese, Czech, Dutch, Hebrew, Norwegian Bokmål and Spanish translations ### Tiled 0.17.2 (28 November 2016) * Fixed bug with editing type and name for multiple objects * Fixed ability to change the image of a tile in an image collection tileset * Fixed wrong layer name getting edited when switching maps * Fixed possible crash when missing tileset images and using tile animations * Compiled against Qt 5.6.2 on macOS to avoid crashes with Qt 5.7 ### Tiled 0.17.1 (4 November 2016) * Fixed wrong alpha value when opening the color picker dialog * Fixed saving of object group color alpha value * Fixed tile id adjustment for newly added tilesets * Fixed "Object Properties" entry in the context menu to be always enabled (by Erik Schilling) * Fixed out-of-sync tile selection during layer offset change (by nykm) * Fixed hidden objects becoming visible when offsetting the map (by ranjak) * Fixed problems with using predefined file properties * Lua plugin: Fixed type of animation frame properties * OS X: Use standard shortcut for toggling full screen * OS X: Fixed compile when pkg-config is present * Windows: Include the Defold plugin * Windows: Added support for DDS, TGA, WBMP and WEBP image formats * Linux: Added 64-bit AppImage (with help from Simon Peter) * Chinese translation updates (by endlesstravel and buckle2000) * French translation updated (by Yohann Ferreira) ### Tiled 0.17.0 (15 August 2016) * Added a platform-independent theme, which can be dark (#786) * Added Paste in Place action for objects (#1257) * Added custom property type 'color' (#1275) * Added custom property type 'file' (#1278) * Added option for removing invisible objects in resize dialog (#1032, by Mamed Ibrahimov) * Added support for editing multi-line string properties (#205) * Added %layername and %objectid to available command variables * Added support for scrolling in tileset view with middle mouse button (#1050, with Will Luongo) * Added a rectangle erase mode to the eraser (#1297) * Added export to Defold .tilemap files (by Nikita Razdobreev) * Added simple full screen mode * Added "Copy File Path" and "Open Containing Folder" actions to tab context menu * Added warning when saving with the wrong file extension * Added color picker for setting transparent color of a tileset (#1173, by Ava Brumfield) * Various object selection tool improvements * Allow creating rectangle/ellipse objects in any direction (#1300) * Enabled nested views and grouped dragging for stacked views (#1291) * Fixed updating object drag cursor when exiting resize handles (#1277) * Fixed tile animations to stay in sync when changing them (#1288) * Fixed preservation of tile meta-data when tileset width is changed (#1315) * Updated Bulgarian, Dutch, German, Norwegian Bokmål, Russian, Spanish and Turkish translations ### Tiled 0.16.2 (7 July 2016) * JSON plugin: Fixed loading of custom properties on terrains * Lua plugin: Fixed missing export of object layer drawing order * Fixed tile index adjustment when tileset image changes width * Fixed --export-map [format] option * Fixed shortcuts for some tools when language is set to Dutch * Fixed a painting related bug affecting the top edge after AutoMapping * Fixed issues when compiling against Qt 5.6 on OS X and Windows * Fixed crash on maximizing with Maps view open on Windows (Qt 5.6.1) * Fixed focus issue while typing predefined object types (Qt 5.6) * Fixed silent fail when saving to restricted location on Windows (Qt 5.6) ### Tiled 0.16.1 (6 May 2016) * Fixed auto-updater not enabled for Windows release * Fixed saving of object IDs assigned to tile collision shapes * Fixed crash when pressing Backspace with Custom Properties section selected * Fixed crash on exit when leaving the Tile Collision Editor open * Added Norwegian Bokmål translation (by Peter André Johansen) * Updated Turkish translation ### Tiled 0.16.0 (28 March 2016) * Added checking for updates, based on Sparkle and WinSparkle * Added default property definitions to object types (with Michael Bickel) * Added types to custom properties: string, float, int, boolean (with CaptainFrog) * Added Properties view to the Tile Collision Editor (by Seanba) * Added a reset button for color properties * Added eraser mode to Terrain Brush and fixed some small issues * Reuse existing Tiled instance when opening maps from the file manager (with Will Luongo) * Allow setting tile probability for multiple tiles (by Henrik Heino) * New MSI based installer for Windows * Optimized selection of many objects * libtiled-java: Fixed loading of maps with CSV layer data that are not square (by Zachary Jia) * Fixed potential crash when having Terrain Brush selected and switching maps * Updated Dutch, French, German, Japanese, Russian and Spanish translations ### Tiled 0.15.2 (6 March 2016) * Added Turkish translation (by Nuri Uzunoğlu) * Fixed hiding of object labels when deleting an object layer * Fixed updating of object label colors when changing object types * TMX: Added image size attributes to image layer images * Updated Brazilian Portuguese translation ### Tiled 0.15.1 (30 January 2016) * Fixed adding/removing object name labels when set to always visible * Fixed a problem with 'Execute in Terminal' on OS X * Fixed mouse coordinate conversion for hexagonal renderer * Fixed image layer offset handling * Update Czech translation ### Tiled 0.15.0 (4 January 2016) * Allow loading maps with broken external references * Allow plugins to be enabled/disabled * Allow changing tileset image parameters * Allow changing the images of tiles in a collection tileset * Allow changing external tileset references * Allow panning over the edges of the map * Added Terrain Generator tool * Added column count property to image collection tilesets * Added a combo box for changing the current layer to the status bar * Moved the AutoMapping while drawing toggle into the menu * Removing tiles from collection tilesets no longer changes tile IDs * Unified layer offset handling * Default tile layer data format changed to CSV * Deprecated pure XML and Gzip-compressed tile layer data formats * Fixed random tile picker for tiles with zero probability (by Henrik Heino) * Fixed saving of alpha value of the map background color * Fixed crash in tmxrasterizer and tmxviewer * Fixed tmxrasterizer not reporting write errors * Fixed isometric rendering bug with odd tile heights (by Ryan Schmitt) * Updated Bulgarian, Dutch, French, German, Japanese, Russian and Spanish translations ### Tiled 0.14.2 (12 October 2015) * Added Polish translation (by Tomasz Kubiak) * Fixed layer offsets missing in the Lua export * Fixed JSON tileset format missing in 'Add External Tileset' action * Fixed language selection entries for Portuguese * Fixed an issue with copy/pasting when using image collection tilesets * Updated Brazilian Portuguese translation ### Tiled 0.14.1 (28 September 2015) * Added missing 'renderorder' property to the Lua export * Fixed editing of properties of tiles captured from the map ### Tiled 0.14.0 (21 September 2015) * Added support for custom external tileset formats (JSON format added) * Added support for shifting layers by some distance in pixels * Added back object name labels in a much improved form * Added tile stamp variation support to the fill tool * Synchronize tileset selection when capturing tiles from the map * Change tile in collision and animation editors based on selected tile object * Keep the active brush when switching maps * Python plugins can now add export-only map formats * Fixed updating of current tile when changing map * Fixed animated tile overlay to look less odd in some cases * Fixed Save As dialog popping up when saving fails * Fixed tilesets view collapsing when switching maps on OS X * Updated Russian, Spanish, Czech, French, Japanese, German, Dutch and Bulgarian translations ### Tiled 0.13.1 (6 September 2015) * Added Bulgarian translation (by Lyubomir Vasilev) * Updated Spanish, French and Dutch translations ### Tiled 0.13.0 (10 August 2015) * Added persistent Tile Stamps with support for variations (#969) * Added Select Same Tile tool (by Mamed Ibrahimov) * Added option to disable opening of last files on startup (by Mamed Ibrahimov) * Added tilecount property to TMX, JSON and Lua map formats (#806) * Added tileset properties to Properties view, as read-only (by Mamed Ibrahimov) * Added Save All action (by Mamed Ibrahimov) * Added translation of command line messages (by Mamed Ibrahimov) * Added menu item linking to online documentation * Object selection outlines are now drawn on top of everything * Select new objects after they have been created * Made the starting point for polylines and polygons visible * Use the tile probability property also in random mode * Ungrouped position and size properties (#892) * CSV plugin: Extended to export all tile layers (by Alejandro Cámara) * Lua and JSON plugins: Added support for layer data compression * Fixed crash when changing flipping flag for multiple objects (by Mamed Ibrahimov) * Fixed Ctrl+T causing a crash when no maps are open * Fixed availability of 'Execute in Terminal' command on Linux with Qt 5 * Fixed drag object mouse cursor to appear only when it should * Fixed selected file format when doing Save As with a non-TMX map * Fixed problems with infinate scaling factors when resizing objects * Require at least Qt 5.1.0 * Require compiler support for C++11 * Updated Russian, German, Czech and Italian translations ### Tiled 0.12.3 (1 June 2015) * Fixed updating of map view when rotating objects with Z key * Fixed updating of map view when joining, splitting or deleting polygon nodes * Fixed a crash when reading an invalid TMX file * Fixed live automapping updates when moving the mouse fast * Made Backspace work for deleting collision objects and animation frames ### Tiled 0.12.2 (22 May 2015) * Fixed updating of map view when moving objects with arrow keys * Fixed compatibility issue with tile objects affecting the JSON format ### Tiled 0.12.1 (19 May 2015) * Fixed updating of map view when changing objects from properties view * Fixed updating of Properties view while objects are moved/resized * Fixed terrain information getting lost when reading JSON maps ### Tiled 0.12.0 (14 May 2015) * Added support for resizing any object as well as multiselection (with mauve) * Added Control modifier for preserving aspect ratio while resizing * Added Shift modifier for resizing with origin in the middle * Added Alt modifier for suppressing selection changes when starting to drag * Added a Magic Wand selection tool (by Henry Jia) * Added tile probability attribute to tile properties view * Added a Donate button to the About dialog * Added a Patreon dialog to the Help menu * Added an --export-formats command line option * Remember the directory used for external tilesets (by Henry Jia) * Don't set a window icon on Mac OS X * Changed the way tile probability is applied (now it's relative) * Fixed a crash in the terrain brush * Fixed object selection behavior when Shift is held while clicking on nothing * Fixed grid snapping being applied for staggered maps even when not enabled * Fixed infinite memory allocation loop on invalid tile size in TMX file * Fixed file icon associated with TMX files on Windows * Fixed automapping of tile objects (by Seanba) * Fixed 'Export as Image' to handle out of memory errors * Fixed TMX files to be written in native line endings * Fixed .desktop file missing %f argument for passing files (by Ying-Chun Liu) * Fixed cursor position resetting when editing object type * Added Arabic (Algeria) translation (by Damene Abdelkader) * Updated, Czech, Dutch, French, German, Italian, Japanese, Portuguese, Russian and Spanish translations ### Tiled 0.11.0 (11 January 2015) * Added support for hexagonal maps (offset coordinates) * Added 'Export' action to repeat the last export * Added a shortcut for the Reload action (Ctrl+R) * Added ability to rename custom properties (by arn00d) * Added unique IDs to objects (by Mark van Rij) * Added a CSV export plugin * Added visual feedback when properties differ between multiple selected objects (by Parker Miller) * Added command-line export (by Brandon Dillon) * Allow dynamically changing the map orientation and grid size * Suppress the standard main window context menu in the collision editor * Lua plugin: Write out tile terrain information * Lua plugin: Include Tiled version in exported file * Flare plugin: Fixed ability to open maps with absolute paths * Fixed grid rendering for staggered maps * Fully support building and running Tiled with Qbs * Updated Czech, Dutch, French, German, Italian, Japanese, Portuguese and Spanish translations ### Tiled 0.10.2 (23 October 2014) * Fixed hit area for polygon nodes when editing polygons while zoomed in or out * Fixed another possible crash in the orthogonal renderer * Fixed Select All action to work for object layers * Fixed map pixel size preview for staggered maps * Fixed repainting issues when tiles extend beyond their layer boundaries * Fixed repainting issues when using tiles smaller than the grid size * Display errors non-modal when applying automatic automapping rules * Flare plugin: Fixed coordinate format for import and export (by Justin Jacobs) * Lua plugin: Write out Image layer position * Small updates to the Italian translation (by Omnomnobot) ### Tiled 0.10.1 (21 September 2014) * Fixed a crash that could happen when using the terrain tool * Fixed missing background color information from Lua export * Allow using up to 3 or 4 GB RAM on 32 or 64 bit Windows systems respectively ### Tiled 0.10.0 (14 September 2014) * Added object rotation (sponsored by Ben Wales) * Added support for explicit object ordering (sponsored by Ben Wales) * Added new Properties window with a rewritten properties editor * Added support for writing plugins in Python (by Samuli Tuomola) * Added image collection tilesets (sponsored by Jamie Rocks) * Added map file watching and automatic reloading (sponsored by FlatRedBall.com) * Added support for moving objects with arrow keys (sponsored by Ben Wales) * Added a 'snap to fine grid' option (by Xenodora) * Added support for JavaScript (JSONP) load/save (by Dobes Vandermeer) * Added more zoom levels (by Joel Leclerc) * Added shortcuts for finishing and canceling object creation * Added a tile collision editor for defining collision shapes on tiles * Added a tile animation editor and play defined animations * Allow changing properties of multiple objects/tiles simultanously (by Parker Miller) * Added tile rendering-order map property (by Lennert Raesch) * Added support for changing the object line width * Added support for CSV-encoded layers to libtiled-java (by Alexei Bratuhin) * Added support for ellipse and polygon objects to libtiled-java (by Hendrik Brummermann) * Added terrain properties to JSON export (by Dennis Hostetler) * Added support for moving image layers in the Properties window (by Michael Aquilina) * Added option to include background image when saving as image (by Sean Humeniuk) * Added options to control layer visibility to tmxrasterizer (by Nathan Tolbert) * Added display of tile ID in status bar (by Champi080) * Added support for objects on staggered isometric maps (by Remco Kuijper) * Added support for staggered maps to tmxviewer and tmxrasterizer * Added a tool for moving the image of an image layer (by Mattia Basaglia) * Added button to the tileset dock as shortcut to add a tileset (by Erik Schilling) * Allow changing order of open document tabs (by Sean Humeniuk) * Changed object position and size units from tiles to pixels (by mauve) * Allow adding multiple tilesets at once (by mauve) * Make highlighted grid cells outside map red (by Sean Humeniuk) * Allow changing the drawing offset of a tileset * Fixed hang on Mac OS X when drawing certain ellipse objects * Fixed removal of polygon/polyline objects when resizing a map * Fixed writing of tile offset in the Lua export * Fixed updating of image layer when changing its image * Fixed start drag distance check when editing polygons and moving objects * Fixed console output of tmxrasterizer on Windows * Raise the Layers dock for editing a new layer's name * Avoid saving truncated files when compiled against Qt 5.1 or higher (by Erik Schilling) * Made Tiled registering \*.tmx as MIME-type (by Erik Schilling) * Added Traditional Chinese translation (by Yehnan Chiang) * Updated Czech, Dutch, French, German, Russian and Spanish translations ### Tiled 0.9.1 (27 July 2013) * Added saving of map background to JSON format (by Petr Viktorin) * Added saving of terrain information to JSON format (by Petr Viktorin) * Object Selection tool now always start selecting objects when holding Shift * Increased maximum for tileset margin and spacing to 9999 * Some updates to libtiled-java (by Oskar Wiksten) * Install the automappingconverter application (relevant on Linux) * Avoid using Windows 95 style (was used on some Linux desktop environments) * Removed layer name checks from the Flare export plugin (by Stefan Beller) * Double-clicking an object now opens the Object Properties dialog * Fixed Object Properties dialog not remembering its size * Fixed object drawing order for image saving and mini-map * Fixed some plurals in English translation * Fixed line widths when zooming in Qt 5 * Fixed updating of image layer when its opacity or image is changed * Fixed display of grid in tileset view on certain zoom levels * Fixed save in wrong format after opening a map with plugin (by Mike Hendricks) * Fixed closing Tiled being very slow with many maps * Fixed saving of image layer properties in the Lua format * Fixed escaping of special characters in the Lua format * Fixed handling of relative paths for image layers in the JSON plugin ### Tiled 0.9.0 (27 January 2013) * Added objects dock and per-object visibility toggle (by Tim Baker) * Added maps dock (by Tim Baker) * Added terrain tool for automatic terrain transitions (by Manu Evans) * Added a minimap (by Christoph Schnackenberg) * Added a staggered isometric map renderer, still without object layer support * Added basic image layer support (by Gregory Nickonov and Alexander Kuhrt) * Added display of current layer to the status bar (by Tim Baker) * Added editable combo box for changing the zoom level (by Tim Baker) * Added support for multiple input layers to automapping (by Stefan Beller) * Added option to apply automapping rules while editing (by Stefan Beller) * Added a converter to update old automapping rules (by Stefan Beller) * Added support for objects layers to automapping (by Stefan Beller) * Added support for random mode to the fill tool (by Stefan Beller) * Added Replica Island plugin (by Eric Kidd) * Added option to change the grid color (by Stefan Beller) * Added support for ellipse objects (by devnewton and Christoph Schnackenberg) * Added name labels for objects on isometric maps (by Andrew Motrenko) * Added map property for changing the background color (by Emmanuel Barroga) * Added shortcut to manually reload tilesets (Ctrl-T) (by Michael Williams) * Added toggle for showing tile object outlines * Added support for pinch zooming (by Pierre-David Bélanger) * Added initial (non-GUI) support for individual and/or embedded tile images (by Petr Viktorin) * Added reading support to Flare plugin (by Stefan Beller) * Added a TMX rasterizer command line tool (by Vincent Petithory) * Added man pages and desktop file (by Erik Schilling) * Made the size and position of most dialogs persistent * Respect the original layer data format of a loaded map (by Ben Longbons) * Marked Tiled as high-resolution capable on Mac OS X * Improved handling of external tilesets in Lua export * Reverted tilesets view back to tabs, but with menu button (by Stefan Beller) * Allowed plugins to support multiple file name filters (by Samuli Tuomola) * Allow saving in any format that can also be read (by Stefan Beller) * Fixed eraser skipping tiles when moving fast * Fixed bug in Flare plugin (by Clint Bellanger) * Fixed compile against Qt 5 (by Kenney Phillis) * Fixed resolving of symbolic links while loading map * Fixed a crash that could happen after trying to load a faulty map * Updated Portuguese, Dutch, German, Spanish, Russian, French, Japanese, Chinese, Brazilian Portuguese, Hebrew and Czech translations ### Tiled 0.8.1 (7 May 2012) * Added MacOS X Lion full screen support * Fixed crash that could happen when painting with a pasted stamp * Fixed zoom sensitivity for finer-resolution mouse wheels * Fixed issues when using quickstamps in combination with the fill tool * Fixed stamp tool not to miss tiles when drawing fast * Fixed automapping to work with external tilesets * Fixed crash in automapping when dealing with broken rule files * Fixed object type getting erased on pressing Enter * Changed the license of libtiled-java from LGPL to BSD * Updated Italian and Hebrew translations ### Tiled 0.8.0 (11 December 2011) * Added support for polygon and polyline objects * Added support for tile rotation * Added support for defining the color of custom object types * Added a Delete action to delete selected tiles or objects * Added random mode to the stamp brush * Added Flare export plugin * Added JSON plugin that supports both reading and writing * Added ability to rename tilesets * Added a mode in which the current layer is highlighted * Added support for specifying a tile drawing offset * Added a shortcut to copy the current tile position to clipboard (Alt+C) * Added a command line option to disable OpenGL * Allow custom properties on tilesets * Many automapping improvements * Improved tileset dock to handle a large amount of tilesets better * Made the 'Show Grid' option in the tileset view persistent * Raised the tile size limit in the New Tileset dialog from 999 to 9999 * Correctly handle changes in the width of a tileset image * Worked around a long standing crash bug * Added Russian translation * Updated the German, Japanese, Spanish, Chinese, Czech, Dutch, French and Brazilian Portuguese translations ### Tiled 0.7.1 (27 September 2011) * Select stamp tool when selecting tiles in tileset view * Enable anti-aliasing for OpenGL mode * Small improvement to the Lua export plugin (incompatible!) * Fixed a bug in the Create Object tool * Fixed reading of maps without tilesets but with a tile layer * Fixed position of tile objects to center on the mouse on insertion * Updated the Czech translation ### Tiled 0.7.0 (20 July 2011) * Added support for horizontal and vertical flipping of tiles * Added copy/paste support for objects * Added merge layer down action * Added Show or Hide all Other Layers action * Added actions to select the previous/next layer * Added Crop to Selection action * Added a Lua export plugin * Added Droidcraft plugin to read and export the map files * Added option to turn off grid in the tileset view * Added hand scrolling while holding the spacebar * Made the object context menu available in all object tools * Display tile coordinates also when using object tools * Various improvements to running external commands * Automapping stability and memory consumption improvements * Objects that fall outside of the map on resize are now removed * Fixed problems with watching tilesets multiple times * Fixed several issues related to restoring previously opened files * Updated Brazilian Portuguese, Chinese, German, Spanish, Japanese, Hebrew, Portuguese, Dutch and French translations ### Tiled 0.6.2 (2 May 2011) * Fixed object layers losing their color when resizing the map * Fixed the tabs in the Tilesets dock to use scroll buttons on MacOS X * Fixed window title to update when saving a map with a different name ### Tiled 0.6.1 (3 April 2011) * Added ability to open multiple files at once * Added Ctrl+PageUp/PageDown shortcuts to switch documents * Added an example to show how automatic mapping works * Fixed bugs, crashes and leaks in the automatic mapping feature * Fixed starting point for circles to be the click position * Fixed a memory leak when using lines or circles * Fixed layer opacity to be taken into account when saving as image * Fixed endless loop when tile size is set to 0 * Fixed crash when passing an empty string as command line parameter * Fixed problems with the tileset view after switching documents * Fixed tile objects to be removed when their tileset is removed ### Tiled 0.6.0 (26 January 2011) * Added support for opening multiple maps in one session * Added support for placing tiles as objects * Added automatic mapping feature, allowing placing of tiles based on rules * Added ability to save/restore up to 9 stamps with Ctrl+ * Added an object selection tool, allowing moving/deleting multiple objects * Added ability to run external commands * Added support for drawing lines and ellipses with the stamp brush * Added icons to distinguish tile layers from object layers * Added "Move To Layer" submenu to the context menu of objects * Added option to use hardware rendering based on OpenGL * Added a T-Engine4 map export plugin * Added a simple TMX viewer application (BSD licensed) * Added a New Layer dropdown menu to the layers dock * Added a checkbox that enables snap to grid permanently * Added an initial version of libtiled-java (LGPL licensed) * Added Chinese and Hebrew translations * Allowed dragging an image onto Tiled to add a tileset * Center the map when it is smaller than the map view * Remember the selected layer across restarts * Changed the default layer data format to use zlib rather than gzip * Store the tileset image width and height in the map file * Compile fixes related to linking zlib * Fixed the current stamp to get updated when switching tilesets * Fixed the maximum sizes of the resize map dialog * Fixed build issues when an older version of libtiled is installed * Fixed saving of property when clicking OK while editing on MacOS X * Allow Backspace to delete properties to make it easier on a MacBook * Associate tmx files with Tiled on MacOS X * Changed the license of libtiled from GPL to BSD * Updated Czech, Spanish, German, Brazilian Portuguese, Dutch and French translations ### Tiled 0.5.1 (2 September 2010) * Fixed saving of objects when tile width is different from tile height * Updated Czech translation ### Tiled 0.5.0 (30 June 2010) * Added support for import and export plugins * Added support for external tilesets * Added undo for adding tilesets and ability to remove tilesets * Added error handling to the New Tileset dialog * Added ability to change tileset order by dragging them around * Added option to draw the tile grid when saving as image * Added a context menu and tool buttons to the layer dock * Added Latvian translation * Added an install target to the Makefile * Open local files when they are dropped onto Tiled * Allow changing position and size of objects in the Object Properties dialog * Fixed rendering issues with tiles wider than the tile width of the map * Fixed eraser and fill tool working on invisible layers * Fixed a crash when using some tools when no map is loaded * Fixed compile errors related to detecting static builds * Fixed the Save dialog not suggesting any particular file extension * Updated Japanese, Dutch, German, Brazilian Portuguese, French, Portuguese and Spanish translations ### Tiled 0.4.1 (14 April 2010) * Added support for saving tile layer data as CSV * Added shift modifier to bucket fill tool for filling the selection * Added Brazilian Portuguese, Japanese, French, Italian and Czech translations * Made values used in the New Map and New Tileset dialogs persistent * Fixed drawing selection highlight where brush is not painting * Fixed an incompatibility with Tiled Java in 'trans' attribute ### Tiled 0.4.0 (30 January 2010) * Added support for isometric maps * Added automatic reloading of tileset images when they change * Added Offset Map action that can shift a set of layers by a certain amount * Added a fill tool * Added ability to duplicate map objects * Added support for choosing the tile layer data format used when saving * Added mouse wheel zooming support to the tileset view * Added an object display color attribute to object groups * Added ability to edit tile properties through a context menu * Made writing out a DTD reference optional and disabled it by default * Made translations functional * Updated Dutch, Portuguese, Spanish and German translations ### Tiled 0.3.1 (22 November 2009) * Enabled undo command compression for stamp brush and eraser * Fixed reading of maps with non-binary-encoded layer data * Fixed a compile issue on Mac OS X related to QXmlStreamWriter * Fixed a crash when loading a map while holding Ctrl * Confirm overwrite on the right moment for 'Save as Image' dialog ### Tiled 0.3.0 (13 November 2009) * Added a tile selection tool * Added support for cut, copy and paste * Added current cursor position to the status bar * Added keyboard shortcuts to switch tools * Added scrolling the map view with middle mouse button * Snap objects to the grid when Ctrl is pressed ### Tiled 0.2.0 (1 October 2009) * Added support for zooming the map view * Added an eraser tool that allows you to erase tiles * Added ability to save a map as an image * Added support for masking tileset images based on a certain color * Added a slider to change the opacity of the current layer * Fixed the minimum row and column size in the tileset view * Fixed stamp creation when not dragging topleft to bottomright ### Tiled 0.1.0 (1 September 2009) tiled-1.3.2/README.md000066400000000000000000000104651361206041500141010ustar00rootroot00000000000000Tiled Map Editor - https://www.mapeditor.org/ About Tiled ------------------------------------------------------------------------------- Tiled is a general purpose tile map editor for all tile-based games, such as RPGs, platformers or Breakout clones. Tiled is highly flexible. It can be used to create maps of any size, with no restrictions on tile size, or the number of layers or tiles that can be used. Maps, layers, tiles, and objects can all be assigned arbitrary properties. Tiled's map format (TMX) is easy to understand and allows multiple tilesets to be used in any map. Tilesets can be modified at any time. [![Build Status](https://travis-ci.org/bjorn/tiled.svg?branch=master)](https://travis-ci.org/bjorn/tiled) [![Build status](https://ci.appveyor.com/api/projects/status/ceb79jn5cf99y3qd/branch/master?svg=true)](https://ci.appveyor.com/project/bjorn/tiled/branch/master) [![Snap Status](https://build.snapcraft.io/badge/bjorn/tiled.svg)](https://build.snapcraft.io/user/bjorn/tiled) [![Bountysource](https://www.bountysource.com/badge/tracker?tracker_id=52019)](https://www.bountysource.com/trackers/52019-tiled?utm_source=52019&utm_medium=shield&utm_campaign=TRACKER_BADGE) [![Translation status](https://hosted.weblate.org/widgets/tiled/-/shields-badge.svg)](https://hosted.weblate.org/engage/tiled/?utm_source=widget) About the Qt Version ------------------------------------------------------------------------------- Tiled was originally written in Java. In 2008, work began to develop a faster, better looking, and easier-to-use version of Tiled based on the Qt framework. This decision was made as the Qt framework has a greater feature set than is offered by the standard Java libraries. Compiling ------------------------------------------------------------------------------- Before you can compile Tiled, you must ensure the Qt (>= 5.6) development libraries have been installed as well as the Qbs build tool: * On Ubuntu/Debian: `sudo apt install qt5-default qttools5-dev-tools zlib1g-dev qtdeclarative5-dev qbs` * On Fedora: `sudo dnf builddep tiled` * On Arch Linux: `sudo pacman -S qt qbs` * On macOS with [Homebrew](https://brew.sh/): + `brew install qbs` + `brew link qt5 --force` If you want to build the Python plugin, you additionally need to install the Python 3 development libraries: * On Ubuntu/Debian: `sudo apt install python3-dev` * On Windows: https://www.python.org/downloads/windows/ Alternatively, you can [download Qt here](https://www.qt.io/download-qt-installer). You will still need to install a development environment alongside and some libraries depending on your system, for example: * On Ubuntu/Debian: `sudo apt install build-essential zlib1g-dev libgl1-mesa-dev` * On Windows: Choose "MinGW" Qt version, or install Visual Studio * On macOS: Install Xcode The easiest way to compile and run Tiled is to open `tiled.qbs` in Qt Creator and run the project from there. From the command-line, you may need to set up Qbs before you can build Tiled (you will also need to make sure the version of Qt you want to use is in your path): qbs setup-toolchains --detect # setup toolchains qbs setup-qt --detect # setup Qt (not needed since Qbs 1.13) qbs # build Tiled You can now run Tiled as follows: qbs run -p tiled ### Working with Visual Studio 2017 Once Qbs is set up (see previous instructions), it is possible to generate a Visual Studio 2017 project with it that allows you to code, compile and run using that IDE. This can be done with the following command: qbs generate -g visualstudio2017 Installing ------------------------------------------------------------------------------- To install Tiled, run `qbs install` from the terminal. By default, Tiled will be installed to `/install-root`. The installation prefix can be changed when building Tiled. For example, to use an installation prefix of `/usr`: qbs qbs.installPrefix:"/usr" To install Tiled to a packaging directory: qbs install --install-root /tmp/tiled-pkg By default, Tiled and its plugins are compiled with an Rpath that allows them to find the shared *libtiled* library immediately after being compiled. When packaging Tiled for distribution, the Rpath should be disabled by appending `projects.Tiled.useRPaths:false` to the qbs command. tiled-1.3.2/appveyor.yml000066400000000000000000000104701361206041500152060ustar00rootroot00000000000000clone_depth: 200 version: '1.3.{build}' cache: - C:\Users\appveyor\.m2 - C:\ProgramData\chocolatey\bin -> appveyor.yml - C:\ProgramData\chocolatey\lib -> appveyor.yml environment: BUTLER_API_KEY: secure: j7JM5L6KeqpnQukzJLsm7J6oV92SpmyEZLSoED1pZ3gQ79VIkdxtbQmTkqUNZPsz matrix: - QTDIR: C:\Qt\5.12\mingw73_64 PYTHONHOME: C:\Python37-x64 MINGW: C:\Qt\Tools\mingw730_64 DEFAULT_PROFILE: x86_64-w64-mingw32 PUSH_RELEASE: true TILED_ITCH_CHANNEL: windows-64bit - QTDIR: C:\Qt\5.6\mingw49_32 PYTHONHOME: C:\Python37 MINGW: C:\Qt\Tools\mingw492_32 DEFAULT_PROFILE: i686-w64-mingw32 PUSH_RELEASE: false TILED_ITCH_CHANNEL: winxp-32bit configuration: Release install: - choco install -y qbs --version 1.13.1 - nuget install secure-file -ExcludeVersion - set PATH=%PATH%;%QTDIR%\bin;%MINGW%\bin build_script: - FOR /F "tokens=*" %%i in ('git describe') do SET COMMITNOW=%%i - set VERSION_DATE=%DATE:~10,4%.%DATE:~4,2%.%DATE:~7,2% - if defined APPVEYOR_REPO_TAG_NAME (set TILED_RELEASE=true) else (set TILED_SNAPSHOT=true) - if defined TILED_RELEASE set TILED_VERSION=%APPVEYOR_REPO_TAG_NAME:~1% - if defined TILED_RELEASE echo Building Tiled %TILED_VERSION%... (from %COMMITNOW%) - if defined TILED_SNAPSHOT set TILED_VERSION=%APPVEYOR_BUILD_VERSION% - if defined TILED_SNAPSHOT echo Building Tiled snapshot %TILED_VERSION%... (from %COMMITNOW%) - git clone --depth 1 -b master https://github.com/facebook/zstd.git - cd zstd/lib - set CC=gcc - mingw32-make -j2 libzstd.a - cd ../../ - qbs --version - qbs setup-toolchains --detect - qbs config defaultProfile %DEFAULT_PROFILE% - if defined TILED_RELEASE (set TILED_ITCH_VERSION=%TILED_VERSION%) else (set TILED_ITCH_VERSION=%VERSION_DATE%) - if defined TILED_SNAPSHOT (set TILED_ITCH_CHANNEL=%TILED_ITCH_CHANNEL%-snapshot) - if not defined APPVEYOR_PULL_REQUEST_NUMBER if [%APPVEYOR_REPO_BRANCH%]==[snapshot] set PUSH_TO_ITCH=true - qbs build --all-products config:release projects.Tiled.windowsInstaller:true projects.Tiled.enableZstd:true - qbs build --all-products config:itch qbs.buildVariant:release projects.Tiled.version:%TILED_ITCH_VERSION% projects.Tiled.enableZstd:true - cd util\java - mvn --version - mvn clean install - cd ..\.. after_build: - cd release - cd installer* - move tiled-*.msi %APPVEYOR_BUILD_FOLDER% - cd ..\.. - cd itch - cd archive* - move tiled-*.7z %APPVEYOR_BUILD_FOLDER% - cd ..\.. - if defined PUSH_TO_ITCH dist\win\push-to-itch.bat artifacts: - name: Installer path: 'tiled-*.msi' - name: Archive path: 'tiled-*.7z' deploy: - provider: GitHub release: Tiled $(TILED_VERSION) auth_token: secure: 57ahePdHlJPeOX8/MqsIg5ho4x512wvAbwRA7TkXAOav/JTHvkTG5gf8k37/883r artifact: /.*\.msi/ draft: true on: appveyor_repo_tag: true push_release: true - provider: FTP protocol: sftp host: update.mapeditor.org username: update password: secure: YPoSL+S82PCgS5PYbhtxQv0YD7uwZAX9LhjJBBbDGvk= folder: update.mapeditor.org/snapshots-win artifact: /.*\.(msi|7z)/ on: branch: snapshot push_release: true - provider: Webhook url: https://app.signpath.io/API/v1/670574d6-49bf-4a0c-824a-3ae977077079/Integrations/AppVeyor?ProjectKey=tiled&SigningPolicyKey=test-signing authorization: secure: 4E7IuM1Ftvdkx43gsqI3tUWb6tcvrfKB22sa6DsWaBzT+zv3DqceDCk0qc/JqTO+Er5UQNYwolmWBzMdys6fVA== on: appveyor_repo_tag: false push_release: true - provider: Webhook url: https://app.signpath.io/API/v1/670574d6-49bf-4a0c-824a-3ae977077079/Integrations/AppVeyor?ProjectKey=tiled&SigningPolicyKey=release-signing authorization: secure: 4E7IuM1Ftvdkx43gsqI3tUWb6tcvrfKB22sa6DsWaBzT+zv3DqceDCk0qc/JqTO+Er5UQNYwolmWBzMdys6fVA== on: branch: snapshot push_release: true - provider: Webhook url: https://app.signpath.io/API/v1/670574d6-49bf-4a0c-824a-3ae977077079/Integrations/AppVeyor?ProjectKey=tiled&SigningPolicyKey=release-signing authorization: secure: 4E7IuM1Ftvdkx43gsqI3tUWb6tcvrfKB22sa6DsWaBzT+zv3DqceDCk0qc/JqTO+Er5UQNYwolmWBzMdys6fVA== on: appveyor_repo_tag: true push_release: true notifications: - provider: Webhook url: https://webhooks.gitter.im/e/6e48d432e0e0dd1b2d22 tiled-1.3.2/dist/000077500000000000000000000000001361206041500135575ustar00rootroot00000000000000tiled-1.3.2/dist/archive.qbs000066400000000000000000000020001361206041500156770ustar00rootroot00000000000000import qbs InstallPackage { builtByDefault: false condition: { return ((project.snapshot || project.release) && (qbs.toolchain.contains("mingw") || qbs.toolchain.contains("msvc")) || (project.linuxArchive && qbs.targetOS.contains("linux"))); } archiver.type: { if (qbs.targetOS.contains("windows")) return "7zip" else return "tar" } Depends { productTypes: [ "application", "dynamiclibrary", "qm", "installable", ] } property int bits: { if (qbs.architecture === "x86_64") return 64; if (qbs.architecture === "x86") return 32; } targetName: { var baseName = "Tiled-" + project.version; if (qbs.targetOS.contains("windows")) baseName += "-win"; else if (qbs.targetOS.contains("linux")) baseName += "-linux"; return baseName + bits; } } tiled-1.3.2/dist/copr/000077500000000000000000000000001361206041500145225ustar00rootroot00000000000000tiled-1.3.2/dist/copr/build.sh000077500000000000000000000016551361206041500161670ustar00rootroot00000000000000#!/usr/bin/bash BUILDROOT="$(pwd)/tmp-buildroot/" rm -rf $BUILDROOT [ -d buildroot ] || mkdir -p ${BUILDROOT}/{SOURCES,SPECS} pushd $(git rev-parse --show-toplevel) VERSION=$(git describe | sed 's/^v//' | sed 's/-[^-]*$//' | sed 's/-/\./') git archive HEAD --prefix=tiled-$VERSION/ -o ${BUILDROOT}/SOURCES/tiled-$VERSION.tar.gz || exit 1 popd cat tiled.spec | sed "s/^Version:\(.*\)/Version: $VERSION/" > ${BUILDROOT}/SPECS/tiled_tmp.spec rpmbuild --define "_topdir ${BUILDROOT}/" -bs ${BUILDROOT}/SPECS/tiled_tmp.spec || exit 1 pushd ${BUILDROOT} FILE=$(find -name "*.src.rpm") cp $FILE ../tiled.src.rpm popd rm -rf $BUILDROOT if [ "$1" = "srpm-only" ] then echo "Wrote tiled.src.rpm. Exiting." else COPR_CONFIG=" [copr-cli] login = $1 username = $2 token = $3 copr_url = https://copr.fedorainfracloud.org " copr --config <(echo "$COPR_CONFIG") build ablu/tiled-dailies tiled.src.rpm || exit 1 rm tiled.src.rpm fi tiled-1.3.2/dist/copr/tiled.spec000066400000000000000000000227351361206041500165100ustar00rootroot00000000000000%global app_id org.mapeditor.Tiled Name: tiled Version: 0.18.0 Epoch: 1 Release: 1%{?dist} Summary: Tiled Map Editor # tiled itself is GPLv2+, libtiled and tmxviewer are BSD License: GPLv2+ and BSD URL: http://www.mapeditor.org Source0: https://github.com/bjorn/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: pkgconfig(Qt5Core) BuildRequires: qt5-qttools-devel BuildRequires: zlib-devel BuildRequires: desktop-file-utils BuildRequires: python-devel BuildRequires: libappstream-glib %description Tiled is a general purpose tile map editor. It is built to be easy to use, yet flexible enough to work with varying game engines, whether your game is an RPG, platformer or Breakout clone. Tiled is free software and written in C++, using the Qt application framework. This package contains the tiled application and tmxviewer, a simple application to view Tiled maps. %package plugin-python Summary: Python plugin for Tiled License: GPLv2+ URL: http://www.mapeditor.org Requires: %{name} = %{epoch}:%{version}-%{release} %description plugin-python A plugin for tiled which allows to write Python plugins. %define pluginwarning Warning: This plugin does not offer full compatibility with Tileds features. %package plugin-droidcraft Summary: Droidcraft plugin for Tiled License: GPLv2+ URL: http://www.mapeditor.org Requires: %{name} = %{epoch}:%{version}-%{release} %description plugin-droidcraft A plugin for tiled which allows to save maps as .dat droidcraft maps. %{pluginwarning} %package plugin-flare Summary: Flare plugin for Tiled License: GPLv2+ URL: http://www.mapeditor.org Requires: %{name} = %{epoch}:%{version}-%{release} %description plugin-flare A plugin for tiled which allows to save maps as .txt flare maps. %{pluginwarning} %package plugin-replica-island Summary: Replica Island plugin for Tiled License: GPLv2+ URL: http://www.mapeditor.org Requires: %{name} = %{epoch}:%{version}-%{release} %description plugin-replica-island A plugin for tiled which allows to save maps as .bin Replica Island maps. %{pluginwarning} %package plugin-t-engine4 Summary: T-Engine4 plugin for Tiled License: GPLv2+ URL: http://www.mapeditor.org Requires: %{name} = %{epoch}:%{version}-%{release} %description plugin-t-engine4 A plugin for tiled which allows to export maps as .lua T-Engine4 maps. %{pluginwarning} %package plugin-defold Summary: Defold plugin for Tiled License: GPLv2+ URL: http://www.mapeditor.org Requires: %{name} = %{epoch}:%{version}-%{release} %description plugin-defold A plugin for tiled which allows to export maps as .tilemap Defold maps. %{pluginwarning} %package plugin-gmx Summary: GameMaker Studio plugin for Tiled License: GPLv2+ URL: http://www.mapeditor.org Requires: %{name} = %{epoch}:%{version}-%{release} %description plugin-gmx A plugin for tiled which allows to export maps as GameMaker Studio room files. %{pluginwarning} %prep %setup -q # Remove copy of zlib rm -rf src/zlib %build %qmake_qt5 -r PREFIX=%{_prefix} LIBDIR=%{_libdir} RPATH=no USE_FHS_PLUGIN_PATH=yes make %{?_smp_mflags} %install make install INSTALL_ROOT=%{buildroot} # Clean build artefacts find -name ".uic" -or -name ".moc" -or -name ".rcc" | xargs rm -rf # Validate desktop file desktop-file-validate %{buildroot}/%{_datadir}/applications/%{app_id}.desktop # Appdata install -D -p -m644 %{app_id}.appdata.xml %{buildroot}/%{_datadir}/appdata/%{app_id}.appdata.xml appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/*.appdata.xml # locale files %find_lang %{name} --with-qt # Removed development file (this version does not install headers anyway) rm %{buildroot}/%{_libdir}/lib%{name}.so %post /sbin/ldconfig /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : /usr/bin/update-mime-database %{_datadir}/mime &> /dev/null || : /usr/bin/update-desktop-database &> /dev/null || : %postun /sbin/ldconfig if [ $1 -eq 0 ] ; then /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi /usr/bin/update-mime-database %{_datadir}/mime &> /dev/null || : /usr/bin/update-desktop-database &> /dev/null || : %posttrans /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %files -f %{name}.lang %doc AUTHORS NEWS.md README.md COPYING LICENSE.GPL LICENSE.BSD %{_bindir}/%{name} %{_bindir}/terraingenerator %{_bindir}/tmxrasterizer %{_bindir}/tmxviewer %{_datadir}/applications/%{app_id}.desktop %{_datadir}/icons/hicolor/*/apps/*%{name}* %{_datadir}/icons/hicolor/*/mimetypes/*%{name}* %{_datadir}/mime/packages/%{app_id}.xml %{_datadir}/thumbnailers/%{name}.thumbnailer %{_datadir}/appdata/%{app_id}.appdata.xml %dir %{_datadir}/%{name}/ %dir %{_datadir}/%{name}/translations %{_libdir}/lib%{name}.so.* %dir %{_libdir}/%{name}/ %dir %{_libdir}/%{name}/plugins/ # Core plugins %{_libdir}/%{name}/plugins/libcsv.so %{_libdir}/%{name}/plugins/libjson.so %{_libdir}/%{name}/plugins/libjson1.so %{_libdir}/%{name}/plugins/liblua.so %{_mandir}/man1/%{name}.1* %{_mandir}/man1/tmxrasterizer.1* %{_mandir}/man1/tmxviewer.1* %files plugin-python %{_libdir}/%{name}/plugins/libpython.so %files plugin-droidcraft %{_libdir}/%{name}/plugins/libdroidcraft.so %files plugin-flare %{_libdir}/%{name}/plugins/libflare.so %files plugin-replica-island %{_libdir}/%{name}/plugins/libreplicaisland.so %files plugin-t-engine4 %{_libdir}/%{name}/plugins/libtengine.so %files plugin-defold %{_libdir}/%{name}/plugins/libdefold.so %files plugin-gmx %{_libdir}/%{name}/plugins/libgmx.so %changelog * Sun Jan 22 2017 Erik Schilling - 0.18.0-1 - Added subpackage for gmx plugin - New upstream release 0.18.0 * Sun Jul 24 2016 Erik Schilling - 0.17.0-1 - Added subpackage for defold plugin * Tue Apr 19 2016 Erik Schilling - 0.16.0-1 - New upstream release 0.16.0 * Sun Mar 06 2016 Erik Schilling - 0.15.2-1 - New bugfix release 0.15.2 * Fri Feb 05 2016 Fedora Release Engineering - 0.15.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Mon Feb 01 2016 Rex Dieter - 0.15.0-2 - use %%qmake_qt5 to ensure proper build flags * Sat Jan 09 2016 Erik Schilling - 0.15.0-1 - New upstream release 0.15.0 * Fri Nov 27 2015 Erik Schilling - 0.14.2-1 - New upstream release 0.14.2 * Mon Sep 21 2015 Erik Schilling - 0.14.0-1 - New upstream release * Tue Sep 08 2015 Erik Schilling - 0.13.1-1 - New upstream release * Sat Aug 15 2015 Erik Schilling - 0.13.0-1 - New upstream release * Fri Jun 19 2015 Fedora Release Engineering - 0.12.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Tue Jun 2 2015 Erik Schilling - 0.12.3-1 - New upstream release * Fri May 22 2015 Erik Schilling - 0.12.2-1 - New upstream release * Wed May 20 2015 Erik Schilling - 0.12.1-1 - New upstream release * Fri May 15 2015 Erik Schilling - 0.12.0-1 - New upstream release * Sat May 02 2015 Kalev Lember - 0.11.0-2 - Rebuilt for GCC 5 C++11 ABI change * Sun Jan 11 2015 Erik Schilling - 0.11.0-1 - New upstream release * Mon Oct 27 2014 Erik Schilling - 0.10.2-1 - New bugfix release * Mon Sep 22 2014 Erik Schilling - 0.10.1-1 - New bugfix release * Sun Sep 14 2014 Erik Schilling - 0.10.0-1 - New upstream release * Mon Aug 18 2014 Fedora Release Engineering - 0.9.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild * Sun Jun 08 2014 Fedora Release Engineering - 0.9.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Sat Mar 15 2014 Erik Schilling - 0.9.1-2 - Fixed detection of plugins on 64bit - Splitted plugins into subpackages * Sat Jul 27 2013 Erik Schilling 0.9.1-1 - New upstream release 0.9.1 * Sat Jan 12 2013 Erik Schilling 0.9.0-1 - New upstream release 0.9.0 - Dropped now obsolete patches and files * Mon Sep 3 2012 Erik Schilling 0.8.1-3 - Fixed preserving of timestamps in install command. - Fixed typo in permission setting. - Talked with upstream about license mismatch in headers. - Those headers were outdated. * Mon Sep 3 2012 Erik Schilling 0.8.1-2 - Added note about which parts are licensed with which license. - Made sure that the copy of zlib inside of the source is removed. - Fixed handling of locales (using %%find_lang). - Avoided plain asterisks in %%files. - Made description clear about containing the tmxviewer. * Sun Sep 2 2012 Erik Schilling 0.8.1-1 - First version for official fedora repos. tiled-1.3.2/dist/distribute.qbs000066400000000000000000000251731361206041500164540ustar00rootroot00000000000000/* Installs all files necessary to run Tiled and other files that should be shipped when Tiled is distributed. */ import qbs import qbs.File import qbs.FileInfo Product { name: "distribute" type: "installable" builtByDefault: false Depends { name: "cpp" } Depends { name: "Qt.core" } Group { name: "Examples" prefix: "../examples/" files: ["**"] qbs.install: true qbs.installDir: "examples" qbs.installSourceBase: prefix } Group { name: "Python Scripts" prefix: "../src/plugins/python/scripts/" files: ["**"] qbs.install: true qbs.installDir: "examples/python" qbs.installSourceBase: prefix } Group { name: "Qt DLLs" prefix: { if (qbs.targetOS.contains("windows")) { return Qt.core.binPath + "/" } else { return Qt.core.libPath + "/lib" } } property string postfix: { var suffix = ""; if (qbs.targetOS.contains("windows") && qbs.debugInformation) suffix += "d"; return suffix + cpp.dynamicLibrarySuffix; } files: { function addQtVersions(libs) { var result = []; for (i = 0; i < libs.length; ++i) { var major = libs[i] + "." + Qt.core.versionMajor; var minor = major + "." + Qt.core.versionMinor; var patch = minor + "." + Qt.core.versionPatch; result.push(libs[i], major, minor, patch); } return result; } var list = []; if (!Qt.core.frameworkBuild) { list.push( "Qt5Core" + postfix, "Qt5Gui" + postfix, "Qt5Network" + postfix, "Qt5Qml" + postfix, "Qt5Svg" + postfix, "Qt5Widgets" + postfix ); } if (qbs.targetOS.contains("windows")) { if (Qt.core.versionMinor < 7 && !(Qt.core.versionMinor == 6 && Qt.core.versionPatch >= 3)) { list.push("icuin54.dll", "icuuc54.dll", "icudt54.dll"); } } else if (qbs.targetOS.contains("linux")) { list = addQtVersions(list); list = list.concat(addQtVersions([ "Qt5DBus.so", "Qt5XcbQpa.so", ])) if (File.exists(prefix + "icudata.so.56")) { list.push("icudata.so.56", "icudata.so.56.1"); list.push("icui18n.so.56", "icui18n.so.56.1"); list.push("icuuc.so.56", "icuuc.so.56.1"); } } return list; } qbs.install: true qbs.installDir: qbs.targetOS.contains("windows") ? "" : "lib" } property var pluginFiles: { if (qbs.targetOS.contains("windows")) { if (qbs.debugInformation) return ["*d.dll"]; else return ["*.dll"]; } else if (qbs.targetOS.contains("linux")) { return ["*.so"]; } return ["*"]; } property var pluginExcludeFiles: { var files = ["*.pdb"]; if (!(qbs.targetOS.contains("windows") && qbs.debugInformation)) { // Exclude debug DLLs. // // This also excludes the qdirect2d.dll platform plugin, but I'm // not sure when it would be preferable over the qwindows.dll. In // testing it, it seems to have severe issues with HiDpi screens // (as of Qt 5.8.0). files.push("*d.dll"); } return files; } Group { name: "Qt Icon Engine Plugins" prefix: FileInfo.joinPaths(Qt.core.pluginPath, "/iconengines/") files: pluginFiles excludeFiles: pluginExcludeFiles qbs.install: true qbs.installDir: "plugins/iconengines" } Group { name: "Qt Image Format Plugins" prefix: FileInfo.joinPaths(Qt.core.pluginPath, "/imageformats/") files: pluginFiles excludeFiles: pluginExcludeFiles qbs.install: true qbs.installDir: "plugins/imageformats" } Group { name: "Qt Platform Plugins" prefix: FileInfo.joinPaths(Qt.core.pluginPath, "/platforms/") files: pluginFiles excludeFiles: pluginExcludeFiles qbs.install: true qbs.installDir: "plugins/platforms" } Group { name: "Qt Platform Input Context Plugins" condition: qbs.targetOS.contains("linux") prefix: FileInfo.joinPaths(Qt.core.pluginPath, "/platforminputcontexts/") files: pluginFiles qbs.install: true qbs.installDir: "plugins/platforminputcontexts" } Group { name: "Qt Platform Theme Plugins" condition: qbs.targetOS.contains("linux") prefix: FileInfo.joinPaths(Qt.core.pluginPath, "/platformthemes/") files: pluginFiles qbs.install: true qbs.installDir: "plugins/platformthemes" } Group { name: "Qt Style Plugins" prefix: FileInfo.joinPaths(Qt.core.pluginPath, "/styles/") files: pluginFiles excludeFiles: pluginExcludeFiles qbs.install: true qbs.installDir: "plugins/styles" } Group { name: "Qt XCB GL Integration Plugins" condition: qbs.targetOS.contains("linux") prefix: FileInfo.joinPaths(Qt.core.pluginPath, "/xcbglintegrations/") files: pluginFiles qbs.install: true qbs.installDir: "plugins/xcbglintegrations" } Group { name: "Qt Translations" prefix: { if (qbs.targetOS.contains("windows")) { return FileInfo.joinPaths(Qt.core.binPath, "../translations/") } else if (qbs.targetOS.contains("linux")) { return FileInfo.joinPaths(Qt.core.libPath, "../translations/") } } files: { // Since Qt 5.5, the translations are split up by module and failing // to include all the .qm files results in the loading of the Qt // translator to fail (regardless of whether these modules are // actually used). var modules = ["", "base", "multimedia", "quick1", "script", "xmlpatterns"]; // TODO: Look into getting this list from the Tiled // 'translations.qbs' product. var languages = ["ar_DZ", "bg", "cs", "de", "en", "es", "fr", "he", "it", "ja", "lv", "nb", "nl", "pl", "pt", "pt_PT", "ru", "tr", "zh_CN", "zh_TW"]; var list = []; var p = prefix; for (i = 0; i < languages.length; ++i) { for (j = 0; j < modules.length; ++j) { var file = "qt" + modules[j] + "_" + languages[i] + ".qm"; if (File.exists(p + file)) list.push(file); } } return list; } qbs.install: true qbs.installDir: "translations" } Group { name: "Runtime DLLs" condition: qbs.targetOS.contains("windows") prefix: { if (qbs.toolchain.contains("mingw")) return FileInfo.joinPaths(cpp.toolchainInstallPath) + "/" else if (qbs.architecture === "x86_64") return "C:/windows/system32/" else return "C:/windows/SysWOW64/" } files: { var list = [] if (qbs.toolchain.contains("mingw")) { list.push("libstdc++-6.dll", "libwinpthread-1.dll") if (qbs.architecture == "x86_64") list.push("libgcc_s_seh-1.dll") else list.push("libgcc_s_dw2-1.dll") } else { list.push("MSVCP120.DLL", "MSVCR120.DLL") } return list } qbs.install: true qbs.installDir: "" } Group { name: "OpenSSL DLLs" condition: qbs.targetOS.contains("windows") && File.exists(prefix) prefix: { // Not sure what this check should be exactly, but Qt 5.6.3 was // built against OpenSSL 1.0.2 whereas Qt 5.12.5 was built against // OpenSSL 1.1.1. if (Qt.core.versionMinor >= 12) { if (qbs.architecture === "x86_64") return "C:/OpenSSL-v111-Win64/" else return "C:/OpenSSL-v111-Win32/" } else { if (qbs.architecture === "x86_64") return "C:/OpenSSL-Win64/" else return "C:/OpenSSL-Win32/" } } files: { if (Qt.core.versionMinor >= 12) { if (qbs.architecture === "x86_64") return [ "libcrypto-1_1-x64.dll", "libssl-1_1-x64.dll" ] else return [ "libcrypto-1_1.dll", "libssl-1_1.dll" ] } else { return [ "libeay32.dll", "ssleay32.dll" ] } } qbs.install: true qbs.installDir: "" } Group { name: "Misc Files" prefix: "../" files: { var list = [ "COPYING", "AUTHORS", "README.md", "NEWS.md", "LICENSE.APACHE", "LICENSE.BSD", "LICENSE.GPL", ]; if (qbs.targetOS.contains("windows")) list.push("dist/win/qt.conf"); else if (qbs.targetOS.contains("linux")) list.push("dist/linux/qt.conf"); return list; } qbs.install: true qbs.installDir: "" } } tiled-1.3.2/dist/dsa_pub.pem000066400000000000000000000042521361206041500157020ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MIIGOjCCBC0GByqGSM44BAEwggQgAoICAQDhi01QvbUkZPifoPNJCQzmhUEHE9LF sdSAhmQku9/4P+3uqu1a2e6Dz8HN26NdRxdJ/h/ZbWroAUShSEpagxyXbR9uHMHc xBaWXjXO7sxohGMUeylGA6KGq6UGpzs4u4YbmsI3x9gzQCLPvpit74B86K70pIkt thDGjA/yV92k3XRCXJ6Tf3oVTAYqt8+VN6gd3pEIufzgyYuwtc0GGD4u/8A7iasU eSWt5vfFndpQtVDKMKPbGNO5PRfozTUryANOX2je6RT3hlSnlUP6CxwxEbwFcfQu SU84SdO5upBHUzTQ00xWkG2WVXUtNGe7vlgV6d5GHKMQw0xYcTMZeMpvSgkJwF8y 4jTyHtlFGxkyKWtAsC1AOzTU3AkdYutHjIQ0wK3iKjUnFk+udLRleIzOusCshwfD +hVAlWqbvViPcZaQURC1DnSq5UZQIICWugE0Kbm1vYYAyHK31jJdRWaB7PTZnZC1 BlbXacV/dEuY/WJTmpoWr+iUfgIiNQ6yRrF1w+26eR0aFwEUYTHU7fFu8fn8xsvP f3/FSx4NVQf5X+VZ5NhFlI9btNgkqCABoA3fgHIhpNa7ruBlr58QbYnAxR66tHL7 OXCp95iTGXtr3fb3k1uOVIbdnNRDykVfeYsHixonXA1d3AFvhsXLB/L+Dv5pRfgg eTMn1oURGx/xbwIVAPG/1CsN6Lwi7+x3c0vvIx1qLp7DAoICAHOTSmLkh/ci+H5g dnk6Skd8FrLaR89Rw3Z0DuJjnun49T9x7za4FZ5VqL2HBG9q/bAUAOSNCuXBdd+r urYJuH1NdAZsDYOW6gqWSAdarRu7V8nS4ggSbdG6tpK1KDa0gF6j4AXHMY/bq6e6 DYD3aeckUtkWgaZEd+UX/We8k3A7Q/B6wyWWQ+OLb4FZ5G6AbKnEqivAOJ/ux7AJ NBS/4XHabxgpxw2oQkiMZDj+C83I3Mp37FCF26BphDcUE8xn1ueiYBW3nKJPPGbc 7VSufxEsD2yWQns6eSOFryqVZG3YnxFwaYQoZNrsuKvWvWiZ6VGsTLDkDlnh60zp x+yuXCfoj/fNugcCgkWN3nxfC9iUyB4oy2rox3T+FsVwotBMBEwFfyAwPTx9DkrZ g3j8lny14DKcofrzEbT+M8MBblgbeFvt6GqaypveBbO/7KprUq+itgDXoJnHm0NU 2+fo/ZaC1ZiwjsfWqzMrySX6k2YHTC331xwS9j0pKDPVkIWIRhw6dRNOKzKFZkja wvvOKDbOLagliHrwftzl4WDLKva7N0DY5Drhv2NBBFleCl4Ol+ANghsgA5aiYuoc qe5NYU7HSGTVNnHEV8IBrwGGxmqm8TKC2kO7Tnnmse+yrd90tskoewiB0NfqcYvt 6PV+PKuaIw3WitTpdMSk00HQHnrKA4ICBQACggIAVprDZMCNzSQuTwCqm3sUY16M YnjcLFG0bDsQ9ALMA4WqxmAZfMLJGTODYDoke9XkbfXaAMMwb9oXTqld5bjpdLMT pOGepVKolGqHg7dqkMcJMkm5I/xqT/tFgahvwAL0SXr8+jK0pMNYJtUmgDbENqYC oz73l4ApO7b4TrN05G9BOvu/dzd5U8YZZcH/cKRqT6O4Lcr8aN9QKGfJMx0JmM8A y4OwUCt2cjI0zuhZNRfiPgnOivsOifUGofJOsCaAxt2DPHYkemB5VKGzFoXLneVd MWF+RxeZSGbeCsIVbB4z9Qm1rPHXzzlMsbGvD5caoB3Gv3r0b0wAxk6sO8oErzHn uDLDT9O4KAyeZh7e3IFta0rGI0q3hqV3cB1/Qh0HabpJ70GdldTFwFOTGegYci4l 7bU3z8BIlU4F6jZ7n8KYiTMPfbylfjaso+5ZrhXSgvthVjFkhNzvoiq3XZbhY+A0 opPJScTLMLV3GFQD7fO5GecKNC0VymDGS0zOqPzp/2ieNCfTbiEU4TNL4pYsBh5a MyAXsoMxBWCX4ZXxsj+8Oz7pJTUrecI97UJkKEzkreP/48EPkjxLDvMhUzuGz8gS eMcu2g+/qRW5CWv56rqIGwRK6UTwA1vQxxae7r/HW3H4kK9mqRsb7E6go4CqN+gR Lok191BJb2+wjBV1CJs= -----END PUBLIC KEY----- tiled-1.3.2/dist/install-qt.sh000077500000000000000000000215611361206041500162130ustar00rootroot00000000000000#!/usr/bin/env bash ############################################################################# ## ## Copyright (C) 2019 Richard Weickelt. ## Contact: https://www.qt.io/licensing/ ## ## This file is part of Qbs. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial License Usage ## Licensees holding valid commercial Qt licenses may use this file in ## accordance with the commercial license agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and The Qt Company. For licensing terms ## and conditions see https://www.qt.io/terms-conditions. For further ## information use the contact form at https://www.qt.io/contact-us. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 3 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL3 included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 3 requirements ## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 2.0 or (at your option) the GNU General ## Public license version 3 or any later version approved by the KDE Free ## Qt Foundation. The licenses are as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ## included in the packaging of this file. Please review the following ## information to ensure the GNU General Public License requirements will ## be met: https://www.gnu.org/licenses/gpl-2.0.html and ## https://www.gnu.org/licenses/gpl-3.0.html. ## ## $QT_END_LICENSE$ ## ############################################################################# set -eu function help() { cat < Root directory where to install the components. Maps to C:/Qt on Windows, /opt/Qt on Linux, /usr/local/Qt on Mac by default. --host The host operating system. Can be one of linux_x64, mac_x64, windows_x86. Auto-detected by default. --target The desired target platform. Can be one of desktop, android, ios. The default value is desktop. --toolchain The toolchain that has been used to build the binaries. Possible values depend on --host and --target, respectively: linux_x64 android android_armv7, android_arm64_v8a desktop gcc_64 (default) mac_x64 android android_armv7, android_arm64_v8a desktop clang_64 (default), ios ios windows_x86 android android_armv7, android_arm64_v8a desktop win64_mingw73, win64_msvc2017_64 (default) --version The desired Qt version. Currently supported are all versions above 5.9.0. EOF } TARGET_PLATFORM=desktop COMPONENTS= VERSION= case "$OSTYPE" in *linux*) HOST_OS=linux_x64 INSTALL_DIR=/opt/Qt TOOLCHAIN=gcc_64 ;; *darwin*) HOST_OS=mac_x64 INSTALL_DIR=/usr/local/Qt TOOLCHAIN=clang_64 ;; msys) HOST_OS=windows_x86 INSTALL_DIR=/c/Qt TOOLCHAIN=win64_msvc2015_64 ;; *) HOST_OS= INSTALL_DIR= ;; esac while [ $# -gt 0 ]; do case "$1" in --directory|-d) INSTALL_DIR="$2" shift ;; --host) HOST_OS="$2" shift ;; --target) TARGET_PLATFORM="$2" shift ;; --toolchain) TOOLCHAIN="$2" shift ;; --version) VERSION="$2" shift ;; --help|-h) help exit 0 ;; *) COMPONENTS="${COMPONENTS} $1" ;; esac shift done if [ -z "${HOST_OS}" ]; then echo "No --host specified or auto-detection failed." >&2 exit 1 fi if [ -z "${INSTALL_DIR}" ]; then echo "No --directory specified or auto-detection failed." >&2 exit 1 fi if [ -z "${VERSION}" ]; then echo "No --version specified." >&2 exit 1 fi if [ -z "${COMPONENTS}" ]; then echo "No components specified." >&2 exit 1 fi case "$TARGET_PLATFORM" in android) ;; ios) ;; desktop) ;; *) echo "Error: TARGET_PLATFORM=${TARGET_PLATFORM} is not valid." >&2 exit 1 ;; esac DOWNLOAD_DIR=`mktemp -d 2>/dev/null || mktemp -d -t 'install-qt'` # # The repository structure is a mess. Try different URL variants # function compute_url(){ local COMPONENT=$1 local CURL="curl -s -L" local BASE_URL="http://download.qt.io/online/qtsdkrepository/${HOST_OS}/${TARGET_PLATFORM}" if [[ "${COMPONENT}" =~ "qtcreator" ]]; then REMOTE_BASE="tools_qtcreator/qt.tools.qtcreator" REMOTE_PATH="$(${CURL} ${BASE_URL}/${REMOTE_BASE}/ | grep -o -E "${VERSION}[0-9\-]*${COMPONENT}\.7z" | tail -1)" if [ ! -z "${REMOTE_PATH}" ]; then echo "${BASE_URL}/${REMOTE_BASE}/${REMOTE_PATH}" return 0 fi else # New repository format (>=5.9.6) REMOTE_BASE="qt5_${VERSION//./}/qt.qt5.${VERSION//./}.${TOOLCHAIN}" REMOTE_PATH="$(${CURL} ${BASE_URL}/${REMOTE_BASE}/ | grep -o -E "[[:alnum:]_.\-]*7z" | grep "${COMPONENT}" | tail -1)" echo "$BASE_URL/$REMOTE_BASE/$REMOTE_PATH" >&2 if [ ! -z "${REMOTE_PATH}" ]; then echo "${BASE_URL}/${REMOTE_BASE}/${REMOTE_PATH}" return 0 fi REMOTE_BASE="qt5_${VERSION//./}/qt.qt5.${VERSION//./}.${COMPONENT}.${TOOLCHAIN}" REMOTE_PATH="$(${CURL} ${BASE_URL}/${REMOTE_BASE}/ | grep -o -E "[[:alnum:]_.\-]*7z" | grep "${COMPONENT}" | tail -1)" if [ ! -z "${REMOTE_PATH}" ]; then echo "${BASE_URL}/${REMOTE_BASE}/${REMOTE_PATH}" return 0 fi # Older repository format (>=5.9.0) REMOTE_BASE="qt5_${VERSION//./}/qt.${VERSION//./}.${TOOLCHAIN}" REMOTE_PATH="$(${CURL} ${BASE_URL}/${REMOTE_BASE}/ | grep -o -E "[[:alnum:]_.\-]*7z" | grep "${COMPONENT}" | tail -1)" if [ ! -z "${REMOTE_PATH}" ]; then echo "${BASE_URL}/${REMOTE_BASE}/${REMOTE_PATH}" return 0 fi REMOTE_BASE="qt5_${VERSION//./}/qt.${VERSION//./}.${COMPONENT}.${TOOLCHAIN}" REMOTE_PATH="$(${CURL} ${BASE_URL}/${REMOTE_BASE}/ | grep -o -E "[[:alnum:]_.\-]*7z" | grep "${COMPONENT}" | tail -1)" if [ ! -z "${REMOTE_PATH}" ]; then echo "${BASE_URL}/${REMOTE_BASE}/${REMOTE_PATH}" return 0 fi fi echo "Could not determine a remote URL for ${COMPONENT} with version ${VERSION}">&2 exit 1 } mkdir -p ${INSTALL_DIR} for COMPONENT in ${COMPONENTS}; do URL="$(compute_url ${COMPONENT})" echo "Downloading ${COMPONENT}..." >&2 curl --progress-bar -L -o ${DOWNLOAD_DIR}/package.7z ${URL} >&2 7z x -y -o${INSTALL_DIR} ${DOWNLOAD_DIR}/package.7z >/dev/null 2>&1 rm -f ${DOWNLOAD_DIR}/package.7z # # conf file is needed for qmake # if [ "${COMPONENT}" == "qtbase" ]; then if [[ "${TOOLCHAIN}" =~ "win64_mingw" ]]; then SUBDIR="${TOOLCHAIN/win64_/}_64" elif [[ "${TOOLCHAIN}" =~ "win32_mingw" ]]; then SUBDIR="${TOOLCHAIN/win32_/}_32" elif [[ "${TOOLCHAIN}" =~ "win64_msvc" ]]; then SUBDIR="${TOOLCHAIN/win64_/}" elif [[ "${TOOLCHAIN}" =~ "win32_msvc" ]]; then SUBDIR="${TOOLCHAIN/win32_/}" else SUBDIR="${TOOLCHAIN}" fi CONF_FILE="${INSTALL_DIR}/${VERSION}/${SUBDIR}/bin/qt.conf" echo "[Paths]" > ${CONF_FILE} echo "Prefix = .." >> ${CONF_FILE} # Print the directory so that the caller can # adjust the PATH variable. echo $(dirname "${CONF_FILE}") elif [[ "${COMPONENT}" =~ "qtcreator" ]]; then echo "${INSTALL_DIR}/Tools/QtCreator/bin" fi done tiled-1.3.2/dist/linux/000077500000000000000000000000001361206041500147165ustar00rootroot00000000000000tiled-1.3.2/dist/linux/push-to-itch.sh000077500000000000000000000003221361206041500175760ustar00rootroot00000000000000#!/bin/bash set -ev curl -JOL https://broth.itch.ovh/butler/linux-amd64/LATEST/archive/default unzip butler-linux-amd64.zip ./butler push --userversion=$TILED_VERSION Tiled thorbjorn/tiled:linux-64bit-snapshot tiled-1.3.2/dist/linux/qt.conf000066400000000000000000000001061361206041500162060ustar00rootroot00000000000000[Paths] Libraries = lib Plugins = plugins Translations = translations tiled-1.3.2/dist/macos/000077500000000000000000000000001361206041500146615ustar00rootroot00000000000000tiled-1.3.2/dist/macos/fixup-install-names.rb000066400000000000000000000024541361206041500211130ustar00rootroot00000000000000#!/usr/bin/ruby # Modifies plugins and other binaries to use Qt frameworks contained within the app bundle (is there some way to get macdeployqt to do this?) binAppDir = 'Tiled.app' raise "No application at #{binAppDir}" unless File.directory? binAppDir # Modify plugins to use Qt frameworks contained within the app bundle (is there some way to get macdeployqt to do this?) Dir["Tiled.app/**/*.dylib", "Tiled.app/Contents/MacOS/tmxrasterizer", "Tiled.app/Contents/MacOS/terraingenerator"].each do |library| ["QtCore", "QtGui", "QtWidgets", "QtNetwork", "QtQml"].each do |qtlib| #find any qt dependencies within this library qtdependency = `otool -L "#{library}" | grep #{qtlib}`.split(' ')[0] next unless qtdependency #skip depedencies that are already using relative paths #macdeployqt seems to fix some of the plugins next if qtdependency.include? "@executable_path" #if we get here, this library has a dependency on a qtlib with a hard path on the build systems disk puts "Fixing #{library} dependency on #{qtlib}" `install_name_tool -change "#{qtdependency}" "@executable_path/../Frameworks/#{qtlib}.framework/Versions/5/#{qtlib}" "#{library}"` raise "install_name_tool error #{$?}" unless $? == 0 end end puts "Done" tiled-1.3.2/dist/macos/push-to-itch.sh000077500000000000000000000003631361206041500175460ustar00rootroot00000000000000#!/bin/bash set -ev mkdir itch mv install/Tiled.app itch/ curl -JOL https://broth.itch.ovh/butler/darwin-amd64/LATEST/archive/default unzip butler-darwin-amd64.zip ./butler push --userversion=$TILED_VERSION itch thorbjorn/tiled:macos-snapshot tiled-1.3.2/dist/make-dist.sh000077500000000000000000000003201361206041500157670ustar00rootroot00000000000000#!/bin/bash if [ "$#" -eq "0" ]; then echo "Usage: make-dist.sh " exit 1 fi name="tiled-$1" git archive -v --prefix="$name/" HEAD | gzip > "$name.tar.gz" echo "Release ready as $name.tar.gz" tiled-1.3.2/dist/win/000077500000000000000000000000001361206041500143545ustar00rootroot00000000000000tiled-1.3.2/dist/win/README.txt000066400000000000000000000043501361206041500160540ustar00rootroot00000000000000 How to create a Windows installer for Tiled =============================================================================== Prerequisites: * Qt is installed * MinGW is installed * NSIS is installed * Tiled executable in release mode has already been built Tiled's windows installer is created using NSIS. You thus need to install NSIS first if you want to build your custom windows installer for it. You can download the latest version of the installer from the NSIS project website located at http://nsis.sourceforge.net. Another requirement is that the project be already been built. The installer script is called "tiled.nsi" and is located in the dist/win directory. In order for the script to correctly produce binaries we do however need to modify the shell environment from which the script is run first. This is due to the fact that a successful compilation depends on some variables like the actual location of the Qt or MinGW installation path being correctly set. These values can not be automatically inferred by the installer script. Three mandatory variables "QTDIR", "MINGW" and "VERSION" need to be set to the correct paths of their respective packages. If VERSION is not set it will try to read the content of a file "version.txt" located in the root directory of tiled into that variable. The commands to set those may look like the following: set QTDIR="C:\Qt\4.8.6" set MINGW="C:\MinGW" set VERSION="0.12.0" Optionally you can also set the program architecture which is then used to deduce the resulting installer filename. It can either be 32 or 64 and defaults to 32: set ARCH="32" After setting the above variables to the correct values you can compile the NSIS installer script from the command line by executing the provided batch script "build_installer.bat". Make sure the nsis compiler is in PATH so it can be found by the command line interpreter. The resulting installer will be placed in the same directory where the nsis script was located and have a name similar to "setup-tiled--.exe", where is replaced with the value of the "VERSION" variable explained above and will - depending on the actual value of the "ARCH" variable - reflect the architecture (win32 or win64) for which the installer is built. tiled-1.3.2/dist/win/banner.bmp000066400000000000000000002477121361206041500163360ustar00rootroot00000000000000BMOzl:PO  BGRsPE/]ߗ7$nKR7J<'Ãэ. qMlIlIsMr5$khFĄ>pLmJmJmJmJlJnK1vok4#nKlImJmJmJmJmJnKnKfE"ؐsySH0nKlImJmJmJmJmJmJmJlInKlIJ1>E.[bEP7oLlIlJmJmJmJmJmJmJmJmJmJlInKfFb7'eZ[CZAoOnMmKmJmJmJnJmJmJmJmJmJmIlJmKmOrWSEUD<SM8eJnRnQmPmNnLmKmJmJlInJmJlImJmJmLoQpWq_rgztj0/wsr=4$oNmOnPnRnRnQnPnNmLmKmJmJmJmJlJmMoRpXqasitnvsutyy2"sOmJnLnNnPnPmQmRoQmOmNnMmKlJnMnOnSp[qcskupusutwwM((ߜ\ArNmJlJmKnLnNnOnPmRnSnPoQmNoNnQoUp]resluqutuuxx2''秼h:*sQK4 V:oKmJmJmKmLmOnPoQnSnSoToUpYq`rgtntrutww[[vss鬖ps=-zWuSuQpLy>*) X_WU;+*뤛飛뤛륛꣚頖鞒雍蘋斅擀}yvx|芀鉂臃烁肁rBA.!!履짞咽﨟吏xё꣛颚꣛飙韕靑蚎痊疆撄撀}{}鋁錄ꊆ釄{zA10"咽륜lg6%#[?<{桗ꤚ颙蟕蜐蚍昉旆蔃蓂}~茀芃銄vrNMMF1.褐yTPmMH뤜꣛뤜栘|v [?;頖盐蚍瘉症蔃撁}{y{}}HCRKKbC@T;8f`즜뤛ꤛꢛ룜쥜ђbD@ um虋瘇畄擀zvst2дꢢYJI`[2"!xr履륝뤜ꤚꢚgb-]>9瘈똆~wswaC:-ۮtttiQM{u=+*Γ륜륝룚렗vmL2,>(#k[|UF`bLMKKfaѕ/! 觠蘒꟔雎ꚈgA8 X\I2..yꨠ"列霍瘉֋y~js_/hМ1#"Ж쟒€t 蔀yuploA442%ЗhffB-+vOKZ;7ꛌ藆~xsnjہdpW*~iZSR]>;#wr획ꖆ摀ysnkjoqdOG485쟟bRQ_[㣜 ݛ횏ꕉ瑂|ustw{~|PO`HGooooVS{uup?-,얌ꑅ莀}~爀腀烀x=<>>>!Ӗ픍됈ꍆ댆鉅膃ꆄrpD55'&&so颛픎푌쎊ꊇ鈆ZY[[[}x쎋6""}}0ЇfeeccnffF'%օ9tiled-1.3.2/dist/win/build-daily.bat000066400000000000000000000031131361206041500172410ustar00rootroot00000000000000@rem TILED DAILY BUILD SCRIPT @echo off rem The following assumes US date format! set VERSION=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2% set TILED_SOURCE_DIR=E:\Projects\tiled set TILED_BUILD_DIR=E:\Builds\tiled-daily-qt5 set QTDIR=E:\Qt\5.3\msvc2013_opengl set ARCH=32 set MAKE=E:\Qt\Tools\QtCreator\bin\jom.exe set GIT="C:\Program Files (x86)\Git\cmd\git.exe" set SCP="C:\Program Files (x86)\Git\bin\scp.exe" set DESTINATION=bjorn@files.mapeditor.org:public_html/files.mapeditor.org/public/daily/ echo Waiting a bit for the network to come up... ping -n 3 127.0.0.1 > nul pushd %TILED_SOURCE_DIR% %GIT% fetch %GIT% diff --quiet origin/master if %ERRORLEVEL% == 0 ( echo No change, nothing to do. popd goto done ) else if %ERRORLEVEL% == 1 ( %GIT% reset --hard origin/master ) popd FOR /F "tokens=*" %%i in ('%GIT% describe') do SET COMMITNOW=%%i echo Building Tiled daily %VERSION%... (from %COMMITNOW%) call %QTDIR%\bin\qtenv2.bat call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86 rem This allows the executable to run on Windows XP set LINK=/SUBSYSTEM:WINDOWS,5.01 mkdir %TILED_BUILD_DIR% pushd %TILED_BUILD_DIR% qmake.exe -r %TILED_SOURCE_DIR%\tiled.pro "CONFIG+=release" "QMAKE_CXXFLAGS+=-DTILED_VERSION=%COMMITNOW%" %MAKE% popd echo Building Installer... pushd %TILED_SOURCE_DIR%\dist\win makensis.exe tiled-vs2013.nsi echo Uploading installer... %SCP% -B tiled-%VERSION%-win32-setup.exe %DESTINATION% popd :done echo Shutting down in 30 seconds... ping -n 31 127.0.0.1 > nul shutdown -s tiled-1.3.2/dist/win/dialog.bmp000066400000000000000000016060721361206041500163270ustar00rootroot00000000000000BM: zl8   BGRsffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333VVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFFfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333VVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFFfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333VVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFFfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333VVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFFfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333VVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFFfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333VVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFFfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333VVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFFffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeddddddeddddddddeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeddddddeddedddccdccdccdcceddedddddeeeeeeeeeeeeffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeedddddddccdcccbbbbbcaacaacaadbbcbbdccdccddddddeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeedddedddccbbbcaac``b__b__a_^b__b__c``b``dbbcbbdccddddddeeeeeeeeefffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeedddddddcccbbcaac``a^^a]]`\\`\[`\[`\[`\\a]]b^^b__b``caacbbdccedddddeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeedddedddccdbbb``a^^a]]`\[`ZZ^YX^XX_YX^YX_XX_ZY_[Za\\a]]b__b``dbbcbbddddddeeeeee222333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeddddddcbbcaac``b^^a\\_ZY^XX]WV\UT\TS\SS\TS\UT]VU^WV_XX`ZZa\\b^^b__caacbbdccedddddeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeedddeddcbbcaab__a]]_[Z_XX]WV\TS[RPZPOYONYNMYONZPOZQO[SQ[TS]WV_XX_[Z`\\a^^300200cbbcccddddddeeeeeeeeeffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeedddeddcbbcaab__`\\`ZZ]WW\UT[RPZPOXNLWKIVJIVJHVJHVJIWLJXMLZPO[RQ\UT^WV_YX_[Za]]a^^b``bbbdccdddddddddeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffeeeeeeddddcccbbb``a^^`\\_ZY^WV\TSZQPXNLVKIUIGTFDSECVGERDCTFCUGEUIGVKIXNL2)(3+)]UT]WW_ZYa\\b^^b__caacbbcccddddddeeeeeeeeefffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeedddccccbbb``a^^_\\_ZY]WV[SRYPOWMKUJHTGDSDBQA?zxqdbQA>QA?SDBSEDUIGWKIXNMZQP\TR]WV_XX_[Z`\\a^^b``caacbbdccdddeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffeeeeeeeeeedddccdbbc``a^^a\\^YX]WV[TRYONWLJVIGSEBQA?P@>կ髠ѮC1/3"QA>SDBTFDVJHXMKYON[RP\UT^XW_ZY`[[a]]b__caacbbdccedddddeeeeeefffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeedddccbbbc```^^`\[_YX]VU[RRYONWKITGESDBQA>R@>٭߁rjWzi橞trR@>P?;QA?RDATGEVJIXNLZPO[TR]VU^XW_[Z`\\a^^c``cbbdccedddddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffeeeeeedddddddccbbbc``b^^`\[_YX]VU[SQYNMVLITHERCAP?=TB?ޯ|lfReRhUiV{ݭk[XO>:P@=SCASFCUIGWLJYNMZRP\UT]WW_ZY`\\a^^b``dbbdccdddeeeeeeffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeedddddddccdbbc``b^^`\[_XX]UT[RPYNMVJHTHDRCAP?:QA>SDBTGEVJHXMLZQP\TS^VV_ZY`\\a^^b``cbbedddddeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeee222322dcccaab__a]]_[Z^XX\UTZRPYOMWJITFDRB@O>;ZIFૢp_kXiWhVgTfSfSeRdPdOxf䨞{ljQ?;`OL櫡q_lYkXiWhWfUfSfRfQdPcNbNdO{٫fVSP?=RB@SECVJHXNLZQP\UT^YX`\[b^^c``cbbedddddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeddddddcbbcaab__a]]1--2-,[TSZQPXMKVJHSFDQA?O>:PA=槝q_m[lYjXiXhVfUfSfRePdPbNbMaM`MjV圐ȨXGFSCATFDVJHYNM[RQ]WV_ZY`\\b__dbbdccdddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeddddddcbbcaab__`\\`ZZ]WW\TSZQPXMKUIHTFCQB?O=:m]Z椙q^n\mYkYkXjVgUfTfSfReOdObNbMbM`L_L`Kyh⧝ylkTECUIGXMK[RP]UT^YXa\\b__caadcceddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeddeddcbbcaab__`\\_ZY^WW\TTZPOXMKUHG3$"%3"ufdé䞒q^o]m[lZlXkXiVgUfUfSfReOdObObMaLaL_K_K^IaM~ثg[YWLKZPO]UT^XW`\[a^^daadcceddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeedddcccbbb``a^^a\\_ZY]WV\SSYPOWLJUIGSDBQ@>O>:~pmǨ㙎q_p^n\m[lZlXjWiVgUfUfTfReOdObNbMaLaL_K_K^I^I]IkX蟓ƪ_VT\UT_XXa\\a^^caadcceddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeddddcccbbb``a^^_\\^YX]WV[TRYPOWLJ3'$3%#Q@>O=:wuͭ╇n\m[o]n\m[kYjXjWiVgVfTfTfReOdObObMaLaL_K_J^I^I^I]I_J|k⫡}ww_ZY`\\b__caadccdddeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeedddcccdbbc``a^^a\\^YX]WV[TRYONWKITGESDBP@=O<9~ֱscraq^o]n\lZkYjXjWiVgVfUfTfReOdObNbMbM`L_L_J_J_J^J^I^I^IbO摂կmjjc``cbbedddddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeedddccdbbc``b^^`[[^YX\VU[RR3('3'%UGERCAQ@=Q?<ٳߋ}tdrbr`p^o]m[iWhVjXjWiVgUfUfSfRePcObNbMaM`M`L`J`K_K_J_K_I_I_J^Hs̏ebbcbbeddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeedddedddccbbbc``b^^`\[_XX]VU[SRYOMVLIUGERCAP?;]KG빰ᔈvfsbr`p^p]o]o[mZkYjXjWiVhUfUfSfSfQePdPdPdOcObNbNbNaMaLaLjW駜yvu`]]`^^a``bbbdddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeedddeddcbbcaab__a]]2.-2,,\UUZRPXNLVIHSEDRB@P>;aQN沩}o~n㡕콵귯ߏtbq^p^p]n[mZkYkXjWiVhWgTfTbOaMfQeQeQeOcOcOcOcOcObMyg㯥jgf]\\\[[ZZZZZZ^^^aaadddeeefffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeddeddcbbcaab__a]]`ZZ^XV[TSYQPXMKUJHTECQA?O>:gWT毦|mxhxfvf|l塖캳鳪ފ{q_p]m[lZkYlXkXiXhVgUgTfTfRfReRfRfPfQdPdPdPdP}ְa^^][[XXXTSSPPPPPPVVV\\\bbbeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeedddeddcbbcaa2//2..`ZZ^XW\TSZQPWMKUIGSEBQA?O=:n^\櫡|kyiygwgvftdtc|l椘뺲鯥ކvm\lZlZlXjXiWhVhVhUgTgSgSfS_L_KfRfQfPgT蜎Ȱ_\\\ZZVVVOOOHHHDDDFFFNNNXXX```dddfffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333VVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeddddddeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeedddccccbbcaab__`\\_ZY\VV\SRYPOXMKUHGSEBQA>O=;ufdë榜|m{jyhwgwfvetdtctbr`|l楙칲諡݀qlZkXkXjWiWiVhVhUhUgTgSfRfSfRfRp]誟wtt^[[[YYTTTLLLDDDooo]]]NNNYYYaaadddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeedddeddedddddeddedddddddddddddddddeeeeeeeeefff333333ffffffffffffffffffffffffffffffeeeeeeeeeedddcc211200a^^`\\_ZY]VV\SSYPOWLJVIGTDAQA>O>:~plɮ㡖|m|lzixhwfwfuetdtdsar`q^p]~n秜캱訜|klYjXiWhWiViUhUhUhShThTgT~lڪiee]ZZYXXRRRJJJGGGӖaaaccceeeeee222222dddddddddeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFFfffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeedddedddccdcccbbcbbdbbdbbcbbcbbdccdccdddddddddeeeeeeeeeeeefffffffffffffffffffffffffffeeeeeeeeeedddcccbbb``a^^a\\^YX]WV[SSZPOWLJUHFSCAP?=P=;wuͰ㞓}n|m{kziyhwfvfueuetdsbr`q^p^o]n\݀p骠칱襚zhkXjXjVjWiWiViUiUiU摂Ӱ`]\\ZZWVVPPPGGGSRR𪪪fffddddddbbb```^^^^^^^^^___aaadddeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffeeeeeeeeedddedddcccbbcaab``c``c``c``c``b``b``caacbbcbbdcceddedddddeeeeeeeee333333ffffffffffffeeeeeeeee222211cbbb``a^^`\[_YX\VU[SQYONWKITIERDBP?=O=:}Դ~o}n{l{kzjxhwfvfuetetcsar`q_p^o]n\n[n[߀rꬢ츰衕vfkWjXkXkVjVlZ頔ǰ^[Z[YYUTTMMM"""ONNܙddd111111___[[[VVVSSSQQQRRRUUUZZZ___ccceeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffeeeeeedddedddcccbbcaac``a^^b^^a]]`\\a]\`\\a]]`^^b__c``b``caacbbdcceddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeedddcccdbbc```^^`\[^YX\VU[SQZONWKITGERCAP?=P>;ٵޓp~o|m|l{kzixhwfvfuetetcsbraq`q^p^o]o\m[m[n\u뮤츰瞐uckXkWvd筢tqq]ZZYXXSRRKKKFEEȄbbbbbb```[[[TTTNNNIIIFFFDDDEEEIIIQQQZZZaaadddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffeeeeeedddedddccdbbb``a^^a]]`\[_[Z_ZY^YX^YY^YX_ZY_[Z`\[`\\b^^b__c``caacbbdccdcceddedddddeeeeee222222ddddccbbbc``b^^`\[_XX]VU[RRYOMVKIUGESCAP?;[KG亱ۊ|قt؁r؀qo}n|l{kzjyixhwfvfvetdtdscrar`p`p`q^q]o^o^p^p\o\o\q`覚ų^ZZZXXTSSLLLEEEvvveeebbbbbb___YYYQQQ$$$:::iii`````````___^^^___```bbbcccdddeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffeeeeeeddddddcbbcaab__`\\`ZZ]WW\UT[RQZPOXMLWLJWKJVJIWKJWLKXMKYNMZPO[RP\TR]UT^XV^YX`[Za\\a]]a^^b__c``b``b``c``b__a^^`\\_ZY]WW\UTZQOXNLVIHSFDRC@O>;aPNۋ}كu؁s؁sـqo|m|l{kzjyixhwfwfveuetdtcsbraqaq`q_q_p_q_q^q]p]|k氧ron]ZZYWWRQQIIIJIIuuubbbbbb^^^WWWNNNFFFuuu齽oooZZZYYYVVVUUUTTTSSSTTTVVVXXX\\\___bbbdddeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffeeeeeeeeeedddcccaab__`\\`ZZ^XW\TSZQPYNMWKIUIGTGESFETFDTFDTFDTGEUJHVKIWMKYNMZQO[TR\UT2,+2,+_ZY`\[`\\a]]a]]b^^a]]`\\`\[^YX^WV\TSZQP3(&3'%TECQA?O>:gXU뿹៓څv؁rـpo|m|l{kzjyixhxfwfvfueudtctbsbrarar`r`q`q`q_q_{޵gdc^[[YWWQPPHHHYXXޢgggbbb```\\\TTTKKKKKK򣣣ZZZiiihhhwwwdddTTTPPPLLLJJJHHHGGGFFFGGGHHHKKKOOOTTTZZZ___ccceeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffeeeeeeddddccdbbb__a]]^ZZ]XW\TSZPOXMKVIHTFDSDBeWUfXVRA?P@=QA>RB@SDATECTGEVIHWLJYOMYPO[RP\TS]VU]XV_XX_ZY`ZZ`ZZ_ZY^YX^YW]VU[TRYPOXMKUIGSEBQA>O=:p`^沩هz܌媠»꿷⢖ڄuo|m|l{kzjzjyhwgwfwfufveudtctctbtcsasaq`q`r`皍гb_^`^^\[[UTTKJJqppЏbbbbbb___YYYQQQHHH[[[ܙeeeaaa^^^YYYSSSMMMHHHDDDBBBGGGLLLOOOLLLGGG@@@@@@CCCGGGNNNVVV]]]bbbeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffeeeeeeedddcccbbc``a]]_[Z]WW\TSZQPXMKUIGTECRB@m_]vhfUC@O<:P>;P@=RB@4%#3%#UIGVKIXMKYONZQO[TR[TS]VU]WV^WV\VU]UT\TRZRPYNMWKIVIGRDAP@>O=;vif᫡وz؆x؅w؄uڈz⢘뿸䧝ۅw|l{k{kzixhygxgxfvfwfvfududucuctbtbsawf誟ñ`]]a^^a__\\\XXXyyybbbbbb^^^VVVNNNFFFsssƂbbb```\\\UUUMMM######VVVzzz˼tttJJJ>>>BBBKKKUUU^^^ccceeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF777fffffffffffffffffffffeeeeeedddcbbcaaa^^`[[_XX]UTZRPXNLUJHTFCQA?gXVݰĽĸzx\JGN<9O=;P?RCASECUHFVIHWLJXMLYONZQP[RPZRQ[RQZQPYONXMKVJHTGESDAP@=N<:~pmɱ㩠و{؇y؅w؄vقtقtفsڃtᝑ껴婠܇x{kzizhyhygwfwfwfvfvfveudtdudud߂q峪pll]ZZ][[^]]_^^lkk駧jjjbbb```\\\TTTKKKLLLnnnbbb___YYYQQQHHHDDDmmm…IIIDDDNNNZZZbbbeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffeeeeeeddddccdbbc``a]]_ZY]WV[RQYNMVJHSEDQA?bSQکڨڧܩ⹲Ŀl[YQ>;O;9O>;QA>RB@RDATFDUIGVJIWKJXMLWMLXMLWLKVJIUHFSFCRB@P?=O=:wuε⦜ى|؈z؆x؅wՁsցqكtفsـqpـqޕ趭谦݋|zjyhyhxgwfwfwfwfvfveveue㐂ݶb__ZWWWUUTTTUUU\\\wvvדcccbbb___YYYQQQHHH[[[ٖdddbbb___XXXNNNEEEdddfffNNNZZZaaaeeefffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF666ffffffffffffffffffeeeeeeddddcccaaa^^`\[^XW\UTZPNWLJTGERCA_OMګک٨٧ڥ٤٥߯Ŀ}olYFDO<9O=;P?=QA?RCASEBSEDUGETGETGETFDSEBRCAQA>P>;O<:}Ը࢘ي|؉{؇y؆x؆wمvكtكtفsـqـpo}n~nݐ鳪»鳪zjyiygygwgxgwgwfwf研ϵ^\\YWWRQQKKKHHHJJJRRRaaacccbbb^^^VVVNNNFFFuuu€cccccc```XXXNNNMMMѝyyyhhheeegggoooppp]]]ccceeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333fffffffffffffffeeeddddddcbbb``a]]`[Z^VV\SRYNMVJISED\LKڬڪ٨֤֣ؤؤؤ٣ڡۦ⺱cRPO<9O;9O>;P?=QA>RB?QC?QC?QA>Q@=P>;O<9P=;ټޝً}؊|؈z؇y؇xمvلuكtكtفs}n|lo~n}n|m|m݊{筣붮ᔇ{lyixhxgxg}l认²~}a]]][[VUULLL('')((EEENNNYYYaaajjjllldddaaa[[[TTTKKKJJJ몪mmmddddddbbbZZZOOO]]]ꘘVVVEEEJJJQQQXXX]]]000111eeeeeedddddddddccccccbbbbbbcccddddddeeeffffffffffff333333fffffffffffffffffffffVVVFFF666fffffffffffffffeeeeeeddddccdbbc``a]]_ZY]WV[RQXNMVJH\NLۯڬڪ٩ڨئؤأأأآءڟڡ௧þмvgdT@=N;8N<9O<9O<:O<:O<9N;8M96R?<޽ޚٌ؋}؉{؈z؇zمxمvلuكtكtفs؁q؀p؀o~o}n|n{l{l{lކw稝컴䛎~nziw嶭qnma^^a__^]]_^^```[[[bbbdddccc```YYYQQQHHH\\\֔dddeeeeeeddd^^^TTTjjj便dddBBBBBBFFFKKKRRRXXX^^^bbbdddtttݧrrrbbbaaa```^^^\\\[[[ZZZZZZ[[[]]]___aaaccceeefffffffffffffffffffffffffffffffffVVVFFF666fffffffff333333eeeeeeddddccbbbb__`\\_ZY\VU[RQYNM\ONܲըզګ٨٧ڧؤؤأآءءؠ؟ٝٝݤ滴¿xx\IFM96L74L74L74K74T?=⿹ݗٍ؋~؋|؉|؈{نyمxمvلuكtكtقs؁r؀q~p~oyjyh}m}m}m|k{l߃t磘ꭣܹfbbb__caa111544___bbbbbb^^^VVVNNNFFFvvv~~~dddeeefffeeebbbZZZdddޟ^^^@@@@@@EEELLLTTT\\\aaa222IIIyyybbb```\\\YYYVVVRRRPPPNNNNNNNNNNNNPPPTTTXXX...000dddeeefffffffffffffffffffffffffffVVVFFF777fffffffffffffffeeeeeeddddccdbbb__`\\_ZY]WV[SQ[QPܴڰۮڬ٪کڨ٧٦ؤؤأآؠ؟؟؝؛ٜڛ۝᯦¾˹jXUN74I30VB?徹۔؍؍،؊}؊|وzنyمxمvلuكtكt؂s؁r؀q~p~p~n~n~n~n}m}l}l|k|kށqb^^b__caacbbdccrppՁbbbaaa\\\TTTKKKJJJ騨jjjdddfffffffffeeebbb[[[򟟟pppؖUUU;;;AAAKKKVVV^^^bbbccc```\\\WWWRRRMMMIIIGGGFFFEEEDDDDDDDDDDDDGGGKKKQQQXXX^^^bbbeeeffffffffffffffffffffffffVVVFFF666fffffffffffffffeeeeee222322dbbc``a]]_[Z]WW^WUز۱ۯڭڭڬڪ٩ڧڥ٥٣٣آءؠ؞؜؜؛ؘؙؚڙޥ張׾wt潶ړ؎؍،،~ً|ى{وzنyمxمvلuكtقt؂s؁sqـpp~on~n~nxhwf}m}mނr貨~{{b^^300311dccedddddddd~~~dddbbb]]]TTTJJJ\\\ӑdddeeeffffffffffffeeebbbQQQVVV]]]uuuҎTTTIIITTT\\\___\\\WWWPPP%%%###FFFOOObbbsss~~~yyyLLL222AAA@@@DDDLLLUUU]]]bbbeeefffffffffffffffffffffVVVFFF666ffffffffffffffffffeeeddddddcbbcaaa^^_\\`[Z߻۴ܲ۰ܯۭڬ۫کڨ٧ڥڤ٢١٠٠؟؝؝؛ؘؙؚؗؗؖۛ维渱ݝ؏؍،ً~ي{ى{وzنyنxمvلuكt؂t؂s؁rفqqpon~no~m~n~n~丱okkb^^c``dbbdccddddddeeeeeeeeehhhiiiffffffeeeaaaZZZPPPxxxzzzdddeeefffffffffffffffeeecccsssDDDMMMSSSUUUTTTlllΕbbbZZZXXXRRRKKKFFFQQQzzzПddd<<<@@@JJJUUU^^^dddfffffffffffffffffffffVVVFFF666ffffffffffffffffffeeeeeeedddccdbb300}zz࿹ݵܳݳ۱۰ۯۭ۬ګکڧڦڥ٤ڢڡٟٞٝ؛؛ؘؘؚؖؖؕݤ辷ড়辸ग़ڐً~ي{ى{؈z؆yنxمvلuكt؂t؂s؁rفqڀppڀooۀo܀n~n~n㚍ڹ"2..b__caacbbedddddeeeeeeeeeeeeffffffffffffeeebbbbbb祥jjjeeeffffffffffffffffffffffffdddqqq@@@DDDGGGIIIIIIGGGFFFzzz|||UUUNNNGGGTTTߖNNNDDDPPP[[[bbbeeeffffffffffffffffffVVVFFF666ffffffffffffffffffeeeeeeeddeddcbbcaaݺݶݶܴݳ۱ۯۭ۬ܫ۫ڨڧۦڤڣ١١ڟؘؙٜٝٝٛؗؗૡ渲ٓؐؐۚ峪ƿƾ尨ܖ؉{؈y؆xنxمvلuكt؂t؂s؁rفrڀpـpڀoڀoۀoۀpp稞ʲ_YX`\[a]]c``caacbbeddeddeeeeeeeeeeeefffffffffffffffpppЏdddeeefffffffffffffffffffffffffffeeehhhIIIDDDDDDJJJ```|||TTTLLLIII~~~྾|||jjjQQQ\\\bbbeeeffffffffffffffffffVVVFFF666ffffffffffffffffffeeeeee222222dcccbbsrrྲྀݵݴܱܲݰۮܬ۫۩ܨۧڥڤڣڢڠٟڝڛٛٛٙ٘ᰦ㵮ؓؒؐؐ؏َڑच躲ߞى|نxمvلuلt؂t؂s؁rفrځpڀppڀoۀo܅v賫VPO\VU_XX`\[a]]b__200211dccdddeddeeeeeeeeefffffffffffffffsssyyydddffffffffffffffffffffffffffffffffffffmmmἼИcccVVVLLLZZZ݊IIIgggeeeeeedddbbb...000uuu```dddfffffffffffffffffffffVVVFFF777fffffffffffffffffffffeeeeeeeeeddddcccbbcaakgg޶ݱݯܯݮ۪۬ܩۧۧۦۤڣۡ۠ڞٜٝښڙ䶭㱨ؕؔؒؑؐ؏؎؍ًٍܘ泩ǿļ䪠ێلuلt؂t؂s؁rفrڀpـpڀoڀoᷰf\[[RP]UT]XW_ZYa\\b^^c``caacbbdccddddddeeeeeeeeefffffffffffffffmmmkkkeeeffffffffffffffffffffffffffffffffffffffffffrrr˞qqqaaa[[[OOOnnnﱱ{{{dddeeeeeeeeeccc```ZZZTTTLLLHHH቉ccceeefffffffffffffffffffffVVVFFF666ffffffffffff333333ffffffeeeeeeeeedddeddcbbbbbb``c__qnmÿ㿷޲ݯܭܬݪ۩ۨۦۥܤۢڡڟ۞ڜڜ弴ᮦڗٕٔٓؒؐ؏؎؍،،~؋|ى{ۏᤛ龶ƾ跭ޗمv؂s؁rفqڀpـpڀpޙήZMKWLJYPN[SQ\UT]XW_ZY`\[b^^b__caacbb111222dddeeeeeeeeeffffffffffffffffffeeeffffffffffffffffffffffffffffffffffffffffffffffffffffff|||ξllleeeddd```VVVuuu{{{dddeeeeeeeeedddbbb]]]WWWPPPIIIYYYdddeeeffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffeeeeeeeeedddddddcccbbdbbb``b__daayvuƾᷰݭݫܪܨݧۥܤۤۢܡ۟ڞ»ૢژٖٕڕِْٓؐ؎؍؍،؊}؊|؈{؇zهyݗ紫Ž꽶⤙ۉ{فqqڀq檞ŬusRC@TFCUIGWLJYONZRP\UT^WV^YX`\[a]]b__caacbbeddeddeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflllnnnkkkgggeeefffffffffddd___jjjՃ\\\bbbddddddccc```ZZZSSSLLLHHHyyyޠjjjeeeffffffffffffffffffffffffffffffVVVFFF666333333ffffffffffffffffffffffffeeeeeeeeedddeddedddcccbbdbbcaac``b^^hdd_][»߰ݪݩܧݦݤۢܢޣ੠ڛۙۘڗڕٕړڒَُّ،؋~؋|؉{؈z؇y؇x؆wمwۊ|⤚ü䮣ܐ維jYWN<9P?;QA?SDBVIGWKIYOMZQP\SR]WV_XX_[Za]]b__caacbbeddedd222222ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffddd___MMMWWW]]]______\\\VVVPPPIIIYYYdddeeefff333333ffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffeeeeeeeeeeeedddddddccdcccbbcaab``c``b_^nkk㹲ުݧݥܣިߧ۝ܜۚۙڗۖڔڔْڑڐڏًٌَ}؊|؉{؇y؆x؅w؄v؂t؂tمvޖ꾷҆wtT@=L85M;8P>;QA>SDAUGEVJHXMKYQO[TR]VU^YX`\[b^^c``dbbdccdddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeennnIIIFFFLLLRRRTTTSSSPPPKKKHHHyyyݠjjjeeefffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeddddddedddcccbbcbbcaab``b__633OKKļľᱪ߭ަݟ۞ܜۜۛܙۗڕڕۓڒڑَڎڍڌ~ي|ى{؈z؇y؅w؄vԁrԀq؂s鷮姜޸~aPMO<9O=;P@=RCATFDVJHXMKZPO[TR]WV_ZY`\\a^^caacbbddddddeeeffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333222ttt\\\AAACCCDDDEEEEEEDDDVVVdddeeeffffffffffffffffffffffff333333ffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeddddddddddcccbbdbbcaac``b^^hdd}}୤ݢݠܟݞ۝ۜܙۙۖۖ۔ړڑېڏٌٌڋ}ڊ{و{هyنx؅w؄t؄t㨞娝ـq~oځq䳫еsebTCAQ@=RCATFDVJHXML[RP\UT^XX_[Zb^^c``cbbdcceddeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffjjjvvvLLL>>>;;;>>>wwwڞiiieeeffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeddddddddddccdcccbbcaab``300300lih㴬ޤݟݞܜݚۙݘܗەܔےۑڏێڍڌ~ً}ԄwՃvچyنxۉ{趭¼؀qp~o~n|m|n܈y䦛ݸ~|`ROTDCVIGWLJZPO\SR]WW`ZZa]]c``bbbcccdddeeeeeefffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff~~~Ͱ~~~dddeeefffffffffffffffffffffffffffffffffffffffffffff333333VVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeedddeddedddcccbbcbbcaab``b__c``urr᫡ޟݛܚܘݗۖݖۓےܑېێێی~ډ}ډ{وyޒ꾷뾷ޑفsـqp~o~n|m|k{k{j~p☌㴫ɱshg[PNYON[SR^WV_ZYa]]c``bbbdcceddeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeennnڝjjjeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeedddeddedddcccbbdbb200300b__gdd}|巰ࣙݛݙܗݗݕ۔ܒՊ}ԉ|ۍیڋ}ۊ}⡖Ľ跮ۈzلtڂsځrq~p}o|n|k{k{jyjyizj{媠ڹf^]^WV`[Za]]c``bbbcccdddeeeeeefffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffdddbbb]]]WWWWWW```󺺺~~~dddeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFFffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeddddddeddedddcccbbdbbb``c``b__lihĽ䭥ޝݖݕܕݓےې܏ێ܍尦ļ嬢ۇyچwڄuقtقsڀqp~n}m|l{kzkzizjzjzhzhހq㜎㷯ɸwsrc__b``cbbddddddeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeebbb\\\TTTMMMHHH|||؛iiieeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeddddddddddccdcc211200b``b__da`spoᶮڞޘݔܒܒݐݓ꼴⡖܈zۉzچwچvڄuڂtځqڀqo~n}m|l{l{j{kzjziyiyiyh{kᎀ豧Ϙgeedccdddeeeeeeffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffccc^^^UUULLL[[[򸸸|||dddeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeddddddddddcccbbdbbcaac``b__fcb}{zʽ沫ߝݓľýߙی~܊|ۉzۈz܆xۄvڄuڂrہrpn~n~n}m|k{l{jzjzjzjziyhz浬}||cbbedddddeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeebbb\\\VVVךhhheeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeddddddedd211311caac``a^^khgºޓݏ܍݋}ۊ|ۉz܇yۆxۅv܄sۂsہqpo~n}m}l}l|l{k{kzj{k染׸iffdbbdccdddeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffdddppp򸸸|||dddeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeedddeddedddccdcccbbcaab``b__c__spo¾纱᠕ސ݌~܋|݊{݈yۇwۅw܄uۃsہsہrۀpۀo~m}m}m|l|l|l߅v鳫c``caadccddddddeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffrrr֗gggeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333222eeeeeeeeedddedd322211cbbdbbcaab``b__fba{xwƹ¼籧ߗ݌~݉z܈y܇w݅w݄vۃtۂrہqۀqo~n~n~n}m䚍ܸnkjc``caadccedddddeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffff˷{{{dddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeedddeddedddcccbbdbbcaac``a^^jffѽ澸妜ޏ݈z݆w݅v܄u܃t܂s܁q݀p݀poޅu豦ɷb__c``dbbdccedddddeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpppiiiffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffeeeeeeeeeeeeeee222222dccdcccbbcaab``c``c__qnm路㜐މ{݅u݄t݃t݃r݁q݁q㕈㼵vrrb__b``dbbdccdddeddeeeeeefffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeddddddddddcccbbcbbcaac``b__daazvvŸᾹ讥ᓅޅu݃tބu謡Ѹebbc``caacbbdccdddeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeee222222dddedddcccbbdbbcaac``c__ieeϻ廴窡缵~{{c``caacbbdccedddddeeeeeeeeefffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333+++FFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeddddddcccdcccbbbbbcaacaadaaommjhhdbbcbbdccddddddeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeee222222dddddddddedddccdcccbbcbbdbbfeedbbdcceddedddddeeeeeeeeefffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffVVVFFF777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeedddddddddeddeddeddeddeddedddddeeeeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff222222eeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffVVVFFF666ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffff333333ffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666ffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF666fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff333333ffffffffffffVVVFFF777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVVVFFF777tiled-1.3.2/dist/win/gpl-2.0.rtf000066400000000000000000000400031361206041500161450ustar00rootroot00000000000000{\rtf1\ansi\ansicpg1250\deff0\deflang1033\deflangfe1060{\fonttbl{\f0\fswiss\fprq2\fcharset238 Verdana;}{\f1\fmodern\fprq1\fcharset238 Lucida Console;}} {\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\nowidctlpar\sb100\sa100\qc\lang1060\kerning36\b\f0\fs28 GNU General Public License\par \kerning0\b0\fs16 Version 2, June 1991\par \pard\nowidctlpar\f1\fs14\par Copyright (C) 1989, 1991 Free Software Foundation, Inc.\par 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA\par \par Everyone is permitted to copy and distribute verbatim copies\par of this license document, but changing it is not allowed.\par \par \pard\keepn\nowidctlpar\sb100\sa100\qc\b\f0\fs20 Preamble\fs24\par \pard\nowidctlpar\fi142\sb100\sa100\b0\fs16 The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. \par When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. \par To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. \par For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. \par We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. \par Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. \par Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. \par The precise terms and conditions for copying, distribution and modification follow. \par \pard\keepn\nowidctlpar\sb100\sa100\qc\b\fs20 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\par \pard\nowidctlpar\fi142\sb100\sa100\fs16 0.\b0 This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". \par \pard\nowidctlpar\sb100\sa100 Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. \par \pard\nowidctlpar\fi142\sb100\sa100\b 1.\b0 You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. \par \pard\nowidctlpar\sb100\sa100 You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. \par \pard\nowidctlpar\fi142\sb100\sa100\b 2.\b0 You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: \par \pard\nowidctlpar\li284\sb100\sa100\b a)\b0 You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. \par \b b)\b0 You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. \par \b c)\b0 If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) \par \pard\nowidctlpar\sb100\sa100 These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. \par Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. \par In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. \par \pard\nowidctlpar\fi142\sb100\sa100\b 3.\b0 You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: \v \v0\par \pard\nowidctlpar\li284\sb100\sa100\b a)\b0 Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, \par \b b)\b0 Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, \par \b c)\b0 Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) \par \pard\nowidctlpar\sb100\sa100 The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. \par If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. \par \pard\nowidctlpar\fi142\sb100\sa100\b 4.\b0 You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. \par \b 5.\b0 You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. \par \b 6.\b0 Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. \par \b 7.\b0 If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. \par \pard\nowidctlpar\sb100\sa100 If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. \par It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. \par This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. \par \pard\nowidctlpar\fi142\sb100\sa100\b 8.\b0 If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. \par \b 9.\b0 The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. \par \pard\nowidctlpar\sb100\sa100 Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. \par \pard\nowidctlpar\fi142\sb100\sa100\b 10.\b0 If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. \par \pard\nowidctlpar\sb100\sa100\qc\fs20 NO WARRANTY\par \pard\nowidctlpar\fi142\sb100\sa100\b\fs16 11.\b0 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. \par \b 12.\b0 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. \par \pard\keepn\nowidctlpar\sb100\sa100\qc\b END OF TERMS AND CONDITIONS\fs20\par } tiled-1.3.2/dist/win/headerimage.bmp000066400000000000000000001032621361206041500173130ustar00rootroot00000000000000BM6(9 |  PE/]ߗ7$nKR7J<'Ãэ. qMlIlIsMr5$khFĄ>pLmJmJmJmJlJnK1vok4#nKlImJmJmJmJmJnKnKfE"ؐsySH0nKlImJmJmJmJmJmJmJlInKlIJ1>E.[bEP7oLlIlJmJmJmJmJmJmJmJmJmJlInKfFb7'eZ[CZAoOnMmKmJmJmJnJmJmJmJmJmJmIlJmKmOrWSEUD*) X_WU;+*뤛飛뤛륛꣚頖鞒雍蘋斅擀}yvx|芀鉂臃烁肁rBAHHHmmm666.!!履짞咽﨟吏xё꣛颚꣛飙韕靑蚎痊疆撄撀}{}鋁錄ꊆ釄{zA10```===uuu((("咽륜lg6%#[?<{桗ꤚ颙蟕蜐蚍昉旆蔃蓂}~茀芃銄vrNMM---hhhNNNrrrF1.褐yTPmMH뤜꣛뤜栘|v [?;頖盐蚍瘉症蔃撁}{y{}}HCbbbccc TTT999SSSRKKbC@T;8f`즜뤛ꤛꢛ룜쥜ђbD@ um虋瘇畄擀zvst2дNNN___ppp222OOOWWWYJI`[2"!xr履륝뤜ꤚꢚgb-]>9瘈똆~wswaC:-ۮUUUJJJ===gggmmm HHH^^^tttiQM{u=+*Γ륜륝룚렗vmL2,>(#k[|UF`bLWWWFFF)))---MKKfaѕ/! 觠蘒꟔雎ꚈgA8 X\Iddd+++&&&cccFFF 2..yꨠ"列霍瘉֋y~js_/hМ###1#"Ж쟒€t 蔀yuploA442%З }}}EEEhffB-+vOKZ;7ꛌ藆~xsnjہdpW*~ivvvfff555ZSR]>;#wr획ꖆ摀ysnkjoqdOG485XXXbRQ_[㣜 ݛ횏ꕉ瑂|ustw{~|PO`HGccc777((([[[ooooVS{uup?-,얌ꑅ莀}~爀腀烀x=<]]] >>>!Ӗ픍됈ꍆ댆鉅膃ꆄrpD55SSS'&&so颛픎푌쎊ꊇ鈆ZY[[[AAA }x쎋6""ddd}}0Їfeecc nffF'%օ9tiled-1.3.2/dist/win/installer.qbs000066400000000000000000000062451361206041500170670ustar00rootroot00000000000000import qbs import qbs.FileInfo import qbs.File import qbs.TextFile import qbs.Environment WindowsInstallerPackage { builtByDefault: false condition: { if (project.windowsInstaller) { if (!(qbs.toolchain.contains("mingw") || qbs.toolchain.contains("msvc"))) { console.error("Unsupported configuration for Windows installer"); return false; } } return project.windowsInstaller; } Depends { productTypes: ["application", "dynamiclibrary"] } Depends { name: "cpp" } Depends { name: "Qt.core" } property string bits: { if (qbs.architecture === "x86_64") return "64"; else return "32"; } targetName: "Tiled-" + project.version + "-win" + bits wix.defines: { var defs = [ "Version=" + project.version, "InstallRoot=" + qbs.installRoot, "QtDir=" + FileInfo.joinPaths(Qt.core.binPath, ".."), "RootDir=" + project.sourceDirectory ]; if (qbs.toolchain.contains("mingw")) defs.push("MingwDir=" + FileInfo.joinPaths(cpp.toolchainInstallPath, "..")); else if (qbs.toolchain.contains("msvc")) { if (cpp.compilerVersionMajor >= 19) { defs.push("VcUniversalCRT=true"); defs.push("VcInstallDir=" + cpp.toolchainInstallPath); } else { defs.push("VcInstallDir=" + FileInfo.joinPaths(cpp.toolchainInstallPath, "../..")); } } if (Qt.core.versionMinor >= 10) defs.push("WindowsVistaStyle") if (File.exists(Environment.getEnv("PYTHONHOME"))) defs.push("Python"); // Not sure what this check should be exactly, but Qt 5.6.3 was // built against OpenSSL 1.0.2 whereas Qt 5.12.5 was built against // OpenSSL 1.1.1. if (Qt.core.versionMinor >= 12) { var openSslDir = "C:\\OpenSSL-v111-Win" + bits if (File.exists(openSslDir)) defs.push("OpenSsl111Dir=" + openSslDir); } else { var openSslDir = "C:\\OpenSSL-Win" + bits if (File.exists(openSslDir)) defs.push("OpenSsl102Dir=" + openSslDir); } return defs; } wix.extensions: [ "WixUIExtension" ] files: ["installer.wxs"] // This is a clever hack to make the rule that compiles the installer // depend on all installables, since that rule implicitly depends on // any "wxi" tagged products. Rule { multiplex: true inputsFromDependencies: ["installable"] Artifact { filePath: "dummy.wxi" fileTags: ["wxi"] } prepare: { var cmd = new JavaScriptCommand(); cmd.silent = true; cmd.sourceCode = function() { var tf; try { tf = new TextFile(output.filePath, TextFile.WriteOnly); tf.writeLine(""); } finally { if (tf) tf.close(); } }; return [cmd]; } } } tiled-1.3.2/dist/win/installer.wxs000066400000000000000000000756101361206041500171250ustar00rootroot00000000000000 CMDLINE_INSTALLDIR CMDLINE_INSTALLDIR INSTALLDIR NOT Installed tiled-1.3.2/dist/win/push-to-itch.bat000066400000000000000000000002751361206041500173740ustar00rootroot00000000000000curl -fsS -o butler.exe https://dl.itch.ovh/butler/windows-amd64/head/butler.exe butler.exe push --userversion=%TILED_ITCH_VERSION% itch/install-root thorbjorn/tiled:%TILED_ITCH_CHANNEL% tiled-1.3.2/dist/win/qt.conf000066400000000000000000000000661361206041500156510ustar00rootroot00000000000000[Paths] Plugins = plugins Translations = translations tiled-1.3.2/docs/000077500000000000000000000000001361206041500135445ustar00rootroot00000000000000tiled-1.3.2/docs/Makefile000066400000000000000000000011371361206041500152060ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = python3 -msphinx SPHINXPROJ = Tiled SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) tiled-1.3.2/docs/README.md000066400000000000000000000004661361206041500150310ustar00rootroot00000000000000To generate the Tiled documentation, you need to install Python 3, Sphinx and the ReadTheDocs theme. On Ubunu the following commands could be used: sudo apt install python3-pip pip3 install sphinx pip3 install sphinx_rtd_theme Then, the documentation can be generated by running: make html tiled-1.3.2/docs/_build/000077500000000000000000000000001361206041500150025ustar00rootroot00000000000000tiled-1.3.2/docs/_build/gettext/000077500000000000000000000000001361206041500164665ustar00rootroot00000000000000tiled-1.3.2/docs/_build/gettext/index.pot000066400000000000000000000016241361206041500203240ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2017, Tiled Documentation Writers # This file is distributed under the same license as the Tiled package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Tiled 1.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-12-21 14:31+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../index.rst:2 msgid "Tiled Documentation" msgstr "" #: ../../index.rst:5 msgid "If you're not finding what you're looking for in these pages, please don't hesitate to ask questions on the `Tiled Forum `_." msgstr "" #: ../../index.rst:8 msgid "User Manual" msgstr "" #: ../../index.rst:29 msgid "Reference" msgstr "" tiled-1.3.2/docs/_build/gettext/manual.pot000066400000000000000000004061011361206041500204710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2017, Tiled Documentation Writers # This file is distributed under the same license as the Tiled package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Tiled 1.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-12-21 14:31+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../manual/automapping.rst:3 msgid "Automapping" msgstr "" #: ../../manual/automapping.rst:6 msgid "What is Automapping?" msgstr "" #: ../../manual/automapping.rst:8 msgid "Automapping is an advanced tool to automatically search certain combinations of tiles across layers in a map and to replace these parts by other combination. This allows the user to draw structures with a minimum of time spent and the Automapping will be able to generate a rather complex scenario, which would need lots more time if manually crafted." msgstr "" #: ../../manual/automapping.rst:15 msgid "So the goal of Automapping is that you only need to draw within one layer and everything else is setup for you. This brings some advantages:" msgstr "" #: ../../manual/automapping.rst:18 msgid "**Working speed** - you need less time to setup a map." msgstr "" #: ../../manual/automapping.rst:19 msgid "**Less errors** - the main reason is to reduce the error rate. If you have setup the rules properly, there is no hidden error." msgstr "" #: ../../manual/automapping.rst:23 msgid "External Links" msgstr "" #: ../../manual/automapping.rst:25 msgid "`Automapping explained for Tiled 0.9 and later (YouTube) `__" msgstr "" #: ../../manual/automapping.rst:26 msgid "`Examples on Automapping `__" msgstr "" #: ../../manual/automapping.rst:27 msgid "`Tiled Map Editor Tutorial Part Three: AutoMap (YouTube) `__" msgstr "" #: ../../manual/automapping.rst:31 msgid "Setting it Up" msgstr "" #: ../../manual/automapping.rst:33 msgid "The Automapping feature is looking for a text file called 'rules.txt' in the folder where the current map is located. Each line in this text file is either" msgstr "" #: ../../manual/automapping.rst:37 msgid "a path to a **rulefile**" msgstr "" #: ../../manual/automapping.rst:38 msgid "or a path to another textfile which has the same syntax (i.e. in another directory)" msgstr "" #: ../../manual/automapping.rst:40 msgid "or is a comment which is indicated by **#** or **//**" msgstr "" #: ../../manual/automapping.rst:42 msgid "A **rulefile** is a standard map file, which can be read and written by tiled (\\*.tmx). In one rulefile there can be defined multiple rules." msgstr "" #: ../../manual/automapping.rst:45 msgid "An automapping **rulefile** consists of 4 major parts:" msgstr "" #: ../../manual/automapping.rst:47 msgid "The definition of regions describes which locations of the rulemap are actually used to create Automapping rules." msgstr "" #: ../../manual/automapping.rst:49 msgid "The definition of inputs describes which kind of pattern the working map will be searched for." msgstr "" #: ../../manual/automapping.rst:51 msgid "The definition of outputs describes how the working map is changed when an input pattern is found." msgstr "" #: ../../manual/automapping.rst:53 msgid "The map properties are used to fine-tune the input pattern localization and the output of all rules within this rules file." msgstr "" #: ../../manual/automapping.rst:57 msgid "Defining the Regions" msgstr "" #: ../../manual/automapping.rst:59 msgid "There must be either a tile layer called **regions** or there must be the both tile layers **regions\\_input** and **regions\\_output**. Using the **regions** layer, the region defined for input and output is the same. Using the different layers **regions\\_input** and **regions\\_output** delivers the possibility to have different regions for the input section and the output section. The region layer(s) are only used to mark regions, where an Automapping rule exists. Therefore it does not matter which tiles are used in this layer, since these tiles are just used to define a region. So either use any tile or no tile at a coordinate to indicate if that coordinate belongs to a rule or if it doesn't." msgstr "" #: ../../manual/automapping.rst:70 msgid "If multiple rules are defined in one rulemap file, the regions must not be adjacent. That means there must be at least one tile of unused space in between two rules. If the regions are adjacent (coherent) then both regions are interpreted as one rule." msgstr "" #: ../../manual/automapping.rst:76 msgid "Multiple Rules in One Rulefile" msgstr "" #: ../../manual/automapping.rst:78 msgid "Of course multiple rules are possible in one rulemap. If you want to have the rules applied in a certain sequence, you should use multiple **rulefiles** and define the sequence within the **rules.txt** file. As of now there also is a certain sequence within one rulemapfile. Generally speaking the regions with small y value come first. If there are regions at the same y value, then the x value is taken into account. On orthogonal maps this ordering scheme is the same as for reading in most western countries. (Left to right, top to down). The order within one rulemap may be changed later, once tiled is capable of utilizing multiple threads/processors. So if you want to rely on a certain sequence, use different rulemaps and order these in the rules.txt" msgstr "" #: ../../manual/automapping.rst:91 msgid "Definition of Inputs" msgstr "" #: ../../manual/automapping.rst:93 msgid "Inputs are generally defined by tile layers which name follows this scheme:" msgstr "" #: ../../manual/automapping.rst:96 msgid "**input[not][index]\\_name**" msgstr "" #: ../../manual/automapping.rst:98 msgid "where the **[not]** and **[index]** are optional. After the first underscore there will be the name of the input layer. The input layer name can of course include more underscores." msgstr "" #: ../../manual/automapping.rst:102 msgid "The **name** determines which layer on the working map is examined. So for example the layer *input\\_Ground* will check the layer called *Ground* in the working map for this rule. *input\\_test\\_case* will check the layer *test\\_case* in the working map for this rule." msgstr "" #: ../../manual/automapping.rst:107 msgid "Multiple layers having the same name and index is explicitly allowed and is intended. Having multiple layers of the same name and index , will allow you to define different possible tiles per coordinate as input." msgstr "" #: ../../manual/automapping.rst:111 msgid "The index is used to create complete different input conditions. All layers having the same index are taken into account for forming one condition. Each of these conditions are checked individually." msgstr "" #: ../../manual/automapping.rst:115 msgid "index must not contain an underscore." msgstr "" #: ../../manual/automapping.rst:116 msgid "index must not start with *not*" msgstr "" #: ../../manual/automapping.rst:117 msgid "index may be empty." msgstr "" #: ../../manual/automapping.rst:119 msgid "If there are tiles in the standard input layers one of these tiles must be there to match the rule. The optional **[not]** inverts the meaning of that layer. So if there are **inputnot** layers, the tiles placed on them, must not occur in the working map at the examined region to make a rule match. Within one rule you can combine the usage of both input and inputnot layers to make rules input conditions as accurate as you need or as fuzzy as you need." msgstr "" #: ../../manual/automapping.rst:128 msgid "Definition of Outputs" msgstr "" #: ../../manual/automapping.rst:130 msgid "Outputs are generally defined by layers whichs name follows this scheme" msgstr "" #: ../../manual/automapping.rst:132 msgid "**output[index]\\_name**" msgstr "" #: ../../manual/automapping.rst:134 msgid "which is very similar to the input section. At first there must be the word output. Then optionally an **[index]** may occur. After the first underscore there will be the name of the target layer. The target layer name can of course include more underscores." msgstr "" #: ../../manual/automapping.rst:139 msgid "All layers of the same index are treated as one possible output. So the intention of indexes in the outputs of rules is only used for random output." msgstr "" #: ../../manual/automapping.rst:143 msgid "The indexes in the output section have nothing to do with the indexes in the input section, they are independent. In the output section they are used for randomness. In the input section they are used to define multiple possible layers as input. So when there are multiple indexes within one rule, the output will be chosen fairly (uniformly distributed) across all indexes. So a dice will be rolled and one index is picked. All of the output layers carrying this index will be put out into the working map then." msgstr "" #: ../../manual/automapping.rst:152 msgid "Note that the output is not being checked for overlapping itself. This can be achieved by setting the map property **NoOverlappingRules** to true." msgstr "" #: ../../manual/automapping.rst:157 #: ../../manual/export.rst:164 msgid "Map Properties" msgstr "" #: ../../manual/automapping.rst:159 msgid "There are three different map properties, which can be used to add additional information to a **rulefile**:" msgstr "" #: ../../manual/automapping.rst:162 msgid "**DeleteTiles** - This map property is a boolean property: it can be true or false. If rules of this rulefile get applied at some location in your map, this map property determines if all other tiles are deleted before applying the rules. Consider a map where you have multiple layers. Not all layers are filled at all places. In that case all tiles of all layers should be cleared, so afterwards there are only the tiles which are defined by the rules. Since when not all tiles are cleared before, you will have still tiles from before at these places, which are not covered by any tile." msgstr "" #: ../../manual/automapping.rst:172 msgid "**AutomappingRadius** - This map property is a number: 1, 2, 3 ... It determines how many tiles around your changes will be checked as well for redoing the Automapping at live Automapping." msgstr "" #: ../../manual/automapping.rst:176 msgid "**NoOverlappingRules** - This map property is a boolean property: A rule is not allowed to overlap on itself." msgstr "" #: ../../manual/automapping.rst:179 msgid "These properties are map wide, meaning it applies to all rules which are part of the rulemap. If you need rules with different properties, you can use multiple rulemaps." msgstr "" #: ../../manual/automapping.rst:184 msgid "Converting Rules From 0.8 and Below" msgstr "" #: ../../manual/automapping.rst:186 msgid "There is a tool **automappingconverter** along in your distribution to convert the rules created for previous versions of Tiled to version 0.9 and later." msgstr "" #: ../../manual/automapping.rst:190 msgid "If you are compiling tiled from scratch the tool is found in the in **/bin/** folder." msgstr "" #: ../../manual/automapping.rst:193 msgid "The changes for conversion are only layer renaming:" msgstr "" #: ../../manual/automapping.rst:195 msgid "Previous **RuleRegion** will be named **regions**" msgstr "" #: ../../manual/automapping.rst:197 msgid "Previous **RuleSet** will be named **input\\_set**" msgstr "" #: ../../manual/automapping.rst:199 msgid "Previous **RuleNotSet** will be named **inputnot\\_set**" msgstr "" #: ../../manual/automapping.rst:201 msgid "Previous **Rule\\_\\*** will be named **output\\_\\***" msgstr "" #: ../../manual/automapping.rst:204 msgid "Examples" msgstr "" #: ../../manual/automapping.rst:206 msgid "All of the examples are for version 0.9 and later. If you want to see examples for tiled version 0.8 and below, `have a look in this archive. `__" msgstr "" #: ../../manual/automapping.rst:211 msgid "Abstract Input Layer Examples" msgstr "" #: ../../manual/automapping.rst:214 msgid "Having Multiple Input Layers with the Same Name" msgstr "" #: ../../manual/automapping.rst:216 msgid "Assume the following 3 tile layers as input, which possible inputs are there in the working map?" msgstr "" #: ../../manual/automapping.rst:220 #: ../../manual/automapping.rst:251 #: ../../manual/automapping.rst:326 #: ../../manual/automapping.rst:434 #: ../../manual/automapping.rst:463 #: ../../manual/automapping.rst:496 #: ../../manual/automapping.rst:543 #: ../../manual/automapping.rst:593 msgid "Tile layer" msgstr "" #: ../../manual/automapping.rst:220 #: ../../manual/automapping.rst:251 #: ../../manual/automapping.rst:326 #: ../../manual/automapping.rst:434 #: ../../manual/automapping.rst:463 #: ../../manual/automapping.rst:496 #: ../../manual/automapping.rst:543 #: ../../manual/automapping.rst:593 #: ../../manual/editing-tilesets.rst:51 #: ../../manual/using-commands.rst:33 msgid "Name" msgstr "" #: ../../manual/automapping.rst:222 #: ../../manual/automapping.rst:225 #: ../../manual/automapping.rst:228 #: ../../manual/automapping.rst:253 #: ../../manual/automapping.rst:256 #: ../../manual/automapping.rst:330 #: ../../manual/automapping.rst:436 #: ../../manual/automapping.rst:438 #: ../../manual/automapping.rst:440 #: ../../manual/automapping.rst:465 #: ../../manual/automapping.rst:467 #: ../../manual/automapping.rst:469 #: ../../manual/automapping.rst:500 #: ../../manual/automapping.rst:547 #: ../../manual/automapping.rst:549 #: ../../manual/automapping.rst:551 #: ../../manual/automapping.rst:553 #: ../../manual/automapping.rst:555 #: ../../manual/automapping.rst:597 msgid "input\\_Ground" msgstr "" #: ../../manual/automapping.rst:232 msgid "The following parts would be detected as matches for this rule:" msgstr "" #: ../../manual/automapping.rst:246 msgid "Input Layers Using Different Indexes" msgstr "" #: ../../manual/automapping.rst:248 msgid "Given the following 3 input tile layers:" msgstr "" #: ../../manual/automapping.rst:259 msgid "input2\\_Ground" msgstr "" #: ../../manual/automapping.rst:263 msgid "The last layer has an index unequal to the other indexes (which are empty). All following parts would be recognized as matches within the working map:" msgstr "" #: ../../manual/automapping.rst:279 msgid "The Mana World Examples" msgstr "" #: ../../manual/automapping.rst:281 msgid "The Mana world examples will demonstrate quite a lot of different Automapping features. At first a shoreline will be constructed, by first adding all the straight parts and afterwards another rule will correct the corners to make them also fit the given tileset. After the shoreline has been added, the waters will be marked as unwalkable for the game engine. Last but not least the grass should be tiles should be made random by using 5 different grasss tiles." msgstr "" #: ../../manual/automapping.rst:291 msgid "This is what we want to draw." msgstr "" #: ../../manual/automapping.rst:295 msgid "Here we have straight shorelines applied." msgstr "" #: ../../manual/automapping.rst:299 msgid "Here we have some corners." msgstr "" #: ../../manual/automapping.rst:303 msgid "And corners the other way round as well." msgstr "" #: ../../manual/automapping.rst:307 msgid "Here all unwalkable tiles are marked." msgstr "" #: ../../manual/automapping.rst:311 msgid "If you look closely at the grass, you'll see they are now randomized." msgstr "" #: ../../manual/automapping.rst:314 msgid "Basic Shoreline" msgstr "" #: ../../manual/automapping.rst:316 msgid "This example will demonstrate how a straight shoreline can easily be setup between shallow water grass tiles. In this example we will only implement the shoreline, which has grass in southern and water in northern direction." msgstr "" #: ../../manual/automapping.rst:321 msgid "So basically the meaning we will define in the input region is: *All tiles which are south of a water tile and are no water tiles itself, will be replaced by a shoreline tile*" msgstr "" #: ../../manual/automapping.rst:328 #: ../../manual/automapping.rst:390 #: ../../manual/automapping.rst:498 #: ../../manual/automapping.rst:545 #: ../../manual/automapping.rst:595 msgid "regions" msgstr "" #: ../../manual/automapping.rst:332 #: ../../manual/automapping.rst:471 msgid "output\\_Ground" msgstr "" #: ../../manual/automapping.rst:335 msgid "The region in which this Automapping rule should be defined is of 2 tiles in height and 1 tile in width. Therefore we need a layer called *regions* and it will have 2 tiles placed to indicate this region." msgstr "" #: ../../manual/automapping.rst:339 msgid "The input layer called *input\\_Ground* is depicted in the middle. Only the upper tile is filled by the water tile. The lower tile contains no tile. It is not an invisible tile, just no tile at all." msgstr "" #: ../../manual/automapping.rst:343 msgid "And whenever there is no tile in a place within the rule regions in an input layer, what kind of tiles will be allowed there? There will be allowed any tiles except all used tiles within all input layer with the same index and name." msgstr "" #: ../../manual/automapping.rst:348 msgid "Here we only have one tile layer as an input layer carrying only the water tile. Hence at the position, where no tile is located, all tiles except that water tile are allowed." msgstr "" #: ../../manual/automapping.rst:352 msgid "The output layer called *output\\_Ground* shows the tile which gets placed, if this rule matches." msgstr "" #: ../../manual/automapping.rst:356 msgid "Corners on a Shore Line" msgstr "" #: ../../manual/automapping.rst:358 msgid "This example is a continuation of the previous example. Now the corners of the given shoreline should be implemented automatically. Within this article we will just examine the bent in corner shoreline in the topleft corner. The other shoreline corners are constructed the same way. So after the example is applied, we would like to have the corners of the shoreline get suitable tiles. Since we rely on the other example being finished, we will put the rules needed for the corners into another new rulefile. (which is listed afterwards in rules.txt)" msgstr "" #: ../../manual/automapping.rst:375 msgid "The shoreline may have some more corners nearby, which means there may be more different tiles than the straigt corner lines. In the figure we see all inputs which should be covered." msgstr "" #: ../../manual/automapping.rst:379 msgid "Both the tiles in the top right corner and in the lower left corner are directly adjacent to the desired (slightly transparent) tile in the top left corner." msgstr "" #: ../../manual/automapping.rst:383 msgid "We can see 3 different tiles for the lower left corner, which is straight shore line, bent inside and bend outside shore lines." msgstr "" #: ../../manual/automapping.rst:386 msgid "Also we see 3 different inputs for the top right corner, which also is straight, bent in or out shore line." msgstr "" #: ../../manual/automapping.rst:392 msgid "So with this rule we want to put the bent in shore line tile in the top left corner, hence we don't care which tile has been there before. Also we don't care about the tile in the lower right corner. (probably water, but can be any decorative watertile, so just ignore it)." msgstr "" #: ../../manual/automapping.rst:401 msgid "Therefore we will need different input and output regions. In the figure we can see the both tilelayers regions input and regions output. The input section covers just these two tiles as we discussed. The output region covers just the single tile we want to output. Though the input and output region do not overlap, the united region of both the input and the output region is still one coherent region, so it's one rule and works." msgstr "" #: ../../manual/automapping.rst:409 msgid "Output regions can be larger than absolutely required, since when there are no tiles in the Output section, the tiles in the working map are not overwritten but just kept as is, hence the Output region could also be sized as the united region of both the output and input region." msgstr "" #: ../../manual/automapping.rst:415 #: ../../manual/automapping.rst:473 msgid "regions\\_input" msgstr "" #: ../../manual/automapping.rst:417 msgid "Now we want to put all the nine possible patterns we observed as possible input for this rule. We could of course define nine different layers *input1\\_Ground* up to *input9\\_Ground*" msgstr "" #: ../../manual/automapping.rst:421 msgid "Nine TileLayers?! what a mess, we'll put it in a better way." msgstr "" #: ../../manual/automapping.rst:423 msgid "Also consider not having just 3 possible tiles at the 2 locations but 4. Then we would need 4\\*4=16 tilelayers to get all conditions. Another downside of this comes with more needed locations: Think of more than 2 locations needed to construct a ruleinput. So for 3 locations, then each location could have the 3 possibilites, hence you need 3\\*3\\*3 = 27 tilelayers. It's not getting better..." msgstr "" #: ../../manual/automapping.rst:430 msgid "So let's try a smart way: All input layers have the same name, so at each position any of the three different tiles is valid." msgstr "" #: ../../manual/automapping.rst:444 msgid "outputs" msgstr "" #: ../../manual/automapping.rst:446 msgid "The output is straight forward, since only one tile is needed. No randomness is needed, hence the index is not needed to be varied, so it's kept empty. The desired output layer is called Ground, so the over all name of the single output layer will be output Ground. At this single layer at the correct location the correct tile is placed." msgstr "" #: ../../manual/automapping.rst:457 msgid "The Other Corners on a Shore Line" msgstr "" #: ../../manual/automapping.rst:459 msgid "This is for corners bent the other way round. Basically it has the same concepts, just other tiles." msgstr "" #: ../../manual/automapping.rst:475 msgid "regions\\_output" msgstr "" #: ../../manual/automapping.rst:479 msgid "Adding Collision Tiles" msgstr "" #: ../../manual/automapping.rst:481 msgid "The Mana World uses an extra tile layer called *Collision* to have information about whether a player is able to walk at certain tiles or if it is not. That layer is invisible to the player, but the game engine parses it, whether there is a tile or there is no tile." msgstr "" #: ../../manual/automapping.rst:486 msgid "So we need to decide for each position if a player can walk there and put a tile into the *Collision* layer if it is unwalkable." msgstr "" #: ../../manual/automapping.rst:489 msgid "As *input* layer we will parse the *Ground* layer and put collision tiles where the player should not walk." msgstr "" #: ../../manual/automapping.rst:492 msgid "Actually this task is a bunch of rules, but each rule itself is very easy:" msgstr "" #: ../../manual/automapping.rst:502 msgid "output\\_Collision" msgstr "" #: ../../manual/automapping.rst:505 msgid "In the above *regions* layer we have 14 different rules, because there are 14 incoherent regions in the *regions* layer. That's 9 different water tiles, which should be unwalkable and 5 different grass tiles which will be placed randomly in the next example." msgstr "" #: ../../manual/automapping.rst:510 msgid "As input we will have one of all the used tiles and as output there is either a tile in the *Collision* layer or not." msgstr "" #: ../../manual/automapping.rst:513 msgid "**Do we need the rules with clean output?** No, it is not needed for one run of Automapping. But if you are designing a map, you will likely add areas with collision and then remove some parts of it again and so on." msgstr "" #: ../../manual/automapping.rst:517 msgid "So we need to also remove the collision tiles from positions, which are not marked by a collision any more. This can be done by adding the map property *DeleteTiles* and setting it to *yes* or *true*. Then all the parts in the *Collision* layer will be erased before the Automapping takes place, so the collision tiles are only placed at real unwalkable tiles and the history if there has been a collision place is neglected." msgstr "" #: ../../manual/automapping.rst:525 msgid "Random Grass Tiles" msgstr "" #: ../../manual/automapping.rst:527 msgid "In this example we will shuffle all grass tiles, so one grass tiles will be replaced with another randomly chosen tile." msgstr "" #: ../../manual/automapping.rst:530 msgid "As input we will choose all of our grass tiles. This is done by having each tile in its own input layer, so each grass tile gets accepted for this rule." msgstr "" #: ../../manual/automapping.rst:534 msgid "As output we will also put each grass tile into one output layer. To make it random the *index* of the output layers needs to be different for each layer." msgstr "" #: ../../manual/automapping.rst:538 msgid "The following rule might look always the same, but there are different grass tiles. Each grass tile is in both one of the input and one of the output layers (the order of the layers doesn't matter)." msgstr "" #: ../../manual/automapping.rst:557 msgid "output1\\_Ground" msgstr "" #: ../../manual/automapping.rst:559 msgid "output2\\_Ground" msgstr "" #: ../../manual/automapping.rst:561 msgid "output3\\_Ground" msgstr "" #: ../../manual/automapping.rst:563 msgid "output4\\_Ground" msgstr "" #: ../../manual/automapping.rst:565 msgid "output5\\_Ground" msgstr "" #: ../../manual/automapping.rst:569 msgid "An alternating wall" msgstr "" #: ../../manual/automapping.rst:571 msgid "This example will demonstrate how a wall as a transition between a walkable area and the non-walkable black void can easily be setup. As input a dedicated set layer will be used." msgstr "" #: ../../manual/automapping.rst:580 msgid "In my opinion a dedicated set layer is much easier to use for the rough draft, but for adding details such as collision information on decorative tiles the input should use the decoration." msgstr "" #: ../../manual/automapping.rst:584 msgid "The structure of the input, output and region layer is very similar to the example of the straight shoreline in The Mana World examples. The main difference is the different size. Since the wall contains multiple tiles in height, the height of the rulelayers is different as well. Vertically the tiles are also alternating. As you can see in the following figure, every second tile displaying the base board of the wall has a notch for example." msgstr "" #: ../../manual/automapping.rst:599 msgid "output\\_Walls" msgstr "" #: ../../manual/automapping.rst:602 msgid "Hence the region in which this Automapping rule should be defined is of 4 tiles in height and 2 tile in width. Therefore we need a layer called *regions* and it will have 8 tiles placed to indicate this region. In the figure the top graphics shows such a region layer." msgstr "" #: ../../manual/automapping.rst:607 msgid "The input layer has the following meaning:" msgstr "" #: ../../manual/automapping.rst:609 msgid "*If there are 2 vertical adjacent brown tiles in the set layer and in the 3x2 tiles above here are no brown tiles, this rule matches.*" msgstr "" #: ../../manual/automapping.rst:612 msgid "Only the lowest 2 coordinates contain the brown tile. The upper coordinates contains no tile. (It is not an invisible tile, just no tile at all.) The input layer called *Input\\_set* is depicted in the middle of the figure." msgstr "" #: ../../manual/automapping.rst:617 msgid "The output consists of only one layer as well called *Output\\_Walls*. It contains the actual wall tiles." msgstr "" #: ../../manual/automapping.rst:622 msgid "Vertically the tiles are alternating." msgstr "" #: ../../manual/automapping.rst:627 msgid "A broken version of the rule, *NoOverlappingRules* was not yet set." msgstr "" #: ../../manual/automapping.rst:629 msgid "When trying to match the input layer to the desired set layer (right picture of the figure at the beginning of the example, you will see it matches all way long, no matter of the vertical adjustment." msgstr "" #: ../../manual/automapping.rst:633 msgid "Hence when we use the rule as discussed now, we will get not the desired result, but this rule overlaps itself. The overlapping problem is shown in figure above." msgstr "" #: ../../manual/automapping.rst:637 msgid "Since the overlapping is not desired, we can turn it off by adding a map property to the rulemap *NoOverlappingRules* and setting it to *true*" msgstr "" #: ../../manual/automapping.rst:640 msgid "Keep in mind that the map property applies for all rules on that rule map." msgstr "" #: ../../manual/custom-properties.rst:2 msgid "Custom Properties" msgstr "" #: ../../manual/custom-properties.rst:4 msgid "One of the major strengths of Tiled is that it allows setting custom properties on all of its basic data structures. This way it is possible to include many forms of custom information, which can later be used by your game or by the framework you're using to integrate Tiled maps." msgstr "" #: ../../manual/custom-properties.rst:9 msgid "Custom properties are displayed in the Properties view. This view is context-sensitive, usually displaying the properties of the last selected object. For tiles in a tileset or objects on an object layer, it also supports multi-selection." msgstr "" #: ../../manual/custom-properties.rst:17 msgid "Properties View" msgstr "" #: ../../manual/custom-properties.rst:20 msgid "Adding Properties" msgstr "" #: ../../manual/custom-properties.rst:22 msgid "When you add a property (using the '+' button at the bottom of the Properties view), you are prompted for its name and its type. Currently Tiled supports the following basic property types:" msgstr "" #: ../../manual/custom-properties.rst:26 msgid "**string** (any text, including multi-line text)" msgstr "" #: ../../manual/custom-properties.rst:27 msgid "**float** (a floating point number)" msgstr "" #: ../../manual/custom-properties.rst:28 msgid "**int** (a whole number)" msgstr "" #: ../../manual/custom-properties.rst:29 msgid "**bool** (true or false)" msgstr "" #: ../../manual/custom-properties.rst:30 msgid "**file** (a relative path referencing a file)" msgstr "" #: ../../manual/custom-properties.rst:31 msgid "**color** (a 32-bit color value)" msgstr "" #: ../../manual/custom-properties.rst:36 msgid "Add Property Dialog" msgstr "" #: ../../manual/custom-properties.rst:38 msgid "The property type is used to choose a custom editor in the Properties view. Choosing a number or boolean type also avoids that the value will get quoted in JSON and Lua exports." msgstr "" #: ../../manual/custom-properties.rst:49 msgid "Tile Property Inheritance" msgstr "" #: ../../manual/custom-properties.rst:51 msgid "When custom properties are added to a tile, these properties will also be visible when an object instance of that tile is selected. This enables easy per-object overriding of certain default properties associated with a tile. This becomes especially useful when combined with :ref:`typed-tiles`." msgstr "" #: ../../manual/custom-properties.rst:57 msgid "Inherited properties will be displayed in gray (disabled text color), whereas overridden properties will be displayed in black (usual text color)." msgstr "" #: ../../manual/custom-properties.rst:64 msgid "Predefining Properties" msgstr "" #: ../../manual/custom-properties.rst:67 msgid "General Setup" msgstr "" #: ../../manual/custom-properties.rst:69 msgid "Usually you only use a limited set of object types in your game, and each type of object has a fixed set of possible properties, with specific types and default values. To save you time, Tiled allows predefining these properties based on the \"Type\" field for objects. You can set this up using the Object Types Editor, available from the *View* menu." msgstr "" #: ../../manual/custom-properties.rst:79 msgid "Object Types Editor" msgstr "" #: ../../manual/custom-properties.rst:81 msgid "By default, Tiled stores these object types in the user settings. However, since you'll often want to share them with other people in your project, you can export your object types or change the storage location of the object types file. A simple XML or JSON file with self-explanatory contents is used to store your object types." msgstr "" #: ../../manual/custom-properties.rst:87 msgid "The color not only affects the rendering of the various shapes of objects, but is also the color of the label which will show up if you give your object a name." msgstr "" #: ../../manual/custom-properties.rst:91 msgid "To make the predefined properties show up in the Properties view, all you need to do is to enter the name of the type in the built-in \"Type\" property. Usually this is what you're doing already anyway to tell your engine what kind of object it is dealing with." msgstr "" #: ../../manual/custom-properties.rst:103 msgid "Typed Tiles" msgstr "" #: ../../manual/custom-properties.rst:105 msgid "If you're using :ref:`tile objects `, you can set the type on the tile to avoid having to set it on each object instance. Setting the type on the tile makes the predefined properties visible when having the tile selected, allowing to override the values. It also makes those possibly overridden values visible when having a tile object instance selected, again allowing you to override them." msgstr "" #: ../../manual/custom-properties.rst:112 msgid "An example use-case for this would be to define custom types like \"NPC\", \"Enemy\" or \"Item\" with properties like \"name\", \"health\" or \"weight\". You can then specify values for these on the tiles representing these entities. And when placing those tiles as objects, you can override those values if you need to." msgstr "" #: ../../manual/custom-properties.rst:121 msgid "There are several types of custom properties I'd like to add:" msgstr "" #: ../../manual/custom-properties.rst:123 msgid "**Enumerations**, where you can predefine all possible values and it forms a combo box (`#1211 `__)." msgstr "" #: ../../manual/custom-properties.rst:126 msgid "**Object references**, which would allow easily linking objects together and Tiled could display such connections (`#707 `__)." msgstr "" #: ../../manual/custom-properties.rst:129 msgid "**Array properties**, which would be properties having a list of values (`#1493 `__)." msgstr "" #: ../../manual/custom-properties.rst:131 msgid "**Dictionary properties**, which would be properties that can contain any number of other properties as children (`#489 `__)." msgstr "" #: ../../manual/custom-properties.rst:135 msgid "It would also be nice to add support for **limiting property values**, like the length of string properties or a minimum/maximum on number values." msgstr "" #: ../../manual/custom-properties.rst:139 msgid "Apart from predefining properties based on object type, I'd like to add support for **predefining the properties for each data type**. So defining which custom properties are valid for maps, tilesets, layers, etc. (`#1410 `__)" msgstr "" #: ../../manual/custom-properties.rst:144 msgid "Finally, the predefined properties would work very well together with explicit **support for projects**. Then you could switch between different projects or get started on an existing project, without needing to configure Tiled to use the right object type definitions." msgstr "" #: ../../manual/custom-properties.rst:149 #: ../../manual/editing-tilesets.rst:230 #: ../../manual/layers.rst:132 #: ../../manual/objects.rst:284 msgid "If you like any of these plans, please help me getting around to it faster by `becoming a patron `__. The more support I receive the more time I can afford to spend improving Tiled!" msgstr "" #: ../../manual/editing-tile-layers.rst:2 msgid "Editing Tile Layers" msgstr "" #: ../../manual/editing-tile-layers.rst:4 msgid ":ref:`tile-layer-introduction` are what makes Tiled a *tile map editor*. Although not as flexible as :ref:`object-layer-introduction`, they provide efficient data storage and good rendering performance as well as efficient content creation. Every new map gets one by default, though feel free to delete it when you're not going to use it." msgstr "" #: ../../manual/editing-tile-layers.rst:13 msgid "Stamp Brush" msgstr "" #: ../../manual/editing-tile-layers.rst:15 msgid "Shortcut: ``B``" msgstr "" #: ../../manual/editing-tile-layers.rst:17 msgid "The primary tool for editing tile layers is the Stamp Brush. It can be used to paint single tiles as well as larger \"stamps\", which is where it gets its name from. Using the right mouse button, it can also quickly capture tile stamps from the currently active layer. A tile stamp is commonly created by selecting one or more tiles in the Tilesets view." msgstr "" #: ../../manual/editing-tile-layers.rst:23 msgid "The Stamp Brush has some extra features:" msgstr "" #: ../../manual/editing-tile-layers.rst:25 msgid "While holding ``Shift``, click any two points to draw a line between them." msgstr "" #: ../../manual/editing-tile-layers.rst:28 msgid "While holding ``Ctrl+Shift``, click any two points two draw a circle or ellipse centered on the first point." msgstr "" #: ../../manual/editing-tile-layers.rst:31 msgid "Activate the *Random Mode* using the dice button on the Tool Options toolbar to have the Stamp Brush paint with random tiles from the tile stamp. The probability of each tile depends on how often it occurred on the tile stamp, as well as the probability set on each tile in the *Tileset Editor*." msgstr "" #: ../../manual/editing-tile-layers.rst:37 msgid "Activate the *Wang Fill Mode* using the Wang tile button on the tool bar to have the Stamp Brush paint using the Wang methods. This makes adjacent tiles match edge and corner colors to be placed. Wang tiles are described in detail in :doc:`using-wang-tiles`." msgstr "" #: ../../manual/editing-tile-layers.rst:42 msgid "In combination with the *Tile Stamps* view, it can also place randomly from a set of predefined tile stamps. This can be more useful than the *Random Mode*, which randomly places individual tiles." msgstr "" #: ../../manual/editing-tile-layers.rst:47 msgid "You can flip the current tile stamp horizontally/vertically by using ``X`` and ``Y`` respectively. You can also rotate left/right by using ``Z`` and ``Shift+Z`` respectively. These actions can also be triggered from the Tool Options tool bar." msgstr "" #: ../../manual/editing-tile-layers.rst:55 msgid "Terrain Brush" msgstr "" #: ../../manual/editing-tile-layers.rst:57 #: ../../manual/objects.rst:102 msgid "Shortcut: ``T``" msgstr "" #: ../../manual/editing-tile-layers.rst:59 msgid "The Terrain Brush allows for efficient editing with a certain type of corner-based terrain transitions. Setting it up requires associating terrain information with your tiles, which is described in detail in :doc:`Using the Terrain Tool `." msgstr "" #: ../../manual/editing-tile-layers.rst:64 msgid "Similarly to the :ref:`stamp-tool`, you can draw lines by holding ``Shift``. When holding ``Ctrl``, the size of the editing area is reduced to one corner (this currently doesn't work well in combination with drawing lines)." msgstr "" #: ../../manual/editing-tile-layers.rst:73 msgid "When holding ``Alt``, the editing operations are also applied at a 180 degree rotation. This is especially useful when editing strategic maps where two sides need to have equal opportunities. The modifier works well in combination with either ``Shift`` for drawing lines or ``Ctrl`` for reducing the edited area." msgstr "" #: ../../manual/editing-tile-layers.rst:86 #: ../../manual/using-wang-tiles.rst:99 #: ../../manual/using-wang-tiles.rst:106 msgid "Wang Brush" msgstr "" #: ../../manual/editing-tile-layers.rst:88 msgid "Shortcut: ``G``" msgstr "" #: ../../manual/editing-tile-layers.rst:90 msgid "The Wang Brush works in a very similar way to the :ref:`terrain-tool`, except it uses Wang sets. Key differences are:" msgstr "" #: ../../manual/editing-tile-layers.rst:93 msgid "Wang tiles support edges as well as corners, whereas terrains only support corners. This makes Wang tiles useful for drawing paths, or fences." msgstr "" #: ../../manual/editing-tile-layers.rst:95 msgid "The default size is to edit one edge/corner. Holding ``Ctrl`` expands it to the whole tile." msgstr "" #: ../../manual/editing-tile-layers.rst:97 msgid "If the transition cannot be made on the immediately affected tiles, the operation is aborted." msgstr "" #: ../../manual/editing-tile-layers.rst:100 msgid "To use the tool, a color must be selected from the Wang color view. Wang tiles and this tool are described in detail in :doc:`using-wang-tiles`." msgstr "" #: ../../manual/editing-tile-layers.rst:106 msgid "Bucket Fill Tool" msgstr "" #: ../../manual/editing-tile-layers.rst:108 msgid "Shortcut: ``F``" msgstr "" #: ../../manual/editing-tile-layers.rst:110 msgid "The Bucket Fill Tool provides a quick way of filling empty areas or areas covered with the same tiles. The currently active tile stamp will be repeated in the filled area. It can also be used in combination with the *Random Mode*, or *Wang Fill Mode*." msgstr "" #: ../../manual/editing-tile-layers.rst:115 msgid "When holding ``Shift``, the tool fills the currently selected area regardless of its contents. This is useful for filling custom areas that have been selected previously using one or more `Selection Tools <#selection-tools>`__." msgstr "" #: ../../manual/editing-tile-layers.rst:120 msgid "You can also flip and rotate the current stamp as described for the :ref:`stamp-tool`." msgstr "" #: ../../manual/editing-tile-layers.rst:126 msgid "Eraser" msgstr "" #: ../../manual/editing-tile-layers.rst:128 #: ../../manual/objects.rst:251 msgid "Shortcut: ``E``" msgstr "" #: ../../manual/editing-tile-layers.rst:130 msgid "A simple eraser tool. Left click erases single tiles and right click can be used to quickly erase rectangular areas." msgstr "" #: ../../manual/editing-tile-layers.rst:134 msgid "Selection Tools" msgstr "" #: ../../manual/editing-tile-layers.rst:136 msgid "There are various tile selection tools that all work in similar fashion:" msgstr "" #: ../../manual/editing-tile-layers.rst:138 msgid "**Rectangular Select** allows selection of rectangular areas (shortcut: ``R``)" msgstr "" #: ../../manual/editing-tile-layers.rst:141 msgid "**Magic Wand** allows selection of connected areas filled with the same tile (shortcut: ``W``)" msgstr "" #: ../../manual/editing-tile-layers.rst:144 msgid "**Select Same Tile** allows selection of same-tiles across the entire layer (shortcut: ``S``)" msgstr "" #: ../../manual/editing-tile-layers.rst:147 msgid "By default, each of these tools replaces the currently selected area. The following modifiers can be used to change this behavior:" msgstr "" #: ../../manual/editing-tile-layers.rst:150 msgid "Holding ``Shift`` expands the current selection with the new area" msgstr "" #: ../../manual/editing-tile-layers.rst:151 msgid "Holding ``Ctrl`` subtracts the new area from the current selection" msgstr "" #: ../../manual/editing-tile-layers.rst:152 msgid "Holding ``Ctrl`` and ``Shift`` selects the intersection of the new area with the current selection" msgstr "" #: ../../manual/editing-tile-layers.rst:155 msgid "You can also lock into one of these modes (Add, Subtract or Intersect) by clicking on one of the tool buttons in the Tool Options toolbar." msgstr "" #: ../../manual/editing-tile-layers.rst:159 msgid "Managing Tile Stamps" msgstr "" #: ../../manual/editing-tile-layers.rst:161 msgid "It can often be useful to store the current tile stamp somewhere to use it again later. The following shortcuts work for this purpose:" msgstr "" #: ../../manual/editing-tile-layers.rst:164 msgid "``Ctrl + 1-9`` - Store current tile stamp (similar to ``Ctrl + C``)" msgstr "" #: ../../manual/editing-tile-layers.rst:165 msgid "``1-9`` - Recall the stamp stored at this location (similar to ``Ctrl + V``)" msgstr "" #: ../../manual/editing-tile-layers.rst:168 msgid "Tile stamps can also be stored by name and extended with variations using the *Tile Stamps* view." msgstr "" #: ../../manual/editing-tilesets.rst:2 msgid "Editing Tilesets" msgstr "" #: ../../manual/editing-tilesets.rst:4 msgid "To edit a tileset it needs to be opened explicitly for editing. External tilesets can be opened via the *File* menu, but in general the quickest way to edit the tileset when it is already open in the *Tilesets* view is to click the small *Edit Tileset* button in the tool bar below the tileset." msgstr "" #: ../../manual/editing-tilesets.rst:11 msgid "Two Types of Tileset" msgstr "" #: ../../manual/editing-tilesets.rst:13 msgid "A tileset is a collection of tiles. Tiled currently supports two types of tilesets, which are chosen when creating a new tileset:" msgstr "" #: ../../manual/editing-tilesets.rst:22 msgid "Based on Tileset Image" msgstr "" #: ../../manual/editing-tilesets.rst:17 msgid "This tileset defines a fixed size for all tiles and the image from which these tiles are supposed to be cut. In addition it supports a margin around the tiles and a spacing between the tiles, which allows for using tileset images that either happen to have space between or around their tiles or those that have extruded the border pixels of each tile to avoid color bleeding." msgstr "" #: ../../manual/editing-tilesets.rst:27 msgid "Collection of Images" msgstr "" #: ../../manual/editing-tilesets.rst:25 msgid "In this type of tileset each tile refers to its own image file. It is useful when the tiles aren't the same size, or when the packing of tiles into a texture is done later on." msgstr "" #: ../../manual/editing-tilesets.rst:29 msgid "Regardless of the type of tileset, you can associate a lot of meta- information with it and its tiles. Some of this information can be for use in your game, like :ref:`collision information ` and :ref:`animations `. Other information is primarily meant for certain editing tools." msgstr "" #: ../../manual/editing-tilesets.rst:37 msgid "A tileset can be either embedded in a map file or saved externally. Since Tiled 1.0, the default and recommended approach is to save your tilesets to their own file. This simplifies your workflow since it makes sure any meta-information is shared between all maps using the same tileset." msgstr "" #: ../../manual/editing-tilesets.rst:44 msgid "Tileset Properties" msgstr "" #: ../../manual/editing-tilesets.rst:46 msgid "You can access the tileset properties by using the menu action *Tileset > Tileset Properties*." msgstr "" #: ../../manual/editing-tilesets.rst:50 msgid "The name of the tileset. Used to identify the tileset in the *Tilesets* view when editing a map." msgstr "" #: ../../manual/editing-tilesets.rst:56 msgid "Drawing Offset" msgstr "" #: ../../manual/editing-tilesets.rst:54 msgid "A drawing offset in pixels, applied when rendering any tile from the tileset (as part of tile layers or as tile objects). This is can be useful to make your tiles align to the grid." msgstr "" #: ../../manual/editing-tilesets.rst:60 msgid "Background Color" msgstr "" #: ../../manual/editing-tilesets.rst:59 msgid "A background color for the tileset, which can be set in case the default dark-gray background is not suitable for your tiles." msgstr "" #: ../../manual/editing-tilesets.rst:72 msgid "Orientation" msgstr "" #: ../../manual/editing-tilesets.rst:67 msgid "When the tileset contains isometric tiles, you can set this to *Isometric*. This value, along with the **Grid Width** and **Grid Height** properties, is taken into account by overlays rendered on top of the tiles. This helps for example when specifying :ref:`terrain-information` or editing :ref:`wang-sets`. It also affects the orientation used by the :ref:`tile-collision-editor`." msgstr "" #: ../../manual/editing-tilesets.rst:77 msgid "Columns" msgstr "" #: ../../manual/editing-tilesets.rst:75 msgid "This is a read-only property for tilesets based on a tileset image, but for image collection tilesets you can control the number of columns used when displaying the tileset here." msgstr "" #: ../../manual/editing-tilesets.rst:83 #: ../../manual/editing-tilesets.rst:113 msgid "Image" msgstr "" #: ../../manual/editing-tilesets.rst:80 msgid "This property only exists for tilesets based on a tileset image. Selecting the value field will show an *Edit...* button, allowing you to change the parameters relevant to cutting the tiles from the image." msgstr "" #: ../../manual/editing-tilesets.rst:85 msgid "Of course, as with most data types in Tiled, you can also associate :doc:`custom-properties` with the tileset." msgstr "" #: ../../manual/editing-tilesets.rst:90 msgid "Tile Properties" msgstr "" #: ../../manual/editing-tilesets.rst:93 msgid "ID" msgstr "" #: ../../manual/editing-tilesets.rst:93 msgid "The ID of the tile in the tileset (read-only)" msgstr "" #: ../../manual/editing-tilesets.rst:101 msgid "Type" msgstr "" #: ../../manual/editing-tilesets.rst:100 msgid "This property refers to custom types defined in the :ref:`Object Types Editor `. See the section about :ref:`typed-tiles` for more information." msgstr "" #: ../../manual/editing-tilesets.rst:104 msgid "Width and Height" msgstr "" #: ../../manual/editing-tilesets.rst:104 msgid "The size of the tile (read-only)" msgstr "" #: ../../manual/editing-tilesets.rst:109 #: ../../manual/using-wang-tiles.rst:129 msgid "Probability" msgstr "" #: ../../manual/editing-tilesets.rst:107 msgid "Represents a relative probability that this tile will get chosen out of multiple options. This value is used in *Random Mode* and by the :ref:`terrain-tool`." msgstr "" #: ../../manual/editing-tilesets.rst:112 msgid "Only relevant for tiles that are part of image collection tilesets, this shows the image file of the tile and allows you to change it." msgstr "" #: ../../manual/editing-tilesets.rst:118 msgid "Terrain Information" msgstr "" #: ../../manual/editing-tilesets.rst:120 msgid "Terrain information can be added to a tileset to enable the use of the the :ref:`terrain-tool`. See the section about :ref:`defining terrain information `." msgstr "" #: ../../manual/editing-tilesets.rst:131 msgid "Wang Sets" msgstr "" #: ../../manual/editing-tilesets.rst:133 msgid "A tileset can contain any number of Wang sets for use with the :ref:`wang-tool`. See :ref:`defining-wang-tile-info` for more information." msgstr "" #: ../../manual/editing-tilesets.rst:140 #: ../../manual/editing-tilesets.rst:155 msgid "Tile Collision Editor" msgstr "" #: ../../manual/editing-tilesets.rst:142 msgid "The tile collision editor is available by clicking the *Tile Collision Editor* |tile-collision-editor-icon| button on the tool bar. This will open a view where you can create and edit shapes on the tile. You can also associate custom properties with each shape." msgstr "" #: ../../manual/editing-tilesets.rst:147 msgid "Usually these shapes define collision information for a certain sprite or for a tile representing level geometry, but of course you could also use them to add certain hot-spots to your sprites like for particle emitters or the source of gunshots." msgstr "" #: ../../manual/editing-tilesets.rst:159 msgid "Check out the `Tiled2Unity`_ tool by Sean Barton for a great example of what you can do with this information. It can take the collision shapes for all tiles and generate a single collision mesh from it, as demonstrated in the `Mega Dad Adventures`_ post." msgstr "" #: ../../manual/editing-tilesets.rst:167 #: ../../manual/editing-tilesets.rst:180 msgid "Tile Animation Editor" msgstr "" #: ../../manual/editing-tilesets.rst:169 msgid "The tile animation editor allows defining a single linear looping animation with each tile by referring to other tiles in the tileset as its frames. Open it by clicking the *Tile Animation Editor* |tile-animation-editor-icon| button." msgstr "" #: ../../manual/editing-tilesets.rst:173 msgid "Tile animations can be live-previewed in Tiled, which is useful for getting a feeling of what it would look like in-game. The preview can be turned on or off via *View > Show Tile Animations*." msgstr "" #: ../../manual/editing-tilesets.rst:182 msgid "The following steps allow to add or edit a tile animation:" msgstr "" #: ../../manual/editing-tilesets.rst:184 msgid "Select the tile in the main Tiled window. This will make the *Tile Animation Editor* window show the (initially empty) animation associated with that tile, along with all other tiles from the tileset." msgstr "" #: ../../manual/editing-tilesets.rst:188 msgid "Drag tiles from the tileset view in the Tile Animation Editor into the list on the left to add animation frames. You can drag multiple tiles at the same time. Each new frame gets a default duration of 100 ms." msgstr "" #: ../../manual/editing-tilesets.rst:192 msgid "Double-click on the duration of a frame to change it." msgstr "" #: ../../manual/editing-tilesets.rst:194 msgid "Drag frames around in the list to reorder them." msgstr "" #: ../../manual/editing-tilesets.rst:196 msgid "A preview of the animation shows in the bottom left corner." msgstr "" #: ../../manual/editing-tilesets.rst:211 msgid "There are many ways in which the tileset editor can be made more efficient, for example:" msgstr "" #: ../../manual/editing-tilesets.rst:214 msgid "**Wang Sets**" msgstr "" #: ../../manual/editing-tilesets.rst:216 msgid "Make it easier to set up Wang tiles (`#1729 `__)" msgstr "" #: ../../manual/editing-tilesets.rst:218 msgid "**Tile Collision Editor**" msgstr "" #: ../../manual/editing-tilesets.rst:220 msgid "Allow setting collisions for multiple tiles at once (`#1322 `__)" msgstr "" #: ../../manual/editing-tilesets.rst:221 msgid "Render tile collision shapes to the main map (`#799 `__) or to the tileset view (`#1281 `__)" msgstr "" #: ../../manual/editing-tilesets.rst:224 msgid "**Tile Animation Editor**" msgstr "" #: ../../manual/editing-tilesets.rst:226 msgid "Allow changing the default frame duration (`#1631 `__)" msgstr "" #: ../../manual/editing-tilesets.rst:227 msgid "Allow changing the duration of multiple frames at the same time (`#1310 `__)" msgstr "" #: ../../manual/editing-tilesets.rst:228 msgid "Support multiple named animations per tile (`#986 `__)" msgstr "" #: ../../manual/export.rst:2 msgid "Export Formats" msgstr "" #: ../../manual/export.rst:4 msgid "While there are many :doc:`libraries and frameworks ` that work directly with Tiled maps, Tiled also supports a number of additional file and export formats." msgstr "" #: ../../manual/export.rst:8 msgid "Exporting can be done by clicking *File > Export*. When triggering the menu action multiple times, Tiled will only ask for the file name the first time. Exporting can also be automated using the ``--export-map`` command-line parameter." msgstr "" #: ../../manual/export.rst:15 msgid "When exporting on the command-line on Linux, Tiled will still need an X server to run. To automate exports in a headless environment, you can use a headless X server such as `Xvfb`_. In this case you would run Tiled from the command-line as follows:" msgstr "" #: ../../manual/export.rst:25 msgid "JSON" msgstr "" #: ../../manual/export.rst:27 msgid ":doc:`The JSON format ` is most common additional file format supported by Tiled. It can be used instead of TMX since Tiled can also open JSON maps and tilesets and the format supports all Tiled features. Especially in the browser and when using JavaScript in general, the JSON format is easier to load." msgstr "" #: ../../manual/export.rst:33 msgid "The JSON format is currently the only additional format supported for tilesets." msgstr "" #: ../../manual/export.rst:39 msgid "Lua" msgstr "" #: ../../manual/export.rst:41 msgid "Maps can be exported to Lua code. This export option supports most of Tiled's features and is useful when using a Lua-based framework like `LÖVE`_ (with `Simple Tiled Implementation`_), `Corona`_ (with `ponytiled`_ or `Dusk Engine`_) or `Defold`_." msgstr "" #: ../../manual/export.rst:46 msgid "Currently not included are the type of custom properties (though the type does affect how a property value is exported) and information related to recent features like :doc:`Wang tiles ` and :doc:`object templates `." msgstr "" #: ../../manual/export.rst:52 msgid "CSV" msgstr "" #: ../../manual/export.rst:54 msgid "The CSV export only supports :doc:`tile layers `. Maps containing multiple tile layers will export as multiple files, called ``base_.csv``." msgstr "" #: ../../manual/export.rst:58 msgid "Each tile is written out by its ID, unless the tile has a custom property called ``name``, in which case its value is used to write out the tile. Using multiple tilesets will lead to ambiguous IDs, unless the custom ``name`` property is used. Empty cells get the value ``-1``." msgstr "" #: ../../manual/export.rst:66 msgid "GameMaker: Studio 1.4" msgstr "" #: ../../manual/export.rst:68 msgid "GameMaker: Studio 1.4 uses a custom XML-based format to store its rooms, and Tiled ships with a plugin to export maps in this format. Currently only orthogonal maps will export correctly." msgstr "" #: ../../manual/export.rst:72 msgid "Tile layers and tile objects (when no type is set) will export as \"tile\" elements. These support horizontal and vertical flipping, but no rotation. For tile objects, scaling is also supported." msgstr "" #: ../../manual/export.rst:78 msgid "The tilesets have to be named the same as the corresponding backgrounds in the GameMaker project. Otherwise GameMaker will pop up an error for each tile while loading the exported ``room.gmx`` file." msgstr "" #: ../../manual/export.rst:83 msgid "Object Instances" msgstr "" #: ../../manual/export.rst:85 msgid "GameMaker object instances are created by putting the object name in the \"Type\" field of the object in Tiled. Rotation is supported here, and for tile objects also flipping and scaling is supported (though flipping in combination with rotation doesn't appear to work in GameMaker)." msgstr "" #: ../../manual/export.rst:94 msgid "The following custom properties can be set on objects to affect the exported instance:" msgstr "" #: ../../manual/export.rst:97 msgid "string ``code`` (instance creation code, default: \"\")" msgstr "" #: ../../manual/export.rst:98 msgid "float ``scaleX`` (default: derived from tile or 1.0)" msgstr "" #: ../../manual/export.rst:99 msgid "float ``scaleY`` (default: derived from tile or 1.0)" msgstr "" #: ../../manual/export.rst:100 msgid "int ``originX`` (default: 0)" msgstr "" #: ../../manual/export.rst:101 msgid "int ``originY`` (default: 0)" msgstr "" #: ../../manual/export.rst:103 msgid "The ``scaleX`` and ``scaleY`` properties can be used to override the scale of the instance. However, if the scale is relevant then it will generally be easier to use a tile object, in which case it is automatically derived from the tile size and the object size." msgstr "" #: ../../manual/export.rst:108 msgid "The ``originX`` and ``originY`` properties can be used to tell Tiled about the origin of the object defined in GameMaker, as an offset from the top-left. This origin is taken into account when determining the position of the exported instance." msgstr "" #: ../../manual/export.rst:115 msgid "Of course setting the type and/or the above properties manually for each instance will get old fast. Since Tiled 1.0.2, you can instead use tile objects with the type set on the tile, and in Tiled 1.1 you can also use :doc:`object templates `." msgstr "" #: ../../manual/export.rst:125 msgid "Views" msgstr "" #: ../../manual/export.rst:131 msgid "Views can be defined using :ref:`rectangle objects ` where the Type has been set to ``view``. The position and size will be snapped to pixels. Whether the view is visible when the room starts depends on whether the object is visible. The use of views is automatically enabled when any views are defined." msgstr "" #: ../../manual/export.rst:137 msgid "The following custom properties can be used to define the various other properties of the view:" msgstr "" #: ../../manual/export.rst:140 msgid "**Port on screen**" msgstr "" #: ../../manual/export.rst:142 msgid "int ``xport`` (default: 0)" msgstr "" #: ../../manual/export.rst:143 msgid "int ``yport`` (default: 0)" msgstr "" #: ../../manual/export.rst:144 msgid "int ``wport`` (default: 1024)" msgstr "" #: ../../manual/export.rst:145 msgid "int ``hport`` (default: 768)" msgstr "" #: ../../manual/export.rst:147 msgid "**Object following**" msgstr "" #: ../../manual/export.rst:149 msgid "string ``objName``" msgstr "" #: ../../manual/export.rst:150 msgid "int ``hborder`` (default: 32)" msgstr "" #: ../../manual/export.rst:151 msgid "int ``vborder`` (default: 32)" msgstr "" #: ../../manual/export.rst:152 msgid "int ``hspeed`` (default: -1)" msgstr "" #: ../../manual/export.rst:153 msgid "int ``vspeed`` (default: -1)" msgstr "" #: ../../manual/export.rst:157 msgid "When you're defining views in Tiled, it is useful to add ``view`` as object type in the :ref:`Object Types Editor `, adding the above properties for ease of access. If you frequently use views with similar settings, you can set up :doc:`templates ` for them." msgstr "" #: ../../manual/export.rst:167 #: ../../manual/keyboard-shortcuts.rst:9 #: ../../manual/preferences.rst:21 msgid "General" msgstr "" #: ../../manual/export.rst:169 msgid "int ``speed`` (default: 30)" msgstr "" #: ../../manual/export.rst:170 msgid "bool ``persistent`` (default: false)" msgstr "" #: ../../manual/export.rst:171 msgid "bool ``clearDisplayBuffer`` (default: true)" msgstr "" #: ../../manual/export.rst:172 msgid "bool ``clearViewBackground`` (default: false)" msgstr "" #: ../../manual/export.rst:173 msgid "string ``code`` (map creation code, default: \"\")" msgstr "" #: ../../manual/export.rst:176 msgid "Physics" msgstr "" #: ../../manual/export.rst:178 msgid "bool ``PhysicsWorld`` (default: false)" msgstr "" #: ../../manual/export.rst:179 msgid "int ``PhysicsWorldTop`` (default: 0)" msgstr "" #: ../../manual/export.rst:180 msgid "int ``PhysicsWorldLeft`` (default: 0)" msgstr "" #: ../../manual/export.rst:181 msgid "int ``PhysicsWorldRight`` (default: width of map in pixels)" msgstr "" #: ../../manual/export.rst:182 msgid "int ``PhysicsWorldBottom`` (default: height of map in pixels)" msgstr "" #: ../../manual/export.rst:183 msgid "float ``PhysicsWorldGravityX`` (default: 0.0)" msgstr "" #: ../../manual/export.rst:184 msgid "float ``PhysicsWorldGravityY`` (default: 10.0)" msgstr "" #: ../../manual/export.rst:185 msgid "float ``PhysicsWorldPixToMeters`` (default: 0.1)" msgstr "" #: ../../manual/export.rst:188 msgid "Layer Properties" msgstr "" #: ../../manual/export.rst:190 msgid "Both tile layers and object layers may produce \"tile\" elements in the exported room file. Their depth is set automatically, with tiles from the bottom-most layer getting a value of 10000000 (the GameMaker default) and counting up from there. If you want to set a custom depth value you can set the following property on the layer:" msgstr "" #: ../../manual/export.rst:196 msgid "int ``depth`` (default: 10000000 + N)" msgstr "" #: ../../manual/export.rst:203 msgid "tBIN" msgstr "" #: ../../manual/export.rst:205 msgid "The tBIN map format is a binary format used by the `tIDE Tile Map Editor`_. tIDE was used by `Stardew Valley`_, a successful game that spawned many `community mods `__." msgstr "" #: ../../manual/export.rst:209 msgid "Tiled ships with a plugin that enables direct editing of Stardew Valley maps (and any other maps using the tBIN format). This plugin needs to be enabled in *Edit > Preferences > Plugins*. It is not enabled by default because it won't store everything (most notably it doesn't support object layers in general, nor external tilesets), so you need to know what you are doing." msgstr "" #: ../../manual/export.rst:218 msgid "The tBIN format supports setting custom properties on the tiles of a tile layer. Since Tiled does not support this directly, \"TileData\" objects are created that match the location of the tile, on which such properties are then stored. Care should be taken to keep these objects aligned to the grid for the saving to work correctly." msgstr "" #: ../../manual/export.rst:225 msgid "Defold" msgstr "" #: ../../manual/export.rst:227 msgid "Tiled can export a map to a `Defold Tile Map `__ (\\*.tilemap). This component only supports tile layers and only a single tileset may be used. The plugin is disabled by default." msgstr "" #: ../../manual/export.rst:231 msgid "Upon export, the ``tile_set`` property of the Tile Map is left empty, so it will need to be set up in Defold after each export." msgstr "" #: ../../manual/export.rst:234 msgid "When any additional information from the map is needed, the map can be exported in :ref:`Lua format ` and loaded as Defold script." msgstr "" #: ../../manual/export.rst:238 msgid "Other Formats" msgstr "" #: ../../manual/export.rst:240 msgid "A few other plugins ship with Tiled to support various games:" msgstr "" #: ../../manual/export.rst:242 msgid "droidcraft" msgstr "" #: ../../manual/export.rst:243 msgid "Adds support for editing `DroidCraft `__ maps (\\*.dat)" msgstr "" #: ../../manual/export.rst:244 msgid "flare" msgstr "" #: ../../manual/export.rst:245 msgid "Adds support for editing `Flare Engine `__ maps (\\*.txt)" msgstr "" #: ../../manual/export.rst:246 msgid "replicaisland" msgstr "" #: ../../manual/export.rst:247 msgid "Adds support for editing `Replica Island `__ maps (\\*.bin)" msgstr "" #: ../../manual/export.rst:249 msgid "tengine" msgstr "" #: ../../manual/export.rst:249 msgid "Adds support for exporting to `T-Engine4 `__ maps (\\*.lua)" msgstr "" #: ../../manual/export.rst:251 msgid "These plugins are disabled by default. They can be enabled in *Edit > Preferences > Plugins*." msgstr "" #: ../../manual/export.rst:254 #: ../../manual/python.rst:2 msgid "Python Scripts" msgstr "" #: ../../manual/export.rst:256 msgid "It is also possible to write :doc:`Python scripts ` to add support for importing or exporting custom map formats." msgstr "" #: ../../manual/introduction.rst:2 msgid "Introduction" msgstr "" #: ../../manual/introduction.rst:5 msgid "About Tiled" msgstr "" #: ../../manual/introduction.rst:7 msgid "**Tiled is a 2D level editor that helps you develop the content of your game. Its primary feature is to edit tile maps of various forms, but it also supports free image placement as well as powerful ways to annotate your level with extra information used by the game. Tiled focuses on general flexibility while trying to stay intuitive.**" msgstr "" #: ../../manual/introduction.rst:13 msgid "In terms of tile maps, it supports straight rectangular tile layers, but also projected isometric, staggered isometric and staggered hexagonal layers. A tileset can be either a single image containing many tiles, or it can be a collection of individual images. In order to support certain depth faking techniques, tiles and layers can be offset by a custom distance and their rendering order can be configured." msgstr "" #: ../../manual/introduction.rst:20 msgid "The primary tool for editing :ref:`tile layers ` is a stamp brush that allows efficient painting and copying of tile areas. It also supports drawing lines and circles. In addition, there are several selection tools and a tool that does :doc:`automatic terrain transitions `. Finally, it can apply changes based on :doc:`pattern-matching ` to automate parts of your work." msgstr "" #: ../../manual/introduction.rst:27 msgid "Tiled also supports :ref:`object layers `, which traditionally were only for annotating your map with information but more recently they can also be used to place images. You can add rectangle, point, ellipse, polygon, polyline and tile objects. Object placement is not limited to the tile grid and objects can also be scaled or rotated. Object layers offer a lot of flexibility to add almost any information to your level that your game needs." msgstr "" #: ../../manual/introduction.rst:35 msgid "Other things worth mentioning are the support for adding custom map or tileset formats through plugins, the tile stamp memory, tile animation support and the tile collision editor." msgstr "" #: ../../manual/introduction.rst:42 msgid "Getting Started" msgstr "" #: ../../manual/introduction.rst:45 msgid "Creating a New Map" msgstr "" #: ../../manual/introduction.rst:47 msgid "When launching Tiled for the first time, we are greeted with the following window:" msgstr "" #: ../../manual/introduction.rst:53 msgid "Tiled Window" msgstr "" #: ../../manual/introduction.rst:55 msgid "The first thing we'll do is to start a new map with *File -> New -> New Map…* (``Ctrl+N``). The following dialog will pop up:" msgstr "" #: ../../manual/introduction.rst:62 msgid "New Map" msgstr "" #: ../../manual/introduction.rst:64 msgid "Here, we choose the initial map size, tile size, orientation, tile layer format, tile render order (only supported for *Orthogonal* maps) and whether the map is :doc:`infinite ` or not. All of these things can be changed later as needed, so it's not important to get it all right the first time." msgstr "" #: ../../manual/introduction.rst:70 msgid "After saving our map, we'll see the tile grid and an initial tile layer will be added to the map. However, before we can start using any tiles we need to add a tileset. Choose *File -> New -> New Tileset…* to open the New Tileset dialog:" msgstr "" #: ../../manual/introduction.rst:79 msgid "New Tileset" msgstr "" #: ../../manual/introduction.rst:81 msgid "Click the *Browse…* button and select the ``tmw_desert_spacing.png`` tileset from the examples shipping with Tiled (or use one of your own if you wish). This example tileset uses a tile size of 32x32. It also has a one pixel *margin* around the tiles and a one pixel *spacing* in between the tiles (this is pretty rare actually, usually you should leave these values on 0)." msgstr "" #: ../../manual/introduction.rst:90 msgid "We leave the *Embed in map* option disabled. This is recommended, since it will allow the tileset to be used by multiple maps without setting up its parameters again. It will also be good to store the tileset in its own file if you later add tile properties, terrain definitions, collision shapes, etc., since that information is then shared between all your maps." msgstr "" #: ../../manual/introduction.rst:97 msgid "After saving the tileset, Tiled should look as follows:" msgstr "" #: ../../manual/introduction.rst:102 msgid "Tileset Created" msgstr "" #: ../../manual/introduction.rst:104 msgid "Since we don't want to do anything else with the tileset for now, just switch back to the map file:" msgstr "" #: ../../manual/introduction.rst:110 msgid "Tileset Usable on the Map" msgstr "" #: ../../manual/introduction.rst:112 msgid "We're ready to select some tiles and start painting! But first, let's have a quick look at the :doc:`various layer types ` supported by Tiled." msgstr "" #: ../../manual/introduction.rst:118 msgid "Much of the manual still needs to be written. Fortunately, there is a very nice `Tiled Map Editor Tutorial Series`_ on GamesFromScratch.com. In addition, the support for Tiled in various :doc:`engines and frameworks ` often comes with some usage information." msgstr "" #: ../../manual/keyboard-shortcuts.rst:2 msgid "Keyboard Shortcuts" msgstr "" #: ../../manual/keyboard-shortcuts.rst:4 msgid "Try out these keyboard shortcuts to help save you time." msgstr "" #: ../../manual/keyboard-shortcuts.rst:6 msgid "On Mac, replace ``Ctrl`` with the ``Command`` key." msgstr "" #: ../../manual/keyboard-shortcuts.rst:11 msgid "``Right Click on Tile`` - Captures the tile under the mouse (drag to capture larger areas)." msgstr "" #: ../../manual/keyboard-shortcuts.rst:13 msgid "``Ctrl + MouseWheel`` - Zoom in/out on tileset and map" msgstr "" #: ../../manual/keyboard-shortcuts.rst:14 msgid "``Ctrl + Plus/Minus`` - Zoom in/out on map" msgstr "" #: ../../manual/keyboard-shortcuts.rst:15 msgid "``Ctrl + 0`` - Reset zoom on map" msgstr "" #: ../../manual/keyboard-shortcuts.rst:16 msgid "``Ctrl + Object Move`` - Toggles \"Snap to Grid\" temporarily" msgstr "" #: ../../manual/keyboard-shortcuts.rst:17 msgid "``Ctrl + Object Resize`` - Keep aspect ratio" msgstr "" #: ../../manual/keyboard-shortcuts.rst:18 msgid "``Alt + Object Resize`` - Toggles \"Snap to Grid\" temporarily" msgstr "" #: ../../manual/keyboard-shortcuts.rst:19 msgid "``Middle Click`` or ``Space Bar`` - Hold to pan the map view" msgstr "" #: ../../manual/keyboard-shortcuts.rst:20 msgid "``Ctrl + X`` - Cut (tiles, objects or properties)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:21 msgid "``Ctrl + C`` - Copy (tiles, objects or properties)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:22 msgid "``Ctrl + V`` - Paste (tiles, objects or properties)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:23 msgid "``Del`` - Delete (tiles or objects)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:24 msgid "``H`` - Toggle highlighting of the current layer" msgstr "" #: ../../manual/keyboard-shortcuts.rst:25 msgid "``A`` - Invokes :doc:`automapping`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:26 msgid "``Alt + C`` - Copy current position of mouse cursor to clipboard (in tile coordinates)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:28 msgid "``Ctrl + D`` - Duplicate selected objects (since Tiled 1.0, before it was Delete)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:30 msgid "``Ctrl + Shift + D`` - Duplicate active layer" msgstr "" #: ../../manual/keyboard-shortcuts.rst:31 msgid "``F2`` - Rename (if applicable in context)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:32 msgid "``Tab`` - Hide docks and tool bars (since Tiled 1.0)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:33 msgid "``Ctrl + PgUp`` - Select previous layer (above current layer)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:34 msgid "``Ctrl + PgDown`` - Select next layer (below current layer)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:35 msgid "``Ctrl + Shift + Up`` - Move current layer up" msgstr "" #: ../../manual/keyboard-shortcuts.rst:36 msgid "``Ctrl + Shift + Down`` - Move current layer down" msgstr "" #: ../../manual/keyboard-shortcuts.rst:37 msgid "``Ctrl + Shift + H`` - Show/Hide all other layers (only active layer visible / all layers visible)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:39 msgid "``Ctrl + Tab`` - Switch to left document" msgstr "" #: ../../manual/keyboard-shortcuts.rst:40 msgid "``Ctrl + Shift + Tab`` - Switch to right document" msgstr "" #: ../../manual/keyboard-shortcuts.rst:41 msgid "``Alt + Left`` - Switch to left document" msgstr "" #: ../../manual/keyboard-shortcuts.rst:42 msgid "``Alt + Right`` - Switch to right document" msgstr "" #: ../../manual/keyboard-shortcuts.rst:43 msgid "``Ctrl + G`` - Toggle displaying of the tile grid" msgstr "" #: ../../manual/keyboard-shortcuts.rst:44 msgid "``Ctrl + W`` - Close current document" msgstr "" #: ../../manual/keyboard-shortcuts.rst:45 msgid "``Ctrl + Shift + W`` - Close all documents" msgstr "" #: ../../manual/keyboard-shortcuts.rst:46 msgid "``Ctrl + E`` - Export current document" msgstr "" #: ../../manual/keyboard-shortcuts.rst:47 msgid "``Ctrl + Shift + E`` - Export current document to another file" msgstr "" #: ../../manual/keyboard-shortcuts.rst:48 msgid "``Ctrl + R`` - Reload current document" msgstr "" #: ../../manual/keyboard-shortcuts.rst:49 msgid "``Ctrl + T`` - Force-reload all tilesets used by the current map (mainly useful when not using the automatic reloading)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:53 msgid "When a tile layer is selected" msgstr "" #: ../../manual/keyboard-shortcuts.rst:55 msgid "``D`` - Toggle Random Mode" msgstr "" #: ../../manual/keyboard-shortcuts.rst:56 msgid "``B`` - Activate :ref:`stamp-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:58 msgid "``Shift + Click`` - Line mode, places tiles on a line between two clicked locations" msgstr "" #: ../../manual/keyboard-shortcuts.rst:60 msgid "``Ctrl + Shift + Click`` - Circle mode, places tiles around the clicked center" msgstr "" #: ../../manual/keyboard-shortcuts.rst:63 msgid "``T`` - Activate :ref:`terrain-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:64 msgid "``G`` - Activate :ref:`wang-tool` (since Tiled 1.1)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:65 msgid "``F`` - Activate :ref:`bucket-fill-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:66 msgid "``E`` - Activate :ref:`eraser-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:67 msgid "``R`` - Activate Rectangular Select" msgstr "" #: ../../manual/keyboard-shortcuts.rst:68 msgid "``W`` - Activate Magic Wand" msgstr "" #: ../../manual/keyboard-shortcuts.rst:69 msgid "``S`` - Activate Select Same Tile" msgstr "" #: ../../manual/keyboard-shortcuts.rst:70 msgid "``Ctrl + 1-9`` - Store current tile selection (similar to ``Ctrl + C``)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:72 msgid "``1-9`` recall the previous selection (similar to ``Ctrl + V``)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:73 msgid "``Ctrl + A`` - Select the whole layer" msgstr "" #: ../../manual/keyboard-shortcuts.rst:74 msgid "``Ctrl + Shift + A`` - Select nothing" msgstr "" #: ../../manual/keyboard-shortcuts.rst:76 msgid "Changing the active stamp:" msgstr "" #: ../../manual/keyboard-shortcuts.rst:78 msgid "``X`` - Flip active stamp horizontally" msgstr "" #: ../../manual/keyboard-shortcuts.rst:79 msgid "``Y`` - Flip active stamp vertically" msgstr "" #: ../../manual/keyboard-shortcuts.rst:80 msgid "``Z`` - Rotate active stamp clockwise" msgstr "" #: ../../manual/keyboard-shortcuts.rst:81 msgid "``Shift + Z`` - Rotate active stamp counterclockwise" msgstr "" #: ../../manual/keyboard-shortcuts.rst:85 msgid "When an object layer is selected" msgstr "" #: ../../manual/keyboard-shortcuts.rst:87 msgid "``S`` - Activate :ref:`select-objects-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:89 msgid "``PgUp`` - Raise selected objects (with Manual object drawing order)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:91 msgid "``PgDown`` - Lower selected objects (with Manual object drawing order)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:93 msgid "``Home`` - Move selected objects to Top (with Manual object drawing order)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:95 msgid "``End`` - Move selected objects to Bottom (with Manual object drawing order)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:98 msgid "``O`` - Activate :ref:`edit-polygons-tool` (was ``E`` until Tiled 1.0)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:99 msgid "``R`` - Activate :ref:`insert-rectangle-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:100 msgid "``I`` - Activate :ref:`insert-point-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:101 msgid "``C`` - Activate :ref:`insert-ellipse-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:102 msgid "``P`` - Activate :ref:`insert-polygon-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:103 msgid "``L`` - Activate :ref:`insert-polyline-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:105 msgid "``Enter`` - Finish creating object" msgstr "" #: ../../manual/keyboard-shortcuts.rst:106 msgid "``Escape`` - Cancel creating object" msgstr "" #: ../../manual/keyboard-shortcuts.rst:108 msgid "``T`` - Activate :ref:`insert-tile-tool`" msgstr "" #: ../../manual/keyboard-shortcuts.rst:109 msgid "``V`` - Activate :ref:`insert-template-tool` (since Tiled 1.1)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:110 msgid "``E`` - Activate :ref:`insert-text-tool` (since Tiled 1.0)" msgstr "" #: ../../manual/keyboard-shortcuts.rst:111 msgid "``Ctrl + A`` - Select all objects in the current object layer" msgstr "" #: ../../manual/keyboard-shortcuts.rst:112 msgid "``Ctrl + Shift + A`` - Clear object selection" msgstr "" #: ../../manual/keyboard-shortcuts.rst:115 msgid "In the Properties dialog" msgstr "" #: ../../manual/keyboard-shortcuts.rst:117 msgid "``Del`` or ``Backspace`` - Deletes a property" msgstr "" #: ../../manual/layers.rst:2 msgid "Working with Layers" msgstr "" #: ../../manual/layers.rst:4 msgid "A Tiled map supports various sorts of content, and this content is organized into various different layers. The most common layers are the `Tile Layer <#tile-layers>`__ and the `Object Layer <#object-layers>`__. There is also an `Image Layer <#image-layers>`__ for including simple foreground or background graphics. The order of the layers determines the rendering order of your content." msgstr "" #: ../../manual/layers.rst:11 msgid "Layers can be hidden, made only partially visible and can be locked. Layers also have an offset, which can be used to position them independently of each other, for example to fake depth." msgstr "" #: ../../manual/layers.rst:18 msgid "The eye and lock icon toggle the visibility and locked state of a layer respectively." msgstr "" #: ../../manual/layers.rst:21 msgid "You use `Group Layers <#group-layers>`__ to organize the layers into a hierarchy. This makes it more comfortable to work with a large amount of layers." msgstr "" #: ../../manual/layers.rst:28 msgid "Tile Layers" msgstr "" #: ../../manual/layers.rst:30 msgid "Tile layers provide an efficient way of storing a large area filled with tile data. The data is a simple array of tile references and as such no additional information can be stored for each location. The only extra information stored are a few flags, that allow tile graphics to be flipped vertically, horizontally or anti-diagonally (to support rotation in 90-degree increments)." msgstr "" #: ../../manual/layers.rst:37 msgid "The information needed to render each tile layer is stored with the map, which specifies the position and rendering order of the tiles based on the orientation and various other properties." msgstr "" #: ../../manual/layers.rst:41 msgid "Despite only being able to refer to tiles, tile layers can also be useful for defining various bits of non-graphical information in your level. Collision information can often be conveyed using a special tileset, and any kind of object that does not need custom properties and is always aligned to the grid can also be placed on a tile layer." msgstr "" #: ../../manual/layers.rst:50 msgid "Object Layers" msgstr "" #: ../../manual/layers.rst:52 msgid "Object layers are useful because they can store many kinds of information that would not fit in a tile layer. Objects can be freely positioned, resized and rotated. They can also have individual custom properties. There are many kinds of objects:" msgstr "" #: ../../manual/layers.rst:57 msgid "**Rectangle** - for marking custom rectangular areas" msgstr "" #: ../../manual/layers.rst:58 msgid "**Ellipse** - for marking custom ellipse or circular areas" msgstr "" #: ../../manual/layers.rst:59 msgid "**Point** - for marking exact locations" msgstr "" #: ../../manual/layers.rst:60 msgid "**Polygon** - for when a rectangle or ellipse doesn't cut it (often a collision area)" msgstr "" #: ../../manual/layers.rst:62 msgid "**Polyline** - can be a path to follow or a wall to collide with" msgstr "" #: ../../manual/layers.rst:63 msgid "**Tile** - for freely placing, scaling and rotating your tile graphics" msgstr "" #: ../../manual/layers.rst:65 msgid "**Text** - for custom text or notes (since Tiled 1.0)" msgstr "" #: ../../manual/layers.rst:67 msgid "All objects can be named, in which case their name will show up in a label above them (by default only for selected objects). Objects can also be given a *type*, which is useful since it can be used to customize the color of their label and the available :ref:`custom properties ` for this object type. For tile objects, the type can be :ref:`inherited from their tile `." msgstr "" #: ../../manual/layers.rst:75 msgid "For most map types, objects are positioned in plain pixels. The only exception to this are isometric maps (not isometric staggered). For isometric maps, it was deemed useful to store their positions in a projected coordinate space. For this, the isometric tiles are assumed to represent projected squares with both sides equal to the *tile height*. If you're using a different coordinate space for objects in your isometric game, you'll need to convert these coordinates accordingly." msgstr "" #: ../../manual/layers.rst:83 msgid "The object width and height is also mostly stored in pixels. For isometric maps, all shape objects (rectangle, point, ellipse, polygon and polyline) are projected into the same coordinate space described above. This is based on the assumption that these objects are generally used to mark areas on the map." msgstr "" #: ../../manual/layers.rst:90 msgid "Image Layers" msgstr "" #: ../../manual/layers.rst:92 msgid "Image layers provide a way to quickly include a single image as foreground or background of your map. They are currently not so useful, because if you instead add the image as a Tileset and place it as a :ref:`Tile Object `, you gain the ability to freely scale and rotate the image." msgstr "" #: ../../manual/layers.rst:97 msgid "The only advantage of using an image layer is that it avoids selecting / dragging the image while using the Select Objects tool. However, since Tiled 1.1 this can also be achieved by locking the object layer containing the tile object you'd like to avoid interacting with." msgstr "" #: ../../manual/layers.rst:107 msgid "Group Layers" msgstr "" #: ../../manual/layers.rst:109 msgid "Group layers work like folders and can be used for organizing the layers into a hierarchy. This is mainly useful when your map contains a large amount of layers." msgstr "" #: ../../manual/layers.rst:113 msgid "The visibility, opacity, offset and lock of a group layer affects all child layers." msgstr "" #: ../../manual/layers.rst:116 msgid "Layers can be easily dragged in and out of groups with the mouse. The Raise Layer / Lower Layer actions also allow moving layers in and out of groups." msgstr "" #: ../../manual/layers.rst:123 msgid "There are many ways in which the layers can be made more powerful:" msgstr "" #: ../../manual/layers.rst:125 msgid "Ability to lock individual objects (`#828 `__)." msgstr "" #: ../../manual/layers.rst:127 msgid "Moving certain map-global properties to the Tile Layer (`#149 `__). It would be useful if one map could accommodate layers of different tile sizes and maybe even of different orientation." msgstr "" #: ../../manual/objects.rst:2 msgid "Working with Objects" msgstr "" #: ../../manual/objects.rst:4 msgid "Using objects you can add a great deal of information to your map for use in your game. They can replace tedious alternatives like hardcoding coordinates (like spawn points) in your source code or maintaining additional data files for storing gameplay elements. With the addition of *tile objects*, they also became useful for graphical purposes and can in some cases replace tile layers entirely, as demonstrated by the \"Sticker Knight\" example shipping with Tiled." msgstr "" #: ../../manual/objects.rst:12 msgid "To start using objects, add an :ref:`Object Layer ` to your map." msgstr "" #: ../../manual/objects.rst:16 msgid "Placement Tools" msgstr "" #: ../../manual/objects.rst:18 msgid "Each type of object has its own placement tool." msgstr "" #: ../../manual/objects.rst:23 msgid "Insert Rectangle" msgstr "" #: ../../manual/objects.rst:25 msgid "Shortcut: ``R``" msgstr "" #: ../../manual/objects.rst:27 msgid "The rectangle was the first type of object supported by Tiled, which is why objects are rectangles by default in the :doc:`/reference/tmx-map-format`. They are useful for marking rectangular areas and assigning custom properties to them. They are also often used for specifying collision boxes." msgstr "" #: ../../manual/objects.rst:32 msgid "Place a rectangle by clicking-and-dragging in any direction. Holding ``Shift`` makes it square and holding ``Ctrl`` snaps its size to the tile size." msgstr "" #: ../../manual/objects.rst:36 msgid "If the rectangle is empty (width and height are both 0), it is rendered as a small square around its position. This is mainly to keep it visible and selectable." msgstr "" #: ../../manual/objects.rst:43 msgid "Insert Point" msgstr "" #: ../../manual/objects.rst:45 msgid "Shortcut: ``I``" msgstr "" #: ../../manual/objects.rst:47 msgid "Points are the simplest objects you can place on a map. They only represent a location, and cannot be resized or rotated. Simply click on the map to position a point object." msgstr "" #: ../../manual/objects.rst:54 msgid "Insert Ellipse" msgstr "" #: ../../manual/objects.rst:56 msgid "Shortcut: ``C``" msgstr "" #: ../../manual/objects.rst:58 msgid "Ellipses work the same way as `rectangles <#insert-rectangle>`__, except that they are rendered as an ellipse. Useful for when your area or collision shape needs to represent a circle or ellipse." msgstr "" #: ../../manual/objects.rst:65 msgid "Insert Polygon" msgstr "" #: ../../manual/objects.rst:67 msgid "Shortcut: ``P``" msgstr "" #: ../../manual/objects.rst:69 msgid "Polygons are the most flexible way of defining the shape of an area. They are most commonly used for defining collision shapes." msgstr "" #: ../../manual/objects.rst:72 msgid "When placing a polygon, the first click determines the location of the object as well as the location of the first point of the polygon. Subsequent clicks are used to add additional points to the polygon. Right click or press ``Enter`` to finish creating the polygon. Polygons needs to have at least three points. You can press ``Escape`` to cancel the creation of the polygon." msgstr "" #: ../../manual/objects.rst:79 msgid "When you want to change a polygon after it has been placed, you need to use the :ref:`edit-polygons-tool` tool." msgstr "" #: ../../manual/objects.rst:85 msgid "Insert Polyline" msgstr "" #: ../../manual/objects.rst:87 msgid "Shortcut: ``L``" msgstr "" #: ../../manual/objects.rst:89 msgid "Polylines work very similar to `polygons <#insert-polygon>`__, except that they are rendered as a line and require only two points. While they can represent collision walls, they are also often used to represent paths to be followed." msgstr "" #: ../../manual/objects.rst:94 msgid "Despite its name, the :ref:`edit-polygons-tool` tool is also used to edit polylines." msgstr "" #: ../../manual/objects.rst:100 msgid "Insert Tile" msgstr "" #: ../../manual/objects.rst:104 msgid "Tiles can be inserted as objects to have full flexibility in placing, scaling and rotating the tile image on your map. Like all objects, tile objects can also have custom properties associated with them. This makes them useful for placement of recognizable interactive objects that need special information, like a chest with defined contents or an NPC with defined script." msgstr "" #: ../../manual/objects.rst:111 msgid "To place a tile object, first select the tile you want to place in the Tilesets view. Then use the Left mouse button on the map to start placing the object, move to position it based on the preview and release to finish placing the object." msgstr "" #: ../../manual/objects.rst:120 msgid "To change the tile used by existing tile objects, select all the objects you want to change using the :ref:`select-objects-tool` tool and then right-click on a tile in the Tilesets view, and choose *Replace Tile of Selected Objects*." msgstr "" #: ../../manual/objects.rst:132 msgid "Insert Template" msgstr "" #: ../../manual/objects.rst:134 #: ../../manual/using-templates.rst:49 msgid "Shortcut: ``V``" msgstr "" #: ../../manual/objects.rst:136 msgid "Can be used to quickly insert multiple instances of the template selected in the Templates view. See :ref:`creating-template-instances`." msgstr "" #: ../../manual/objects.rst:142 msgid "Insert Text" msgstr "" #: ../../manual/objects.rst:144 msgid "Shortcut: ``X``" msgstr "" #: ../../manual/objects.rst:146 msgid "Text objects can be used to add arbitrary multi-line text to your maps. You can configure various font properties and the wrapping / clipping area, making them useful for both quick notes as well as text used in the game." msgstr "" #: ../../manual/objects.rst:154 msgid "Select Objects" msgstr "" #: ../../manual/objects.rst:156 msgid "Shortcut: ``S``" msgstr "" #: ../../manual/objects.rst:158 msgid "When you're not inserting new objects, you're generally using the Select Objects tool. It packs a lot of functionality, which is outlined below." msgstr "" #: ../../manual/objects.rst:162 msgid "Selecting and Deselecting" msgstr "" #: ../../manual/objects.rst:164 msgid "You can select objects by clicking them or by dragging a rectangular lasso, selecting any object that intersect with its area. By holding ``Shift`` or ``Ctrl`` while clicking, you can add/remove single objects to/from the selection." msgstr "" #: ../../manual/objects.rst:169 msgid "When pressing and dragging on an object, this object is selected and moved. When this prevents you from starting a rectangular selection, you can hold ``Shift`` to force the selection rectangle." msgstr "" #: ../../manual/objects.rst:177 msgid "By default you interact with the top-most object. When you need to select an object below another object, first select the higher object and then hold ``Alt`` while clicking at the same location to select lower objects. You can also hold ``Alt`` while opening the context menu to get a list of all objects at the clicked location, so you may directly select the desired object." msgstr "" #: ../../manual/objects.rst:185 msgid "Moving" msgstr "" #: ../../manual/objects.rst:187 msgid "You can simply drag any single object, or drag already selected objects by dragging any one of them. Hold ``Ctrl`` to toggle snapping to the tile grid." msgstr "" #: ../../manual/objects.rst:191 msgid "Hold ``Alt`` to force a move operation on the currently selected objects, regardless of where you click on the map. This is useful when the selected objects are small or covered by other objects." msgstr "" #: ../../manual/objects.rst:195 msgid "The selected objects can also be moved with the arrow keys. By default this moves the objects pixel by pixel. Hold ``Shift`` while using the arrow keys to move the objects by distance of one tile." msgstr "" #: ../../manual/objects.rst:200 msgid "Resizing" msgstr "" #: ../../manual/objects.rst:202 msgid "You can use the resize handles to resize one or more selected objects. Hold ``Ctrl`` to keep the aspect ratio of the object and/or ``Shift`` to place the resize origin in the center." msgstr "" #: ../../manual/objects.rst:206 msgid "Note that you can only change width and height independently when resizing a single object. When having multiple objects selected, the aspect ratio is constant because there would be no way to make that work for rotated objects without full support for transformations." msgstr "" #: ../../manual/objects.rst:212 msgid "Rotating" msgstr "" #: ../../manual/objects.rst:214 msgid "To rotate, click any selected object to change the resize handles into rotation handles. Before rotating, you can drag the rotation origin to another position if necessary. Hold ``Shift`` to rotate in 15-degree increments. Click any selected object again to go back to resize mode." msgstr "" #: ../../manual/objects.rst:219 msgid "You can also rotate the selected objects in 90-degree steps by pressing ``Z`` or ``Shift + Z``." msgstr "" #: ../../manual/objects.rst:223 msgid "Changing Stacking Order" msgstr "" #: ../../manual/objects.rst:225 msgid "If the active :ref:`Object Layer ` has its Drawing Order property set to Manual (the default is Top Down), you can control the stacking order of the selected objects within their object layer using the following keys:" msgstr "" #: ../../manual/objects.rst:230 msgid "``PgUp`` - Raise selected objects" msgstr "" #: ../../manual/objects.rst:231 msgid "``PgDown`` - Lower selected objects" msgstr "" #: ../../manual/objects.rst:232 msgid "``Home`` - Move selected objects to Top" msgstr "" #: ../../manual/objects.rst:233 msgid "``End`` - Move selected objects to Bottom" msgstr "" #: ../../manual/objects.rst:235 msgid "You can also find these actions in the context menu. When you have multiple Object Layers, the context menu also contains actions to move the selected objects to another layer." msgstr "" #: ../../manual/objects.rst:240 msgid "Flipping Objects" msgstr "" #: ../../manual/objects.rst:242 msgid "You can flip the selected objects horizontally by pressing ``X`` or vertically by pressing ``Y``. For tile objects, this also flips their images." msgstr "" #: ../../manual/objects.rst:249 msgid "Edit Polygons" msgstr "" #: ../../manual/objects.rst:253 msgid "Polygons and polylines have their own editing needs and as such are covered by a separate tool, which allows selecting and moving around their nodes. You can select and move the nodes of multiple polygons at the same time." msgstr "" #: ../../manual/objects.rst:258 msgid "Nodes can be deleted by selecting them and choosing \"Delete Nodes\" from the context menu. The ``Delete`` key can also be used to delete the selected nodes, or the selected objects if no nodes are selected." msgstr "" #: ../../manual/objects.rst:262 msgid "When you have selected multiple consecutive nodes of the same polygon, you can join them together by choosing \"Join Nodes\" from the context menu. You can also split the segments in between the nodes by choosing \"Split Segments\", which is currently the only way to extend an existing polygon. You can also delete a segment when two consecutive nodes are selected in a polygon by choosing \"Delete Segment\" in the context menu. This will convert a polygon into a polyline." msgstr "" #: ../../manual/objects.rst:273 msgid "Here are some ideas about improvements that could be made to the above tools:" msgstr "" #: ../../manual/objects.rst:276 msgid "For the `Insert Tile <#insert-tile>`__ tool, show the preview already before pressing the left mouse button (`#537 `__)" msgstr "" #: ../../manual/objects.rst:280 msgid "Many improvements could be made to the support for editing polygons and polylines, like allowing to rotate and scale the selected nodes (`#1487 `__)." msgstr "" #: ../../manual/preferences.rst:2 msgid "User Preferences" msgstr "" #: ../../manual/preferences.rst:4 msgid "There are only a few options located in the Preferences, accessible though the menu via *Edit > Preferences*. Most other options, like whether to draw the grid, what kind snapping to do or the last used settings when creating a new map are simply remembered persistently." msgstr "" #: ../../manual/preferences.rst:9 msgid "The preferences are stored in a system-dependent format and location:" msgstr "" #: ../../manual/preferences.rst:12 msgid "**Windows**" msgstr "" #: ../../manual/preferences.rst:12 msgid "Registry key ``HKEY_CURRENT_USER\\SOFTWARE\\mapeditor.org\\Tiled``" msgstr "" #: ../../manual/preferences.rst:14 msgid "**macOS**" msgstr "" #: ../../manual/preferences.rst:14 msgid "``~/Library/Preferences/org.mapeditor.Tiled.plist``" msgstr "" #: ../../manual/preferences.rst:16 msgid "**Linux**" msgstr "" #: ../../manual/preferences.rst:16 msgid "``~/.config/mapeditor.org/tiled.conf``" msgstr "" #: ../../manual/preferences.rst:29 msgid "Saving and Loading" msgstr "" #: ../../manual/preferences.rst:36 msgid "Include DTD reference in saved maps" msgstr "" #: ../../manual/preferences.rst:32 msgid "This option is not enabled by default, since it is of very little use whereas it can in some environments cause problems. Feel free to enable it if it helps with validation for example, but note that the referenced DTD is likely out of date (there is a somewhat more up-to-date XSD file available in the repository)." msgstr "" #: ../../manual/preferences.rst:40 msgid "Reload tileset images when they change" msgstr "" #: ../../manual/preferences.rst:39 msgid "This is very useful while working on the tiles or when the tiles might change as a result of a source control system." msgstr "" #: ../../manual/preferences.rst:43 msgid "Open last files on startup" msgstr "" #: ../../manual/preferences.rst:43 msgid "Generally a useful thing to keep enabled." msgstr "" #: ../../manual/preferences.rst:51 msgid "Use safe writing of files" msgstr "" #: ../../manual/preferences.rst:46 msgid "This setting causes files to be written to a temporary file, and when all went well, to be swapped with the target file. This avoids data getting lost due to errors while saving or due to insufficient disk space. Unfortunately, it is known to cause issues when saving files to a Dropbox folder or a network drive, in which case it helps to disable this feature." msgstr "" #: ../../manual/preferences.rst:54 msgid "Interface" msgstr "" #: ../../manual/preferences.rst:58 msgid "Language" msgstr "" #: ../../manual/preferences.rst:57 msgid "By default the language tries to match that of the system, but if it picks the wrong one you can change it here." msgstr "" #: ../../manual/preferences.rst:61 msgid "Grid colour" msgstr "" #: ../../manual/preferences.rst:61 msgid "Because black is not always the best color for the grid." msgstr "" #: ../../manual/preferences.rst:66 msgid "Fine grid divisions" msgstr "" #: ../../manual/preferences.rst:64 msgid "The tile grid can be divided further using this setting, which affects the \"Snap to Fine Grid\" setting in the *View > Snapping* menu." msgstr "" #: ../../manual/preferences.rst:71 msgid "Object line width" msgstr "" #: ../../manual/preferences.rst:69 msgid "Shapes are by default rendered with a 2 pixel wide line, but some people like it thinner or even thicker. On some systems the DPI-based scaling will affect this setting as well." msgstr "" #: ../../manual/preferences.rst:76 msgid "Hardware accelerated drawing (OpenGL)" msgstr "" #: ../../manual/preferences.rst:74 msgid "This enables a rather unoptimized way of rendering the map using OpenGL. It's usually not an improvement and may lead to crashes, but in some scenarios it can make editing more responsive." msgstr "" #: ../../manual/preferences.rst:86 msgid "Mouse wheel zooms by default" msgstr "" #: ../../manual/preferences.rst:83 msgid "This option causes the mouse wheel to zoom without the need to hold Control (or Command on macOS). It can be a convenient way to navigate the map, but it can also interfere with panning on a touchpad." msgstr "" #: ../../manual/preferences.rst:89 msgid "Theme" msgstr "" #: ../../manual/preferences.rst:91 msgid "On Windows and Linux, the default style used by Tiled is \"Tiled Fusion\". This is a customized version of the \"Fusion\" style that ships with Qt. On macOS, this style can also be used, but because it looks so out of place the default is \"Native\" there." msgstr "" #: ../../manual/preferences.rst:96 msgid "The \"Tiled Fusion\" style allows customizing the base color. When choosing a dark base color, the text automatically switches to white and some other adjustments are made to keep things readable. You can also choose a custom selection color." msgstr "" #: ../../manual/preferences.rst:101 msgid "The \"Native\" style tries to fit in with the operating system, and is available since it is in some cases preferable to the custom style. The base color and selection color can't be changed when using this style, as they depend on the system." msgstr "" #: ../../manual/preferences.rst:107 msgid "Updates" msgstr "" #: ../../manual/preferences.rst:109 msgid "The official macOS builds and the Windows installers of Tiled ship with an automatic update check, done by `Sparkle`_ and `WinSparkle`_ respectively. These solutions also offer to download the new version and to upgrade or run the installer afterwards." msgstr "" #: ../../manual/preferences.rst:114 msgid "You can turn off the update checks or trigger them manually using the *Check Now* button." msgstr "" #: ../../manual/preferences.rst:118 msgid "Plugins" msgstr "" #: ../../manual/preferences.rst:120 msgid "Here you can choose which plugins are enabled. Currently plugins only serve to add support for additional map and/or tileset file formats. Some generic plugins are enabled by default, while more specific ones need to be manually enabled." msgstr "" #: ../../manual/preferences.rst:125 msgid "There is no need to restart Tiled when enabling or disabling plugins. When a plugin fails to load, try hovering its icon to see if the tool tip displays a useful error message." msgstr "" #: ../../manual/preferences.rst:129 msgid "See :doc:`export` for more information about supported file formats." msgstr "" #: ../../manual/python.rst:4 msgid "Tiled ships with a plugin that enables you to use Python 2.7 to add support for custom map formats. This is nice especially since you don't need to compile Tiled yourself and the scripts are easy to deploy to any platform." msgstr "" #: ../../manual/python.rst:9 msgid "For the scripts to get loaded, they should be placed in ``~/.tiled``. Tiled watches this directory for changes, so there is no need to restart Tiled after adding or changing scripts (though the directory needs to exist when you start Tiled)." msgstr "" #: ../../manual/python.rst:14 msgid "There are several `example scripts`_ available in the repository." msgstr "" #: ../../manual/python.rst:18 msgid "On Windows, Python is not installed by default. For the Tiled Python plugin to work, you'll need to install Python 2.7 (get it from https://www.python.org/). On Linux you may also need to install the appropriate package." msgstr "" #: ../../manual/python.rst:25 msgid "Example Export Plugin" msgstr "" #: ../../manual/python.rst:27 msgid "Suppose you'd like to have a map exported in the following format:" msgstr "" #: ../../manual/python.rst:44 msgid "You can achieve this by saving the following ``example.py`` script in the scripts directory:" msgstr "" #: ../../manual/python.rst:82 msgid "Then you should see an \"Example files\" entry in the type dropdown when going to *File > Export*, which allows you to export the map using the above script." msgstr "" #: ../../manual/python.rst:88 msgid "This example does not support the use of group layers, and in fact the script API doesn't support this yet either. Any help with maintaining the Python plugin would be very appreciated. See `open issues related to Python support`_." msgstr "" #: ../../manual/python.rst:94 msgid "Debugging Your Script" msgstr "" #: ../../manual/python.rst:96 msgid "Any errors that happen while parsing or running the script are printed to the Debug Console, which can be enabled in *View > Views and Toolbars > Debug Console*." msgstr "" #: ../../manual/python.rst:101 msgid "API Reference" msgstr "" #: ../../manual/python.rst:103 msgid "It would be nice to have the full API reference documented here, but for now please check out the `source file`_ for available classes and methods." msgstr "" #: ../../manual/using-commands.rst:2 msgid "Using Commands" msgstr "" #: ../../manual/using-commands.rst:4 msgid "The Command Button allows you to create and run shell commands (other programs) from Tiled." msgstr "" #: ../../manual/using-commands.rst:7 msgid "You may setup as many commands as you like. This is useful if you edit maps for multiple games and you want to set up a command for each game. Or you could setup multiple commands for the same game that load different checkpoints or configurations." msgstr "" #: ../../manual/using-commands.rst:13 msgid "The Command Button" msgstr "" #: ../../manual/using-commands.rst:15 msgid "It is located on the main toolbar to the right of the redo button. Clicking on it will run the default command (the first command in the command list). Clicking the arrow next to it will bring down a menu that allows you to run any command you have set up, as well as an option to open the Edit Commands dialog. You can also find all the commands in the File menu." msgstr "" #: ../../manual/using-commands.rst:22 msgid "Apart from this, you can set up custom keyboard shortcuts for each command." msgstr "" #: ../../manual/using-commands.rst:26 msgid "Editing Commands" msgstr "" #: ../../manual/using-commands.rst:28 msgid "The 'Edit Commands' dialog contains a list of commands. Each command has several properties:" msgstr "" #: ../../manual/using-commands.rst:32 msgid "The name of the command as it will be shown in the drop down list, so you can easily identify it." msgstr "" #: ../../manual/using-commands.rst:37 msgid "Executable" msgstr "" #: ../../manual/using-commands.rst:36 msgid "The executable to run. It should either be a full path or the name of an executable in the system PATH." msgstr "" #: ../../manual/using-commands.rst:40 msgid "Arguments" msgstr "" #: ../../manual/using-commands.rst:40 msgid "The arguments for running the executable." msgstr "" #: ../../manual/using-commands.rst:43 msgid "Working directory" msgstr "" #: ../../manual/using-commands.rst:43 msgid "The path to the working directory." msgstr "" #: ../../manual/using-commands.rst:47 msgid "Shortcut" msgstr "" #: ../../manual/using-commands.rst:46 msgid "A custom key sequence to trigger the command. You can use 'Clear' to reset the shortcut." msgstr "" #: ../../manual/using-commands.rst:52 msgid "Output in Debug Console" msgstr "" #: ../../manual/using-commands.rst:50 msgid "If this is enabled, then the output (stdout and stderr) of this command will be displayed in the Debug Console. You can find the Debug Console in *View > Views and Toolbars > Debug Console*." msgstr "" #: ../../manual/using-commands.rst:56 msgid "Save map before executing" msgstr "" #: ../../manual/using-commands.rst:55 msgid "If this is enabled, then the current map will be saved before executing the command." msgstr "" #: ../../manual/using-commands.rst:60 msgid "Enabled" msgstr "" #: ../../manual/using-commands.rst:59 msgid "A quick way to disable commands and remove them from the drop down list. The default command is the first enabled command." msgstr "" #: ../../manual/using-commands.rst:62 msgid "Note that if the executable or any of its arguments contain spaces, these parts need to be quoted." msgstr "" #: ../../manual/using-commands.rst:66 msgid "Substituted Variables" msgstr "" #: ../../manual/using-commands.rst:68 msgid "In the executable, arguments and working directory fields, you can use the following variables:" msgstr "" #: ../../manual/using-commands.rst:72 msgid "``%mapfile``" msgstr "" #: ../../manual/using-commands.rst:72 msgid "the current maps full path." msgstr "" #: ../../manual/using-commands.rst:75 msgid "``%mappath``" msgstr "" #: ../../manual/using-commands.rst:75 msgid "the full folder path in which the map is located. (since Tiled 0.18)" msgstr "" #: ../../manual/using-commands.rst:78 msgid "``%objecttype``" msgstr "" #: ../../manual/using-commands.rst:78 msgid "the type of the currently selected object, if any. (since Tiled 0.12)" msgstr "" #: ../../manual/using-commands.rst:81 msgid "``%objectid``" msgstr "" #: ../../manual/using-commands.rst:81 msgid "the ID of the currently selected object, if any. (since Tiled 0.17)" msgstr "" #: ../../manual/using-commands.rst:84 msgid "``%layername``" msgstr "" #: ../../manual/using-commands.rst:84 msgid "the name of the currently selected layer. (since Tiled 0.17)" msgstr "" #: ../../manual/using-commands.rst:86 msgid "For the working directory field, you can additionally use the following variable:" msgstr "" #: ../../manual/using-commands.rst:91 msgid "``%executablepath``" msgstr "" #: ../../manual/using-commands.rst:90 msgid "the path to the executable." msgstr "" #: ../../manual/using-commands.rst:94 msgid "Example Commands" msgstr "" #: ../../manual/using-commands.rst:96 msgid "Launching a custom game called \"mygame\" with a -loadmap parameter and the mapfile:" msgstr "" #: ../../manual/using-commands.rst:103 msgid "On Mac, remember that Apps are folders, so you need to run the actual executable from within the ``Contents/MacOS`` folder:" msgstr "" #: ../../manual/using-commands.rst:110 msgid "Or use ``open`` (and note the quotes since one of the arguments contains spaces):" msgstr "" #: ../../manual/using-commands.rst:117 msgid "Some systems also have a command to open files in the appropriate program:" msgstr "" #: ../../manual/using-commands.rst:120 msgid "OSX: ``open %mapfile``" msgstr "" #: ../../manual/using-commands.rst:121 msgid "GNOME systems like Ubuntu: ``gnome-open %mapfile``" msgstr "" #: ../../manual/using-commands.rst:122 msgid "FreeDesktop.org standard: ``xdg-open %mapfile``" msgstr "" #: ../../manual/using-infinite-maps.rst:6 msgid "Using Infinite Maps" msgstr "" #: ../../manual/using-infinite-maps.rst:8 msgid "Infinite maps give you independence from bounds of the map. The canvas is \"auto-growing\", which basically means, that you have an infinite grid which can be painted upon without worrying about the width and height of the map. The bounds of a particular layer get expanded whenever tiles are painted outside the current bounds." msgstr "" #: ../../manual/using-infinite-maps.rst:18 msgid "Creating an Infinite Map" msgstr "" #: ../../manual/using-infinite-maps.rst:20 msgid "In the order to create an infinite map, make sure the 'Infinite' option is selected in New Map dialog." msgstr "" #: ../../manual/using-infinite-maps.rst:27 msgid "The newly created map will then have an infinite canvas." msgstr "" #: ../../manual/using-infinite-maps.rst:30 msgid "Editing the Infinite Map" msgstr "" #: ../../manual/using-infinite-maps.rst:32 msgid "Except for the :ref:`bucket-fill-tool`, all tools works exactly in the same way as in the fixed-size maps. The Bucket Fill Tool fills the current bounds of that particular tile layer. These bounds get increased upon further painting of that tile layer." msgstr "" #: ../../manual/using-infinite-maps.rst:41 msgid "Conversion from Infinite to Finite Map and Vice Versa" msgstr "" #: ../../manual/using-infinite-maps.rst:43 msgid "In the map properties, you can toggle whether the map should be infinite or not. When converting from infinite to a finite map, the width and height of the final map are chosen on the basis of bounds of all the tile layers." msgstr "" #: ../../manual/using-infinite-maps.rst:51 msgid "The Initial Infinite Map" msgstr "" #: ../../manual/using-infinite-maps.rst:56 msgid "Unchecking the Infinite property in Map Properties" msgstr "" #: ../../manual/using-infinite-maps.rst:61 msgid "The Converted Map" msgstr "" #: ../../manual/using-templates.rst:6 msgid "Using Templates" msgstr "" #: ../../manual/using-templates.rst:8 msgid "Any created object can be saved as a template. These templates can then be instantiated elsewhere as objects that inherit the template's properties. This can save a lot of tedious work of setting up the object type and properties, or even just finding the right tile in the tileset." msgstr "" #: ../../manual/using-templates.rst:13 msgid "Each template is stored in its own file and they can be organized in directories. You can save templates in either XML or JSON format, just like map and tileset files." msgstr "" #: ../../manual/using-templates.rst:21 msgid "Creating Templates" msgstr "" #: ../../manual/using-templates.rst:23 msgid "A template can be created by right clicking on any object in the map and selecting \"Save As Template\". You will be asked to choose the file name and the format to save the template in. If the object already has a name the suggested file name will be based on that." msgstr "" #: ../../manual/using-templates.rst:31 msgid "You can't create a template from a tile object that uses a tile from an embedded tileset, because :ref:`template files ` do not support referring to such tilesets." msgstr "" #: ../../manual/using-templates.rst:37 msgid "The Templates View" msgstr "" #: ../../manual/using-templates.rst:39 msgid "Working with templates is done through the Templates view. The Templates view is divided into two parts: the left part is a tree view that shows the template files in a selected directory and the right part shows a preview of the selected template." msgstr "" #: ../../manual/using-templates.rst:47 msgid "Creating Template Instances" msgstr "" #: ../../manual/using-templates.rst:51 msgid "Template instantiation works by either dragging and dropping the template from the list of templates to the map, or by using the \"Insert Template\" tool by selecting a template and clicking on the map which is more convenient when you want to create many instances." msgstr "" #: ../../manual/using-templates.rst:61 msgid "Editing Templates" msgstr "" #: ../../manual/using-templates.rst:63 msgid "Selecting a template will show an editable preview in the Templates view and will show the template's properties in the Properties view where they can be edited. Changes to the template are saved automatically." msgstr "" #: ../../manual/using-templates.rst:67 msgid "All template instances are linked to their template, so all edits will be immediately reflected upon all the template instances on the map." msgstr "" #: ../../manual/using-templates.rst:73 msgid "If a property of a template instance is changed, it will be internally marked as an overridden property and won't be changed when the template changes." msgstr "" #: ../../manual/using-templates.rst:77 msgid "Detaching Template Instances" msgstr "" #: ../../manual/using-templates.rst:79 msgid "Detaching a template instance will disconnect it from its template, so any further edits to the template will not affect the detached instance." msgstr "" #: ../../manual/using-templates.rst:82 msgid "To detach an instance, right click on it and select *Detach*." msgstr "" #: ../../manual/using-templates.rst:87 msgid "Resetting overridden properties individually (`#1725 `__)." msgstr "" #: ../../manual/using-templates.rst:88 msgid "Locking template properties (`#1726 `__)." msgstr "" #: ../../manual/using-templates.rst:89 msgid "Handling wrong file paths (`#1732 `__)." msgstr "" #: ../../manual/using-templates.rst:90 msgid "Managing the templates folder, e.g. moving, renaming or deleting a template or a sub-folder (`#1723 `__)." msgstr "" #: ../../manual/using-the-terrain-tool.rst:2 msgid "Using the Terrain Brush" msgstr "" #: ../../manual/using-the-terrain-tool.rst:4 msgid "The :ref:`terrain-tool` was added to make editing tile maps easier when using terrain transitions. There are of course multiple ways to do transitions between tiles. This tool supports transition tiles that have a well-defined terrain type at each of their 4 corners, which seems to be the most common method." msgstr "" #: ../../manual/using-the-terrain-tool.rst:10 msgid "To demonstrate how to use this tool we describe the steps necessary to reproduce the ``desert.tmx`` example map, which now also includes terrain information in its tileset." msgstr "" #: ../../manual/using-the-terrain-tool.rst:15 msgid "Create a New Map and Add a Tileset" msgstr "" #: ../../manual/using-the-terrain-tool.rst:17 msgid "First of all, follow the :ref:`getting-started` instructions to set up the map and the tileset." msgstr "" #: ../../manual/using-the-terrain-tool.rst:20 msgid "The ``tmw_desert_spacing.png`` tileset we just set up has 4 different terrain types. Traditionally editing a map with these tiles meant that you had to carefully connect the right transitions to avoid broken edges. Now we will define the terrain information for this tileset, which the :ref:`terrain-tool` will use to automatically place the right transitions." msgstr "" #: ../../manual/using-the-terrain-tool.rst:30 msgid "Define the Terrain Information" msgstr "" #: ../../manual/using-the-terrain-tool.rst:32 msgid "First of all, switch to the tileset file. If you're looking at the map and have the tileset selected, you can do this by clicking the small *Edit Tileset* button below the Tilesets view." msgstr "" #: ../../manual/using-the-terrain-tool.rst:39 msgid "Edit Tileset button" msgstr "" #: ../../manual/using-the-terrain-tool.rst:41 msgid "Then, activate the terrain editing mode by clicking on the *Terrains* |terrain| button on the tool bar." msgstr "" #: ../../manual/using-the-terrain-tool.rst:44 msgid "In this mode, the list of terrain types is displayed and you can mark corners of the tiles in your tileset as belonging to a certain terrain type. To start with, add each of the 4 terrain types. The fastest way is by right-clicking on a tile representing a certain terrain and choosing \"Add Terrain Type\". This automatically sets the tile as the image representing the terrain." msgstr "" #: ../../manual/using-the-terrain-tool.rst:54 msgid "Adding Terrain Type" msgstr "" #: ../../manual/using-the-terrain-tool.rst:56 msgid "Give each of the terrains an appropriate name. Once you're done, select the Sand terrain and mark all corners in the tileset with this type of terrain. When you're done it should look like this:" msgstr "" #: ../../manual/using-the-terrain-tool.rst:63 msgid "Sand Terrain Marked" msgstr "" #: ../../manual/using-the-terrain-tool.rst:65 msgid "If you make a mistake, just use Undo (or press ``Ctrl+Z``). Or if you notice a mistake later, either use *Erase Terrain* to clear a terrain type from a corner or select the correct terrain type and paint over it." msgstr "" #: ../../manual/using-the-terrain-tool.rst:69 msgid "Do the same for each of the other terrain types. Eventually you'll have marked all tiles apart from the special objects." msgstr "" #: ../../manual/using-the-terrain-tool.rst:75 msgid "Done Marking Terrain" msgstr "" #: ../../manual/using-the-terrain-tool.rst:77 msgid "Now you can disable the *Terrains* mode by clicking the tool bar button again." msgstr "" #: ../../manual/using-the-terrain-tool.rst:81 msgid "Editing with the Terrain Brush" msgstr "" #: ../../manual/using-the-terrain-tool.rst:83 msgid "Switch back to the map and then activate the Terrains window. You should see the 4 terrain types represented in a list. Click on the Sand terrain and start painting. You may immediately notice that nothing special is happening. This is because there are no other tiles on the map yet so the terrain tool doesn't really know how to help (because we have no transitions to \"nothing\" in our tileset). Assuming we're out to create a desert map, it's better to start by filling your entire map with sand. Just switch back to the Tilesets window for a moment, select the sand tile and then use the :ref:`bucket-fill-tool`." msgstr "" #: ../../manual/using-the-terrain-tool.rst:93 msgid "Let's switch back to the Terrains window and draw some cobblestones. Now you can see the tool in action!" msgstr "" #: ../../manual/using-the-terrain-tool.rst:99 msgid "Drawing Cobblestone" msgstr "" #: ../../manual/using-the-terrain-tool.rst:101 msgid "Try holding ``Control`` (``Command`` on a Mac) while drawing. This reduces the modified area to just the closest corner to the mouse, allowing for precision work." msgstr "" #: ../../manual/using-the-terrain-tool.rst:105 msgid "Finally, see what happens when you try drawing some dirt on the cobblestone. Because there are no transitions from dirt directly to cobblestone, the Terrain tool first inserts transitions to sand and from there to cobblestone. Neat!" msgstr "" #: ../../manual/using-the-terrain-tool.rst:113 msgid "Drawing Dirt" msgstr "" #: ../../manual/using-the-terrain-tool.rst:116 msgid "Final Words" msgstr "" #: ../../manual/using-the-terrain-tool.rst:118 msgid "Now you should have a pretty good idea about how to use this tool in your own project. A few things to keep in mind:" msgstr "" #: ../../manual/using-the-terrain-tool.rst:121 msgid "Currently the tool requires all terrain types to be part of the same tileset. You can have multiple tilesets with terrain in your map, but the tool can't perform automatic transitions from a terrain from one tileset to a terrain in another tileset. This usually means you may have to combine several tiles into one image." msgstr "" #: ../../manual/using-the-terrain-tool.rst:127 msgid "Since defining the terrain information can be somewhat laboursome, you'll want to avoid using embedded tilesets so that terrain information can be shared among several maps." msgstr "" #: ../../manual/using-the-terrain-tool.rst:131 msgid "The Terrain tool works fine with isometric maps as well. To make sure the terrain overlay is displayed correctly, set up the *Orientation*, *Grid Width* and *Grid Height* in the tileset properties." msgstr "" #: ../../manual/using-the-terrain-tool.rst:135 msgid "The tool will handle any number of terrain types and each corner of a tile can have a different type of terrain. Still, there are other ways of dealing with transitions that this tool can't handle. Also, it is not able to edit multiple layers at the same time. For a more flexible, but also more complicated way of automatic tile placement, check out :doc:`automapping`." msgstr "" #: ../../manual/using-the-terrain-tool.rst:142 msgid "I'm maintaining a `collection of tilesets `__ that contain transitions that are compatible with this tool on `OpenGameArt.org `__." msgstr "" #: ../../manual/using-wang-tiles.rst:6 msgid "Using Wang Tiles" msgstr "" #: ../../manual/using-wang-tiles.rst:8 msgid "Wang tiles are similar in concept to Terrains. This is, however, more focused on filling larger areas without repetition. One defines the edge and corner colors of tiles in a tileset. This information can then be used when filling, or brushing to allow for smooth, non-repetitive transitions between tiles. In most cases this tiling is random, and based on color probability. More info on Wang tiles can be found `here `_." msgstr "" #: ../../manual/using-wang-tiles.rst:15 msgid "To demonstrate how to use Wang tiles, I will describe the steps necessary to recreate ``walkways.tsx`` example tileset." msgstr "" #: ../../manual/using-wang-tiles.rst:21 msgid "Defining Wang Tile Info" msgstr "" #: ../../manual/using-wang-tiles.rst:23 msgid "After making the tileset, from the tileset editor, click the Wang Sets button." msgstr "" #: ../../manual/using-wang-tiles.rst:27 msgid "Wang Set Button" msgstr "" #: ../../manual/using-wang-tiles.rst:29 msgid "A single tileset can have many Wang sets. Create a new Wang set using the plus button at the bottom of the Wang set view." msgstr "" #: ../../manual/using-wang-tiles.rst:34 msgid "Wang Set View" msgstr "" #: ../../manual/using-wang-tiles.rst:36 msgid "You can now edit the properties of the Wang set. Important for us is edge and corner count. This will determine how the set is defined, and how it behaves. This tileset is a 3 edge Wang set." msgstr "" #: ../../manual/using-wang-tiles.rst:42 msgid "Wang Set Properties" msgstr "" #: ../../manual/using-wang-tiles.rst:44 msgid "Now in the complete pattern set will generate in the *Patterns* tab below the Wang set view. For the set to be complete (though this is unnecessary), each pattern must be used at least once." msgstr "" #: ../../manual/using-wang-tiles.rst:50 msgid "Pattern View" msgstr "" #: ../../manual/using-wang-tiles.rst:52 msgid "Once a pattern is selected, you can paint it directly onto the tileset. Similar to when using the Stamp Brush, ``Z`` and ``Shift + Z`` can be used to rotate the pattern 90 degrees clockwise and counterclockwise respectively. ``X`` and ``Y`` flip the pattern horizontally, and vertically respectively." msgstr "" #: ../../manual/using-wang-tiles.rst:59 msgid "Painting on a Pattern" msgstr "" #: ../../manual/using-wang-tiles.rst:61 msgid "In the other tab, there is the *Colors* view. This gives you access to edit properties and assign with each individual color of a set." msgstr "" #: ../../manual/using-wang-tiles.rst:66 msgid "Painting Individual Edge" msgstr "" #: ../../manual/using-wang-tiles.rst:68 msgid "Using these methods, assign each tile matching all the edges. After this is done, the set is ready to be used with all the Wang methods." msgstr "" #: ../../manual/using-wang-tiles.rst:73 msgid "Completely Assigned Wang Set" msgstr "" #: ../../manual/using-wang-tiles.rst:76 msgid "Editing With Wang Methods" msgstr "" #: ../../manual/using-wang-tiles.rst:78 msgid "There are two main ways to use Wang tiles:" msgstr "" #: ../../manual/using-wang-tiles.rst:80 msgid "Activating the `Wang mode <#wang-mode>`__" msgstr "" #: ../../manual/using-wang-tiles.rst:82 msgid "Using the `Wang brush <#wang-brush>`__" msgstr "" #: ../../manual/using-wang-tiles.rst:85 msgid "Wang Mode" msgstr "" #: ../../manual/using-wang-tiles.rst:86 msgid "Similar to the random mode, the Stamp Brush, and Bucket Fill tools can use Wang methods to fill. With the Wang mode activated, each cell will be randomly chosen from all those in the Wang set which match all adjacent edge/corner colors." msgstr "" #: ../../manual/using-wang-tiles.rst:92 msgid "Stamp Brush with Wang Fill Mode Enabled" msgstr "" #: ../../manual/using-wang-tiles.rst:96 msgid "Bucket Fill with Wang Fill Mode Enabled" msgstr "" #: ../../manual/using-wang-tiles.rst:100 msgid "There is also the :ref:`wang-tool`, which works very much like the :ref:`terrain-tool`. This tool changes the edge/color patterns of the adjacent cells, to match a selected color. If no tiles exist in the Wang set of a particular pattern, the area can not be painted." msgstr "" #: ../../manual/using-wang-tiles.rst:109 msgid "Customizing Wang Colors" msgstr "" #: ../../manual/using-wang-tiles.rst:111 msgid "Each Wang color can be customized to become more recognizable. As well, the probability of each color can be adjusted, such that with the Wang mode it will show up more often in filling or brushing." msgstr "" #: ../../manual/using-wang-tiles.rst:115 msgid "Color Appearance" msgstr "" #: ../../manual/using-wang-tiles.rst:116 msgid "The name, image, and of course color can be changed to alter the appearance of a Wang color. This image can be changed be selecting a color, then right clicking on the tile whose image is desired, and selecting *Set Wang Color Image*." msgstr "" #: ../../manual/using-wang-tiles.rst:122 msgid "Selecting Wang color image" msgstr "" #: ../../manual/using-wang-tiles.rst:126 msgid "The other values can be changed from the properties view." msgstr "" #: ../../manual/using-wang-tiles.rst:130 msgid "When choosing a tile with Wang methods, all tiles with a valid Wang pattern are considered. They are given a weight based on their edge/corner colors' probabilities. Then one is selected at random, while considering this weight. The weight is the product of all the probabilities." msgstr "" #: ../../manual/using-wang-tiles.rst:139 msgid "Left shows path with probability 0.1, right shows path with probability 10." msgstr "" #: ../../manual/using-wang-tiles.rst:142 msgid "Standard Wang Sets" msgstr "" #: ../../manual/using-wang-tiles.rst:144 msgid "Some typical Wang sets are `2-corner `__, `2-edge `__, and `blob `__. Wang tiles in Tiled support up to 15 edge and 15 corner colors in a single set." msgstr "" tiled-1.3.2/docs/_build/gettext/reference.pot000066400000000000000000002525141361206041500211610ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2017, Tiled Documentation Writers # This file is distributed under the same license as the Tiled package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Tiled 1.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-12-21 14:31+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../reference/json-map-format.rst:2 msgid "JSON Map Format" msgstr "" #: ../../reference/json-map-format.rst:4 msgid "Tiled can export maps as JSON files. To do so, simply select \"File > Export As\" and select the JSON file type. You can export json from the command line with the ``--export-map`` option." msgstr "" #: ../../reference/json-map-format.rst:8 msgid "The fields found in the JSON format differ slightly from those in the :doc:`tmx-map-format`, but the meanings should remain the same." msgstr "" #: ../../reference/json-map-format.rst:11 msgid "The following fields can be found in a Tiled JSON file:" msgstr "" #: ../../reference/json-map-format.rst:14 msgid "Map" msgstr "" #: ../../reference/json-map-format.rst:17 #: ../../reference/json-map-format.rst:82 #: ../../reference/json-map-format.rst:160 #: ../../reference/json-map-format.rst:378 #: ../../reference/json-map-format.rst:453 #: ../../reference/json-map-format.rst:493 msgid "Field" msgstr "" #: ../../reference/json-map-format.rst:17 #: ../../reference/json-map-format.rst:82 #: ../../reference/json-map-format.rst:160 #: ../../reference/json-map-format.rst:378 #: ../../reference/json-map-format.rst:453 #: ../../reference/json-map-format.rst:493 msgid "Type" msgstr "" #: ../../reference/json-map-format.rst:17 #: ../../reference/json-map-format.rst:82 #: ../../reference/json-map-format.rst:160 #: ../../reference/json-map-format.rst:378 #: ../../reference/json-map-format.rst:453 #: ../../reference/json-map-format.rst:493 msgid "Description" msgstr "" #: ../../reference/json-map-format.rst:19 msgid "backgroundcolor" msgstr "" #: ../../reference/json-map-format.rst:19 #: ../../reference/json-map-format.rst:29 #: ../../reference/json-map-format.rst:34 #: ../../reference/json-map-format.rst:36 #: ../../reference/json-map-format.rst:44 #: ../../reference/json-map-format.rst:86 #: ../../reference/json-map-format.rst:92 #: ../../reference/json-map-format.rst:100 #: ../../reference/json-map-format.rst:170 #: ../../reference/json-map-format.rst:184 #: ../../reference/json-map-format.rst:386 #: ../../reference/json-map-format.rst:394 #: ../../reference/json-map-format.rst:417 #: ../../reference/json-map-format.rst:495 msgid "string" msgstr "" #: ../../reference/json-map-format.rst:19 msgid "Hex-formatted color (#RRGGBB or #AARRGGBB) (optional)" msgstr "" #: ../../reference/json-map-format.rst:21 #: ../../reference/json-map-format.rst:88 #: ../../reference/json-map-format.rst:166 msgid "height" msgstr "" #: ../../reference/json-map-format.rst:21 #: ../../reference/json-map-format.rst:27 #: ../../reference/json-map-format.rst:38 #: ../../reference/json-map-format.rst:42 #: ../../reference/json-map-format.rst:48 #: ../../reference/json-map-format.rst:84 #: ../../reference/json-map-format.rst:88 #: ../../reference/json-map-format.rst:104 #: ../../reference/json-map-format.rst:106 #: ../../reference/json-map-format.rst:108 #: ../../reference/json-map-format.rst:164 #: ../../reference/json-map-format.rst:166 #: ../../reference/json-map-format.rst:168 #: ../../reference/json-map-format.rst:188 #: ../../reference/json-map-format.rst:190 #: ../../reference/json-map-format.rst:192 #: ../../reference/json-map-format.rst:380 #: ../../reference/json-map-format.rst:382 #: ../../reference/json-map-format.rst:388 #: ../../reference/json-map-format.rst:390 #: ../../reference/json-map-format.rst:392 #: ../../reference/json-map-format.rst:400 #: ../../reference/json-map-format.rst:404 #: ../../reference/json-map-format.rst:406 #: ../../reference/json-map-format.rst:415 #: ../../reference/json-map-format.rst:497 msgid "int" msgstr "" #: ../../reference/json-map-format.rst:21 msgid "Number of tile rows" msgstr "" #: ../../reference/json-map-format.rst:23 msgid "infinite" msgstr "" #: ../../reference/json-map-format.rst:23 #: ../../reference/json-map-format.rst:102 #: ../../reference/json-map-format.rst:162 #: ../../reference/json-map-format.rst:172 #: ../../reference/json-map-format.rst:186 msgid "bool" msgstr "" #: ../../reference/json-map-format.rst:23 msgid "Whether the map has infinite dimensions" msgstr "" #: ../../reference/json-map-format.rst:25 #: ../../reference/json-map-format.rst:90 msgid "layers" msgstr "" #: ../../reference/json-map-format.rst:25 #: ../../reference/json-map-format.rst:40 #: ../../reference/json-map-format.rst:90 #: ../../reference/json-map-format.rst:174 #: ../../reference/json-map-format.rst:176 #: ../../reference/json-map-format.rst:402 #: ../../reference/json-map-format.rst:455 msgid "array" msgstr "" #: ../../reference/json-map-format.rst:25 msgid "Array of :ref:`layers `" msgstr "" #: ../../reference/json-map-format.rst:27 msgid "nextobjectid" msgstr "" #: ../../reference/json-map-format.rst:27 msgid "Auto-increments for each placed object" msgstr "" #: ../../reference/json-map-format.rst:29 msgid "orientation" msgstr "" #: ../../reference/json-map-format.rst:29 msgid "``orthogonal``, ``isometric``, ``staggered`` or ``hexagonal``" msgstr "" #: ../../reference/json-map-format.rst:32 #: ../../reference/json-map-format.rst:98 #: ../../reference/json-map-format.rst:178 #: ../../reference/json-map-format.rst:396 msgid "properties" msgstr "" #: ../../reference/json-map-format.rst:32 #: ../../reference/json-map-format.rst:94 #: ../../reference/json-map-format.rst:98 #: ../../reference/json-map-format.rst:178 #: ../../reference/json-map-format.rst:182 #: ../../reference/json-map-format.rst:384 #: ../../reference/json-map-format.rst:396 #: ../../reference/json-map-format.rst:398 #: ../../reference/json-map-format.rst:408 #: ../../reference/json-map-format.rst:410 #: ../../reference/json-map-format.rst:412 msgid "object" msgstr "" #: ../../reference/json-map-format.rst:32 #: ../../reference/json-map-format.rst:178 #: ../../reference/json-map-format.rst:182 #: ../../reference/json-map-format.rst:396 #: ../../reference/json-map-format.rst:398 msgid "String key-value pairs" msgstr "" #: ../../reference/json-map-format.rst:34 msgid "renderorder" msgstr "" #: ../../reference/json-map-format.rst:34 msgid "Rendering direction (orthogonal maps only)" msgstr "" #: ../../reference/json-map-format.rst:36 msgid "tiledversion" msgstr "" #: ../../reference/json-map-format.rst:36 msgid "The Tiled version used to save the file" msgstr "" #: ../../reference/json-map-format.rst:38 #: ../../reference/json-map-format.rst:406 msgid "tileheight" msgstr "" #: ../../reference/json-map-format.rst:38 msgid "Map grid height" msgstr "" #: ../../reference/json-map-format.rst:40 msgid "tilesets" msgstr "" #: ../../reference/json-map-format.rst:40 msgid "Array of :ref:`tilesets `" msgstr "" #: ../../reference/json-map-format.rst:42 #: ../../reference/json-map-format.rst:415 msgid "tilewidth" msgstr "" #: ../../reference/json-map-format.rst:42 msgid "Map grid width" msgstr "" #: ../../reference/json-map-format.rst:44 #: ../../reference/json-map-format.rst:100 #: ../../reference/json-map-format.rst:184 #: ../../reference/json-map-format.rst:417 msgid "type" msgstr "" #: ../../reference/json-map-format.rst:44 msgid "``map`` (since 1.0)" msgstr "" #: ../../reference/json-map-format.rst:46 msgid "version" msgstr "" #: ../../reference/json-map-format.rst:46 msgid "number" msgstr "" #: ../../reference/json-map-format.rst:46 msgid "The JSON format version" msgstr "" #: ../../reference/json-map-format.rst:48 #: ../../reference/json-map-format.rst:104 #: ../../reference/json-map-format.rst:188 msgid "width" msgstr "" #: ../../reference/json-map-format.rst:48 msgid "Number of tile columns" msgstr "" #: ../../reference/json-map-format.rst:52 msgid "Map Example" msgstr "" #: ../../reference/json-map-format.rst:79 msgid "Layer" msgstr "" #: ../../reference/json-map-format.rst:84 msgid "data" msgstr "" #: ../../reference/json-map-format.rst:84 msgid "Array of GIDs. ``tilelayer`` only." msgstr "" #: ../../reference/json-map-format.rst:86 msgid "draworder" msgstr "" #: ../../reference/json-map-format.rst:86 msgid "``topdown`` (default) or ``index``. ``objectgroup`` only." msgstr "" #: ../../reference/json-map-format.rst:88 msgid "Row count. Same as map height for fixed-size maps." msgstr "" #: ../../reference/json-map-format.rst:90 msgid "Array of :ref:`layers `. ``group`` on" msgstr "" #: ../../reference/json-map-format.rst:92 #: ../../reference/json-map-format.rst:170 #: ../../reference/json-map-format.rst:394 #: ../../reference/json-map-format.rst:495 msgid "name" msgstr "" #: ../../reference/json-map-format.rst:92 msgid "Name assigned to this layer" msgstr "" #: ../../reference/json-map-format.rst:94 msgid "objects" msgstr "" #: ../../reference/json-map-format.rst:94 msgid "Array of :ref:`objects `. ``objectgroup`` only." msgstr "" #: ../../reference/json-map-format.rst:96 msgid "opacity" msgstr "" #: ../../reference/json-map-format.rst:96 #: ../../reference/json-map-format.rst:180 msgid "float" msgstr "" #: ../../reference/json-map-format.rst:96 msgid "Value between 0 and 1" msgstr "" #: ../../reference/json-map-format.rst:98 msgid "string key-value pairs." msgstr "" #: ../../reference/json-map-format.rst:100 msgid "``tilelayer``, ``objectgroup``, ``imagelayer`` or ``group``" msgstr "" #: ../../reference/json-map-format.rst:102 #: ../../reference/json-map-format.rst:186 msgid "visible" msgstr "" #: ../../reference/json-map-format.rst:102 msgid "Whether layer is shown or hidden in editor" msgstr "" #: ../../reference/json-map-format.rst:104 msgid "Column count. Same as map width for fixed-size maps." msgstr "" #: ../../reference/json-map-format.rst:106 #: ../../reference/json-map-format.rst:190 msgid "x" msgstr "" #: ../../reference/json-map-format.rst:106 msgid "Horizontal layer offset in tiles. Always 0." msgstr "" #: ../../reference/json-map-format.rst:108 #: ../../reference/json-map-format.rst:192 msgid "y" msgstr "" #: ../../reference/json-map-format.rst:108 msgid "Vertical layer offset in tiles. Always 0." msgstr "" #: ../../reference/json-map-format.rst:112 msgid "Tile Layer Example" msgstr "" #: ../../reference/json-map-format.rst:133 msgid "Object Layer Example" msgstr "" #: ../../reference/json-map-format.rst:157 msgid "Object" msgstr "" #: ../../reference/json-map-format.rst:162 msgid "ellipse" msgstr "" #: ../../reference/json-map-format.rst:162 msgid "Used to mark an object as an ellipse" msgstr "" #: ../../reference/json-map-format.rst:164 msgid "gid" msgstr "" #: ../../reference/json-map-format.rst:164 msgid "GID, only if object comes from a Tilemap" msgstr "" #: ../../reference/json-map-format.rst:166 msgid "Height in pixels. Ignored if using a gid." msgstr "" #: ../../reference/json-map-format.rst:168 msgid "id" msgstr "" #: ../../reference/json-map-format.rst:168 msgid "Incremental id - unique across all objects" msgstr "" #: ../../reference/json-map-format.rst:170 msgid "String assigned to name field in editor" msgstr "" #: ../../reference/json-map-format.rst:172 msgid "point" msgstr "" #: ../../reference/json-map-format.rst:172 msgid "Used to mark an object as a point" msgstr "" #: ../../reference/json-map-format.rst:174 msgid "polygon" msgstr "" #: ../../reference/json-map-format.rst:174 #: ../../reference/json-map-format.rst:176 msgid "A list of x,y coordinates in pixels" msgstr "" #: ../../reference/json-map-format.rst:176 msgid "polyline" msgstr "" #: ../../reference/json-map-format.rst:180 msgid "rotation" msgstr "" #: ../../reference/json-map-format.rst:180 msgid "Angle in degrees clockwise" msgstr "" #: ../../reference/json-map-format.rst:182 msgid "text" msgstr "" #: ../../reference/json-map-format.rst:184 msgid "String assigned to type field in editor" msgstr "" #: ../../reference/json-map-format.rst:186 msgid "Whether object is shown in editor." msgstr "" #: ../../reference/json-map-format.rst:188 msgid "Width in pixels. Ignored if using a gid." msgstr "" #: ../../reference/json-map-format.rst:190 msgid "x coordinate in pixels" msgstr "" #: ../../reference/json-map-format.rst:192 msgid "y coordinate in pixels" msgstr "" #: ../../reference/json-map-format.rst:196 msgid "Object Example" msgstr "" #: ../../reference/json-map-format.rst:218 msgid "Ellipse Example" msgstr "" #: ../../reference/json-map-format.rst:236 msgid "Rectangle Example" msgstr "" #: ../../reference/json-map-format.rst:253 msgid "Point Example" msgstr "" #: ../../reference/json-map-format.rst:271 msgid "Polygon Example" msgstr "" #: ../../reference/json-map-format.rst:309 msgid "Polyline Example" msgstr "" #: ../../reference/json-map-format.rst:351 msgid "Text Example" msgstr "" #: ../../reference/json-map-format.rst:375 msgid "Tileset" msgstr "" #: ../../reference/json-map-format.rst:380 msgid "columns" msgstr "" #: ../../reference/json-map-format.rst:380 msgid "The number of tile columns in the tileset" msgstr "" #: ../../reference/json-map-format.rst:382 msgid "firstgid" msgstr "" #: ../../reference/json-map-format.rst:382 msgid "GID corresponding to the first tile in the set" msgstr "" #: ../../reference/json-map-format.rst:384 msgid "grid" msgstr "" #: ../../reference/json-map-format.rst:384 msgid "See :ref:`tmx-grid` (optional)" msgstr "" #: ../../reference/json-map-format.rst:386 msgid "image" msgstr "" #: ../../reference/json-map-format.rst:386 msgid "Image used for tiles in this set" msgstr "" #: ../../reference/json-map-format.rst:388 msgid "imagewidth" msgstr "" #: ../../reference/json-map-format.rst:388 msgid "Width of source image in pixels" msgstr "" #: ../../reference/json-map-format.rst:390 msgid "imageheight" msgstr "" #: ../../reference/json-map-format.rst:390 msgid "Height of source image in pixels" msgstr "" #: ../../reference/json-map-format.rst:392 msgid "margin" msgstr "" #: ../../reference/json-map-format.rst:392 msgid "Buffer between image edge and first tile (pixels)" msgstr "" #: ../../reference/json-map-format.rst:394 msgid "Name given to this tileset" msgstr "" #: ../../reference/json-map-format.rst:398 msgid "propertytypes" msgstr "" #: ../../reference/json-map-format.rst:400 msgid "spacing" msgstr "" #: ../../reference/json-map-format.rst:400 msgid "Spacing between adjacent tiles in image (pixels)" msgstr "" #: ../../reference/json-map-format.rst:402 msgid "terrains" msgstr "" #: ../../reference/json-map-format.rst:402 msgid "Array of :ref:`terrains ` (optional)" msgstr "" #: ../../reference/json-map-format.rst:404 msgid "tilecount" msgstr "" #: ../../reference/json-map-format.rst:404 msgid "The number of tiles in this tileset" msgstr "" #: ../../reference/json-map-format.rst:406 msgid "Maximum height of tiles in this set" msgstr "" #: ../../reference/json-map-format.rst:408 msgid "tileoffset" msgstr "" #: ../../reference/json-map-format.rst:408 msgid "See :ref:`tmx-tileoffset` (optional)" msgstr "" #: ../../reference/json-map-format.rst:410 msgid "tileproperties" msgstr "" #: ../../reference/json-map-format.rst:410 msgid "Per-tile properties, indexed by gid as string" msgstr "" #: ../../reference/json-map-format.rst:412 msgid "tiles" msgstr "" #: ../../reference/json-map-format.rst:412 msgid "Mapping from tile ID to :ref:`tile ` (optional)" msgstr "" #: ../../reference/json-map-format.rst:415 msgid "Maximum width of tiles in this set" msgstr "" #: ../../reference/json-map-format.rst:417 msgid "``tileset`` (for tileset files, since 1.0)" msgstr "" #: ../../reference/json-map-format.rst:421 msgid "Tileset Example" msgstr "" #: ../../reference/json-map-format.rst:450 msgid "Tile (Definition)" msgstr "" #: ../../reference/json-map-format.rst:455 msgid "terrain" msgstr "" #: ../../reference/json-map-format.rst:455 msgid "index of terrain for each corner of tile" msgstr "" #: ../../reference/json-map-format.rst:458 msgid "A tileset that associates information with each tile, like its image path or terrain type, may include a \"tiles\" JSON object. Each key is a local ID of a tile within the tileset." msgstr "" #: ../../reference/json-map-format.rst:462 msgid "For the terrain information, each value is a length-4 array where each element is the index of a :ref:`terrain ` on one corner of the tile. The order of indices is: top-left, top-right, bottom-left, bottom-right." msgstr "" #: ../../reference/json-map-format.rst:467 #: ../../reference/json-map-format.rst:500 msgid "Example:" msgstr "" #: ../../reference/json-map-format.rst:490 msgid "Terrain" msgstr "" #: ../../reference/json-map-format.rst:495 msgid "Name of terrain" msgstr "" #: ../../reference/json-map-format.rst:497 msgid "tile" msgstr "" #: ../../reference/json-map-format.rst:497 msgid "Local ID of tile representing terrain" msgstr "" #: ../../reference/support-for-tmx-maps.rst:2 msgid "Libraries and Frameworks" msgstr "" #: ../../reference/support-for-tmx-maps.rst:4 msgid "There are many libraries available for reading and/or writing Tiled maps (either stored in the :doc:`tmx-map-format` or the :doc:`json-map-format`) as well as many development frameworks that include support for Tiled maps. This list is divided into two sections:" msgstr "" #: ../../reference/support-for-tmx-maps.rst:9 msgid "`Support by Language <#support-by-language>`__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:10 msgid "`Support by Framework <#support-by-framework>`__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:12 msgid "The first list is for developers who plan on implementing their own renderer. The second list is for developers already using (or considering) a particular game engine / graphics library who would rather pass on having to write their own tile map renderer." msgstr "" #: ../../reference/support-for-tmx-maps.rst:19 msgid "For updates to this page please open a pull request or issue `on GitHub `__, thanks!" msgstr "" #: ../../reference/support-for-tmx-maps.rst:23 msgid "Support by Language" msgstr "" #: ../../reference/support-for-tmx-maps.rst:25 msgid "These libraries typically include only a TMX parser, but no rendering support. They can be used universally and should not require a specific game engine or graphics library." msgstr "" #: ../../reference/support-for-tmx-maps.rst:30 msgid "C" msgstr "" #: ../../reference/support-for-tmx-maps.rst:32 msgid "`TMX `__ - TMX map loader with Allegro5 and SDL2 examples (BSD)." msgstr "" #: ../../reference/support-for-tmx-maps.rst:36 msgid "C++" msgstr "" #: ../../reference/support-for-tmx-maps.rst:38 msgid "`C++/Boost `__ by Tomas Andrle (limited functionality, single cpp file)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:40 msgid "`C++/TinyXML based tmxparser `__ (BSD)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:41 msgid "C++/Qt based libtiled, used by Tiled itself and included at `src/libtiled `__ (BSD)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:44 msgid "`C++11x/TinyXml2 libtmx-parser `__ by halsafar. (zlib/tinyxml2)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:47 msgid "`C++11/TinyXml2 libtmx `__ by jube, for reading only (ISC licence). See `documentation `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:50 msgid "`TMXParser `__ General \\*.tmx tileset data loader. Intended to be used with TSXParser for external tileset loading. (No internal tileset support)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:53 msgid "`TSXParser `__ General \\*.tsx tileset data loader. Intended to be used with TMXParser." msgstr "" #: ../../reference/support-for-tmx-maps.rst:56 msgid "`TMXLoader `__ based on `RapidXml `__. Limited functionality (check the `website `__ for details)." msgstr "" #: ../../reference/support-for-tmx-maps.rst:61 msgid "`tmxlite `__ C++14 map parser with compressed map support but no external linking required. Includes examples for SFML and SDL2 rendering. Currently has full tmx support up to 0.16. (Zlib/libpng)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:67 msgid "C#/.NET" msgstr "" #: ../../reference/support-for-tmx-maps.rst:69 msgid "`MonoGame.Extended `__ has a Tiled map loader and renderer that works with MonoGame on all platforms that support portable class libraries." msgstr "" #: ../../reference/support-for-tmx-maps.rst:72 msgid "`XNA map loader `__ by Kevin Gadd, extended by Stephen Belanger and Zach Musgrave (has dependency on XNA but supposedly can be turned into a standalone parser easily)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:75 msgid "`TiledSharp `__: Yet another C# TMX importer library, with Tiled 0.11 support. TiledSharp is a generic parser which can be used in any framework, but it cannot be used to render the maps. Available via NuGet." msgstr "" #: ../../reference/support-for-tmx-maps.rst:79 msgid "`NTiled `__: Generic parser for 0.9.1 tiled maps. Available via NuGet." msgstr "" #: ../../reference/support-for-tmx-maps.rst:81 msgid "`TmxCSharp `__: Useful for multi-layer orthographic tile engines. No framework dependencies, used with a custom OpenTK tile engine soon to be open source, tested with Tiled 0.8.1 (multiple output formats). MIT license." msgstr "" #: ../../reference/support-for-tmx-maps.rst:85 msgid "`tmx-mapper-pcl `__: PCL library for parsing Tiled map TMX files. This library could be used with MonoGame and Windows Runtime Universal apps." msgstr "" #: ../../reference/support-for-tmx-maps.rst:90 msgid "D" msgstr "" #: ../../reference/support-for-tmx-maps.rst:92 msgid "`tiledMap.d `__ simple single-layer and single-tileset example to load a map and its tileset in `D language `__. It also contains basic rendering logic using `DSFML `__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:96 msgid "`dtiled `__ can load JSON-formatted Tiled maps. It also provides general tilemap-related functions and algorithms." msgstr "" #: ../../reference/support-for-tmx-maps.rst:100 msgid "Go" msgstr "" #: ../../reference/support-for-tmx-maps.rst:102 msgid "`github.com/salviati/go-tmx/tmx `__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:105 msgid "Haskell" msgstr "" #: ../../reference/support-for-tmx-maps.rst:107 msgid "`htiled `__ (TMX) by `Christian Rødli Amble `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:109 msgid "`aeson-tiled `__ (JSON) by `Schell Scivally `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:112 msgid "Java" msgstr "" #: ../../reference/support-for-tmx-maps.rst:114 msgid "A library for loading TMX files is included with Tiled at `util/java/libtiled-java `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:116 msgid "Android-Specific:" msgstr "" #: ../../reference/support-for-tmx-maps.rst:118 msgid "`AndroidTMXLoader `__ loads TMX data into an object and renders to an Android Bitmap (limited functionality)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:121 msgid "`libtiled-java port `__ is a port of the libtiled-java to be used on Android phones." msgstr "" #: ../../reference/support-for-tmx-maps.rst:126 msgid "PHP" msgstr "" #: ../../reference/support-for-tmx-maps.rst:128 msgid "`PHP TMX Viewer `__ by sebbu : render the map as an image (allow some modifications as well)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:132 msgid "Pike" msgstr "" #: ../../reference/support-for-tmx-maps.rst:134 msgid "`TMX parser `__: a simple loader for TMX maps (CSV format only)." msgstr "" #: ../../reference/support-for-tmx-maps.rst:138 msgid "Processing" msgstr "" #: ../../reference/support-for-tmx-maps.rst:140 msgid "`linux-man/ptmx `__: Add Tiled maps to your Processing sketch." msgstr "" #: ../../reference/support-for-tmx-maps.rst:144 msgid "Python" msgstr "" #: ../../reference/support-for-tmx-maps.rst:146 msgid "`pytmxlib `__: library for programmatic manipulation of TMX maps" msgstr "" #: ../../reference/support-for-tmx-maps.rst:148 msgid "`python-tmx `__: a simple library for reading and writing TMX files." msgstr "" #: ../../reference/support-for-tmx-maps.rst:152 msgid "Ruby" msgstr "" #: ../../reference/support-for-tmx-maps.rst:154 msgid "`tmx gem `__ by erisdiscord" msgstr "" #: ../../reference/support-for-tmx-maps.rst:157 msgid "Vala" msgstr "" #: ../../reference/support-for-tmx-maps.rst:159 msgid "`librpg `__ A library to load and handle spritesets (own format) and orthogonal TMX maps." msgstr "" #: ../../reference/support-for-tmx-maps.rst:163 msgid "Support by Framework" msgstr "" #: ../../reference/support-for-tmx-maps.rst:165 msgid "Following entries are integrated solutions for specific game engines. They are typically of little to no use if you're not using said game engine." msgstr "" #: ../../reference/support-for-tmx-maps.rst:170 msgid "AndEngine" msgstr "" #: ../../reference/support-for-tmx-maps.rst:172 msgid "`AndEngine `__ by Nicolas Gramlich supports `rendering TMX maps `__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:177 msgid "Allegro" msgstr "" #: ../../reference/support-for-tmx-maps.rst:179 msgid "`allegro\\_tiled `__ integrates Tiled support with `Allegro 5 `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:184 msgid "cocos2d" msgstr "" #: ../../reference/support-for-tmx-maps.rst:186 msgid "`cocos2d (Python) `__ supports loading `Tiled maps `__ through its ``cocos.tiles`` module." msgstr "" #: ../../reference/support-for-tmx-maps.rst:190 msgid "`cocos2d-x (C++) `__ supports loading TMX maps through the `CCTMXTiledMap `__ class." msgstr "" #: ../../reference/support-for-tmx-maps.rst:194 msgid "`cocos2d-objc (Objective-C, Swift) `__ (previously known as: cocos2d-iphone, cocos2d-swift, cocos2d-spritebuilder) supports loading TMX maps through `CCTiledMap `__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:198 msgid "`TilemapKit `__ is a tilemapping framework for Cocos2D. It supports all TMX tilemap types, including staggered iso and all hex variations. No longer in development." msgstr "" #: ../../reference/support-for-tmx-maps.rst:203 msgid "Construct 2 - Scirra" msgstr "" #: ../../reference/support-for-tmx-maps.rst:205 msgid "`Construct 2 `__, since the Beta Release 149, officially supports TMX maps, and importing it by simple dragging the file inside the editor. `Official Note `__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:211 msgid "Corona SDK" msgstr "" #: ../../reference/support-for-tmx-maps.rst:213 msgid "`ponytiled `__ is a simple Tiled Map Loader for Corona SDK (`forum announcement `__)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:216 msgid "`Dusk Engine `__ is a fully featured Tiled map game engine for Corona SDK" msgstr "" #: ../../reference/support-for-tmx-maps.rst:220 msgid "Flixel" msgstr "" #: ../../reference/support-for-tmx-maps.rst:222 msgid "Lithander demonstrated his `Flash TMX parser combined with Flixel rendering `__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:226 msgid "Game Maker" msgstr "" #: ../../reference/support-for-tmx-maps.rst:228 msgid "Tiled ships with a plug-in that can :ref:`export a map to a GameMaker: Studio 1.4 room file `" msgstr "" #: ../../reference/support-for-tmx-maps.rst:229 msgid "`Tiled2GM Converter `__ by Dmi7ry" msgstr "" #: ../../reference/support-for-tmx-maps.rst:232 msgid "Godot" msgstr "" #: ../../reference/support-for-tmx-maps.rst:234 msgid "`Tiled Map Importer `__ imports each map as Godot scene which can be instanced or inherited (`forum announcement `__)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:240 msgid "Haxe" msgstr "" #: ../../reference/support-for-tmx-maps.rst:242 msgid "`HaxePunk `__ Tiled Loader for HaxePunk" msgstr "" #: ../../reference/support-for-tmx-maps.rst:244 msgid "`HaxeFlixel `__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:245 msgid "`OpenFL `__ \"openfl-tiled\" is a library, which gives OpenFL developers the ability to use the Tiled Map Editor." msgstr "" #: ../../reference/support-for-tmx-maps.rst:248 msgid "`OpenFL + Tiled + Flixel `__ Experimental glue to use \"openfl-tiled\" with HaxeFlixel" msgstr "" #: ../../reference/support-for-tmx-maps.rst:253 msgid "HTML5 (multiple engines)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:255 msgid "`Canvas Engine `__ A framework to create video games in HTML5 Canvas" msgstr "" #: ../../reference/support-for-tmx-maps.rst:257 msgid "`chesterGL `__ A simple WebGL/canvas game library" msgstr "" #: ../../reference/support-for-tmx-maps.rst:259 msgid "`KineticJs-Ext `__ A multi-canvas based game rendering library" msgstr "" #: ../../reference/support-for-tmx-maps.rst:261 msgid "`melonJS `__ A lightweight HTML5 game engine" msgstr "" #: ../../reference/support-for-tmx-maps.rst:262 msgid "`Platypus Engine `__ A robust orthogonal tile game engine with game entity library." msgstr "" #: ../../reference/support-for-tmx-maps.rst:264 msgid "`sprite.js `__ A game framework for image sprites." msgstr "" #: ../../reference/support-for-tmx-maps.rst:266 msgid "`TMXjs `__ A JavaScript, jQuery and RequireJS-based TMX (Tile Map XML) parser and renderer." msgstr "" #: ../../reference/support-for-tmx-maps.rst:268 msgid "`chem-tmx `__ Plugin for `chem `__ game engine." msgstr "" #: ../../reference/support-for-tmx-maps.rst:270 msgid "`GameJs `__ JavaScript library for game programming; a thin wrapper to draw on HTML5 canvas and other useful modules for game development" msgstr "" #: ../../reference/support-for-tmx-maps.rst:273 msgid "`Crafty `__ JavaScript HTML5 Game Engine; supports loading Tiled maps through an external component `TiledMapBuilder `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:276 msgid "`Phaser `__ A fast, free and fun open source framework supporting both JavaScript and TypeScript (`Tiled tutorial `__)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:279 msgid "`linux-man/p5.tiledmap `__ adds Tiled maps to `p5.js `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:283 msgid "indielib-crossplatform" msgstr "" #: ../../reference/support-for-tmx-maps.rst:285 msgid "`indielib cross-platform `__ supports loading TMX maps through the `C++/TinyXML based tmx-parser `__ by KonoM (BSD)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:290 msgid "LibGDX" msgstr "" #: ../../reference/support-for-tmx-maps.rst:292 msgid "`libgdx `__, a Java-based Android/desktop/HTML5 game library, `provides `__ a packer, loader and renderer for TMX maps" msgstr "" #: ../../reference/support-for-tmx-maps.rst:298 msgid "LITIengine" msgstr "" #: ../../reference/support-for-tmx-maps.rst:300 msgid "`LITIengine `__ is a 2D Java Game Engine that supports loading, saving and rendering maps in the .tmx format." msgstr "" #: ../../reference/support-for-tmx-maps.rst:304 msgid "LÖVE" msgstr "" #: ../../reference/support-for-tmx-maps.rst:306 msgid "`Simple Tiled Implementation `__ Lua loader for the LÖVE (Love2d) game framework." msgstr "" #: ../../reference/support-for-tmx-maps.rst:311 msgid "MOAI SDK" msgstr "" #: ../../reference/support-for-tmx-maps.rst:313 msgid "`Hanappe `__ Framework for MOAI SDK." msgstr "" #: ../../reference/support-for-tmx-maps.rst:315 msgid "`Rapanui `__ Framework for MOAI SDK." msgstr "" #: ../../reference/support-for-tmx-maps.rst:319 msgid "Monkey X" msgstr "" #: ../../reference/support-for-tmx-maps.rst:321 msgid "`bit.tiled `__ Loads TMX file as objects. Aims to be fully compatible with native TMX files." msgstr "" #: ../../reference/support-for-tmx-maps.rst:323 msgid "`Diddy `__ is an extensive framework for Monkey X that contains a module for loading and rendering TMX files. Supports orthogonal and isometric maps as both CSV and Base64 (uncompressed)." msgstr "" #: ../../reference/support-for-tmx-maps.rst:329 msgid "Node.js" msgstr "" #: ../../reference/support-for-tmx-maps.rst:331 msgid "`node-tmx-parser `__ - loads the TMX file into a JavaScript object" msgstr "" #: ../../reference/support-for-tmx-maps.rst:335 msgid "Oak Nut Engine (onut)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:337 msgid "`Oak Nut Engine `__ supports Tiled maps through Javascript and C++. (see TiledMap `Javascript `__ or `C++ `__ samples)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:341 msgid "Orx Portable Game Engine" msgstr "" #: ../../reference/support-for-tmx-maps.rst:343 msgid "`TMX to ORX Converter `__ Tutorial and converter download for Orx." msgstr "" #: ../../reference/support-for-tmx-maps.rst:348 msgid "Pygame" msgstr "" #: ../../reference/support-for-tmx-maps.rst:350 msgid "`Pygame map loader `__ by dr0id" msgstr "" #: ../../reference/support-for-tmx-maps.rst:351 #: ../../reference/support-for-tmx-maps.rst:367 #: ../../reference/support-for-tmx-maps.rst:373 msgid "`PyTMX `__ by Leif Theden (bitcraft)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:353 msgid "`tmx.py `__ by Richard Jones, from his `2012 PyCon 'Introduction to Game Development' talk `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:357 msgid "`TMX `__, a fork of tmx.py and a port to Python3. A demo called pylletTown can be found `here `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:362 msgid "Pyglet" msgstr "" #: ../../reference/support-for-tmx-maps.rst:364 msgid "`JSON map loader/renderer for pyglet `__ by Juan J. Martínez (reidrac)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:371 msgid "PySDL2" msgstr "" #: ../../reference/support-for-tmx-maps.rst:377 msgid "RPG Maker MV" msgstr "" #: ../../reference/support-for-tmx-maps.rst:379 msgid "`Tiled Plugin `__ by `Dr.Yami `__ & Archeia, from `RPG Maker Web `__" msgstr "" #: ../../reference/support-for-tmx-maps.rst:385 msgid "SDL" msgstr "" #: ../../reference/support-for-tmx-maps.rst:387 msgid "`C++/TinyXML/SDL based loader `__ example by Rohin Knight (limited functionality)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:392 msgid "SFML" msgstr "" #: ../../reference/support-for-tmx-maps.rst:394 msgid "`STP `__ (SFML TMX Parser) by edoren" msgstr "" #: ../../reference/support-for-tmx-maps.rst:395 msgid "`C++/SFML Tiled map loader `__ by fallahn. (Zlib/libpng)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:398 msgid "`C++/SfTileEngine `__ by Tresky (currently limited functionality)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:402 msgid "Slick2D" msgstr "" #: ../../reference/support-for-tmx-maps.rst:404 msgid "`Slick2D `__ supports loading TMX maps through `TiledMap `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:409 msgid "Sprite Kit Framework" msgstr "" #: ../../reference/support-for-tmx-maps.rst:411 msgid "`SKTilemap `__ is built from the ground up in Swift. It's up to date, full of features and easy to integrate into any Sprite Kit project. Supports iOS and OSX." msgstr "" #: ../../reference/support-for-tmx-maps.rst:414 msgid "`SKTiled `__ - A Swift framework for working with Tiled assets in SpriteKit." msgstr "" #: ../../reference/support-for-tmx-maps.rst:416 msgid "`TilemapKit `__ is a tilemapping framework for Sprite Kit. It supports all TMX tilemap types, including staggered iso and all hex variations. No longer in development." msgstr "" #: ../../reference/support-for-tmx-maps.rst:419 msgid "`JSTileMap `__ is a lightweight SpriteKit implementation of the TMX format supporting iOS 7 and OS X 10.9 and above." msgstr "" #: ../../reference/support-for-tmx-maps.rst:424 msgid "TERRA Engine (Delphi/Pascal)" msgstr "" #: ../../reference/support-for-tmx-maps.rst:426 msgid "`TERRA Engine `__ supports loading and rendering of TMX maps." msgstr "" #: ../../reference/support-for-tmx-maps.rst:430 msgid "Unity 3D" msgstr "" #: ../../reference/support-for-tmx-maps.rst:432 msgid "`Orthello Pro `__ (2D framework) offers `Tiled map support `__." msgstr "" #: ../../reference/support-for-tmx-maps.rst:436 msgid "`Tiled To Unity `__ is a 3D pipeline for Tiled maps. It uses prefabs as tiles, and can place decorations dynamically on tiles. Supports multiple layers (including object layers)." msgstr "" #: ../../reference/support-for-tmx-maps.rst:441 msgid "`Tiled2Unity `__ exports TMX files to Unity with support for (non-simple) collisions." msgstr "" #: ../../reference/support-for-tmx-maps.rst:443 msgid "`UniTMX `__ imports TMX files into a mesh." msgstr "" #: ../../reference/support-for-tmx-maps.rst:445 msgid "`X-UniTMX `__ supports almost all Tiled 0.11 features. Imports TMX/XML files into Sprite Objects or Meshes." msgstr "" #: ../../reference/support-for-tmx-maps.rst:448 msgid "`Tiled TMX Importer `__, imports into Unity 2017.2's new native Tilemap system." msgstr "" #: ../../reference/support-for-tmx-maps.rst:451 msgid "Unreal Engine 4" msgstr "" #: ../../reference/support-for-tmx-maps.rst:453 msgid "`Paper2D `__ provides built-in support for tile maps and tile sets, importing JSON exported from Tiled." msgstr "" #: ../../reference/support-for-tmx-maps.rst:458 msgid "Urho3D" msgstr "" #: ../../reference/support-for-tmx-maps.rst:460 msgid "`Urho3D `__ natively supports loading Tiled maps as part of the `Urho2D `__ sublibrary (`Documentation `__, `HTML5 example `__)." msgstr "" #: ../../reference/support-for-tmx-maps.rst:469 msgid "XNA" msgstr "" #: ../../reference/support-for-tmx-maps.rst:471 msgid "`FlatRedBall Engine TMXGlue tool `__ by Domenic Datti loads TMX maps into the FlatRedBall engine, complete with node networks, pathfinding, and shapecollection support via object layers." msgstr "" #: ../../reference/support-for-tmx-maps.rst:476 msgid "`TiledMax `__ by Aimee Bailey, a .NET library for parsing TMX maps without dependencies on Windows or XNA" msgstr "" #: ../../reference/support-for-tmx-maps.rst:478 msgid "`XTiled `__ by Michael C. Neel and Dylan Wolf, XNA library for loading and rendering TMX maps" msgstr "" #: ../../reference/support-for-tmx-maps.rst:480 msgid "`XNA map loader `__ by Kevin Gadd, extended by Stephen Belanger and Zach Musgrave" msgstr "" #: ../../reference/tmx-changelog.rst:2 msgid "TMX Changelog" msgstr "" #: ../../reference/tmx-changelog.rst:4 msgid "Below are described the changes/additions that were made to the :doc:`tmx-map-format` for recent versions of Tiled." msgstr "" #: ../../reference/tmx-changelog.rst:8 msgid "Tiled 1.1" msgstr "" #: ../../reference/tmx-changelog.rst:10 msgid "A new :ref:`tmx-chunk` element was added for infinite maps which contains the similar content as :ref:`tmx-data`, except it stores the data of the area specified by its ``x``, ``y``, ``width`` and ``height`` attributes." msgstr "" #: ../../reference/tmx-changelog.rst:15 msgid ":doc:`Templates ` were added, a template is an :ref:`external file ` referenced by template instance objects:" msgstr "" #: ../../reference/tmx-changelog.rst:23 msgid "Tilesets can now contain :doc:`Wang tiles `. They are saved in the new :ref:`tmx-wangsets` element." msgstr "" #: ../../reference/tmx-changelog.rst:27 msgid "Tiled 1.0" msgstr "" #: ../../reference/tmx-changelog.rst:29 msgid "A new :ref:`tmx-group` element was added which is a group layer that can have other layers as child elements. This means layers now form a hierarchy." msgstr "" #: ../../reference/tmx-changelog.rst:31 msgid "Added Text objects, identified by a new :ref:`tmx-text` element which is used as a child of the :ref:`tmx-object` element." msgstr "" #: ../../reference/tmx-changelog.rst:33 msgid "Added a :ref:`tile.type ` attribute for supporting :ref:`typed-tiles`." msgstr "" #: ../../reference/tmx-changelog.rst:37 msgid "Tiled 0.18" msgstr "" #: ../../reference/tmx-changelog.rst:39 msgid "*No file format changes.*" msgstr "" #: ../../reference/tmx-changelog.rst:42 msgid "Tiled 0.17" msgstr "" #: ../../reference/tmx-changelog.rst:44 msgid "Added ``color`` and ``file`` as possible values for the :ref:`property.type ` attribute." msgstr "" #: ../../reference/tmx-changelog.rst:46 msgid "Added support for editing multi-line string properties, which are written out differently." msgstr "" #: ../../reference/tmx-changelog.rst:50 msgid "Tiled 0.16" msgstr "" #: ../../reference/tmx-changelog.rst:52 msgid "The :ref:`tmx-property` element gained a ``type`` attribute, storing the type of the value. Currently supported types are ``string`` (the default), ``int``, ``float`` and ``bool``." msgstr "" #: ../../reference/tmx-changelog.rst:57 msgid "Tiled 0.15" msgstr "" #: ../../reference/tmx-changelog.rst:59 msgid "The ``offsetx`` and ``offsety`` attributes are now also used for :ref:`tmx-imagelayer` elements, replacing the ``x`` and ``y`` attributes previously used. This change was made for consistency with the other layer types." msgstr "" #: ../../reference/tmx-changelog.rst:63 msgid "The tiles in an image collection tileset are no longer guaranteed to be consecutive, because removing tiles from the collection will no longer change the IDs of other tiles." msgstr "" #: ../../reference/tmx-changelog.rst:66 msgid "The pure XML and Gzip-compressed tile layer data formats were deprecated, since they didn't have any advantage over other formats. Remaining formats are CSV, base64 and Zlib-compressed layer data." msgstr "" #: ../../reference/tmx-changelog.rst:69 msgid "Added ``columns`` attribute to the :ref:`tmx-tileset` element, which specifies the number of tile columns in the tileset. For image collection tilesets it is editable and is used when displaying the tileset." msgstr "" #: ../../reference/tmx-changelog.rst:73 msgid "The ``backgroundcolor`` attribute of the :ref:`tmx-map` element will now take the format ``#AARRGGBB`` when its alpha value differs from 255. Previously the alpha value was silently discarded." msgstr "" #: ../../reference/tmx-changelog.rst:78 msgid "Tiled 0.14" msgstr "" #: ../../reference/tmx-changelog.rst:80 msgid "Added optional ``offsetx`` and ``offsety`` attributes to the ``layer`` and ``objectgroup`` elements. These specify an offset in pixels that is to be applied when rendering the layer. The default values are 0." msgstr "" #: ../../reference/tmx-changelog.rst:86 msgid "Tiled 0.13" msgstr "" #: ../../reference/tmx-changelog.rst:88 msgid "Added an optional ``tilecount`` attribute to the ``tileset`` element, which is written by Tiled to help parsers determine the amount of memory to allocate for tile data." msgstr "" #: ../../reference/tmx-changelog.rst:93 msgid "Tiled 0.12" msgstr "" #: ../../reference/tmx-changelog.rst:95 msgid "Previously tile objects never had ``width`` and ``height`` properties, though the format technically allowed this. Now these properties are used to store the size the image should be rendered at. The default values for these attributes are the dimensions of the tile image." msgstr "" #: ../../reference/tmx-changelog.rst:102 msgid "Tiled 0.11" msgstr "" #: ../../reference/tmx-changelog.rst:104 msgid "Added ``hexagonal`` to the supported values for the ``orientation`` attribute on the ``map`` element. This also adds ``staggerindex`` (``even`` or ``odd``) and ``staggeraxis`` (``x`` or ``y``) and ``hexsidelength`` (integer value) attributes to the ``map`` element, in order to support the many variations of staggered hexagonal. The new ``staggerindex`` and ``staggeraxis`` attributes are also supported when using the ``staggered`` map orientation." msgstr "" #: ../../reference/tmx-changelog.rst:111 msgid "Added an ``id`` attribute to the ``object`` element, which stores a map-unique ID of the object." msgstr "" #: ../../reference/tmx-changelog.rst:113 msgid "Added a ``nextobjectid`` attribute to the ``map`` element, which stores the next available ID for new objects. This number is stored to prevent reuse of the same ID after objects have been removed." msgstr "" #: ../../reference/tmx-changelog.rst:118 msgid "Tiled 0.10" msgstr "" #: ../../reference/tmx-changelog.rst:120 msgid "Tile objects can now be horizontally or vertically flipped. This is stored in the ``gid`` attribute using the same mechanism as for regular tiles. The image is expected to be flipped without affecting its position, same way as flipped tiles." msgstr "" #: ../../reference/tmx-changelog.rst:125 msgid "Objects can be rotated freely. The rotation is stored in degrees as a ``rotation`` attribute, with positive rotation going clockwise." msgstr "" #: ../../reference/tmx-changelog.rst:128 msgid "The render order of the tiles on tile layers can be configured in a number of ways through a new ``renderorder`` property on the ``map`` element. Valid values are ``right-down`` (the default), ``right-up``, ``left-down`` and ``left-up``. In all cases, the map is drawn row-by-row. This is only supported for orthogonal maps at the moment." msgstr "" #: ../../reference/tmx-changelog.rst:134 msgid "The render order of objects on object layers can be configured to be either sorted by their y-coordinate (previous behavior and still the default) or simply the order of appearance in the map file. The latter enables manual control over the drawing order with actions that \"Raise\" and \"Lower\" selected objects. It is controlled by the ``draworder`` property on the ``objectgroup`` element, which can be either ``topdown`` (default) or ``index``." msgstr "" #: ../../reference/tmx-changelog.rst:142 msgid "Tiles can have an ``objectgroup`` child element, which can contain objects that define the collision shape to use for that tile. This information can be edited in the new Tile Collision Editor." msgstr "" #: ../../reference/tmx-changelog.rst:146 msgid "Tiles can have a single looping animation associated with them using an ``animation`` child element. Each frame of the animation refers to a local tile ID from this tileset and defines the frame duration in milliseconds. Example:" msgstr "" #: ../../reference/tmx-changelog.rst:165 msgid "Tiled 0.9" msgstr "" #: ../../reference/tmx-changelog.rst:167 msgid "Per-object visibility flag is saved (defaults to 1):" msgstr "" #: ../../reference/tmx-changelog.rst:173 msgid "Terrain information was added to tileset definitions (this is generally not very relevant for games):" msgstr "" #: ../../reference/tmx-changelog.rst:187 msgid "There is preliminary support for a \"staggered\" (isometric) projection (new value for the ``orientation`` attribute of the ``map`` element)." msgstr "" #: ../../reference/tmx-changelog.rst:190 msgid "A basic image layer type was added:" msgstr "" #: ../../reference/tmx-changelog.rst:198 msgid "Added ellipse object shape. Same parameters as rectangular objects, but marked as ellipse with a child element:" msgstr "" #: ../../reference/tmx-changelog.rst:207 msgid "Added map property for specifying the background color:" msgstr "" #: ../../reference/tmx-changelog.rst:213 msgid "Added initial (non-GUI) support for individual and/or embedded tile images (since there is no way to set this up in Tiled Qt but only in Tiled Java or with `pytmxlib `__, this is not very important to support at the moment):" msgstr "" #: ../../reference/tmx-changelog.rst:238 msgid "Tiled 0.8" msgstr "" #: ../../reference/tmx-changelog.rst:240 msgid "Tilesets can now have custom properties (using the ``properties`` child element, just like everything else)." msgstr "" #: ../../reference/tmx-changelog.rst:243 msgid "Tilesets now support defining a drawing offset in pixels, which is to be used when drawing any tiles from that tileset. Example:" msgstr "" #: ../../reference/tmx-changelog.rst:253 msgid "Support for tile rotation in 90-degree increments was added by using the third most significant bit in the global tile id. This new bit means \"anti-diagonal flip\", which swaps the x and y axis when rendering a tile." msgstr "" #: ../../reference/tmx-map-format.rst:2 msgid "TMX Map Format" msgstr "" #: ../../reference/tmx-map-format.rst:4 msgid "**Version 1.1**" msgstr "" #: ../../reference/tmx-map-format.rst:6 msgid "The TMX (Tile Map XML) map format used by `Tiled `__ is a flexible way to describe a tile based map. It can describe maps with any tile size, any amount of layers, any number of tile sets and it allows custom properties to be set on most elements. Beside tile layers, it can also contain groups of objects that can be placed freely." msgstr "" #: ../../reference/tmx-map-format.rst:13 msgid "Note that there are many :doc:`libraries and frameworks ` available that can work with TMX maps." msgstr "" #: ../../reference/tmx-map-format.rst:16 msgid "In this document we'll go through each element found in this map format. The elements are mentioned in the headers and the list of attributes of the elements are listed right below, followed by a short explanation. Attributes or elements that are deprecated or unsupported by the current version of Tiled are formatted in italics." msgstr "" #: ../../reference/tmx-map-format.rst:22 msgid "Have a look at the :doc:`changelog ` when you're interested in what changed between Tiled versions." msgstr "" #: ../../reference/tmx-map-format.rst:25 msgid "*A DTD-file (Document Type Definition) is served at http://mapeditor.org/dtd/1.0/map.dtd. This file is not up-to-date but might be useful for XML-namespacing anyway.*" msgstr "" #: ../../reference/tmx-map-format.rst:32 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:34 msgid "**version:** The TMX format version. Was \"1.0\" so far, and will be incremented to match minor Tiled releases." msgstr "" #: ../../reference/tmx-map-format.rst:36 msgid "**tiledversion:** The Tiled version used to save the file (since Tiled 1.0.1). May be a date (for snapshot builds)." msgstr "" #: ../../reference/tmx-map-format.rst:38 msgid "**orientation:** Map orientation. Tiled supports \"orthogonal\", \"isometric\", \"staggered\" and \"hexagonal\" (since 0.11)." msgstr "" #: ../../reference/tmx-map-format.rst:40 msgid "**renderorder:** The order in which tiles on tile layers are rendered. Valid values are ``right-down`` (the default), ``right-up``, ``left-down`` and ``left-up``. In all cases, the map is drawn row-by-row. (only supported for orthogonal maps at the moment)" msgstr "" #: ../../reference/tmx-map-format.rst:44 msgid "**width:** The map width in tiles." msgstr "" #: ../../reference/tmx-map-format.rst:45 msgid "**height:** The map height in tiles." msgstr "" #: ../../reference/tmx-map-format.rst:46 msgid "**tilewidth:** The width of a tile." msgstr "" #: ../../reference/tmx-map-format.rst:47 msgid "**tileheight:** The height of a tile." msgstr "" #: ../../reference/tmx-map-format.rst:48 msgid "**hexsidelength:** Only for hexagonal maps. Determines the width or height (depending on the staggered axis) of the tile's edge, in pixels." msgstr "" #: ../../reference/tmx-map-format.rst:51 msgid "**staggeraxis:** For staggered and hexagonal maps, determines which axis (\"x\" or \"y\") is staggered. (since 0.11)" msgstr "" #: ../../reference/tmx-map-format.rst:53 msgid "**staggerindex:** For staggered and hexagonal maps, determines whether the \"even\" or \"odd\" indexes along the staggered axis are shifted. (since 0.11)" msgstr "" #: ../../reference/tmx-map-format.rst:56 msgid "**backgroundcolor:** The background color of the map. (optional, may include alpha value since 0.15 in the form ``#AARRGGBB``)" msgstr "" #: ../../reference/tmx-map-format.rst:58 msgid "**nextobjectid:** Stores the next available ID for new objects. This number is stored to prevent reuse of the same ID after objects have been removed. (since 0.11)" msgstr "" #: ../../reference/tmx-map-format.rst:62 msgid "The ``tilewidth`` and ``tileheight`` properties determine the general grid size of the map. The individual tiles may have different sizes. Larger tiles will extend at the top and right (anchored to the bottom left)." msgstr "" #: ../../reference/tmx-map-format.rst:67 msgid "A map contains three different kinds of layers. Tile layers were once the only type, and are simply called ``layer``, object layers have the ``objectgroup`` tag and image layers use the ``imagelayer`` tag. The order in which these layers appear is the order in which the layers are rendered by Tiled." msgstr "" #: ../../reference/tmx-map-format.rst:73 msgid "Can contain: :ref:`tmx-properties`, :ref:`tmx-tileset`, :ref:`tmx-layer`, :ref:`tmx-objectgroup`, :ref:`tmx-imagelayer`, :ref:`tmx-group` (since 1.0)" msgstr "" #: ../../reference/tmx-map-format.rst:80 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:82 msgid "**firstgid:** The first global tile ID of this tileset (this global ID maps to the first tile in this tileset)." msgstr "" #: ../../reference/tmx-map-format.rst:84 msgid "**source:** If this tileset is stored in an external TSX (Tile Set XML) file, this attribute refers to that file. That TSX file has the same structure as the ```` element described here. (There is the firstgid attribute missing and this source attribute is also not there. These two attributes are kept in the TMX map, since they are map specific.)" msgstr "" #: ../../reference/tmx-map-format.rst:90 msgid "**name:** The name of this tileset." msgstr "" #: ../../reference/tmx-map-format.rst:91 msgid "**tilewidth:** The (maximum) width of the tiles in this tileset." msgstr "" #: ../../reference/tmx-map-format.rst:92 msgid "**tileheight:** The (maximum) height of the tiles in this tileset." msgstr "" #: ../../reference/tmx-map-format.rst:93 msgid "**spacing:** The spacing in pixels between the tiles in this tileset (applies to the tileset image)." msgstr "" #: ../../reference/tmx-map-format.rst:95 msgid "**margin:** The margin around the tiles in this tileset (applies to the tileset image)." msgstr "" #: ../../reference/tmx-map-format.rst:97 msgid "**tilecount:** The number of tiles in this tileset (since 0.13)" msgstr "" #: ../../reference/tmx-map-format.rst:98 msgid "**columns:** The number of tile columns in the tileset. For image collection tilesets it is editable and is used when displaying the tileset. (since 0.15)" msgstr "" #: ../../reference/tmx-map-format.rst:102 msgid "If there are multiple ```` elements, they are in ascending order of their ``firstgid`` attribute. The first tileset always has a ``firstgid`` value of 1. Since Tiled 0.15, image collection tilesets do not necessarily number their tiles consecutively since gaps can occur when removing tiles." msgstr "" #: ../../reference/tmx-map-format.rst:108 msgid "Can contain: :ref:`tmx-tileoffset`, :ref:`tmx-grid` (since 1.0), :ref:`tmx-properties`, :ref:`tmx-image`, :ref:`tmx-terraintypes`, :ref:`tmx-tileset-tile`, :ref:`tmx-wangsets` (since 1.1)" msgstr "" #: ../../reference/tmx-map-format.rst:115 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:117 msgid "**x:** Horizontal offset in pixels" msgstr "" #: ../../reference/tmx-map-format.rst:118 msgid "**y:** Vertical offset in pixels (positive is down)" msgstr "" #: ../../reference/tmx-map-format.rst:120 msgid "This element is used to specify an offset in pixels, to be applied when drawing a tile from the related tileset. When not present, no offset is applied." msgstr "" #: ../../reference/tmx-map-format.rst:127 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:129 msgid "**orientation:** Orientation of the grid for the tiles in this tileset (``orthogonal`` or ``isometric``)" msgstr "" #: ../../reference/tmx-map-format.rst:131 msgid "**width:** Width of a grid cell" msgstr "" #: ../../reference/tmx-map-format.rst:132 msgid "**height:** Height of a grid cell" msgstr "" #: ../../reference/tmx-map-format.rst:134 msgid "This element is only used in case of isometric orientation, and determines how tile overlays for terrain and collision information are rendered." msgstr "" #: ../../reference/tmx-map-format.rst:141 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:143 msgid "**format:** Used for embedded images, in combination with a ``data`` child element. Valid values are file extensions like ``png``, ``gif``, ``jpg``, ``bmp``, etc." msgstr "" #: ../../reference/tmx-map-format.rst:146 msgid "*id:* Used by some versions of Tiled Java. Deprecated and unsupported by Tiled Qt." msgstr "" #: ../../reference/tmx-map-format.rst:148 msgid "**source:** The reference to the tileset image file (Tiled supports most common image formats)." msgstr "" #: ../../reference/tmx-map-format.rst:150 msgid "**trans:** Defines a specific color that is treated as transparent (example value: \"#FF00FF\" for magenta). Up until Tiled 0.12, this value is written out without a ``#`` but this is planned to change." msgstr "" #: ../../reference/tmx-map-format.rst:153 msgid "**width:** The image width in pixels (optional, used for tile index correction when the image changes)" msgstr "" #: ../../reference/tmx-map-format.rst:155 msgid "**height:** The image height in pixels (optional)" msgstr "" #: ../../reference/tmx-map-format.rst:157 msgid "Note that it is not currently possible to use Tiled to create maps with embedded image data, even though the TMX format supports this. It is possible to create such maps using ``libtiled`` (Qt/C++) or `tmxlib `__ (Python)." msgstr "" #: ../../reference/tmx-map-format.rst:162 msgid "Can contain: :ref:`tmx-data`" msgstr "" #: ../../reference/tmx-map-format.rst:167 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:169 msgid "This element defines an array of terrain types, which can be referenced from the ``terrain`` attribute of the ``tile`` element." msgstr "" #: ../../reference/tmx-map-format.rst:172 msgid "Can contain: :ref:`tmx-terrain`" msgstr "" #: ../../reference/tmx-map-format.rst:177 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:179 msgid "**name:** The name of the terrain type." msgstr "" #: ../../reference/tmx-map-format.rst:180 msgid "**tile:** The local tile-id of the tile that represents the terrain visually." msgstr "" #: ../../reference/tmx-map-format.rst:183 msgid "Can contain: :ref:`tmx-properties`" msgstr "" #: ../../reference/tmx-map-format.rst:188 #: ../../reference/tmx-map-format.rst:427 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:190 msgid "**id:** The local tile ID within its tileset." msgstr "" #: ../../reference/tmx-map-format.rst:191 msgid "**type:** The type of the tile. Refers to an object type and is used by tile objects. (optional) (since 1.0)" msgstr "" #: ../../reference/tmx-map-format.rst:193 msgid "**terrain:** Defines the terrain type of each corner of the tile, given as comma-separated indexes in the terrain types array in the order top-left, top-right, bottom-left, bottom-right. Leaving out a value means that corner has no terrain. (optional)" msgstr "" #: ../../reference/tmx-map-format.rst:197 msgid "**probability:** A percentage indicating the probability that this tile is chosen when it competes with others while editing with the terrain tool. (optional)" msgstr "" #: ../../reference/tmx-map-format.rst:201 msgid "Can contain: :ref:`tmx-properties`, :ref:`tmx-image` (since 0.9), :ref:`tmx-objectgroup`, :ref:`tmx-animation`" msgstr "" #: ../../reference/tmx-map-format.rst:207 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:209 msgid "Contains a list of animation frames." msgstr "" #: ../../reference/tmx-map-format.rst:211 msgid "Each tile can have exactly one animation associated with it. In the future, there could be support for multiple named animations on a tile." msgstr "" #: ../../reference/tmx-map-format.rst:214 msgid "Can contain: :ref:`tmx-frame`" msgstr "" #: ../../reference/tmx-map-format.rst:219 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:221 msgid "**tileid:** The local ID of a tile within the parent :ref:`tmx-tileset`." msgstr "" #: ../../reference/tmx-map-format.rst:223 msgid "**duration:** How long (in milliseconds) this frame should be displayed before advancing to the next frame." msgstr "" #: ../../reference/tmx-map-format.rst:229 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:231 msgid "Contains the list of Wang sets defined for this tileset." msgstr "" #: ../../reference/tmx-map-format.rst:233 msgid "Can contain: :ref:`tmx-wangset`" msgstr "" #: ../../reference/tmx-map-format.rst:238 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:240 msgid "Defines a list of corner colors and a list of edge colors, and any number of Wang tiles using these colors." msgstr "" #: ../../reference/tmx-map-format.rst:243 msgid "**name**: The name of the Wang set." msgstr "" #: ../../reference/tmx-map-format.rst:244 msgid "**tile**: The tile ID of the tile representing this Wang set." msgstr "" #: ../../reference/tmx-map-format.rst:246 msgid "Can contain: :ref:`tmx-wangcornercolor`, :ref:`tmx-wangedgecolor`, :ref:`tmx-wangtile`" msgstr "" #: ../../reference/tmx-map-format.rst:251 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:253 msgid "A color that can be used to define the corner of a Wang tile." msgstr "" #: ../../reference/tmx-map-format.rst:255 #: ../../reference/tmx-map-format.rst:268 msgid "**name**: The name of this color." msgstr "" #: ../../reference/tmx-map-format.rst:256 #: ../../reference/tmx-map-format.rst:269 msgid "**color**: The color in ``#RRGGBB`` format (example: ``#c17d11``)." msgstr "" #: ../../reference/tmx-map-format.rst:257 #: ../../reference/tmx-map-format.rst:270 msgid "**tile**: The tile ID of the tile representing this color." msgstr "" #: ../../reference/tmx-map-format.rst:258 #: ../../reference/tmx-map-format.rst:271 msgid "**probability**: The relative probability that this color is chosen over others in case of multiple options." msgstr "" #: ../../reference/tmx-map-format.rst:264 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:266 msgid "A color that can be used to define the edge of a Wang tile." msgstr "" #: ../../reference/tmx-map-format.rst:277 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:279 msgid "Defines a Wang tile, by referring to a tile in the tileset and associating it with a certain Wang ID." msgstr "" #: ../../reference/tmx-map-format.rst:282 msgid "**tileid**: The tile ID." msgstr "" #: ../../reference/tmx-map-format.rst:283 msgid "**wangid**: The Wang ID, which is a 32-bit unsigned integer stored in the format ``0xCECECECE`` (where each C is a corner color and each E is an edge color, from right to left clockwise, starting with the top edge)" msgstr "" #: ../../reference/tmx-map-format.rst:291 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:293 msgid "All ```` tags shall occur before the first ```` tag so that parsers may rely on having the tilesets before needing to resolve tiles." msgstr "" #: ../../reference/tmx-map-format.rst:297 msgid "**name:** The name of the layer." msgstr "" #: ../../reference/tmx-map-format.rst:298 msgid "*x:* The x coordinate of the layer in tiles. Defaults to 0 and can not be changed in Tiled." msgstr "" #: ../../reference/tmx-map-format.rst:299 msgid "*y:* The y coordinate of the layer in tiles. Defaults to 0 and can not be changed in Tiled." msgstr "" #: ../../reference/tmx-map-format.rst:300 msgid "**width:** The width of the layer in tiles. Always the same as the map width for fixed-size maps." msgstr "" #: ../../reference/tmx-map-format.rst:301 msgid "**height:** The height of the layer in tiles. Always the same as the map height for fixed-size maps." msgstr "" #: ../../reference/tmx-map-format.rst:302 #: ../../reference/tmx-map-format.rst:449 #: ../../reference/tmx-map-format.rst:592 #: ../../reference/tmx-map-format.rst:610 msgid "**opacity:** The opacity of the layer as a value from 0 to 1. Defaults to 1." msgstr "" #: ../../reference/tmx-map-format.rst:303 #: ../../reference/tmx-map-format.rst:451 #: ../../reference/tmx-map-format.rst:594 #: ../../reference/tmx-map-format.rst:612 msgid "**visible:** Whether the layer is shown (1) or hidden (0). Defaults to 1." msgstr "" #: ../../reference/tmx-map-format.rst:304 msgid "**offsetx:** Rendering offset for this layer in pixels. Defaults to 0. (since 0.14)" msgstr "" #: ../../reference/tmx-map-format.rst:306 msgid "**offsety:** Rendering offset for this layer in pixels. Defaults to 0. (since 0.14)" msgstr "" #: ../../reference/tmx-map-format.rst:309 msgid "Can contain: :ref:`tmx-properties`, :ref:`tmx-data`" msgstr "" #: ../../reference/tmx-map-format.rst:314 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:316 msgid "**encoding:** The encoding used to encode the tile layer data. When used, it can be \"base64\" and \"csv\" at the moment." msgstr "" #: ../../reference/tmx-map-format.rst:318 msgid "**compression:** The compression used to compress the tile layer data. Tiled supports \"gzip\" and \"zlib\"." msgstr "" #: ../../reference/tmx-map-format.rst:321 msgid "When no encoding or compression is given, the tiles are stored as individual XML ``tile`` elements. Next to that, the easiest format to parse is the \"csv\" (comma separated values) format." msgstr "" #: ../../reference/tmx-map-format.rst:325 msgid "The base64-encoded and optionally compressed layer data is somewhat more complicated to parse. First you need to base64-decode it, then you may need to decompress it. Now you have an array of bytes, which should be interpreted as an array of unsigned 32-bit integers using little-endian byte ordering." msgstr "" #: ../../reference/tmx-map-format.rst:331 msgid "Whatever format you choose for your layer data, you will always end up with so called \"global tile IDs\" (gids). They are global, since they may refer to a tile from any of the tilesets used by the map. In order to find out from which tileset the tile is you need to find the tileset with the highest ``firstgid`` that is still lower or equal than the gid. The tilesets are always stored with increasing ``firstgid``\\ s." msgstr "" #: ../../reference/tmx-map-format.rst:338 msgid "Can contain: :ref:`tmx-tilelayer-tile`, :ref:`tmx-chunk`" msgstr "" #: ../../reference/tmx-map-format.rst:341 msgid "Tile flipping" msgstr "" #: ../../reference/tmx-map-format.rst:343 msgid "The highest three bits of the gid store the flipped states. Bit 32 is used for storing whether the tile is horizontally flipped, bit 31 is used for the vertically flipped tiles and bit 30 indicates whether the tile is flipped (anti) diagonally, enabling tile rotation. These bits have to be read and cleared before you can find out which tileset a tile belongs to." msgstr "" #: ../../reference/tmx-map-format.rst:350 msgid "When rendering a tile, the order of operation matters. The diagonal flip (x/y axis swap) is done first, followed by the horizontal and vertical flips." msgstr "" #: ../../reference/tmx-map-format.rst:354 msgid "The following C++ pseudo-code should make it all clear:" msgstr "" #: ../../reference/tmx-map-format.rst:404 msgid "(Since the above code was put together on this wiki page and can't be directly tested, please make sure to report any errors you encounter when basing your parsing code on it, thanks.)" msgstr "" #: ../../reference/tmx-map-format.rst:411 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:413 msgid "**x:** The x coordinate of the chunk in tiles." msgstr "" #: ../../reference/tmx-map-format.rst:414 msgid "**y:** The y coordinate of the chunk in tiles." msgstr "" #: ../../reference/tmx-map-format.rst:415 msgid "**width:** The width of the chunk in tiles." msgstr "" #: ../../reference/tmx-map-format.rst:416 msgid "**height:** The height of the chunk in tiles." msgstr "" #: ../../reference/tmx-map-format.rst:418 msgid "This is currently added only for infinite maps. The contents of a chunk element is same as that of the ``data`` element, except it stores the data of the area specified in the attributes." msgstr "" #: ../../reference/tmx-map-format.rst:422 msgid "Can contain: :ref:`tmx-tilelayer-tile`" msgstr "" #: ../../reference/tmx-map-format.rst:429 msgid "**gid:** The global tile ID (default: 0)." msgstr "" #: ../../reference/tmx-map-format.rst:431 msgid "Not to be confused with the ``tile`` element inside a ``tileset``, this element defines the value of a single tile on a tile layer. This is however the most inefficient way of storing the tile layer data, and should generally be avoided." msgstr "" #: ../../reference/tmx-map-format.rst:439 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:441 msgid "**name:** The name of the object group." msgstr "" #: ../../reference/tmx-map-format.rst:442 msgid "**color:** The color used to display the objects in this group." msgstr "" #: ../../reference/tmx-map-format.rst:443 msgid "*x:* The x coordinate of the object group in tiles. Defaults to 0 and can no longer be changed in Tiled." msgstr "" #: ../../reference/tmx-map-format.rst:445 msgid "*y:* The y coordinate of the object group in tiles. Defaults to 0 and can no longer be changed in Tiled." msgstr "" #: ../../reference/tmx-map-format.rst:447 msgid "*width:* The width of the object group in tiles. Meaningless." msgstr "" #: ../../reference/tmx-map-format.rst:448 msgid "*height:* The height of the object group in tiles. Meaningless." msgstr "" #: ../../reference/tmx-map-format.rst:452 msgid "**offsetx:** Rendering offset for this object group in pixels. Defaults to 0. (since 0.14)" msgstr "" #: ../../reference/tmx-map-format.rst:454 msgid "**offsety:** Rendering offset for this object group in pixels. Defaults to 0. (since 0.14)" msgstr "" #: ../../reference/tmx-map-format.rst:456 msgid "**draworder:** Whether the objects are drawn according to the order of appearance (\"index\") or sorted by their y-coordinate (\"topdown\"). Defaults to \"topdown\"." msgstr "" #: ../../reference/tmx-map-format.rst:460 msgid "The object group is in fact a map layer, and is hence called \"object layer\" in Tiled." msgstr "" #: ../../reference/tmx-map-format.rst:463 msgid "Can contain: :ref:`tmx-properties`, :ref:`tmx-object`" msgstr "" #: ../../reference/tmx-map-format.rst:468 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:470 msgid "**id:** Unique ID of the object. Each object that is placed on a map gets a unique id. Even if an object was deleted, no object gets the same ID. Can not be changed in Tiled. (since Tiled 0.11)" msgstr "" #: ../../reference/tmx-map-format.rst:473 msgid "**name:** The name of the object. An arbitrary string." msgstr "" #: ../../reference/tmx-map-format.rst:474 msgid "**type:** The type of the object. An arbitrary string." msgstr "" #: ../../reference/tmx-map-format.rst:475 msgid "**x:** The x coordinate of the object in pixels." msgstr "" #: ../../reference/tmx-map-format.rst:476 msgid "**y:** The y coordinate of the object in pixels." msgstr "" #: ../../reference/tmx-map-format.rst:477 msgid "**width:** The width of the object in pixels (defaults to 0)." msgstr "" #: ../../reference/tmx-map-format.rst:478 msgid "**height:** The height of the object in pixels (defaults to 0)." msgstr "" #: ../../reference/tmx-map-format.rst:479 msgid "**rotation:** The rotation of the object in degrees clockwise (defaults to 0)." msgstr "" #: ../../reference/tmx-map-format.rst:481 msgid "**gid:** A reference to a tile (optional)." msgstr "" #: ../../reference/tmx-map-format.rst:482 msgid "**visible:** Whether the object is shown (1) or hidden (0). Defaults to 1." msgstr "" #: ../../reference/tmx-map-format.rst:484 msgid "**template:** A reference to a :ref:`template file ` (optional)." msgstr "" #: ../../reference/tmx-map-format.rst:486 msgid "While tile layers are very suitable for anything repetitive aligned to the tile grid, sometimes you want to annotate your map with other information, not necessarily aligned to the grid. Hence the objects have their coordinates and size in pixels, but you can still easily align that to the grid when you want to." msgstr "" #: ../../reference/tmx-map-format.rst:492 msgid "You generally use objects to add custom information to your tile map, such as spawn points, warps, exits, etc." msgstr "" #: ../../reference/tmx-map-format.rst:495 msgid "When the object has a ``gid`` set, then it is represented by the image of the tile with that global ID. The image alignment currently depends on the map orientation. In orthogonal orientation it's aligned to the bottom-left while in isometric it's aligned to the bottom-center." msgstr "" #: ../../reference/tmx-map-format.rst:500 msgid "When the object has a ``template`` set, it will borrow all the properties from the specified template, properties saved with the object will have higher priority, i.e. they will override the template properties." msgstr "" #: ../../reference/tmx-map-format.rst:505 msgid "Can contain: :ref:`tmx-properties`, :ref:`tmx-ellipse` (since 0.9), :ref:`tmx-polygon`, :ref:`tmx-polyline`, :ref:`tmx-text` (since 1.0), *image*" msgstr "" #: ../../reference/tmx-map-format.rst:512 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:514 msgid "Used to mark an object as an ellipse. The existing ``x``, ``y``, ``width`` and ``height`` attributes are used to determine the size of the ellipse." msgstr "" #: ../../reference/tmx-map-format.rst:521 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:523 msgid "Used to mark an object as a point. The existing ``x`` and ``y`` attributes are used to determine the position of the point." msgstr "" #: ../../reference/tmx-map-format.rst:529 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:531 #: ../../reference/tmx-map-format.rst:544 msgid "**points:** A list of x,y coordinates in pixels." msgstr "" #: ../../reference/tmx-map-format.rst:533 msgid "Each ``polygon`` object is made up of a space-delimited list of x,y coordinates. The origin for these coordinates is the location of the parent ``object``. By default, the first point is created as 0,0 denoting that the point will originate exactly where the ``object`` is placed." msgstr "" #: ../../reference/tmx-map-format.rst:542 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:546 msgid "A ``polyline`` follows the same placement definition as a ``polygon`` object." msgstr "" #: ../../reference/tmx-map-format.rst:552 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:554 msgid "**fontfamily:** The font family used (default: \"sans-serif\")" msgstr "" #: ../../reference/tmx-map-format.rst:555 msgid "**pixelsize:** The size of the font in pixels (not using points, because other sizes in the TMX format are also using pixels) (default: 16)" msgstr "" #: ../../reference/tmx-map-format.rst:558 msgid "**wrap:** Whether word wrapping is enabled (1) or disabled (0). Defaults to 0." msgstr "" #: ../../reference/tmx-map-format.rst:560 msgid "**color:** Color of the text in ``#AARRGGBB`` or ``#RRGGBB`` format (default: #000000)" msgstr "" #: ../../reference/tmx-map-format.rst:562 msgid "**bold:** Whether the font is bold (1) or not (0). Defaults to 0." msgstr "" #: ../../reference/tmx-map-format.rst:563 msgid "**italic:** Whether the font is italic (1) or not (0). Defaults to 0." msgstr "" #: ../../reference/tmx-map-format.rst:564 msgid "**underline:** Whether a line should be drawn below the text (1) or not (0). Defaults to 0." msgstr "" #: ../../reference/tmx-map-format.rst:566 msgid "**strikeout:** Whether a line should be drawn through the text (1) or not (0). Defaults to 0." msgstr "" #: ../../reference/tmx-map-format.rst:568 msgid "**kerning:** Whether kerning should be used while rendering the text (1) or not (0). Default to 1." msgstr "" #: ../../reference/tmx-map-format.rst:570 msgid "**halign:** Horizontal alignment of the text within the object (``left`` (default), ``center`` or ``right``)" msgstr "" #: ../../reference/tmx-map-format.rst:572 msgid "**valign:** Vertical alignment of the text within the object (``top`` (default), ``center`` or ``bottom``)" msgstr "" #: ../../reference/tmx-map-format.rst:575 msgid "Used to mark an object as a text object. Contains the actual text as character data." msgstr "" #: ../../reference/tmx-map-format.rst:581 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:583 msgid "**name:** The name of the image layer." msgstr "" #: ../../reference/tmx-map-format.rst:584 msgid "**offsetx:** Rendering offset of the image layer in pixels. Defaults to 0. (since 0.15)" msgstr "" #: ../../reference/tmx-map-format.rst:586 msgid "**offsety:** Rendering offset of the image layer in pixels. Defaults to 0. (since 0.15)" msgstr "" #: ../../reference/tmx-map-format.rst:588 msgid "*x:* The x position of the image layer in pixels. (deprecated since 0.15)" msgstr "" #: ../../reference/tmx-map-format.rst:590 msgid "*y:* The y position of the image layer in pixels. (deprecated since 0.15)" msgstr "" #: ../../reference/tmx-map-format.rst:596 msgid "A layer consisting of a single image." msgstr "" #: ../../reference/tmx-map-format.rst:598 msgid "Can contain: :ref:`tmx-properties`, :ref:`tmx-image`" msgstr "" #: ../../reference/tmx-map-format.rst:603 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:605 msgid "**name:** The name of the group layer." msgstr "" #: ../../reference/tmx-map-format.rst:606 msgid "**offsetx:** Rendering offset of the group layer in pixels. Defaults to 0." msgstr "" #: ../../reference/tmx-map-format.rst:608 msgid "**offsety:** Rendering offset of the group layer in pixels. Defaults to 0." msgstr "" #: ../../reference/tmx-map-format.rst:614 msgid "A group layer, used to organize the layers of the map in a hierarchy. Its attributes ``offsetx``, ``offsety``, ``opacity`` and ``visible`` recursively affect child layers." msgstr "" #: ../../reference/tmx-map-format.rst:618 msgid "Can contain: :ref:`tmx-properties`, :ref:`tmx-layer`, :ref:`tmx-objectgroup`, :ref:`tmx-imagelayer`, :ref:`tmx-group`" msgstr "" #: ../../reference/tmx-map-format.rst:624 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:626 msgid "Can contain: :ref:`tmx-property`" msgstr "" #: ../../reference/tmx-map-format.rst:628 msgid "Wraps any number of custom properties. Can be used as a child of the ``map``, ``tileset``, ``tile`` (when part of a ``tileset``), ``terrain``, ``layer``, ``objectgroup``, ``object``, ``imagelayer`` and ``group`` elements." msgstr "" #: ../../reference/tmx-map-format.rst:636 msgid "" msgstr "" #: ../../reference/tmx-map-format.rst:638 msgid "**name:** The name of the property." msgstr "" #: ../../reference/tmx-map-format.rst:639 msgid "**type:** The type of the property. Can be ``string`` (default), ``int``, ``float``, ``bool``, ``color`` or ``file`` (since 0.16, with ``color`` and ``file`` added in 0.17)." msgstr "" #: ../../reference/tmx-map-format.rst:642 msgid "**value:** The value of the property." msgstr "" #: ../../reference/tmx-map-format.rst:644 msgid "Boolean properties have a value of either \"true\" or \"false\"." msgstr "" #: ../../reference/tmx-map-format.rst:646 msgid "Color properties are stored in the format ``#AARRGGBB``." msgstr "" #: ../../reference/tmx-map-format.rst:648 msgid "File properties are stored as paths relative from the location of the map file." msgstr "" #: ../../reference/tmx-map-format.rst:651 msgid "When a string property contains newlines, the current version of Tiled will write out the value as characters contained inside the ``property`` element rather than as the ``value`` attribute. It is possible that a future version of the TMX format will switch to always saving property values inside the element rather than as an attribute." msgstr "" #: ../../reference/tmx-map-format.rst:660 msgid "Template Files" msgstr "" #: ../../reference/tmx-map-format.rst:662 msgid "Templates are saved in their own file, and are referenced by :ref:`objects ` that are template instances." msgstr "" #: ../../reference/tmx-map-format.rst:668 msgid "