diff --git a/DagorEngine.rev.txt b/DagorEngine.rev.txt
index dbdc4852d..c17482993 100644
--- a/DagorEngine.rev.txt
+++ b/DagorEngine.rev.txt
@@ -1 +1 @@
-e1b257771f10be67b195ae0de780d15028763dc3
+d82f2aef2d76258d84c43cd2bcd4b0444570b104
diff --git a/_docs/_static/custom.css b/_docs/_static/custom.css
index 4a14691b0..d026a072d 100644
--- a/_docs/_static/custom.css
+++ b/_docs/_static/custom.css
@@ -53,4 +53,23 @@ p {
margin-bottom: 14px;
}
+/* Customization for icon-style numbering of menu items or objects in a picture
+for use in text */
+
+.sd-badge {
+ /* display: inline-block; */
+ padding: .25em .55em;
+ font-size: .8em;
+ font-weight: 700;
+ line-height: 1;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ border-radius: .5rem;
+}
+
+.sd-outline-dark {
+ border-width: 0.15em !important;
+}
+
diff --git a/_docs/source/dagor-tools/resource-building/_images/res_build_01.png b/_docs/source/dagor-tools/resource-building/_images/res_build_01.png
deleted file mode 100644
index 15b1125ed..000000000
Binary files a/_docs/source/dagor-tools/resource-building/_images/res_build_01.png and /dev/null differ
diff --git a/_docs/source/dagor-tools/resource-building/_images/resource_building_01.jpg b/_docs/source/dagor-tools/resource-building/_images/resource_building_01.jpg
new file mode 100644
index 000000000..f32e92d57
Binary files /dev/null and b/_docs/source/dagor-tools/resource-building/_images/resource_building_01.jpg differ
diff --git a/_docs/source/dagor-tools/resource-building/index.rst b/_docs/source/dagor-tools/resource-building/index.rst
index 64440cea1..961965ce5 100644
--- a/_docs/source/dagor-tools/resource-building/index.rst
+++ b/_docs/source/dagor-tools/resource-building/index.rst
@@ -1,15 +1,12 @@
+
Resource Building
=========================================
-Resource building refers to the process of packaging all game resources: models,
-textures, levels, configurations, and game logic into binary files.
-
-Contents:
-
.. toctree::
:maxdepth: 2
- :glob:
+ :caption: Contents:
resource_building.md
vromfs.md
+
diff --git a/_docs/source/dagor-tools/resource-building/resource_building.md b/_docs/source/dagor-tools/resource-building/resource_building.md
index 502c6925a..17764dbea 100644
--- a/_docs/source/dagor-tools/resource-building/resource_building.md
+++ b/_docs/source/dagor-tools/resource-building/resource_building.md
@@ -14,34 +14,39 @@ fetched, decompressed, and the required information is extracted from them.
This article provides an overview of how to build assets, levels, and settings.
-# Parameters in .folder.blk Affecting the Building Process
+## Parameters in .folder.blk Affecting the Building Process
-Resource building is governed by the rules defined in `.folder.blk` files. For
-more details about `.folder.blk`, read
-[here](../../assets/all-about-blk/folder_blk.md). For instance, the following
-block specifies compression parameters for `.tiff` textures.
+Resource building is governed by the rules defined in `.folder.blk` files.
+```{seealso}
+For more information, see
+[.folder.blk](../../assets/all-about-blk/folder_blk.md).
```
+
+For example, the following block specifies compression parameters for `.tiff`
+textures.
+
+```text
virtual_res_blk{
- find:t="^(.*)\.tiff$" // search for any .tiff files
- className:t="tex" // assign the "texture" class
- contents{ // processing details
- convert:b=yes;fmt:t="DXT1|DXT5" // convert; use DXT1 or DXT5 format (if alpha is present)
+ find:t="^(.*)\.tiff$" // search for any .tiff files
+ className:t="tex" // assign the "texture" class
+ contents{ // processing details
+ convert:b=yes;fmt:t="DXT1|DXT5" // convert; use DXT1 or DXT5 format (if alpha is present)
mipFilter:t="filterKaiser";mipFilterAlpha:r=40;mipFilterStretch:r=2 // mipmap compression using
- // the Kaiser filter (sharpens); with two parameters
- addrU:t="wrap";addrV:t="wrap" // define texture tiling behavior, wrap = repeat for repeating textures.
- hqMip:i=0;mqMip:i=1;lqMip:i=2 // define the displayed mip level based on graphics quality;
- // hq (high quality) uses the original texture,
- // mq uses mip level 1 (50% compression), lq uses mip level 2 (75% compression).
+ // the Kaiser filter (sharpens); with two parameters
+ addrU:t="wrap";addrV:t="wrap" // define texture tiling behavior, wrap = repeat for repeating textures.
+ hqMip:i=0;mqMip:i=1;lqMip:i=2 // define the displayed mip level based on graphics quality;
+ // hq (high quality) uses the original texture,
+ // mq uses mip level 1 (50% compression), lq uses mip level 2 (75% compression).
}
}
```
-There are numerous such processing blocks. Below, we’ll examine the key ones.
+There are numerous such processing blocks. Below, we'll examine the key ones.
## Global Export Parameters
-```
+```text
export{
package:t="*" // Specify the package to which the asset will be built
// (a package is the highest level of asset grouping)
@@ -64,21 +69,21 @@ export{
}
```
-These are just a few examples. Let’s delve into the primary parameters.
+These are just a few examples. Let's delve into the primary parameters.
-# About Packs and Packages
+## About Packs and Packages
The hierarchy of resources can be illustrated as follows:
-![Hierarchy of Resources](_images/res_build_01.png)
+
In essence, a project can contain several packages, and each package can include
multiple packs.
-## What Is a "Package"?
+### What Is a "Package"?
A *package* typically serves as a container for resources that we want to
-distribute to or remove from the player's environment. For instance, we might
+distribute to or remove from the player's environment. For example, we might
bundle a specific location and its assets into a package for a particular event.
Players download it, enjoy the event for a week, and once the event concludes,
the package is removed from their resources.
@@ -88,9 +93,12 @@ players to download 20 GB of resources upfront, they can start with a minimal
setup and quickly get into the game. Later, they can purchase additional content
and download the necessary data from the relevant package.
-See more details about packages [here](packages.md).
+```{seealso}
+For more information, see
+[Packages](./packages.md).
+```
-## What Is a "Pack"?
+### What Is a "Pack"?
A *pack* is a component of a package where the assets are actually built. The
logic for dividing assets into packs is straightforward:
@@ -109,7 +117,7 @@ If a pack becomes too large, we break it down into smaller groups. For example,
vehicles could be further divided into packs such as `buses`, `trucks`, and
`cars`.
-# Local Build
+## Local Build
When you create a new asset, it needs to be tested locally in the game. The
local client, like the player's client, only understands built resources, so
@@ -123,12 +131,12 @@ There are three types of builds:
and efficient.
3. **Partial Package Build**: Builds an entire package (a set of packs).
Although this is a longer process, it can be more convenient in some cases,
- such as in *daNetGame-based* games, where packaging the resources this way
+ such as in *daNetGame*-based games, where packaging the resources this way
might be preferable to building individual packs.
-# Local Full daBuild
+## Local Full daBuild
-[*daBuild*](../daeditor/daeditor/daeditor.md) is a program executed via the
+The [*daBuild*](../daeditor/daeditor/daeditor.md) is a program executed via the
`dabuild.cmd` batch file.
```{important}
@@ -137,7 +145,7 @@ you only need to build a single resource for quick testing, use
`dabuild_test.bat` instead.
```
-## Building and Errors
+### Building and Errors
In theory, all assets should be error-free. However, asset management initially
relied heavily on manual checks, leading to human error and allowing issues to
@@ -154,14 +162,14 @@ file command to allow *daBuild* to continue building all resources while logging
the errors.
```{note}
-This flag should not be used to ignore errors. The build process for specific
-assets will still be interrupted, but it will move on to the next asset in the
-pack rather than stopping at the first error. Once you've collected error data,
-fix the assets and run the build without this flag to ensure that *daBuild*
-completes successfully without issues.
+The `-keep_building_after_error` flag should not be used to ignore errors. The
+build process for specific assets will still be interrupted, but it will move on
+to the next asset in the pack rather than stopping at the first error. Once
+you've collected error data, fix the assets and run the build without this flag
+to ensure that *daBuild* completes successfully without issues.
```
-## Local Pack Build
+### Local Pack Build
```{important}
Building packs with *daBuild* will compile all packs matching a specified
@@ -183,7 +191,7 @@ be named `main_vehicles`.
To build a specific pack, open `dabuild_test.bat` in any text editor, and you
will see a line like this:
-```
+```text
..\..\tools\dagor3_cdk\bin64\dabuild-dev.exe -target:PC ..\application.blk -packs_re:usa_gm -Q
```
@@ -191,72 +199,72 @@ Replace `usa_gm` with the name of the pack you need to build. The pack is
determined by the nearest `.folder.blk` file to the asset, containing lines
like:
-```
+```text
export{
ddsxTexPack:t="gm_lvl_assets.dxp.bin"
gameResPack:t="gm_lvl_assets.grp"
}
```
-`gm_lvl_assets` is an example of the pack name into which the resources will be
-built. It may vary – refer to your specific setup.
+The `gm_lvl_assets` is an example of the pack name into which the resources will
+be built. It may vary – refer to your specific setup.
```{important}
Notice that there are two types of packs:
-1. `ddsxTexPack` - Exports textures.
-2. `gameResPack` - Exports models.
-It's possible for textures to be exported to one pack and models to another. For
-example:
+- `ddsxTexPack`: Exports textures.
+- `gameResPack`: Exports models.
-```
-export{
- ddsxTexPack:t="gm_lvl_assets.dxp.bin"
- gameResPack:t="locations.grp"
-}
-```
+It's possible for textures to be exported to one pack and models to another.
+For example:
+
+ ```
+ export{
+ ddsxTexPack:t="gm_lvl_assets.dxp.bin"
+ gameResPack:t="locations.grp"
+ }
+ ```
You need to build the packs corresponding to the resources you've modified. If
you've changed textures, build the texture pack. If you've changed models, build
the model pack. If both were changed, build both packs.
```
-# Local Package Build
+## Local Package Build
Unlike packs, packages are more comprehensive and refer to self-contained
-volumes of resources that can be enabled or disabled with a "toggle."
+volumes of resources that can be enabled or disabled with a "toggle".
For example, in *War Thunder*:
-- `pkg_main` (or simply `*`) - The default package where all assets are
- exported.
-- `pkg_dev` - Contains assets that should be built but not distributed to
+- `pkg_main` (or simply `*`): The default package where all assets are exported.
+- `pkg_dev`: Contains assets that should be built but not distributed to
players.
-- `tomoe` - A package for modifying certain symbols in countries where their
+- `tomoe`: A package for modifying certain symbols in countries where their
original form is prohibited.
- Event packages are also occasionally used.
-In *daNetGame-based* games, each location is its own package, which can be
+In *daNetGame*-based games, each location is its own package, which can be
distributed to players independently.
In a `.folder.blk` file, the package entry looks like this:
-```
+```text
export{
package:t="tomoe"
}
```
In *War Thunder*, local package builds are not common, as there are few
-packages, and packs are usually built instead. However, in *daNetGame-based*
+packages, and packs are usually built instead. However, in *daNetGame*-based
games, this is an extremely useful feature. There are two options for such
builds.
-## Option 1 - Building a Specific Package
+### Option 1: Building a Specific Package
In the `daBuild` batch file, write:
-```
+```text
..\..\tools\dagor3_cdk\bin64\dabuild-dev.exe -target:PC ..\application.blk -package:package_name -Q
```
@@ -276,15 +284,16 @@ updated.
To avoid this, you should either:
-- Sequentially build both packages using one batch file:
-
+- sequentially build both packages using one batch file:
`-package:package_name -package:package_name_hq`
-- Or create two separate batch files: one for the main resource package (non-HQ
+or
+
+- create two separate batch files: one for the main resource package (non-HQ
textures) and another specifically for HQ textures.
```
-## Option 2 - Building a Specific Package and Its Dependencies
+### Option 2: Building a Specific Package and Its Dependencies
In *daNetGame-based* games, packages often have cross-references. When something
changes in a "common" package, you need to ensure that everything works
@@ -294,24 +303,30 @@ its dependent packages, which is much faster.
To do this, write the following in the `daBuild` batch file:
-```
+```text
..\..\tools\dagor3_cdk\bin64\dabuild-dev.exe -target:PC ..\application.blk -package_and_deps:package_name -Q
```
-`package_and_deps` refers to the package and its dependencies.
+The `package_and_deps` refers to the package and its dependencies.
-# Toggling Packages in settings.blk
+## Toggling Packages in settings.blk
Occasionally, you may need to enable or disable packages to test specific
-scenarios (for instance, disabling a package to verify that the game runs
-without it). This is configured in the `settings.blk` file. For all projects,
-after modifying the package list, you must rebuild the [`.vromfs.bin`](vromfs.md)
-files.
+scenarios (for example, disabling a package to verify that the game runs without
+it). This is configured in the `settings.blk` file.
+
+```{seealso}
+For more information, see
+[settings.blk](../../assets/all-about-blk/config_and_settings_blk).
+```
+
+For all projects, after modifying the package list, you must rebuild the
+[`.vromfs.bin`](vromfs.md) files.
In *War Thunder*, packages are enabled or disabled in the file located at
-`engine_root\skyquake\develop\gameBase\_pc\settings.blk`:
+`//develop/gameBase/_pc/settings.blk`:
-```
+```text
addons{
folder:t = "content.hq/hq_tex"
folder:t = "content.hq/pkg_cockpits"
@@ -354,24 +369,31 @@ disabling packages within the game; it does not handle the creation of packages.
The requirement for a package to be built by *daBuild* is defined in the
`application.blk` file within the `packages{}` block.
-# Local Build of a Specific Asset
+```{seealso}
+For more information, see
+[application.blk](../../assets/all-about-blk/application_blk.md).
+```
+
+## Local Build of a Specific Asset
The `daBuild` command with the `-build:[:]` parameter allows
you to build a single asset into the specified file. This command does not
update packages, meaning the updated asset will not be added to any package.
-# Local Resource Build in Asset Viewer
+## Local Resource Build in Asset Viewer
-Resources can also be built using the *Asset Viewer*, which often speeds up the
-process since `daBuild` via batch files can sometimes lag unpredictably.
+Resources can also be built using the [*Asset
+Viewer*](../asset-viewer/asset-viewer/asset_viewer.md), which often speeds up
+the process since `daBuild` via batch files can sometimes lag unpredictably.
-For instructions on how to build using *Asset Viewer*, refer to the
-documentation
-[here](../asset-viewer/asset-viewer/asset_viewer.md#building-assets).
+```{seealso}
+For more information on how to build using *Asset Viewer*, see
+[Asset Viewer: Building Assets](../asset-viewer/asset-viewer/asset_viewer.md#building-assets).
+```
-# Local Vromfs Build
+## Local Vromfs Build
-VROMFS stands for "Virtual Read-Only Memory File System". Essentially,
+*VROMFS* stands for "Virtual Read-Only Memory File System". Essentially,
[vromfs](vromfs.md) files are the "virtual configuration disk" for our game.
They contain all the game's operational settings that aren't hard-coded.
@@ -386,11 +408,11 @@ following line in the `debug{}` block: `offlineBinaries:b=yes`. Alternatively,
you can use `disableNetwork:b=yes` if network features are irrelevant to you.
For added security, you might want to include both.
-## Methods to Build Vromfs
+### Methods to Build Vromfs
1. **Using `create_vrsroms.bat`**
- - Located in the `engine_engine_root\\develop\gameBase` directory.
- This method is useful because it immediately indicates if there’s an issue
+ - Located in the `//develop/gameBase` directory.
+ This method is useful because it immediately indicates if there's an issue
with the settings by throwing an error. Additionally, it provides a local
log (`log_vrom`) in the same directory, which helps you identify and
resolve any problems.
@@ -398,50 +420,50 @@ For added security, you might want to include both.
2. **Using `aces_dev.exe`**
- Technically, this tool does not build vromfs. However, if you have
`vromfsPriority:b=no` set in the `debug{}` block of your `config.blk`, all
- configuration files will be read directly from `develop\gameBase` instead
+ configuration files will be read directly from `develop/gameBase` instead
of from vromfs. This approach offers several advantages: there's no need to
wait for vromfs building after each change, and errors are logged in a more
readable format. Additionally, this method allows you to add the powerful
`trackEnvChanges:b=yes` line to your `config.blk`, enabling you to tweak
- settings directly in-game. Although this doesn’t work for all settings,
- it’s particularly helpful for adjusting weather or visual elements, as you
+ settings directly in-game. Although this doesn't work for all settings,
+ it's particularly helpful for adjusting weather or visual elements, as you
can see the changes in real-time without restarting the client.
Choose the method based on your experience. The in-game approach might be less
convenient, but sometimes it's essential to ensure everything behaves exactly as
it would in production.
-# Local Build of Resources and Vromfs in the open daEditor and Client
+## Local Build of Resources and Vromfs in the open daEditor and Client
You can build resources and [vromfs](vromfs.md) while the
-[*daEditor*](../daeditor/index.rst) is open (though resource building might
-cause the *daEditor* to crash).
+[*daEditor*](../daeditor/daeditor/daeditor.md) is open (though resource building
+might cause the *daEditor* to crash).
However, resources and vromfs cannot be built while the client is open.
-If you find that resources aren’t building after you’ve closed the client – or
-they seem to build, but the changes aren’t reflected in-game – open the Task
+If you find that resources aren't building after you've closed the client – or
+they seem to build, but the changes aren't reflected in-game – open the Task
Manager and terminate any lingering `aces_dev.exe` processes.
-# Local Level Export
+## Local Level Export
-If you’re developing in-game vehicles that are loaded via missions, you can skip
+If you're developing in-game vehicles that are loaded via missions, you can skip
this section.
-However, if you’re creating objects for maps, you’ll need to place them on the
+However, if you're creating objects for maps, you'll need to place them on the
map and export the level to test them in-game. This process is done via the
-*daEditor*.
+[*daEditor*](../daeditor/daeditor/daeditor.md).
Level export is necessary when:
-- You’re working with prefabs. Prefabs are only included in the game during
+- You're working with prefabs. Prefabs are only included in the game during
level re-export.
-- You’ve added a new asset that wasn’t previously on the level or removed
+- You've added a new asset that wasn't previously on the level or removed
something from the location.
- Something has changed in object generation, and their placement needs to be
updated.
-If you’re only modifying render instances or textures, there’s no need to
+If you're only modifying render instances or textures, there's no need to
re-export the level – doing so would just waste time.
Once you have placed all your objects, save the level and follow these steps:
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_01.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_01.jpg
new file mode 100644
index 000000000..7d9179333
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_01.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_02.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_02.jpg
new file mode 100644
index 000000000..9e7f7c7bb
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_02.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_03.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_03.jpg
new file mode 100644
index 000000000..5e7e9e535
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_03.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_04.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_04.jpg
new file mode 100644
index 000000000..57ca83a64
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_04.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_05.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_05.jpg
new file mode 100644
index 000000000..1ad30329e
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_05.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_06.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_06.jpg
new file mode 100644
index 000000000..f45c59b50
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_06.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_07.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_07.jpg
new file mode 100644
index 000000000..fd1b2b557
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_07.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_08.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_08.jpg
new file mode 100644
index 000000000..e743e647f
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_08.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_09.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_09.jpg
new file mode 100644
index 000000000..960a81186
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_09.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_10.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_10.jpg
new file mode 100644
index 000000000..a3a82f943
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_10.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_11.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_11.jpg
new file mode 100644
index 000000000..83536d7a3
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_11.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_12.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_12.jpg
new file mode 100644
index 000000000..b4b98c177
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_12.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_13.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_13.jpg
new file mode 100644
index 000000000..596ddce61
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_13.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_14.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_14.jpg
new file mode 100644
index 000000000..b3b66c23f
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_14.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_15.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_15.jpg
new file mode 100644
index 000000000..8d2efcc81
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_15.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_16.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_16.jpg
new file mode 100644
index 000000000..3a28728c0
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_16.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_17.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_17.jpg
new file mode 100644
index 000000000..6475adc3c
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_17.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_18.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_18.jpg
new file mode 100644
index 000000000..17e114f67
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_18.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_19.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_19.jpg
new file mode 100644
index 000000000..a46682750
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_19.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_20.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_20.jpg
new file mode 100644
index 000000000..49edf6c1f
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_20.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_21.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_21.jpg
new file mode 100644
index 000000000..3b054ae2d
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_21.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_22.jpg b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_22.jpg
new file mode 100644
index 000000000..a0192cc67
Binary files /dev/null and b/_docs/source/tutorials/dng-non-human-char/_images/dng_non_human_char_22.jpg differ
diff --git a/_docs/source/tutorials/dng-non-human-char/dng_non_human_char.md b/_docs/source/tutorials/dng-non-human-char/dng_non_human_char.md
new file mode 100644
index 000000000..f823ab057
--- /dev/null
+++ b/_docs/source/tutorials/dng-non-human-char/dng_non_human_char.md
@@ -0,0 +1,910 @@
+# Non-Human Character: Step-by-Step Guide
+
+## General Guidelines for Creating Creatures of All Types
+
+The *Dagor Engine* supports creating any bone-animated object (character).
+However, this guide focuses on simple examples that do not involve IK (Inverse
+Kinematics), upper or lower body animations, complex animation blending, or
+additive animations. After reading this guide, you will be able to create
+characters with any number of limbs. Additionally, we will set up animation
+states for smooth transitions between character animations.
+
+## Example Scenes in 3ds Max
+
+You can download scenes with models properly prepared for export:
+{download}`3dsMax2024Files.zip `
+
+## Examples in Dagor Engine
+
+These examples are designed for use in *daNetGame*-based projects. The files
+include ready-to-use game assets: a fish and a crow. Compatibility with *War
+Thunder* has not been tested due to shader-related issues.
+
+Download the archive:
+{download}`creatures.zip `
+
+Extract the files into the `dev` directory of your project (a testing directory
+not included in the game build). For example,
+`//develop/assets/dev/gameRes/`. After extraction,
+the path should look like this:
+`//develop/assets/dev/gameRes/creatures`.
+
+If everything is set up correctly, loading the [*Asset
+Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md) and
+selecting the crow asset {bdg-dark-line}`1` will result in error-free loading.
+Click {bdg-dark-line}`2` to review error logs. The highlighted section indicates
+successful loading.
+
+
+
+```{note}
+Scenes are compatible with *3ds Max 2024* or later.
+```
+
+## Skeleton Bone Structure: Features and Scene Configuration
+
+Let's analyze the crow scene. Open the file {bdg-dark-line}`0`
+`crow_detailed_tpose.max`.
+
+
+
+Make sure to specify in the file name that it is the character's T-pose. The
+model must include a root bone {bdg-dark-line}`3`. The naming is flexible, but
+if you plan to use existing `.blk` files as templates, it is better to name it
+`root`. This bone is used to move the entire scene. Additionally, a `Body` bone
+{bdg-dark-line}`4` must be defined.
+
+```{seealso}
+For more information, see
+[.blk File Format](../../dagor-tools/blk/blk.md).
+```
+
+For complex models with separate upper and lower animations, different
+animations may play simultaneously based on specific events. In such cases, bone
+names must clearly indicate their purpose for programmers. In this example, the
+same animation always applies to all bones, so `Body` directly follows `root`.
+This will become crucial when defining properties for generating animation
+dependencies.
+
+```{note}
+For more complex characters, the structure may involve actions like running
+while rotating the torso and looking at the camera. Such setups require advanced
+configurations, which are beyond the scope of this guide. Here, we focus on a
+simpler and more straightforward task.
+```
+
+The *3ds Max* scene must include the following mandatory features:
+
+- **LODs** (Level of Detail) {bdg-dark-line}`2` must be named consistently,
+ e.g., `LOD00` {bdg-dark-line}`1`. Inconsistent names across LODs will cause
+ errors during the [*Asset
+ Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md) resource
+ loading. While *3ds Max* discourages identical names for objects, *Dagor
+ Engine* requires this convention. To distinguish objects, place them in layers
+ named according to their LOD levels, as shown in the example above.
+
+- For the **Skin modifier**, always disable **Dual Quaternion**
+ {bdg-dark-line}`6` and set the number of points per bone {bdg-dark-line}`5` to
+ match the configuration specified in the project's `application.blk`. Refer to
+ the **Skin Parameters in Dagor** section for more details: [Working with the
+ Skin Modifier](#working-with-the-skin-modifier).
+
+ ```{seealso}
+ For more information, see
+ [application.blk](../../assets/all-about-blk/application_blk.md).
+ ```
+
+- Store skinned objects as **Editable Mesh** {bdg-dark-line}`7` to ensure point
+ weights accurately reflect in *Dagor* after export. These steps help replicate
+ the Skin modifier's behavior in *Dagor* precisely.
+
+- Use **Selection Sets** {bdg-dark-line}`8` for easier object selection during
+ export. For instance, to export `LOD00`, create a group named `lod00`
+ containing all the scene bones and all objects from the `LOD00` layer.
+
+Each bone in the scene must include **Custom Properties** so that the *Dagor*
+identifies them as bones. Below is the minimum required configuration for the
+crow skeleton:
+
+```text
+animated_node:b=yes // Specifies the object is animated
+collidable:b=no // Disables all collisions
+massType:t="none" // No mass, but the object is physical
+renderable:b=no // Excluded from rendering
+cast_shadows:b=no // Excluded from shadow generation
+```
+
+## Adding Basic Physics
+
+To initialize the scene properly in *Dagor*, assign physical properties to at
+least one bone using **Custom Properties** {bdg-dark-line}`2`.
+
+
+
+Without physics, the engine cannot generate a valid skeleton. Below is an
+example configuration for the `head` bone {bdg-dark-line}`1`:
+
+```text
+animated_node:b=yes // Specifies the object is animated
+collidable:b=no // Enables collision handling, though further settings are required
+massType:t="box" // Specifies the mass calculation type
+collision:t=capsule // Specifies the collision type; consult your mentor for alternatives
+physObj:b=yes // Enables physics for the object
+density:r=2000 // Density for mass calculation
+renderable:b=no // Excluded from rendering
+cast_shadows:b=no // Excluded from shadow generation
+```
+
+```{seealso}
+For more information, see
+[Rigging, Skinning, and Exporting New Character](../dng-rig-skin-export-new-char.md/dng_rig_skin_export_new_char.md).
+
+Download example files to review the custom properties of bones like `Bip*`.
+These properties dictate how the physical skeleton is generated.
+```
+
+## Working with the Skin Modifier
+
+The most critical aspect of working with the **Skin** modifier is controlling
+the number of bones per vertex. By convention, this value is set to 4 bones per
+vertex. This parameter is defined in the project's general configuration file,
+`application.blk`. Other required settings have already been covered earlier.
+
+Example configuration in `application.blk`:
+
+```text
+dynModel{
+ descListOutPath:t="dynModelDesc"
+ separateModelMatToDescBin:b=yes
+
+ ignoreMappingInPrepareBillboardMesh:b=yes
+ enableMeshNodeCollapse:b=no
+ maxBonesCount:i=318 // This is ineffective! Shader limitations cap bone count at 200.
+ // Exceeding 200 will result in errors during daBuild.
+ setBonePerVertex:i=4 // Number of bones per vertex
+}
+```
+
+## Creating LODs: Special Considerations for Dynamic Models
+
+The primary rule for creating LODs is ensuring consistent naming for all LOD
+levels. Using the crow as an example:
+
+
+
+As shown, LODs share the same base name but are placed in separate layers. Each
+LOD may contain multiple skinned objects. This approach is useful, especially
+when the total triangle count for a single object exceeds the limit of 65,000
+triangles. If your model exceeds this limit, divide it into multiple pieces.
+
+For each model with a **Skin** modifier, the following **Custom Properties**
+must be added:
+
+```text
+animated_node:b=yes // Specifies the object is animated
+collidable:b=no // Disables all collisions
+massType:t="none" // Indicates no physical mass for this object
+```
+
+Ensure all skinned objects {bdg-dark-line}`1` have the specified properties
+{bdg-dark-line}`2`:
+
+
+
+For efficient management of **Custom Properties**, use an editor or viewer tool.
+
+```{seealso}
+For more information, see
+[*Dagor 2 Fast Editor User Properties*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/fast_editor_user_properties.md).
+```
+
+## Materials for Dynamic Models
+
+Let's examine the materials assigned to the skinned models in the scene. In this
+case, the materials used are `crow_base` and `Dagor Dagorrat Material 2`
+{bdg-dark-line}`0`. To view all available **dynamic materials**, open the
+dropdown menu and navigate to the relevant section {bdg-dark-line}`1`.
+
+While each material type requires dedicated documentation, we will focus on the
+simplest and most versatile option for
+[PBR](https://en.wikipedia.org/wiki/Physically_based_rendering) lighting:
+**dynamic_simple** {bdg-dark-line}`2`. This material supports standard textures
+such as **albedo** (with optional transparency), **normal**, **smoothness**, and
+**metalness** maps. In this case, the textures are:
+- `crow_body_a_tex_d.tif` (albedo)
+- `crow_body_a_tex_n.tif` (normal map)
+
+If the archive was unpacked correctly, these textures can be found at the
+following path:
+`//enlisted/develop/assets/dev/gameRes/creatures/characters/crow`.
+
+Assign the textures to the appropriate slots {bdg-dark-line}`3`. To enable
+transparency, add the **atest** property {bdg-dark-line}`4` and set its value
+{bdg-dark-line}`5` to `127`. This controls the alpha test threshold, where
+mid-level brightness determines transparency. Also, enable two-sided rendering
+{bdg-dark-line}`6`, as crow feathers must be rendered on both sides.
+
+:::{grid} 2
+
+
+:::
+
+Verify that this material is applied to all skinned objects before proceeding
+with export.
+
+## Exporting the Dynamic Model
+
+If the **selection sets** {bdg-dark-line}`1` were prepared correctly earlier,
+exporting is straightforward. In the crow scene, select the set named `lod00`
+{bdg-dark-line}`2`. This action highlights the `LOD00` layer and all associated
+bones.
+
+
+
+
+
+Next, navigate to **Utilities**, and choose **Dagor Scene Export**. If this
+option is unavailable, add it using the **Sets** button. Within the **Dagor
+Export** settings, ensure the following options are enabled:
+- **Export hidden objects**
+- **Export selected objects only**
+
+These options are essential for every export. Finally, click **Export DAG**.
+
+### Important Naming Conventions
+
+The *Dagor* legacy constraints require specific naming conventions. The files
+extracted from the `creatures.zip` archive must follow this format to maintain
+compatibility with `.blk` scripts and project building pipelines.
+
+For dynamic models:
+- Append the postfix `_dynmodel`.
+- Specify the LOD using the `.lodXX` postfix, where `XX` is the LOD level.
+
+For example, the crow model's most detailed LOD(00) should be named as crow_detailed_a_dynmodel.lod00.dag.
+
+- **Green text**: Customizable according to your naming needs.
+- **Red text**: Fixed and mandatory to ensure correct processing during build
+ and to define the LOD number.
+
+```{note}
+Post-export, you may encounter errors like:
+
+
+These errors occur because bones lack assigned **Dagor** materials. Assigning
+materials does not resolve this issue; it can be safely ignored.
+```
+
+Repeat the export process for the other two LODs, naming them:
+- `crow_detailed_a_dynmodel.lod01.dag`
+- `crow_detailed_a_dynmodel.lod02.dag`
+
+Once the export is complete, verify the model in the [*Asset
+Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md) by
+selecting `crow_lo_a_dynmodel` {bdg-dark-line}`1`:
+
+
+
+If everything was done correctly, the model should load without errors.
+
+## Exporting Animation
+
+In essence, animation is simply a record of the bone movements associated with a
+model.
+
+```{important}
+- **Bone Count, Naming, and Hierarchy:** These must match exactly between the
+ dynamic model and the animation file.
+- Any mismatch can result in odd animation hierarchies or failure to display the
+ animation altogether.
+```
+
+Open the file `crow_detailed_idle_b.max`, which contains the animation for idle
+movements. Select all bones in the scene; there should be **195 selected
+objects**, including all Helpers.
+
+In the **Dagor Export** panel, ensure the following:
+1. Enable the **Export selected objects only** button {bdg-dark-line}`1`.
+2. Explicitly set the animation key range for export {bdg-dark-line}`2`, from
+ **frame 0 to 150**.
+
+
+
+```{note}
+The animation range displayed on the timeline **is irrelevant** for export. You
+must manually specify the key range in the export settings.
+```
+
+Enabling the checkboxes {bdg-dark-line}`4` significantly increases animation
+precision, which is essential in this case to prevent visual errors such as
+"sliding" feet.
+
+```{note}
+Exporting the animation with high precision increases the file size by hundreds
+of times. Use this option only when it is really necessary.
+```
+
+Without these checkboxes, animations are compressed hierarchically, accumulating
+minor errors over time. This can cause noticeable visual discrepancies. Enabling
+high precision minimizes these errors, ensuring smoother playback.
+
+Leave the **scaling checkbox** unchecked if there is no scaling animation in the
+scene (as in this crow example).
+
+Click the **Export Animation** button {bdg-dark-line}`3`.
+
+Naming and location conventions for animation files are similar to those for
+dynamic models:
+- Store animations in:
+ `//develop/assets/dev/gameRes/creatures/animation/crow`
+- Use the `.a2d` extension.
+- Naming guidelines:
+ - Use the same base name as the dynamic model but omit LOD-related or
+ dynamic-model-specific postfixes.
+ - Avoid key script processor keywords in the filename (e.g., dynamic-related
+ terms).
+
+In this example, save the animation as: `crow_detailed_idle_b.a2d`.
+
+Next to this file, there should also be a configuration file named:
+`crow_detailed_idle_b.a2d.blk`.
+
+This file contains individual properties and settings for the animation.
+
+**Example:**
+
+```text
+name:t="crow_detailed_idle_b.a2d" // Name of the animation linked to this script
+opt:b=no // Conservative optimization disabled.
+posEps:r=0.001 // Position compression accuracy during project build.
+ // Higher values (e.g., 0.1 > 0.01) reduce file size but decrease accuracy.
+rotEps:r=0.001 // Rotation compression accuracy. Higher values reduce accuracy.
+sclEps:r=0.1 // Scaling compression accuracy (if applicable).
+```
+
+This is an example of a `.blk` script used for post-export processing. Carefully
+adjust compression values to balance file size and animation precision.
+
+After exporting, open the animation in the [*Asset
+Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md). If you
+select the exported animation (`crow_detailed_idle_b`), you might initially see
+nothing:
+
+
+
+**Steps to Display the Animation:**
+1. Assign the dynamic model {bdg-dark-line}`1` associated with the animation.
+2. Re-select the animation {bdg-dark-line}`2`.
+
+At this point, the crow {bdg-dark-line}`3` should appear in the scene in the
+first frame of the animation instead of the default T-pose.
+
+**Playing the Animation:**
+- To play the animation, click the play button {bdg-dark-line}`4`.
+- By default, animations play very quickly. Use the speed slider
+ {bdg-dark-line}`5` to reduce playback speed (e.g., set it to `0.5x` for
+ smoother observation).
+
+
+
+At this stage, all necessary data has been exported from *3ds Max*:
+- Animation
+- Bone structure
+- Hierarchy
+- Model and its LODs
+
+The final step is updating the `.blk` scripts to define the roles of each
+component (e.g., bones, animations, models) for integration into *Dagor Engine*.
+
+## Principles of Working with Dynamic Models in Dagor and Resource Integration
+
+The `*.blk` files found alongside models in `creatures.zip` are scripts that
+automate the preparation, conversion, and generation of resources for the game.
+These scripts, written in an internal language for *Dagor*, define specific
+processes for managing game entities and objects.
+
+```{note}
+**Reloading After Changes:**
+- Some `.blk` files (e.g., `.folder.blk`) only update after reloading the
+ [*Asset Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md)
+ or the [*daEditor*](../../dagor-tools/daeditor/daeditor/daeditor.md).
+- In contrast, files related to animations can be edited dynamically, and
+ changes take effect immediately.
+```
+
+The `.folder.blk` file processes all contents of the directory it resides in,
+along with its subdirectories. This is particularly useful when working with a
+large number of resources.
+
+**Example: Processing Animations**
+
+`//develop/assets/dev/gameRes/creatures/animation/.folder.blk`
+
+```text
+export{
+ gameResPack:t="anims.grp" // Export processed animation resources into the specified game resource package
+ exported:b=yes // Perform the export
+}
+
+virtual_res_blk{ // Create virtual resource
+ find:t="^(.*)\.a2d$" // Locate all *.a2d files in the directory tree
+ className:t="a2d" // Assign the "a2d" class, marking them as animation objects
+ contents{
+ opt:b=yes // Enable conservative optimization
+ posEps:r=0.01 // Compression accuracy for position
+ rotEps:r=0.2 // Compression accuracy for rotation
+ sclEps:r=0.1 // Compression accuracy for scaling
+ }
+}
+```
+
+This script:
+1. Exports animations into the `anims.grp` game resource package.
+2. Finds all `*.a2d` files, assigns them the "a2d" class, and processes them as
+ animations.
+3. Applies compression with default thresholds to balance file size and
+ animation quality.
+
+**Example: Processing Dynamic Models**
+
+`//develop/assets/dev/gameRes/creatures/.folder.blk`
+
+This script is slightly more complex but follows the same structure.
+
+```text
+scan_assets:b=yes // Search for objects
+scan_folders:b=yes // Search for directories
+
+export{
+ ddsxTexPack:t="creatures.dxp.bin" // Process textures and store them in this game resource
+ gameResPack:t="creatures.grp" // Store processed models and virtual objects here
+}
+
+virtual_res_blk{ // Create virtual resource
+ find:t="^((.*)_dynmodel)\.lod00\.dag$" // Locate dynamic model files
+ stopProcessing:b=false // Continue processing this object in other blocks
+ className:t="skeleton" // Generate skeleton from dynamic models
+ name:t="$2_skeleton" // Assign a skeleton name
+ contents{
+ addSkinNodes:b=yes // Attach skin nodes to the skeleton
+ reduceNodes:b=yes // Remove bones without Skin vertices
+ }
+}
+
+virtual_res_blk{ // Create virtual resource
+ find:t="^((.*)_dynmodel)\.lod00\.dag$" // Scan again for dynamic models
+ stopProcessing:b=false
+ className:t="DynModel" // Assign "DynModel" class to dynamic models
+ name:t="$2_dynmodel" // Assign a name to dynamic model objects
+ contents{
+ lod{
+ range:r=3000; fname:t="$1.lod00.dag"; // Set LOD00 rendering distance to 3000 meters
+ }
+ ref_skeleton:t="$2_skeleton" // Assign the corresponding skeleton
+ }
+}
+```
+
+**Key Steps:**
+
+1. **Search Directories:**
+ - Use `scan_assets:b=yes` and `scan_folders:b=yes` to locate objects and
+ directories.
+
+2. **Export Textures and Models:**
+ - Textures are saved in `creatures.dxp.bin`.
+ - Models and virtual objects are saved in `creatures.grp`.
+
+3. **Generate Skeletons:**
+ - Find models named as `*_dynmodel.lod00.dag`.
+ - Create skeletons for these models, removing unused bones and linking skins.
+
+4. **Assign Properties to Models:**
+ - Assign a rendering distance of `3000` meters for LOD00.
+ - Link dynamic models to the generated skeletons.
+
+After running the scripts, the resulting files (`creatures.grp` and
+`creatures.dxp.bin`) are ready for integration into the game. These resources:
+- Contain properly configured skeletons, bones, and skin objects.
+- Are optimized for gameplay with attributes such as rendering distance and
+ compression settings.
+
+These configurations ensure all objects are processed as game entities with
+specific classes and properties.
+
+## Real Resources vs. Virtual Resources and Objects in Dagor
+
+**Key Concepts:**
+
+Understanding the distinction between **real resources** (files on disk),
+**virtual resources** (engine-created entities), and **virtual resources
+converted into game entities** is critical when working with *Dagor*.
+
+The *Dagor Engine* processes exported files (e.g., `*.a2d`, `*.dag`) into
+optimized formats (`*.dxp.bin`, `*.grp`) ready for game use. While physical
+files on disk represent raw data, virtual objects in the engine are entities
+assigned game properties. These virtual objects are subsequently written into
+binary game resources.
+
+**Real vs. Virtual Resources:**
+
+1. **Exported Files:** Files from tools like *3ds Max* include animations
+ (`*.a2d`) and dynamic models (`*.dag` with LOD levels). These raw files are
+ intermediate resources.
+
+2. **Engine Optimization:** The *Dagor Engine* transforms exported data,
+ applying compression and processing to meet game engine requirements (e.g.,
+ reducing file size, optimizing for performance).
+
+3. **Game Resource Files:** Final outputs like `*.dxp.bin` and `*.grp` are the
+ only formats recognized by the game executable. Scripts (`*.blk`) process the
+ exported data into game entities.
+
+**Example: Crow Dynamic Model Breakdown**
+
+From a single dynamic model file, the following game entities can be generated
+using `*.blk` scripts:
+- Skeleton (`crow_skeleton`)
+- Model Shell
+- Physics Model
+- Collision Data
+
+Notably, physics {bdg-dark-line}`1` and collision {bdg-dark-line}`2` data may
+remain empty if unnecessary for the object, as in the case of the crow model.
+For example:
+
+- **Skeleton:** Visible because it was explicitly processed in the script.
+
+
+
+
+- **Physics & Collisions:** Empty because the script did not define these
+ components.
+
+
+
+## Configuring `*_char.animchar.blk`
+
+This script assembles the virtual resources (e.g., skeleton, model, physics)
+into a character with complex structures that the game code can manage
+efficiently.
+
+**Example:** `//develop/assets/dev/gameRes/creatures/characters/crow/crow_detailed_a_char.animchar.blk`
+
+```text
+//no_anim_dist:r=100 // Distance beyond which animations stop (commented out)
+//no_render_dist:r=200 // Distance beyond which the model stops rendering (commented out)
+//useCharDep:b=no // Not used here; consult specific documentation if needed
+rootNode:t="root" // Starting bone of the skeleton
+dynModel:t="crow_detailed_a_dynmodel" // Dynamic model name for the character
+skeleton:t="crow_detailed_a_skeleton" // Skeleton name for the character
+animTree:t="crow_detailed_a_animbnl" // Animation description tree for blending and rules
+physObj:t="crow_detailed_a_phobj" // Physical model for the character
+
+//ref_states{ // Optional reference states (commented out)
+// state:t="stand_ground"
+//}
+```
+
+**Key Points:**
+
+1. Operates exclusively on **virtual objects** (e.g., skeletons, models).
+2. Does not search for or sort physical files; all objects must already exist as
+ virtual entities.
+3. Assembles the higher-level character structure by linking components (dynamic
+ model, skeleton, physics).
+
+## Configuring `*_dynmodel.dynmodel.blk`
+
+This script applies specific properties to an individual model. Unlike
+`.folder.blk`, which processes groups of files, `*_dynmodel.dynmodel.blk`
+targets a single resource.
+
+**Example:** `//develop/assets/dev/gameRes/creatures/characters/crow/crow_detailed_a_dynmodel.dynmodel.blk`
+
+```text
+ref_skeleton:t="crow_detailed_a_skeleton" // Assign the corresponding skeleton
+
+lod{range:r=2;} // LOD00 switches to LOD01 at 2 meters
+lod{range:r=7;} // LOD01 switches to LOD02 at 7 meters
+lod{range:r=15;} // LOD02 turns off rendering at 15 meters
+```
+
+**Key Points:**
+
+1. The **naming convention** ensures precise targeting of a specific dynamic
+ model (`crow_detailed_a_dynmodel`).
+2. **LOD Configuration:**
+ - `range:r=2`: Transitions from the highest detail (LOD00) to a lower detail
+ (LOD01).
+ - `range:r=15`: Stops rendering entirely beyond this distance.
+3. Links the skeleton to the dynamic model (`ref_skeleton`), ensuring it uses
+ the correct hierarchy.
+
+```{important}
+**Real vs. Virtual:**
+- Real resources are raw files (e.g., `*.a2d`, `*.dag`), while virtual
+ resources are entities created and optimized by the engine.
+- Game resource files (`*.dxp.bin`, `*.grp`) are the final, optimized outputs.
+
+**Script Layers:**
+- `.folder.blk`: Processes groups of resources.
+- `*_char.animchar.blk`: Assembles characters from components like skeletons,
+ models, and physics.
+- `*_dynmodel.dynmodel.blk`: Configures individual models with properties such
+ as LOD ranges.
+```
+
+## Configuring `*_animbnl.animtree.blk`
+
+The `*_animbnl.animtree.blk` file defines the rules for animation states,
+blending, and other related configurations, such as additive animations for a
+character. This script is one of the most complex due to its detailed control
+over animation blending and state transitions.
+
+```{seealso}
+For more information, see
+[daAnimations](../../assets/animation/daanimations.md).
+```
+
+**Key Points:**
+1. **Sequential Execution Matters:** Blocks and commands must be executed in the
+ order they are defined. For instance, a blending controller must be declared
+ before it is used.
+
+2. **Nodes as Units:** A **node** can represent an object, model, or bone. Nodes
+ are identified by names, which are used for configuration.
+
+3. **Critical Documentation:** It is highly recommended to read related
+ documentation thoroughly to understand controllers, states, and blending
+ techniques.
+
+**Example:** `//develop/assets/dev/gameRes/creatures/characters/crow/crow_detailed_a_animbnl.animtree.blk`
+
+**Script Breakdown:**
+
+```text
+export:b=yes // Process the script
+root:t="fifo3" // Root node for animation blending
+defaultForeignAnim:b=yes // Enables blending foreign animations
+```
+
+```text
+nodeMask{ // Defines masks for specific nodes (bones in this case).
+ name:t="body" // Bone name from 3ds Max
+ node:t="Bip01" // Root bone name as recognized by Dagor
+}
+```
+
+- **Purpose:** Aligns the bone naming conventions between *3ds Max* and *Dagor*
+to ensure compatibility. For example, `Bip01` is historically used for root
+bones in *3ds Max*.
+
+```text
+stateDesc{ // Specifies all possible animation states for the character.
+ // In this example states represent conditions like "flying"
+ // and "turning right while flying".
+ defMorphTime:r=0.15 // Transition time between states (morphing)
+ defNodeName:t="*" // Applies to all bones (nodes)
+
+ chan{ // Mixing channel for the "body" and nodes
+ name:t="body"
+ fifo3:t="fifo3" // Controller type
+ nodeMask:t="" // Applies to all nodes
+ cond_target:i=1
+ }
+
+ chan{ // Mixing channel for the "root" and nodes
+ name:t="root"
+ fifo3:t="fifo3_root"
+ nodeMask:t=""
+ cond_target:i=0
+ }
+
+ state{ // Example animation state
+ name:t="crow_a_fly_turn_right" // State name
+ body{ name:t="crow_a_fly_turn_right"; } // Links the state to an animation for the "body"
+ }
+}
+```
+
+- **States:** Represent high-level conditions that can mix multiple animations
+ or transitions.
+- **Channels:** Control how specific nodes or groups of bones are blended in
+ animation.
+
+Each animation state is linked to an `AnimBlendNodeLeaf{}` block that specifies
+the actual animation file (`*.a2d`) and its properties.
+
+```text
+AnimBlendNodeLeaf{
+ a2d:t="crow_detailed_fly_turn_right" // Animation file
+
+ continuous{
+ name:t="crow_a_fly_turn_right" // Internal name linked to the state
+ key_start:t="fly_turn_right_start" // Start keyframe from 3ds Max
+ key_end:t="fly_turn_right_end" // End keyframe from 3ds Max
+ time:r=2.0 // Playback duration
+ own_timer:b=yes // Unique timer for this animation
+ eoa_irq:b=yes // End-of-animation interrupt marker
+ }
+}
+```
+
+- **Purpose:** Prepares the raw animation file for use in the defined states.
+- **Keys:** Define specific animation segments exported from 3ds Max.
+
+Blend controllers manage the mixing of different animation states.
+
+```text
+AnimBlendCtrl{
+ fifo3{
+ name:t="fifo3" // Name of the controller
+ varname:t="fifo3_var" // Variable name for internal use
+ }
+
+ fifo3{
+ name:t="fifo3_root"
+ varname:t="root_ctrl"
+ }
+}
+```
+
+**Key Execution Steps:**
+
+1. **Define Controllers:** Controllers like `fifo3` and `fifo3_root` are
+ declared first.
+
+2. **Specify States:** States such as `crow_a_fly_turn_right` link animations to
+ logical conditions.
+
+3. **Create Animation Nodes:** For each state, an `AnimBlendNodeLeaf{}` is
+ created to prepare the corresponding animation file.
+
+4. **Test the Configuration:** Use the *Dagor Engine* visualization tools (e.g.,
+ the [*Asset
+ Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md)) to
+ verify the setup.
+
+```{important}
+- **Purpose:** The `*_animbnl.animtree.blk` file establishes a framework for
+ managing animation states and blending.
+- **Components:**
+ 1. **Node Masks:** Define skeleton relationships.
+ 2. **State Descriptions:** Link logical states to animations.
+ 3. **Animation Nodes:** Prepare animations for state transitions.
+ 4. **Controllers:** Manage blending logic.
+```
+
+When viewed {bdg-dark-line}`1` in the [*Asset
+Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md), the
+following elements should appear based on this configuration:
+
+1. **Skeleton Nodes:** The root node (`Bip01`) and associated hierarchy
+ {bdg-dark-line}`2`.
+2. **Blend Nodes:** All defined `AnimBlendNodeLeaf` elements {bdg-dark-line}`3`,
+ corresponding to animation states.
+3. **Controllers:** All specified controllers (`fifo3`, `fifo3_root`).
+4. **States:** List of all defined animation states, such as
+ `crow_a_fly_turn_right`.
+
+
+
+## Testing the Character in Asset Viewer
+
+**Step 1: Checking Files in Asset Viewer**
+
+1. Open the [*Asset
+ Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md) and
+ load all the files related to your character {bdg-dark-line}`1`.
+
+ **Goal:** Ensure no errors appear in the console {bdg-dark-line}`2`. A
+ successful result looks like this:
+
+
+
+2. **Common Checkpoints:**
+ - Inspect every file linked to the character (e.g., animations, blend
+ controllers, state descriptions).
+ - Console errors indicate an issue with one or more configurations.
+
+**Step 2: Local Resource Building**
+
+1. **Initiate `daBuild`:**
+ To include the created character in `.grp` and `.dxp.bin` files:
+ - Navigate to the folder {bdg-dark-line}`1` containing the character
+ resources (e.g., `crow`).
+ - Right-click the folder and select the **Export All (PC)** option
+ {bdg-dark-line}`2`.
+
+
+
+2. **Monitor Build Progress:**
+ - The building process starts and may take a significant amount of time
+ depending on your computer's performance.
+ - Build progress is displayed in the console. A successful build ends with an
+ output similar to this {bdg-dark-line}`1`:
+
+
+
+3. **Integration:**
+ Once built, the character is ready for inclusion in the game.
+
+## Common Errors
+
+### Error: Bracket Mismatches
+
+Missing or extra brackets can cause critical errors during script parsing.
+
+**Example:**
+
+```text
+BLK error 'D:/dagor2/enlisted/develop/assets/dev/gameRes/creatures/characters/crow/crow_detailed_a_animbnl.animtree.blk',228: unexpected EOF:
+```
+
+- **Cause:** Unmatched brackets result in an "unexpected end of file" (EOF)
+ error.
+- **Solution:** Carefully check the script for bracket pairs, especially in
+ deeply nested blocks.
+
+
+
+### Error: Incorrect Data Types
+
+**Example:**
+
+```text
+BLK invalid time (type real) value in line 209 of 'D:/dagor2/enlisted/develop/assets/dev/gameRes/creatures/characters/crow/crow_detailed_a_animbnl.animtree.blk': 'sdfsd'
+DataBlockParser: invalid value 'sdfsd' at line 209 of file '.../crow_detailed_a_animbnl.animtree.blk'
+```
+
+- **Cause:** A non-numeric value (e.g., string) is assigned to a numeric
+ property like `time`.
+- **Solution:** Review and correct the value. Ensure all numeric parameters
+ are defined as valid numbers (e.g., `time:r=2.0`).
+
+
+
+### Debugging Tips
+
+1. **Error Line Numbers:** While error messages indicate a line number, they may
+ not always be accurate. Errors often occur earlier in the script but only
+ show later.
+
+2. **Manual Validation:**
+ - Verify the syntax for critical properties such as `state`, `chan`, and
+ `AnimBlendNodeLeaf`.
+ - Cross-check with examples or templates to ensure consistency.
+
+3. **Progressive Testing:**
+ - Test the script incrementally by adding elements in small chunks.
+ - This approach isolates errors more effectively.
+
+### Summary
+
+**Key Steps for Testing:**
+
+1. Verify all character files in the [*Asset
+ Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md).
+2. Perform a local build using the the *daBuild* and monitor for successful
+ output.
+3. Address any errors detected during the process.
+
+**Common Pitfalls:**
+
+- Missing or extra brackets (`{`, `}`).
+- Incorrect value types (e.g., string instead of number).
+- Errors at incorrect line numbers due to delayed detection.
+
+By following these steps and debugging techniques, you can ensure your character
+is fully functional and ready for game integration.
+
+```{tip}
+If you encounter any errors or have questions regarding this document, please
+reach out to the author directly at {octicon}`mail;1.4em;sd-text-info`
+.
+```
+
+
diff --git a/_docs/source/tutorials/dng-non-human-char/index.rst b/_docs/source/tutorials/dng-non-human-char/index.rst
new file mode 100644
index 000000000..044a406ed
--- /dev/null
+++ b/_docs/source/tutorials/dng-non-human-char/index.rst
@@ -0,0 +1,11 @@
+
+Non-Human Character: Step-by-Step Guide
+=========================================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+
+ dng_non_human_char.md
+
+
diff --git a/_docs/source/tutorials/index.rst b/_docs/source/tutorials/index.rst
index 548b4d193..79143c335 100644
--- a/_docs/source/tutorials/index.rst
+++ b/_docs/source/tutorials/index.rst
@@ -9,5 +9,7 @@ Guides and step-by-step instructions to help you master the Dagor Engine.
:caption: Contents:
create-mission-wt/index.rst
+ dng-non-human-char/index.rst
+ wt-designing-vehicle-deformations/index.rst
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_01.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_01.jpg
new file mode 100644
index 000000000..95f35ba48
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_01.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_02.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_02.jpg
new file mode 100644
index 000000000..05e26e4f6
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_02.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_03.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_03.jpg
new file mode 100644
index 000000000..c4e8fef60
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_03.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_04.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_04.jpg
new file mode 100644
index 000000000..fecfb889a
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_04.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_05.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_05.jpg
new file mode 100644
index 000000000..b720ebb10
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_05.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_06.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_06.jpg
new file mode 100644
index 000000000..d60ec0e00
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_06.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_07.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_07.jpg
new file mode 100644
index 000000000..7983921be
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_07.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_08.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_08.jpg
new file mode 100644
index 000000000..904a44abe
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_08.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_09.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_09.jpg
new file mode 100644
index 000000000..ea188cb25
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_09.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_10.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_10.jpg
new file mode 100644
index 000000000..344a53999
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_10.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_11.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_11.jpg
new file mode 100644
index 000000000..70df7e138
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_11.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_12.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_12.jpg
new file mode 100644
index 000000000..e82b852d0
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_12.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_13.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_13.jpg
new file mode 100644
index 000000000..cbaee9513
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_13.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_14.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_14.jpg
new file mode 100644
index 000000000..57d807098
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_14.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_15.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_15.jpg
new file mode 100644
index 000000000..fb32a65b4
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_15.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_16.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_16.jpg
new file mode 100644
index 000000000..692be6940
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_16.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_17.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_17.jpg
new file mode 100644
index 000000000..9b0abc5ee
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_17.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_18.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_18.jpg
new file mode 100644
index 000000000..ece15bb8b
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_18.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_19.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_19.jpg
new file mode 100644
index 000000000..f27ed4f5a
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_19.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_20.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_20.jpg
new file mode 100644
index 000000000..a67c9cefb
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_20.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_21.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_21.jpg
new file mode 100644
index 000000000..86094cd78
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_21.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_22.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_22.jpg
new file mode 100644
index 000000000..8d47dd22d
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_22.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_23.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_23.jpg
new file mode 100644
index 000000000..c8f28c612
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_23.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_24.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_24.jpg
new file mode 100644
index 000000000..f0f610432
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_24.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_25.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_25.jpg
new file mode 100644
index 000000000..be8499fb9
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_25.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_26.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_26.jpg
new file mode 100644
index 000000000..a3a660b20
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_26.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_27.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_27.jpg
new file mode 100644
index 000000000..69baad27c
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_27.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_28.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_28.jpg
new file mode 100644
index 000000000..360848526
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_28.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_29.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_29.jpg
new file mode 100644
index 000000000..b6bb69eb0
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_29.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_30.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_30.jpg
new file mode 100644
index 000000000..c91e5a7ad
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_30.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_31.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_31.jpg
new file mode 100644
index 000000000..29b39939d
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_31.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_32.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_32.jpg
new file mode 100644
index 000000000..38c87ebaa
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_32.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_33.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_33.jpg
new file mode 100644
index 000000000..bce6bd011
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_33.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_34.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_34.jpg
new file mode 100644
index 000000000..59d6a954f
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_34.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_35.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_35.jpg
new file mode 100644
index 000000000..436169d3d
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_35.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_36.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_36.jpg
new file mode 100644
index 000000000..e34c56d2a
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_36.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_37.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_37.jpg
new file mode 100644
index 000000000..48fab659a
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_37.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_38.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_38.jpg
new file mode 100644
index 000000000..73d790abc
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_38.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_39.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_39.jpg
new file mode 100644
index 000000000..17f220fb1
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_39.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_40.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_40.jpg
new file mode 100644
index 000000000..b0362050c
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_40.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_41.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_41.jpg
new file mode 100644
index 000000000..cd00731d7
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_41.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_42.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_42.jpg
new file mode 100644
index 000000000..b172048eb
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_42.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_43.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_43.jpg
new file mode 100644
index 000000000..fd3e2c87a
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_43.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_44.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_44.jpg
new file mode 100644
index 000000000..27f20954c
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_44.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_45.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_45.jpg
new file mode 100644
index 000000000..b64e2261c
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_45.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_46.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_46.jpg
new file mode 100644
index 000000000..5b9088b16
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_46.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_47.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_47.jpg
new file mode 100644
index 000000000..cb0f80348
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_47.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_48.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_48.jpg
new file mode 100644
index 000000000..2d3cd8402
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_48.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_49.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_49.jpg
new file mode 100644
index 000000000..064cf664b
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_49.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_50.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_50.jpg
new file mode 100644
index 000000000..a0892bcd1
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_50.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_51.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_51.jpg
new file mode 100644
index 000000000..2eef6df33
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_51.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_52.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_52.jpg
new file mode 100644
index 000000000..0d0868f85
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_52.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_53.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_53.jpg
new file mode 100644
index 000000000..80f364167
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_53.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_54.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_54.jpg
new file mode 100644
index 000000000..da16c530a
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_54.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_55.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_55.jpg
new file mode 100644
index 000000000..1b74b5ff4
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_55.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_56.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_56.jpg
new file mode 100644
index 000000000..391491a91
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_56.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_57.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_57.jpg
new file mode 100644
index 000000000..8683938e8
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_57.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_58.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_58.jpg
new file mode 100644
index 000000000..b7b065cd8
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_58.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_59.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_59.jpg
new file mode 100644
index 000000000..68f524129
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_59.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_60.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_60.jpg
new file mode 100644
index 000000000..6f2fa94ff
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_60.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_61.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_61.jpg
new file mode 100644
index 000000000..ff69e10db
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_61.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_62.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_62.jpg
new file mode 100644
index 000000000..677f86602
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_62.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_63.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_63.jpg
new file mode 100644
index 000000000..bf43303e8
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_63.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_64.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_64.jpg
new file mode 100644
index 000000000..30cdcb097
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_64.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_65.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_65.jpg
new file mode 100644
index 000000000..9f35fda4d
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_65.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_66.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_66.jpg
new file mode 100644
index 000000000..7996d591d
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_66.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_67.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_67.jpg
new file mode 100644
index 000000000..83fc045e9
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_67.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_68.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_68.jpg
new file mode 100644
index 000000000..ae2360d9e
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_68.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_69.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_69.jpg
new file mode 100644
index 000000000..690dc11b3
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_69.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_70.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_70.jpg
new file mode 100644
index 000000000..030289e60
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_70.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_71.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_71.jpg
new file mode 100644
index 000000000..2a25585da
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_71.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_72.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_72.jpg
new file mode 100644
index 000000000..bd6ae51d6
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_72.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_73.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_73.jpg
new file mode 100644
index 000000000..c4c998fdf
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_73.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_74.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_74.jpg
new file mode 100644
index 000000000..f6deee41a
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_74.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_75.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_75.jpg
new file mode 100644
index 000000000..4f891c96c
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_75.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_76.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_76.jpg
new file mode 100644
index 000000000..16a251ce0
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_76.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_77.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_77.jpg
new file mode 100644
index 000000000..43422e09d
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_77.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_78.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_78.jpg
new file mode 100644
index 000000000..8d64e835a
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_78.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_79.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_79.jpg
new file mode 100644
index 000000000..8972da30e
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_79.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_80.jpg b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_80.jpg
new file mode 100644
index 000000000..89e88dcb6
Binary files /dev/null and b/_docs/source/tutorials/wt-designing-vehicle-deformations/_images/wt_designing_vehicle_deformations_80.jpg differ
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/index.rst b/_docs/source/tutorials/wt-designing-vehicle-deformations/index.rst
new file mode 100644
index 000000000..4559b4522
--- /dev/null
+++ b/_docs/source/tutorials/wt-designing-vehicle-deformations/index.rst
@@ -0,0 +1,11 @@
+
+Designing Vehicle Deformations
+=========================================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+
+ wt_designing_vehicle_deformations.md
+
+
diff --git a/_docs/source/tutorials/wt-designing-vehicle-deformations/wt_designing_vehicle_deformations.md b/_docs/source/tutorials/wt-designing-vehicle-deformations/wt_designing_vehicle_deformations.md
new file mode 100644
index 000000000..f7017fc27
--- /dev/null
+++ b/_docs/source/tutorials/wt-designing-vehicle-deformations/wt_designing_vehicle_deformations.md
@@ -0,0 +1,1049 @@
+# Designing Vehicle Deformations
+
+## Overview
+
+This article provides a step-by-step guide for creating vehicle deformations. It
+uses three vehicle models as examples, detailing how to implement destruction on
+them. The focus is on working with existing vehicles. You'll need advanced
+knowledge of *3ds Max* and a thorough understanding of how *Dagor Engine*
+handles destruction.
+
+### Prerequisites
+
+**Plugins and Tools:**
+
+- *Dagor import/export plugin*.
+- [*Dagor 2 Transfer Vertex Position to Vertex Color
+ Tool*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/transfer_vertex_position_to_vertex_color_tool.md).
+- [*Dagor 2 Damages Setup
+ Tool*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/damages_setup_tool.md)
+ for setting up rigid-body destruction.
+- [*Dagor 2 Fast Editor User
+ Properties*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/fast_editor_user_properties.md)
+ for streamlined property editing.
+- [*Dagor 2 Fix Normal Orientation
+ Tool*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/fix_normal_orientation_tool.md)
+ to preemptively correct normal issues in dynamic objects.
+- [*RayFire plugin*](https://rayfirestudios.com/) for glass and wood
+ destruction.
+
+### Platform Specifics
+
+The examples and guidelines are based on *War Thunder*. Projects based on
+*daNetGame* framework will follow the same principles, with minor differences in
+shaders.
+
+### Version Requirements
+
+- Minimum *3ds Max 2021* is required.
+- All example files were created using *3ds Max 2024*.
+
+## General Concepts of Vehicle Deformations and Destruction
+
+### Key Constraints
+
+The primary limitation in a single Dagor `.dag` model file is that only **one
+deformable object** can exist. If multiple deformable objects are present, the
+engine will prioritize the largest object by bounding box, as indicated in logs:
+
+```text
+43.52 [E] multiple nodes with dynamic_deformed shader in instance, choosing the biggest one
+```
+
+Rigid-body (non-deformable) objects are limited to **a few hundred per model**.
+These rigid objects should be identified and separated during the design phase
+to achieve the desired destruction effect. Objects that visually detach during
+real-world vehicle destruction or significantly differ in material (e.g.,
+wheels, wooden fences, glass, plastic panels) must be isolated into separate
+components by material type.
+
+## Preparing the Model for Destruction
+
+### Importing the Model
+
+Import the `.dag` model:
+{download}`m123_truck.lod00.zip
+`
+
+For material insights, preview the model with textures in the [*Asset
+Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md):
+`//develop/assets/entities/vehicles/cars_modern/m123_truck.lod00.dag`
+
+
+
+### Setting Up Layers
+
+Organize your scene into layers for a structured workflow:
+
+1. **DeformStart**: Contains objects to be deformed.
+2. **DeformEnd**: Contains objects after deformation.
+
+ ```{important}
+ Pay close attention to the naming of objects in **DeformStart** and
+ **DeformEnd** layers. The quantity and naming must be identical. This
+ consistency will prevent indexing errors in the order of vertices in the
+ final model during the subsequent merging of all deformable objects.
+ ```
+
+3. **RigidObj**: Houses rigid, detachable components.
+4. **EXPORT**: Final output layer.
+
+#### Object Identification
+
+- **Green (1)**: Deformable metal requiring tessellation (placed in
+ **DeformStart**).
+- **Brown (3)**: Metal with sufficient detail, no tessellation needed (also in
+ **DeformStart**).
+- **Blue (2)**: Metal requiring separation for realistic deformation (e.g.,
+ doors).
+- **Purple (4)**: Rigid objects, such as detachable components (placed in
+ **RigidObj**).
+
+
+
+## Deforming Large Rigid Components
+
+Pre-deform large rigid objects to improve realism post-separation. Minor parts
+can remain mostly intact. For example, large tires should appear damaged and
+should resemble this degree of deformation:
+
+
+
+## Configuring Rigid Components
+
+1. **Set Active Layer**: Work in the **RigidObj** layer.
+
+
+
+2. **Launch Script**: Use [*Dagor 2 Damages Setup
+ Tool*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/damages_setup_tool.md).
+3. **Reset Pivots**: Reset pivots to object centers.
+
+
+
+### Script Adjustments
+
+- Change `materialName:t="wood_solid"` to `materialName:t="metal"` for proper
+ sound and effects.
+- Change `density:r=150` to `density:r=250` for metal properties.
+
+
+
+### Applying Changes
+
+- **(1)** Select all objects in **RigidObj** layer.
+- **(2)** Apply the script to generate accurate collision hierarchies and
+ user-defined properties.
+
+
+
+
+
+### Adjusting Collision Boxes for Objects
+
+As observed, a collision box **(1)** is generated for each object, but it does
+not always precisely conform to the shape of the objects **(2)**. Therefore, it
+is necessary to manually adjust the collision boxes in the scene to achieve
+accurate coverage.
+
+For instance, when working with wheels, align the box size to the wheel's
+diameter and duplicate the box collisions by rotating them. This will create an
+approximate cylinder shape. Unfortunately, *Dagor Engine* does not support
+native cylinder or sphere collisions, so all shapes must be approximated using
+boxes. The final scene will look as follows:
+
+
+
+```{note}
+All scaling, positioning, and rotation adjustments must be performed in **Local
+Space**.
+
+
+
+Failure to do so will result in distortions and inaccuracies after export to
+*Dagor Engine*. Correcting these issues later is extremely difficult and
+time-consuming.
+```
+
+Notice that components such as wheels **(1)**, headlight lenses **(1)**, and
+mudguards **(1)** are defined using multiple collision boxes. For complex
+shapes, take an existing collision box and modify it to match the object's
+contours as closely as possible. If one box is insufficient, add as many as
+necessary. Simpler shapes, such as side mirrors **(2)**, can typically be
+described with a single box.
+
+To streamline the review of object properties, it is recommended to use the
+[*Dagor 2 Fast Editor User
+Properties*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/fast_editor_user_properties.md)
+script. After installation, the script is activated with `Alt`+`Ctrl`. For all
+selected objects **(1)**, it will display the contents of their **custom user
+properties** **(3)** in a dedicated window **(2)**, eliminating the need to
+individually access these properties via context menus. To hide the script
+window, press `Alt`+`Shift`.
+
+With this step, the configuration of solid objects is complete. Hide this layer,
+as it will no longer be needed before export.
+
+## Configuring the Deformable Parts of the Vehicle
+
+Begin by configuring objects within the **DeformStart** and **DeformEnd**
+layers. For realistic vehicle deformation, the model must have sufficient
+detail. This often necessitates tessellating the model to enhance deformation
+quality. For example, attempting to deform fuel tanks **(1)**, the vehicle base
+**(2)**, wheel arches and fenders **(4)**, mudguards **(3)**, and the cab
+**(5)** will result in issues if there are insufficient triangles to allow
+proper deformation. Even separate components, like the door **(6)**, require
+tessellation.
+
+
+
+After tessellation, the model should not exceed 65,000 triangles in total. A
+properly tessellated vehicle should look approximately like this:
+
+
+
+Unfortunately, there are no strict tessellation rules. A good recommendation is
+to create cuts every 20-30 cm, striking a balance between visual quality and the
+triangle count. Aim to keep the triangle count as low as possible without
+sacrificing deformation quality. The optimal balance comes with experience after
+deforming 3-4 models.
+
+Next, copy all objects from the **DeformStart** layer into the **DeformEnd**
+layer. **Pay close attention to naming conventions**. Ensuring consistent naming
+is crucial for preserving vertex indexation when combining pieces later.
+Matching the vertex indexing between the initial (undeformed) and final (fully
+deformed) models is essential. Hide the **DeformStart** layer, as it contains
+the undeformed model version needed only at the end of the workflow to bake
+vertex position data into vertex colors. Verify that all names and object
+sequences are identical:
+
+
+
+At this stage, you are ready to begin deformation. **Save the scene before
+starting each deformation step**. Results may not always match your
+expectations, and rolling back is often easier. Consider setting undo steps to
+at least 300-400 for safety. However, saving regularly is more reliable, as
+*3ds Max* may crash unexpectedly during deeper undo actions.
+
+### Deformation Process
+
+Deforming the vehicle involves using **Soft Selection** on vertices to create a
+realistic crumpled effect. Start with broader adjustments and refine as you go.
+For example:
+
+- **Doors**: Open or partially open the doors before deformation. Doors nearly
+ always open or partially detach during vehicle collisions.
+- **Fragile parts**: Separate brittle components rather than deform them.
+
+Initially, apply an **FFD (Free Form Deformation)** modifier to all objects for
+rough adjustments:
+
+
+
+Then carefully deform individual vehicle elements:
+
+
+
+### Combining Layers
+
+After deformation, merge all parts in the **DeformStart** layer and then do the
+same for the **DeformEnd** layer. When merging, ensure that objects are attached
+in numerical order (e.g., attach to object `*000` in sequence). This step is
+critical to maintain consistent vertex indexing. The result will be two distinct
+models – deformed and undeformed. For convenience, move the pivot point of each
+model to the center of the scene and perform a **Reset Transform**. This step
+helps prevent potential issues with normals during export. Tools such as the
+[*Dagor 2 Fix Normal Orientation
+Tool*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/fix_normal_orientation_tool.md)
+or *3ds Max*'s built-in tools can assist with this. The scene should now appear
+as follows:
+
+
+
+### Transferring Vertex Positions to Vertex Colors
+
+Run the [*Dagor 2 Transfer Vertex Position to Vertex Color
+Tool*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/transfer_vertex_position_to_vertex_color_tool.md)
+script. Select the undeformed model, set the deformed model as the source in the
+**Pick Source Object** field, and click **Transfer Vertex Position to VColor!**
+This will map the deformed model's vertex position changes into the vertex color
+channel of the undeformed model. Check the vertex color channel to confirm it
+contains data. The undeformed model should now look similar to this:
+
+
+
+The intensity of the vertex colors indicates the degree of deformation –
+stronger deformations produce more vibrant colors, while minimal deformations
+appear closer to gray. This step verifies the successful transfer of position
+data into vertex colors. The deformed model is no longer needed and can be
+hidden along with the **DeformEnd** layer.
+
+### Assigning Custom User Properties
+
+Assign the following **custom user properties** to the undeformed model to
+ensure correct behavior in *Dagor Engine*:
+
+```text
+animated_node:b=yes
+physObj:b=yes
+collidable:b=no
+density:r=15500
+massType:t="none"
+```
+
+The `density:r=15500` parameter is set based on the vehicle type. For a heavy
+vehicle, use a value of ~`15,500`; for passenger cars, values between `5,000` and
+`7,000` are typical.
+
+
+
+### Final Scene Setup
+
+Complete the general scene configuration to ensure the vehicle interacts
+properly in *Dagor Engine*. The vehicle body must behave correctly as a physical
+object and respond as intended within the engine.
+
+## Auxiliary Collision Objects
+
+To ensure proper interactions between the destructible vehicle model and tanks
+or other vehicles, auxiliary collision boxes need to be added to the scene.
+These objects are designed similarly to standard collision boxes but must be
+attached
+
+to the main deformable body of the vehicle.
+
+
+
+- **Stepped Base (2)**: Enables wheeled vehicles with smaller wheel diameters to
+ visually climb onto a deformed section of the vehicle.
+- **Bumper (2) and External Platforms**: Ensure the detached wheels are pushed
+ correctly away from the main body.
+- **Box (3)**: Simulates falling glass fragments dispersing outward.
+- **Cabin (large deformation)**: Prevents tanks from driving further by creating
+ a larger physical obstacle.
+- **Box Set (4)**: Facilitates correct interaction with the vehicle's rear bulk.
+- **Rear Platform Box (5)**: Acts as a support platform for smaller debris at
+ the back of the vehicle.
+- **Diagonal Boxes (bottom)**: Prevent the vehicle from landing flat like a
+ slab, instead allowing a natural tilted fall.
+
+
+
+Each vehicle requires tailored auxiliary collision boxes.
+
+## Assigning Dynamic Materials
+
+Since we start with a static model, its materials need to be converted into
+dynamic ones to enable deformation. Dynamic vehicle pieces require specific
+shaders, distinct from static ones. Assign **Dagorrat Material 1** to the
+deformable body of the vehicle. Use the following settings:
+
+
+
+- **(1) Material Name**: Use descriptive naming for clarity.
+- **(2) Material Class**: Set to `dynamic_deformed` to specify the shader type.
+- **(3) Slot 0**: Albedo texture.
+- **(4) Slot 2**: Normal texture packed with metalness (B channel) and
+ smoothness (A channel).
+- **(5) Slot 7**: Damaged metal albedo texture with a fracture/mask in the alpha
+ channel.
+- **(6) Slot 8**: Damaged metal normal map, packed identically to Slot 2.
+
+
+
+Next, assign **Dagorrat Material 2** for solid objects using these settings:
+
+
+
+- **(1) Material Class**: `dynamic_simple`.
+- **(2) Slot 0**: Vehicle's albedo texture.
+- **(3) Slot 3**: Packed normal/metalness/smoothness texture.
+
+
+
+Assign **Dagorrat Material 2** to all non-collision objects within the
+**RigidObj** layer.
+
+```{seealso}
+For more information on complex models with hierarchical materials, see
+[Proxy materials](../../assets/materials/proxymats.md).
+```
+
+## Exporting the Vehicle
+
+To export the completed vehicle:
+
+1. Select all objects in the **DeformStart** and **RigidObj** layers.
+2. Move them to the **EXPORT** layer and make it active.
+3. Export with the following Dagor exporter settings:
+
+
+
+4. Save the output file as (with overwriting):
+`//develop/assets/entities/vehicles/cars_modern/m123_truck_destr.lod00.dag`
+
+Ready-to-export scene:
+{download}`m123_truck_destr_deform.zip
+`
+
+## Testing the Model
+
+1. Open the model in [*Asset
+ Viewer*](../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md) to test
+ its destruction mechanics.
+
+
+
+ - Select the vehicle model **(0)**.
+ - Set the physics engine **(1)**.
+ - Start the simulation **(2)**.
+
+
+
+ If errors occur (commonly shader-related), check the console logs
+
+
+ ```{tip}
+ If the issues remain unresolved, please contact the author of this document
+ at {octicon}`mail;1.4em;sd-text-info` .
+ ```
+
+2. Export resources to Dagor binary formats using the **Export All (PC)** option
+ in the context menu:
+
+
+
+ To suppress warnings from older files during export, add the following block
+ to `application.blk`:
+
+ ```text
+ logerr_to_con{
+ AssetViewer{
+ exclude_re:t="(warning: node from)|(Shader 'simple_aces' not found in bin dump)|(Shader 'simple' not found in bin dump)|(Shader 'land_mesh_combined' not found in bin dump)|(has mesh with 0 faces)|(degenerate tri)|(degenerate mesh node)"
+ }
+ }
+ ```
+
+ This will allow to ignore warnings that outdated shaders are not found.
+ Ensure there are no errors in the console after building:
+
+
+
+3. Modify the destruction configuration for the vehicle in `rendinst_dmg.blk`
+ placed at `//develop/gameBase/config/` directory:
+
+ ```text
+ m123_truck{
+ physRes:t="m123_truck_destr_phobj";
+ hp:r=40;
+ impulseThreshold:r=3;
+ dmPreset:t="metal_light_explosive_props";
+ fx:t="ad_car_wreck";
+ fxScale:r=1;
+ material:t="metal";
+ }
+ ```
+ Below is an explanation of key parameters for configuring destruction
+ properties:
+
+ - `m123_truck`: The name of the primary object that will be destructible.
+ - `m123_truck_destr_phobj`: The name of the virtual object generated from
+ `m123_truck_destr.lod00.dag`. This represents the destructible version of
+ the object and is the result of the processes outlined so far.
+ - `hp:r=40`: Specifies the HP threshold at which the destruction occurs. When
+ the object's HP falls below this value, it will break apart.
+ - `impulseThreshold:r=3`: Defines the impulse force required to trigger
+ destruction. For instance, a collision or impact with a force greater than
+ this value will cause the object to break.
+ - `dmPreset:t="metal_light_explosive_props"`: The destruction model preset to
+ be used. This determines the destruction behavior, including debris
+ generation and dynamics.
+ - `fx:t="ad_car_wreck"`: Specifies the particle effect to be used during the
+ destruction event. For example, this could represent the explosion visuals
+ triggered when the object is destroyed. Other particle effects can be
+ reviewed in this file and substituted as needed.
+ - `fxScale:r=1`: Adjusts the scale of the explosion effect. This parameter
+ may need fine-tuning to match the size of the vehicle or object being
+ destroyed.
+ - `material:t="metal"`: This critical parameter overrides the material
+ settings defined within the `.dag` file. For instance, if the **custom user
+ properties** within the `.dag` file specify `materialName:t="wood"`, but
+ this file specifies `materialName:t="metal"`, the material used for the
+ destroyed parts will be **metal**. **Always remember** that this parameter
+ takes precedence over internal `.dag` settings.
+
+ Adjust the parameters as needed, e.g., particle effects, explosion scaling,
+ or material overrides.
+
+ ```{important}
+ By carefully adjusting these parameters, you can define how the vehicle
+ behaves during destruction events, including material properties, effects,
+ and thresholds for breaking apart.
+ ```
+
+4. Rebuild vfsroms using `create_vfsroms.bat`.
+
+ ```{seealso}
+ For more information, see
+ [Resource Building](../../dagor-tools/resource-building/resource_building.md).
+ ```
+
+ ```{tip}
+ If you encounter any errors or have questions regarding this document, please
+ reach out to the author directly at
+ {octicon}`mail;1.4em;sd-text-info` .
+ ```
+
+**Placing and Testing the Vehicle in a Level:**
+
+1. Open the level in the
+ [*daEditor*](../../dagor-tools/daeditor/daeditor/daeditor.md):
+ `//develop/levels/avg_proto/apex_test_scene/apex_test_scene.level.blk`.
+
+
+
+2. Export the level to a binary format using the top menu. Save the level after
+ successful export.
+
+
+
+3. Download test mission: {download}`test_01_car.zip
+ `
+
+4. Place it in:
+ `//develop/gameBase/gameData/missions`.
+
+5. Open the **Mission Editor**, select the test mission, and start the game
+ .
+
+
+
+```{note}
+During testing, it is likely that the console will display numerous errors
+related to resource mismatches or insufficiently built resources. However, these
+errors are not critical for the purpose of testing.
+
+
+
+In case of **assert errors**, initially try ignoring them by pressing the
+**Ignore** button.
+```
+
+If everything is set up correctly, you should see a tank in the environment,
+which can be used to collide with the test truck.
+
+```{tip}
+If the issues remain unresolved, please contact the author of this document at
+{octicon}`mail;1.4em;sd-text-info` .
+```
+
+## Fine-Tuning Deformation Parameters for a Vehicle Body
+
+To achieve realistic vehicle deformation, specific parameters can be configured
+in the vehicle body material in *3ds Max*. These settings influence shaders and
+allow precise control over deformation behavior. Below is a detailed list of
+parameters and their purpose:
+
+### Shader Parameters
+
+- `diffuse_tex_scale=1`: Controls the scale of the damage texture's albedo.
+ Adjust based on the vehicle's size.
+- `normals_tex_scale=1`: Similar to `diffuse_tex_scale`, this affects the
+ normal/metalness/smoothness texture scale.
+- `diffuse_power=1`: Determines the intensity of the albedo damage texture.
+ Default: `1.0`.
+- `normals_power=1`: Controls the intensity of the normal/metalness/smoothness
+ damage texture. Default: `1.0`.
+- `max_height=1.2`: A multiplier for maximum deformation height. Default baked
+ value is `1.0`. Increase (e.g., `1.9`) for larger deformations.
+- `springback=0.05`: Defines how much the metal bends back after deformation.
+ Higher values mean greater restoration.
+- `expand_atten=0.5`: Sets the range of deformation expansion, simulating
+ material characteristics.
+- `expand_atten_pow=0.5`: Adjusts the pressure curve during deformation,
+ affecting how the material bends under force.
+- `noise_scale=1.0`: Adds procedural deformation noise. Larger models require
+ smaller values for realism.
+- `noise_power=1.3`: Amplifies the procedural noise intensity for dynamic
+ deformations.
+- `crumple_rnd=0.5`: Randomizes the crumpling intensity, visible only during
+ dynamic interaction.
+- `crumple_force=0.1`: Determines the crumpling force during dynamic
+ interactions.
+- `crumple_dist=0.5`: Specifies the crumpling effect distance during collisions.
+
+### Testing Parameters In-Game
+
+To test these parameters effectively:
+1. Launch the game and simulate interaction (e.g., a tank driving over a truck).
+2. Pause the game using `P`, then open the in-game editor with `F2`.
+3. Navigate to the **dynamic_deform** menu:
+
+
+
+ - Identify the coordinates **(1)** of the test vehicle body **(2)**.
+
+
+
+ - Input the coordinates into the deformation testing block to align the test
+ box with the vehicle.
+
+
+
+4. Adjust the test deformation box:
+ - Enable checkboxes to visualize the deformation.
+
+
+
+ - Use sliders to manipulate the deformation box and observe effects dynamically.
+
+
+
+ ```{tip}
+ Always clear deformations after each test using the
+
+ button to reset the vehicle for further iterations.
+ ```
+
+```{important}
+For the deformation box to function correctly, ensure it intersects with the
+**bounding box** of the deformable object (indicated by a red highlight).
+Misalignment may prevent parameter application.
+```
+
+
+
+### Refining Parameters in 3ds Max
+
+After determining the optimal settings:
+1. Adjust parameters like `max_height` (e.g., `1.5`) and `noise_power` (`1.0`)
+ in the material properties of the vehicle in *3ds Max*.
+
+
+
+2. Re-export the model following the steps outlined earlier.
+3. Test the updated model in the game and iterate as needed.
+
+### Iterative Adjustments and Enhancements
+
+Testing often reveals areas for refinement, such as missing components like
+broken windshield glass. These elements can be added and fine-tuned in
+subsequent iterations.
+
+#### Shading and Coloring Adjustments
+
+Vehicles may include random color tinting for variety. This is configured using
+procedural settings within the
+[rendinst_simple](../../assets/shaders/dng-shaders/rendinst_simple.md) shader.
+
+```{seealso}
+For more information, see
+[Procedural Rendinst Painting](../../assets/about-assets/procedural-rendinst-painting/procedural_rendinst_painting.md).
+```
+
+The parameters for `use_painting` and `painting_line` can be specified in the
+same location as the **shader dynamic_deformed** parameters, as follows:
+
+
+
+This ensures proper integration and behavior of the painting line within the
+shader configuration.
+
+```{important}
+Ensure that static shader settings match their dynamic counterparts to avoid
+inconsistencies.
+```
+
+#### Simulating Broken Glass
+
+To add shattered glass:
+1. Extract original glass models from the `.dag` file.
+2. Use [*RayFire*](https://rayfirestudios.com/) for fracturing:
+ - Set fracture parameters to produce radial breakage patterns.
+ - Remove overly small fragments to optimize simulation performance.
+
+
+
+ ```{tip}
+ Keep the number of glass fragments below 100 to prevent excessive physics
+ calculations.
+ ```
+
+
+
+3. For each fragment:
+ - Separate front-facing triangles.
+ - Adjust pivots to the center for accurate collision generation.
+
+
+
+4. Apply a slight **Noise modifier** for realism, then assign a dynamic shader
+ for glass fragments:
+
+
+
+5. Change the `rendinst_pbr_glass` shader to `dynamic_pbr_glass`:
+
+
+
+6. Assigned it to all available glass fragments, generate collisions with
+ [*Dagor 2 Damages Setup
+ Tool*](../../dagor-tools/addons/3ds-max/dagor2-3ds-max-tools/damages_setup_tool.md):
+
+
+
+
+
+ As you can see, all bboxes have their own thickness.
+
+#### Exporting the Final Model
+
+After finalizing deformation and additional enhancements:
+1. Save the model as `m123_truck_destr.lod00.dag`.
+
+
+
+2. Rebuild and test resources in the game using the steps outlined in earlier
+ sections.
+
+### Final Testing
+
+The completed scene should include deformation behavior and additional features
+like broken glass. For adjustments, iterate on the *3ds Max* scene and test
+within the game environment until the desired results are achieved.
+
+Download the final *3ds Max* scene:
+{download}`m123_truck_destr_deform_final.max `
+
+## Example: Vehicle Destruction with a Large Tank
+
+To begin, import the model from the archive:
+{download}`zis_6_bz.zip `
+
+The primary challenge here is deforming the tank separately. During crushing,
+the tank will not only compress vertically but also bulge horizontally. The
+truck's cab should also be separated into a distinct object. Before deformation,
+the scene should look approximately as follows:
+
+
+
+When assessing the vehicle's construction, note that elements like the fenders
+are distinct from the cab, just like the doors, the tank, and the tank's guard
+rails. The key is to consider the varying rigidity of these parts. Consequently,
+deform these as separate objects. The vehicle's internal components should also
+be split into segments based on the material's rigidity. The image below
+illustrates a color-coded example of this segmentation:
+
+
+
+Next, as before, apply **FDD modifiers** to deform each object individually.
+After initial rough deformation, the scene will look something like this:
+
+
+
+Deforming the tank is the most complex task, given its size. Here's an example
+of a partially deformed tank:
+
+
+
+
+
+
+
+Following this initial deformation, fine-tune the shapes manually using **Soft
+Selection**. The resulting deformed vehicle should preserve realistic creases
+and folds. The tank necks are minimally deformed, while sharp edges exhibit
+folds consistent with the model's level of detail. The tank expands horizontally
+under pressure from above, creating natural-looking radial folds around the
+necks. The detailed appearance of the tank after refinement is shown below:
+
+
+
+
+
+
+
+### Physics Adjustments Post-Testing
+
+- **(1) Wheels:** Slightly tilted to naturally detach from the vehicle body and
+ roll away.
+- **(2) Ejection Boxes:** Added to prevent wheels from clipping through the tank
+ guard rails. These boxes push the wheels outward, creating more natural
+ movement.
+- **(3) Rear Wheel:** Designed to detach along with part of its assembly.
+ Additional collision boxes are added to replicate a round wheel's behavior,
+ improving realism.
+- **(4) Flat Tire:** Includes a collision box to tilt the vehicle's frame when
+ it falls. A single collision box is deliberately used here to amplify the
+ impact.
+
+
+
+
+
+### Note on Quality vs. Time Constraints
+
+Balancing time and quality is crucial. While the tank could feature more
+advanced details like ruptures or cracks, such improvements require significant
+time investment. The chosen approach aims for an optimal balance of detail and
+efficiency.
+
+The scene with the modifier stack and detailed setup:
+{download}`zis_6_bz_deform_modificators.zip `
+
+The final scene, fully prepared for export with refined collision settings and
+other adjustments:
+{download}`zis_6_bz_deform.max `
+
+## Example: Vehicle Destruction with Extensive Plastic Components
+
+This example demonstrates the destruction of a vehicle model that incorporates
+significant plastic components, such as bumpers and panels. Plastic behaves
+differently than metal, often bending, springing back, or detaching entirely
+under stress. Here's a step-by-step guide to prepare and simulate such
+destruction.
+
+Download the model:
+{download}`arctic_tayga_patrul_551.zip `
+
+### Initial Checks
+
+1. **Ensure proper scale**:
+ - Verify that the model has no negative scaling and that all scaling values
+ are `1.0`.
+
+ ```{warning}
+ Ensuring the correct scale is critical for the pipeline. **If this step is
+ skipped, everything may need to be redone from scratch later, so address it
+ upfront**.
+ ```
+
+2. **Inspect model structure**:
+ - This particular model is relatively new, so it doesn't have scaling issues.
+ However, older models may require adjustments.
+
+### Separation of Components
+
+- Begin by separating **glass** and other **rigid objects** (e.g., detachable
+ plastic parts like panels, bumpers).
+- Objects such as the protective transparent visor often have intricate shapes.
+ After generating collisions, manually adjust their position and size for
+ accurate representation.
+
+ The goal is to achieve a realistic breakup of rigid parts that can detach
+ during collisions. Example result:
+
+
+
+### Export and Initial Testing
+
+1. Assign appropriate materials to the separated components.
+2. Export the current setup into the game without adding deformation to the main
+ body.
+3. Evaluate the in-game appearance:
+ - Rigid parts should separate cleanly during interactions.
+ - Large gaps (e.g., from detached panels) should be filled or masked
+ appropriately.
+
+Example result after initial export:
+
+
+
+Intermediate stage of the scene with finished rigid objects and materials:
+{download}`arctic_tayga_patrul_551_deform_Rigid_Body_done.max `
+
+### Refining the Model
+
+#### Adding Internal Structure
+
+Plastic panels often cover empty spaces. To mask these gaps:
+1. Duplicate the **deformable panels** and adjust their placement.
+2. Use these duplicates to create an **approximate internal frame**:
+ - Assign a dark texture from the existing material library to simulate depth.
+ - Ensure the base structure is visually coherent when panels detach.
+
+
+
+- **Black Base (3):** Separate the base along with the driver and passenger
+ seats as distinct entities.
+- **Dashboard and Plastic Covering (2):** Extract these into an individual
+ entity for separate handling.
+- **Side Panels (1):** These are essentially the vehicle's fenders and should
+ also be separated into distinct entities. They will detach from the main body
+ during deformation, revealing the black base underneath.
+
+As per standard practice, further separate parts that will deform independently
+due to differences in metal or material rigidity. This ensures a realistic
+deformation process tailored to the specific properties of each component.
+
+```{warning}
+1. Do **not** modify smoothing groups or normals during this stage. Adjustments
+ to these attributes will change vertex indexing, leading to errors during
+ deformation.
+2. Keep the model as an **Editable Mesh** throughout. Avoid converting between
+ `Edit Poly` and `Edit Mesh` to preserve vertex consistency.
+```
+
+### Final Scene for Export
+
+Once the internal structure and rigid body setup are complete:
+1. Fine-tune materials and shaders for plastic and metal parts.
+2. Test the model in the game environment to verify the detachment and
+ deformation behaviors.
+3. Export the model as a finalized `.max` file:
+ {download}`arctic_tayga_patrul_551_deform.max `
+
+## Example: Vehicle Destruction with Canvas and Fabric Components
+
+In this section, we'll explore the process of preparing a vehicle with fabric
+and canvas elements for dynamic deformation and destruction. The focus will be
+on separating, refining, and deforming components such as wooden supports, metal
+parts, and fabric material.
+
+Download the base model:
+{download}`renault_ahn.zip `
+
+### Initial Checks
+
+1. **Inspect Transform Settings**:
+ - Check for negative scaling or non-uniform scaling values (e.g., not equal
+ to `1.0`).
+ - Incorrect transforms can cause inverted normals and other issues after
+ exporting to a dynamic model.
+
+ **Example of incorrect scaling:**
+
+
+
+2. **Correcting Transforms**:
+ - Attach the vehicle body to a temporary box object.
+ - Detach the box and reposition the **Pivot** to the original position,
+ typically `[0, 0, 0]`.
+
+ ```{important}
+ Ensure the scaling values are normalized before proceeding. Fixing these
+ issues after deformation and settings adjustments can be exceedingly
+ difficult.
+ ```
+
+ **Example of correct transformation:**
+
+
+
+### Preparing the Canvas and Wooden Supports
+
+#### Wooden Components
+
+1. **Separate Wooden Elements**:
+ - Identify seatbacks, planks, and other wooden components.
+ - Split them into smaller fragments using *RayFire*: use fracture settings
+ that mimic natural wood breakage.
+
+
+
+
+
+2. **Fracturing Details**:
+ - Divide each plank into **2-3 pieces** (to meet the 100-object limit per
+ `.dag` file).
+ - Apply a **Noise modifier** to simulate splintered edges.
+
+
+
+#### Metal Components
+
+**Attach Non-Deforming Metal Parts**:
+
+- Metal elements like seat mounts and corner brackets should remain rigid
+ (highlighted in red in the image below).
+- Merge these with the main body and assign them a metal material for proper
+ deformation behavior.
+
+
+
+### Organizing the Deformable Objects
+
+Divide the vehicle into logical deformation groups:
+
+1. **Side Panels (1)**: These should behave like hinged doors, bending and
+ opening during a collision.
+
+2. **Rear Mudguards (5)**: These have different densities and require separate
+ deformation behavior.
+
+3. **Fuel Tank (2)**: Sturdier than the body frame; must deform separately.
+
+4. **Wheel Discs (3)**: Should have independent deformation logic due to their
+ circular shape.
+
+5. **Front Fenders**: Their rounded design requires unique deformation
+ parameters compared to the angular cabin structure.
+
+
+
+Intermediate preparation stage of the model:
+{download}`renault_ahn_a_deform_ready_to_deform.max `
+
+### Initial Deformation with FFD
+
+**Apply Rough Deformations**:
+- Use an **FFD modifier** to simulate large-scale bending and crushing.
+- Test deformations at this stage to ensure logical breakage patterns.
+
+Result after rough deformation:
+
+
+
+
+
+The scene after rough deformation:
+{download}`renault_ahn_a_deform_FFD_done.max `
+
+### Detailed Deformation
+
+**Finalize Deformation Details**:
+- Add finer details using **Noise modifiers** and **manual adjustments** to
+ simulate realistic crushing and bending.
+- Ensure no overlapping geometry or unnatural stretching.
+
+Final detailed deformation result:
+
+
+
+
+
+The scene after detailed deformation:
+{download}`renault_ahn_a_deform_all_deformation_done.max `
+
+### Assigning Materials for the Canvas
+
+To accurately simulate the canvas (tent), create a unique material with specific
+deformation properties:
+
+**Separate the Canvas Material**:
+- Use a dark texture for initial testing.
+- Modify deformation parameters for the canvas:
+ - Disable blending of deformation textures.
+ - Increase recovery behavior to simulate fabric's spring-back properties.
+
+Example of material setup for canvas:
+
+
+
+### Final Testing and Export
+
+1. **In-Game Testing**:
+ - Verify deformation and recovery behaviors in the game.
+ - Adjust shader parameters based on observed results.
+
+2. **Export the Final Model**:
+ - After testing, export the complete setup for integration into the game.
+
+Final scene:
+{download}`renault_ahn_a_deform.max `
+
+By following these steps, you'll achieve a destructible vehicle model with
+realistic behavior for both rigid and flexible components, including proper
+handling of wooden and fabric elements.
+
+
diff --git a/prog/1stPartyLibs/daScript/examples/test/compilation_fail_tests/const_ref.das b/prog/1stPartyLibs/daScript/examples/test/compilation_fail_tests/const_ref.das
index 138f370ad..d3d7f7ec8 100644
--- a/prog/1stPartyLibs/daScript/examples/test/compilation_fail_tests/const_ref.das
+++ b/prog/1stPartyLibs/daScript/examples/test/compilation_fail_tests/const_ref.das
@@ -1,6 +1,6 @@
require UnitTest
-// expect 30102 // once we disable relaxed_pointer_const, we can't pass const to non-const
+expect 30102 // passThrough
expect 30106
expect 30303:1 // operator_not_found
expect 30304:2 // function_not_found
diff --git a/prog/1stPartyLibs/daScript/examples/test/compilation_fail_tests/smart_ptr.das b/prog/1stPartyLibs/daScript/examples/test/compilation_fail_tests/smart_ptr.das
index f30a45d71..68d41e910 100644
--- a/prog/1stPartyLibs/daScript/examples/test/compilation_fail_tests/smart_ptr.das
+++ b/prog/1stPartyLibs/daScript/examples/test/compilation_fail_tests/smart_ptr.das
@@ -6,8 +6,8 @@ def pass_by_value_is_unsafe ( p:smart_ptr ) // this will fai
pass
def move_smart_ptr_is_unsafe_when_not_ref
- var a : smart_ptr
- a <- new TestObjectSmart
+ var inscope a : smart_ptr
+ a <- new TestObjectSmart // 31300: moving values which contain smart pointers is unsafe
[export]
def test
diff --git a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_apply_macro.das b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_apply_macro.das
index a1dfb13f4..3b685cf8b 100644
--- a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_apply_macro.das
+++ b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_apply_macro.das
@@ -4,12 +4,12 @@ require ast
require daslib/ast_boost
def private prepend_cond(var fn:FunctionPtr; cond:string)
- var iblk <- fn.body
- var blk <- new [[ExprBlock() at=fn.at]]
- var ifm <- new [[ExprCall() at=fn.at, name:=cond]]
- var ife <- new [[ExprIfThenElse() at=fn.at, cond<-ifm, if_true<-iblk]]
+ var inscope iblk <- fn.body
+ var inscope blk <- new [[ExprBlock() at=fn.at]]
+ var inscope ifm <- new [[ExprCall() at=fn.at, name:=cond]]
+ var inscope ife <- new [[ExprIfThenElse() at=fn.at, cond<-ifm, if_true<-iblk]]
emplace(blk.list,ife)
- fn.body <- blk
+ fn.body |> move() <| blk
[function_macro(name="add_cond")]
class AppendCondAnnotation : AstFunctionAnnotation
diff --git a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_array_reader.das b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_array_reader.das
index 7386c9a35..8f4621fb2 100644
--- a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_array_reader.das
+++ b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_array_reader.das
@@ -17,10 +17,11 @@ class ArrayReader : AstReaderMacro
return true
def override visit ( prog:ProgramPtr; mod:Module?; expr:smart_ptr ) : ExpressionPtr
let seqStr = string(expr.sequence)
- var arrT <- new [[TypeDecl() baseType=Type tInt]]
+ var inscope arrT <- new [[TypeDecl() baseType=Type tInt]]
push(arrT.dim,length(seqStr))
- var mkArr <- new [[ExprMakeArray() at = expr.at, makeType <- arrT]]
+ var inscope mkArr <- new [[ExprMakeArray() at = expr.at, makeType <- arrT]]
for x in seqStr
- var mkC <- new [[ExprConstInt() at=expr.at, value=x]]
- emplace(mkArr.values,mkC)
- return mkArr
+ if true
+ var inscope mkC <- new [[ExprConstInt() at=expr.at, value=x]]
+ emplace(mkArr.values,mkC)
+ return <-mkArr
diff --git a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_enum_total.das b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_enum_total.das
index 1863c4ce5..e5f66652e 100644
--- a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_enum_total.das
+++ b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_enum_total.das
@@ -14,5 +14,5 @@ class EnumTotalAnnotation : AstEnumerationAnnotation
if itot < 0
errors := "can't add `total` field"
return false
- enu.list[itot].value <- new [[ExprConstInt() at=enu.at, value=length(enu.list)-1]]
+ enu.list[itot].value |> move_new() <| new [[ExprConstInt() at=enu.at, value=length(enu.list)-1]]
return true
diff --git a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_hint_macros.das b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_hint_macros.das
index ff6e14174..ca5af17f2 100644
--- a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_hint_macros.das
+++ b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_hint_macros.das
@@ -28,6 +28,6 @@ class GetHintFnMacro : AstFunctionAnnotation
let hint = hash("{arg2.value}")
emplace_new(new_call.arguments, new [[ExprConstUInt64() at=arg2.at, value=hint]])
return new_call
- return [[ExpressionPtr]]
+ return <-[[ExpressionPtr]]
diff --git a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_typeinfo_macro_example.das b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_typeinfo_macro_example.das
index 43d2ea4fb..05243e631 100644
--- a/prog/1stPartyLibs/daScript/examples/test/unit_tests/_typeinfo_macro_example.das
+++ b/prog/1stPartyLibs/daScript/examples/test/unit_tests/_typeinfo_macro_example.das
@@ -9,7 +9,7 @@ require daslib/ast_boost
class TypeInfoGetAliasName : AstTypeInfoMacro
def override getAstChange ( expr:smart_ptr; var errors:das_string ) : ExpressionPtr
if expr.typeexpr != null
- return new [[ExprConstString() at=expr.at, value:=expr.typeexpr.alias]]
+ return <- new [[ExprConstString() at=expr.at, value:=expr.typeexpr.alias]]
errors := "type is missing or not inferred"
- return [[ExpressionPtr]]
+ return <- [[ExpressionPtr]]
diff --git a/prog/1stPartyLibs/daScript/examples/test/unit_tests/make_handle.das b/prog/1stPartyLibs/daScript/examples/test/unit_tests/make_handle.das
index 975d092b9..64e22f1fe 100644
--- a/prog/1stPartyLibs/daScript/examples/test/unit_tests/make_handle.das
+++ b/prog/1stPartyLibs/daScript/examples/test/unit_tests/make_handle.das
@@ -31,9 +31,10 @@ def test
unsafe
delete ascend_t
// ascend with smart-ptr
- var ascend_smart_t <- new [[TestObjectSmart() fooData=1]]
- assert(ascend_smart_t.fooData==1)
- unsafe
- delete ascend_smart_t
+ // TODO: fix this (aot is broken)
+ // var inscope ascend_smart_t <- new [[TestObjectSmart() fooData=1]]
+ // assert(ascend_smart_t.fooData==1)
+ // unsafe
+ // delete ascend_smart_t
return true
diff --git a/prog/1stPartyLibs/daScript/examples/test/unit_tests/mksmart_zero.das b/prog/1stPartyLibs/daScript/examples/test/unit_tests/mksmart_zero.das
index 2b97f3d49..0e8ab29cd 100644
--- a/prog/1stPartyLibs/daScript/examples/test/unit_tests/mksmart_zero.das
+++ b/prog/1stPartyLibs/daScript/examples/test/unit_tests/mksmart_zero.das
@@ -5,10 +5,10 @@ typedef
[export]
def mks ()
- return [[TestObjectSmartPtr]]
+ return <- [[TestObjectSmartPtr]]
[export]
def test
- let p <- mks()
+ var inscope p <- mks()
verify(get_ptr(p)==null)
return true
diff --git a/prog/1stPartyLibs/daScript/examples/test/unit_tests/smart_ptr.das b/prog/1stPartyLibs/daScript/examples/test/unit_tests/smart_ptr.das
index 522344291..5d92b9ed9 100644
--- a/prog/1stPartyLibs/daScript/examples/test/unit_tests/smart_ptr.das
+++ b/prog/1stPartyLibs/daScript/examples/test/unit_tests/smart_ptr.das
@@ -1,9 +1,10 @@
require UnitTest
def inside_scope_test
- var sptr <- new TestObjectSmart
- verify(getTotalTestObjectSmart()==1)
- return get_ptr(sptr)
+ unsafe
+ var sptr <- new TestObjectSmart
+ verify(getTotalTestObjectSmart()==1)
+ return get_ptr(sptr)
def scope_test
verify(getTotalTestObjectSmart()==0)
@@ -16,8 +17,8 @@ def scope_test
def inside_move_test
verify(getTotalTestObjectSmart()==0)
- var t1 <- new TestObjectSmart
- var t2 <- t1 // unsafe operation
+ var inscope t1 <- new TestObjectSmart
+ var inscope t2 <- t1 // unsafe operation
assert(smart_ptr_use_count(t1)==0u)
assert(smart_ptr_use_count(t2)==1u)
verify(getTotalTestObjectSmart()==1)
@@ -25,15 +26,14 @@ def inside_move_test
def move_test
verify(getTotalTestObjectSmart()==0)
- var t <- inside_move_test()
- verify(getTotalTestObjectSmart()==1)
- unsafe
- delete t
+ if true
+ var inscope t <- inside_move_test()
+ verify(getTotalTestObjectSmart()==1)
verify(getTotalTestObjectSmart()==0)
def ref_count_test
verify(getTotalTestObjectSmart()==0)
- var sptr <- new TestObjectSmart // ref_count = 1
+ var inscope sptr <- new TestObjectSmart // ref_count = 1
verify(getTotalTestObjectSmart()==1)
assert(smart_ptr_use_count(sptr)==1u)
var ptr = get_ptr(sptr)
@@ -41,13 +41,13 @@ def ref_count_test
pptr = get_ptr(sptr)
assert(sptr==ptr)
assert(get_const_ptr(sptr)==ptr)
- var qptr : smart_ptr
+ var inscope qptr : smart_ptr
qptr := get_ptr(sptr) // ref_count = 2
assert(smart_ptr_use_count(sptr)==2u)
assert(qptr==ptr)
assert(get_const_ptr(qptr)==ptr)
assert(qptr==sptr)
- var fptr := qptr // ref_count = 3
+ var inscope fptr := qptr // ref_count = 3
assert(smart_ptr_use_count(sptr)==3u)
assert(fptr!=null)
assert(get_const_ptr(fptr)==sptr)
@@ -72,7 +72,7 @@ def ref_count_test
def access_test
verify(getTotalTestObjectSmart()==0)
- var ptr <- new TestObjectSmart
+ var inscope ptr <- new TestObjectSmart
assert(ptr.fooData == 1234) // .
var t = ptr ?. fooData ?? 1 // ?? rvalue
assert(t==1234)
@@ -94,7 +94,7 @@ def access_test
def fn_test
verify(getTotalTestObjectSmart()==0)
- var ptr <- makeTestObjectSmart()
+ var inscope ptr <- makeTestObjectSmart()
assert(countTestObjectSmart(ptr)==1u)
verify(getTotalTestObjectSmart()==1)
unsafe
diff --git a/prog/1stPartyLibs/daScript/include/daScript/ast/ast.h b/prog/1stPartyLibs/daScript/include/daScript/ast/ast.h
index 9c564d9c3..35fb22fe8 100644
--- a/prog/1stPartyLibs/daScript/include/daScript/ast/ast.h
+++ b/prog/1stPartyLibs/daScript/include/daScript/ast/ast.h
@@ -1419,7 +1419,7 @@ namespace das
// rtti
bool rtti = false; // create extended RTTI
// language
- bool relaxed_pointer_const = true; // allow const correctness to be relaxed on pointers
+ bool relaxed_pointer_const = false; // allow const correctness to be relaxed on pointers
bool version_2_syntax = false; // use syntax version 2
bool gen2_make_syntax = false; // only new make syntax is allowed (no [[...]] or [{...}])
bool relaxed_assign = true; // allow = to <- substitution, in certain expressions
@@ -1440,7 +1440,7 @@ namespace das
bool default_module_public = true; // by default module is 'public', not 'private'
bool no_deprecated = false;
bool no_aliasing = false; // if true, aliasing will be reported as error, otherwise will turn off optimization
- bool strict_smart_pointers = false; // collection of tests for smart pointers, like van inscope for any local, etc
+ bool strict_smart_pointers = true; // collection of tests for smart pointers, like van inscope for any local, etc
bool no_init = false; // if true, then no [init] is allowed in any shape or form
bool strict_unsafe_delete = false; // if true, delete of type which contains 'unsafe' delete is unsafe // TODO: enable when need be
bool no_members_functions_in_struct = false; // structures can't have member functions
diff --git a/prog/1stPartyLibs/daScript/include/daScript/simulate/aot_builtin_matrix.h b/prog/1stPartyLibs/daScript/include/daScript/simulate/aot_builtin_matrix.h
index 3a4ad5539..211016a9b 100644
--- a/prog/1stPartyLibs/daScript/include/daScript/simulate/aot_builtin_matrix.h
+++ b/prog/1stPartyLibs/daScript/include/daScript/simulate/aot_builtin_matrix.h
@@ -64,7 +64,7 @@ namespace das {
float4 quat_from_unit_vec_ang(float3 v, float ang);
float4 quat_from_euler_vec(float3 v);
float4 quat_from_euler(float x, float y, float z);
- float3 euler_from_quat(float4 v);
+ float3 euler_from_quat_vec(float4 v);
float4 quat_from_float3x3(const float3x3 & a);
float4 quat_from_float3x4(const float3x4 & a);
float4 quat_from_float4x4(const float4x4 & a);
diff --git a/prog/1stPartyLibs/daScript/include/daScript/simulate/runtime_string.h b/prog/1stPartyLibs/daScript/include/daScript/simulate/runtime_string.h
index 6c6101b65..a17d8e17a 100644
--- a/prog/1stPartyLibs/daScript/include/daScript/simulate/runtime_string.h
+++ b/prog/1stPartyLibs/daScript/include/daScript/simulate/runtime_string.h
@@ -15,5 +15,6 @@ namespace das
const string & fixme, CompilationError erc = CompilationError::unspecified );
string reportError ( const char * st, uint32_t stlen, const char * fileName, int row, int col, int lrow, int lcol, int tabSize, const string & message,
const string & extra, const string & fixme, CompilationError erc = CompilationError::unspecified );
+ int32_t levenshtein_distance ( const char * s1, const char * s2 );
}
diff --git a/prog/1stPartyLibs/daScript/include/daScript/simulate/simulate.h b/prog/1stPartyLibs/daScript/include/daScript/simulate/simulate.h
index f8fc06a57..e76c93f65 100644
--- a/prog/1stPartyLibs/daScript/include/daScript/simulate/simulate.h
+++ b/prog/1stPartyLibs/daScript/include/daScript/simulate/simulate.h
@@ -1,5 +1,6 @@
#pragma once
+#include "daScript/misc/platform.h"
#include "daScript/misc/vectypes.h"
#include "daScript/misc/type_name.h"
#include "daScript/misc/arraytype.h"
@@ -212,7 +213,7 @@ namespace das
}
public:
LineInfo exceptionAt;
- std::string exceptionWhat;
+ das::string exceptionWhat;
};
#endif
diff --git a/prog/1stPartyLibs/daScript/src/ast/ast_infer_type.cpp b/prog/1stPartyLibs/daScript/src/ast/ast_infer_type.cpp
index 88e65a7cb..1e331885e 100644
--- a/prog/1stPartyLibs/daScript/src/ast/ast_infer_type.cpp
+++ b/prog/1stPartyLibs/daScript/src/ast/ast_infer_type.cpp
@@ -764,82 +764,80 @@ namespace das {
return findMatchingFunctions(name, arguments, false, false);
}
- MatchingFunctions findCandidates ( const string & name, const vector & ) const {
- string moduleName, funcName;
- splitTypeName(name, moduleName, funcName);
- MatchingFunctions result;
- getSearchModule(moduleName);
- auto hFuncName = hash64z(funcName.c_str());
- program->library.foreach([&](Module * mod) -> bool {
- auto itFnList = mod->functionsByName.find(hFuncName);
- if ( itFnList != mod->functionsByName.end() ) {
- auto & goodFunctions = itFnList->second;
- result.reserve(result.size()+goodFunctions.size());
- for ( auto & it : goodFunctions ) {
- result.push_back(it.get());
- }
- }
- return true;
- },moduleName);
- return result;
+ // MISSING CANDIDATES
+
+ bool isOperator (const string & s) const {
+ for ( auto ch : s ) {
+ if ( ch>='0' && ch<='9' ) return false;
+ else if ( ch>='a' && ch<='z' ) return false;
+ else if ( ch>='A' && ch<='Z' ) return false;
+ else if ( ch=='_' ) return false;
+ }
+ return true;
}
- MatchingFunctions findCandidates ( const string & name, const vector & ) const {
- string moduleName, funcName;
- splitTypeName(name, moduleName, funcName);
- MatchingFunctions result;
- getSearchModule(moduleName);
- auto hFuncName = hash64z(funcName.c_str());
- program->library.foreach([&](Module * mod) -> bool {
- auto itFnList = mod->functionsByName.find(hFuncName);
- if ( itFnList != mod->functionsByName.end() ) {
- auto & goodFunctions = itFnList->second;
- result.reserve(result.size()+goodFunctions.size());
- for ( auto & it : goodFunctions ) {
- result.push_back(it.get());
- }
- }
+ bool isCloseEnoughName ( const string & s, const string & t, bool identical ) const {
+ if ( s==t ) return true;
+ if ( identical ) return false;
+ auto ls = s.size();
+ auto lt = t.size();
+ if ( ls-lt>3 || lt-ls>3 ) return false; // too much difference in length, no way its typo
+ if ( isOperator(s) || isOperator(t) ) return false;
+ string upper_s, upper_t;
+ upper_s.reserve(s.size());
+ for ( auto ch : s ) upper_s.push_back((char)toupper(ch));
+ upper_t.reserve(t.size());
+ for ( auto ch : t ) upper_t.push_back((char)toupper(ch));
+ if ( upper_s==upper_t ) return true;
+ /*
+ Length ≤ 5: Distance ≤ 1 is likely a typo.
+ Length 6–10: Distance ≤ 2 is likely a typo.
+ Length > 10: Distance ≤ 3 might still be a typo.
+ */
+ int longer = int(ls>lt ? ls : lt);
+ int maxDist = 1;
+ if ( longer>10 ) maxDist = 3;
+ else if ( longer>5 ) maxDist = 2;
+ auto dist = levenshtein_distance(upper_s.c_str(),upper_t.c_str());
+ if ( dist <= maxDist ) {
return true;
- },moduleName);
- return result;
+ } else {
+ return false;
+ }
}
- MatchingFunctions findGenericCandidates ( const string & name, const vector & ) const {
- // TODO: better error reporting
+ MatchingFunctions findMissingCandidates ( const string & name, bool identicalName ) const {
string moduleName, funcName;
splitTypeName(name, moduleName, funcName);
MatchingFunctions result;
getSearchModule(moduleName);
- auto hFuncName = hash64z(funcName.c_str());
program->library.foreach([&](Module * mod) -> bool {
- auto itFnList = mod->genericsByName.find(hFuncName);
- if ( itFnList != mod->genericsByName.end() ) {
- auto & goodFunctions = itFnList->second;
- result.reserve(result.size()+goodFunctions.size());
- for ( auto & it : goodFunctions ) {
- result.push_back(it.get());
+ mod->functions.foreach([&](const FunctionPtr & fn) -> bool {
+ if ( isCloseEnoughName(fn->name,funcName,identicalName) ) {
+ isCloseEnoughName(fn->name,funcName,identicalName);
+ result.push_back(fn.get());
}
- }
+ return true;
+ });
return true;
},moduleName);
return result;
}
- MatchingFunctions findGenericCandidates ( const string & name, const vector & ) const {
+
+ MatchingFunctions findMissingGenericCandidates ( const string & name, bool identicalName ) const {
+ // TODO: better error reporting
string moduleName, funcName;
splitTypeName(name, moduleName, funcName);
MatchingFunctions result;
getSearchModule(moduleName);
- auto hFuncName = hash64z(funcName.c_str());
program->library.foreach([&](Module * mod) -> bool {
- auto itFnList = mod->genericsByName.find(hFuncName);
- if ( itFnList != mod->genericsByName.end() ) {
- auto & goodFunctions = itFnList->second;
- result.reserve(result.size()+goodFunctions.size());
- for ( auto & it : goodFunctions ) {
- result.push_back(it.get());
+ mod->generics.foreach([&](const FunctionPtr & fn) -> bool {
+ if ( isCloseEnoughName(fn->name,funcName,identicalName) ) {
+ result.push_back(fn.get());
}
- }
+ return true;
+ });
return true;
},moduleName);
return result;
@@ -1274,6 +1272,99 @@ namespace das {
return result;
}
+ void reportDualFunctionNotFound( const string & name, const string & extra,
+ const LineInfo & at, const MatchingFunctions & candidateFunctions,
+ const vector & types, const vector & types2, bool inferAuto, bool inferBlocks, bool reportDetails,
+ CompilationError cerror, int nExtra, const string & moreError ) {
+ if ( verbose ) {
+ TextWriter ss;
+ ss << name << "(";
+ bool first = true;
+ for ( auto &it : types ) {
+ if ( !first ) {
+ ss << ", ";
+ }
+ first = false;
+ ss << it->describe();
+ }
+ ss << ") or (";
+ first = true;
+ for ( auto &it : types2 ) {
+ if ( !first ) {
+ ss << ", ";
+ }
+ first = false;
+ ss << it->describe();
+ }
+ ss << ")\n";
+ if ( func ) {
+ ss << "while compiling: " << func->describe() << "\n";
+ }
+ if ( !moreError.empty() ) {
+ ss << moreError;
+ }
+ if ( candidateFunctions.size()==0 ) {
+ ss << "there are no good matching candidates out of " << nExtra << " total functions with the same name\n";
+ } else if ( candidateFunctions.size() > 1 ) {
+ ss << "candidates:\n";
+ } else if ( candidateFunctions.size()==1 ) {
+ ss << (nExtra ? "\nmost likely candidate:\n" : "\ncandidate function:\n");
+ }
+ string moduleName, funcName;
+ splitTypeName(name, moduleName, funcName);
+ auto inWhichModule = getSearchModule(moduleName);
+ for ( auto & missFn : candidateFunctions ) {
+ auto visM = getFunctionVisModule(missFn);
+ bool isVisible = isVisibleFunc(inWhichModule,visM);
+ if ( !reportInvisibleFunctions && !isVisible ) continue;
+ bool isPrivate = missFn->privateFunction && !canCallPrivate(missFn,inWhichModule,program->thisModule.get());
+ if ( !reportPrivateFunctions && isPrivate ) continue;
+ ss << "\t";
+ if ( missFn->module && !missFn->module->name.empty() && !(missFn->module->name=="$") )
+ ss << missFn->module->name << "::";
+ ss << describeFunction(missFn);
+ if ( missFn->builtIn ) {
+ ss << " // builtin";
+ } else {
+ ss << " at " << missFn->at.describe();
+ }
+ ss << "\n";
+ if ( missFn->name != name ) {
+ ss << "\t\tname is similar, typo?\n";
+ }
+ if ( reportDetails ) {
+ if ( missFn->arguments.size() == types2.size() ) {
+ ss << describeMismatchingFunction(missFn, types2, inferAuto, inferBlocks);
+ } else {
+ ss << describeMismatchingFunction(missFn, types, inferAuto, inferBlocks);
+ }
+ }
+ if ( !isVisible ) {
+ ss << "\t\tmodule " << visM->name << " is not visible directly from ";
+ if ( inWhichModule->name.empty()) {
+ ss << "the current module\n";
+ } else {
+ ss << inWhichModule->name << "\n";
+ }
+ }
+ if ( isPrivate ) {
+ ss << "\t\tfunction is private";
+ if ( missFn->module && !missFn->module->name.empty() ) {
+ ss << " to module " << missFn->module->name;
+ }
+ ss << "\n";
+ }
+ }
+ if ( nExtra>0 && candidateFunctions.size()!=0 ) {
+ ss << "also " << nExtra << " more candidates\n";
+ }
+ error(extra, ss.str(), "", at, cerror);
+ } else {
+ error(extra, "", "", at, cerror);
+ }
+ }
+
+
void reportFunctionNotFound( const string & name, const string & extra,
const LineInfo & at, const MatchingFunctions & candidateFunctions,
const vector & types, bool inferAuto, bool inferBlocks, bool reportDetails,
@@ -1322,6 +1413,9 @@ namespace das {
ss << " at " << missFn->at.describe();
}
ss << "\n";
+ if ( missFn->name != name ) {
+ ss << "\t\tname is similar, typo?\n";
+ }
if ( reportDetails ) {
ss << describeMismatchingFunction(missFn, types, inferAuto, inferBlocks);
}
@@ -2009,7 +2103,13 @@ namespace das {
} else {
varT->ref = false;
TypeDecl::applyAutoContracts(varT, var->type);
+ if ( !relaxedPointerConst ) { // var a = Foo? const -> var a : Foo const? = Foo? const
+ if ( varT->isPointer() && !varT->constant && var->init->type->constant ) {
+ varT->firstType->constant = true;
+ }
+ }
var->type = varT;
+ var->type->sanitize();
reportAstChanged();
}
} else if ( !canCopyOrMoveType(var->type,var->init->type,TemporaryMatters::no,var->init.get(),
@@ -5403,8 +5503,22 @@ namespace das {
expr->type->constant |= tupleT->constant;
}
} else if ( !expr->type ) {
- error("field '" + expr->name + "' not found in " + describeType(expr->value->type), "", "",
- expr->at, CompilationError::cant_get_field);
+ if ( verbose && valT ) {
+ MatchingFunctions mf;
+ collectMissingOperators(".`"+expr->name,mf,false);
+ collectMissingOperators(".",mf,true);
+ if ( !mf.empty() ) {
+ reportDualFunctionNotFound(".`"+expr->name, "field '" + expr->name + "' not found in " + describeType(valT),
+ expr->at, mf, {valT}, {valT, make_smart(Type::tString)}, true, false, true,
+ CompilationError::cant_get_field, 0, "");
+ } else {
+ error("field '" + expr->name + "' not found in " + describeType(valT), "", "",
+ expr->at, CompilationError::cant_get_field);
+ }
+ } else {
+ error("field '" + expr->name + "' not found in " + describeType(valT), "", "",
+ expr->at, CompilationError::cant_get_field);
+ }
return Visitor::visit(expr);
} else {
expr->type->constant |= valT->constant;
@@ -5412,7 +5526,14 @@ namespace das {
propagateTempType(expr->value->type, expr->type); // a#.foo = foo#
return Visitor::visit(expr);
}
- // ExprSafeField
+ void collectMissingOperators ( const string & opN, MatchingFunctions & mf, bool identicalName ) {
+ auto opName = "_::" + opN;
+ auto can1 = findMissingCandidates(opName,identicalName);
+ auto can2 = findMissingGenericCandidates(opName,identicalName);
+ mf.reserve(mf.size()+can1.size()+can2.size());
+ mf.insert(mf.end(), can1.begin(), can1.end());
+ mf.insert(mf.end(), can2.begin(), can2.end());
+ }
virtual ExpressionPtr visit ( ExprSafeField * expr ) override {
if ( !expr->value->type || expr->value->type->isAliasOrExpr() ) return Visitor::visit(expr); // failed to infer
if ( !expr->no_promotion ) {
@@ -5421,8 +5542,22 @@ namespace das {
}
auto valT = expr->value->type;
if ( !valT->isPointer() || !valT->firstType ) {
- error("can only safe dereference a pointer to a tupe, a structure or a handle " + describeType(valT), "", "",
- expr->at, CompilationError::cant_get_field);
+ if ( verbose && !expr->no_promotion ) {
+ MatchingFunctions mf;
+ collectMissingOperators("?.`"+expr->name,mf,false);
+ collectMissingOperators("?.",mf,true);
+ if ( !mf.empty() ) {
+ reportDualFunctionNotFound("?.`"+expr->name, "can only safe dereference a pointer to a tuple, a structure or a handle " + describeType(valT),
+ expr->at, mf, {expr->value->type}, {expr->value->type, make_smart(Type::tString)}, true, false, true,
+ CompilationError::cant_get_field, 0, "");
+ } else {
+ error("can only safe dereference a pointer to a tuple, a structure or a handle " + describeType(valT), "", "",
+ expr->at, CompilationError::cant_get_field);
+ }
+ } else {
+ error("can only safe dereference a pointer to a tuple, a structure or a handle " + describeType(valT), "", "",
+ expr->at, CompilationError::cant_get_field);
+ }
return Visitor::visit(expr);
}
expr->value = Expression::autoDereference(expr->value);
@@ -5980,6 +6115,9 @@ namespace das {
return Visitor::visit(expr);
}
// ExprMove
+ bool isVoidOrNothing ( const TypeDeclPtr & ptr ) const {
+ return !ptr || ptr->isVoid();
+ }
bool canCopyOrMoveType ( const TypeDeclPtr & leftType, const TypeDeclPtr & rightType, TemporaryMatters tmatter, Expression * leftExpr,
const string & errorText, CompilationError errorCode, const LineInfo & at ) const {
if ( leftType->baseType==Type::tPointer ) {
@@ -5993,9 +6131,9 @@ namespace das {
}
}
if ( !relaxedPointerConst ) {
- if ( !leftType->constant && rightType->constant && !(leftType->firstType && leftType->firstType->constant) ) { // Foo const? = Foo? const ok.
+ if ( !leftType->constant && rightType->constant && !(leftType->firstType && leftType->firstType->constant) && !isVoidOrNothing(leftType->firstType) ) {
error(errorText + "; "+ describeType(leftType) + " = " + describeType(rightType),
- "can't copy constant to non-constant pointer. needs to be " + (leftType->firstType ? describeType(leftType->firstType) : "void") + " const?", "", at, errorCode);
+ "can't copy constant to non-constant pointer. needs to be " + describeType(leftType->firstType) + " const?", "", at, errorCode);
return false;
}
}
@@ -7145,6 +7283,11 @@ namespace das {
} else {
varT->ref = false;
TypeDecl::applyAutoContracts(varT, var->type);
+ if ( !relaxedPointerConst ) { // var a = Foo? const -> var a : Foo const? = Foo? const
+ if ( varT->isPointer() && !varT->constant && var->init->type->constant ) {
+ varT->firstType->constant = true;
+ }
+ }
var->type = varT;
var->type->sanitize();
reportAstChanged();
@@ -7415,8 +7558,8 @@ namespace das {
void reportMissing ( ExprNamedCall * expr, const vector& nonNamedArguments, const string & msg, bool reportDetails,
CompilationError cerror = CompilationError::function_not_found) {
if ( verbose ) {
- auto can1 = findCandidates(expr->name, expr->arguments);
- auto can2 = findGenericCandidates(expr->name, expr->arguments);
+ auto can1 = findMissingCandidates(expr->name, false);
+ auto can2 = findMissingGenericCandidates(expr->name, false);
can1.reserve(can1.size()+can2.size());
can1.insert(can1.end(), can2.begin(), can2.end());
auto nExtra = prepareCandidates(can1, nonNamedArguments, expr->arguments, true, true);
@@ -7479,8 +7622,8 @@ namespace das {
const string & msg, bool reportDetails,
CompilationError cerror = CompilationError::function_not_found) {
if ( verbose ) {
- auto can1 = findCandidates(expr->name, types);
- auto can2 = findGenericCandidates(expr->name, types);
+ auto can1 = findMissingCandidates(expr->name, false);
+ auto can2 = findMissingGenericCandidates(expr->name, false);
can1.reserve(can1.size()+can2.size());
can1.insert(can1.end(), can2.begin(), can2.end());
auto nExtra = prepareCandidates(can1, types, true, true);
@@ -8625,22 +8768,46 @@ namespace das {
}
} else {
TextWriter extra;
- if ( verbose ) {
- vector args;
- args.push_back(expr->makeType);
- args.push_back(decl->value->type);
- auto opName = "_::.`" + decl->name + "`clone";
- auto funs = findMatchingFunctions(opName, args);
- auto gens = findMatchingGenerics(opName, args);
- if ( funs.size()==1 || gens.size()==1 ) {
- if ( strictProperties ) {
+ vector args;
+ args.push_back(expr->makeType);
+ args.push_back(decl->value->type);
+ auto compareName = ".`" + decl->name + "`clone";
+ auto opName = "_::" + compareName;
+ auto funs = findMatchingFunctions(opName, args);
+ auto gens = findMatchingGenerics(opName, args);
+ bool brokenStrictProperty = false;
+ if ( funs.size()==1 || gens.size()==1 ) {
+ if ( strictProperties ) {
+ brokenStrictProperty = true;
+ if ( verbose ) {
extra
<< "since there is operator ." << decl->name << " := ("
<< expr->makeType->structType->name << "," << decl->value->type->describe() << ") , try "
<< decl->name << " := " << *(decl->value);
- } else {
- convertCloneSemanticsToExpression(expr,index,decl);
- return nullptr;
+ }
+ } else {
+ convertCloneSemanticsToExpression(expr,index,decl);
+ return nullptr;
+ }
+ }
+ if ( !brokenStrictProperty && verbose ) {
+ auto can1 = findMissingCandidates(opName, false);
+ auto can2 = findMissingGenericCandidates(opName, false);
+ can1.reserve(can1.size()+can2.size());
+ can1.insert(can1.end(), can2.begin(), can2.end());
+ for ( auto & fn : can1 ) {
+ if ( fn->isClassMethod && fn->arguments.size()==2 ) {
+ if ( fn->name != compareName ) {
+ // .`name`clone
+ auto realName = fn->name.substr(2,fn->name.size()-8);
+ extra << "property name " << realName << " is similar, typo?\n";
+ if ( !fn->arguments[1]->type->isSameType(*args[1],RefMatters::yes,ConstMatters::yes,TemporaryMatters::yes) ) {
+ extra << "\t" << describeType(fn->arguments[1]->type) << " can't be initialized with " << decl->value->type->describe() << "\n";
+ }
+
+ } else if ( !fn->arguments[1]->type->isSameType(*args[1],RefMatters::yes,ConstMatters::yes,TemporaryMatters::yes) ) {
+ extra << "property " << decl->name << " : " << describeType(fn->arguments[1]->type) << " can't be initialized with " << decl->value->type->describe() << "\n";
+ }
}
}
}
diff --git a/prog/1stPartyLibs/daScript/src/ast/ast_typedecl.cpp b/prog/1stPartyLibs/daScript/src/ast/ast_typedecl.cpp
index 872c18584..495af388c 100644
--- a/prog/1stPartyLibs/daScript/src/ast/ast_typedecl.cpp
+++ b/prog/1stPartyLibs/daScript/src/ast/ast_typedecl.cpp
@@ -917,6 +917,7 @@ namespace das
} else if ( baseType == Type::tPointer ) {
if ( smartPtr || smartPtrNative ) return true; // TODO: fix this
if ( !firstType ) return true; // void pointer can always be cloned
+ if ( firstType->isVoid() ) return true; // void pointer can always be cloned
if ( firstType->constant ) return true; // can clone to const pointer, i.e. Foo const?
return false;
} else if (baseType == Type::tBlock) {
diff --git a/prog/1stPartyLibs/daScript/src/builtin/module_builtin_ast_serialize.cpp b/prog/1stPartyLibs/daScript/src/builtin/module_builtin_ast_serialize.cpp
index f26fdba4c..4bdf43337 100644
--- a/prog/1stPartyLibs/daScript/src/builtin/module_builtin_ast_serialize.cpp
+++ b/prog/1stPartyLibs/daScript/src/builtin/module_builtin_ast_serialize.cpp
@@ -2092,6 +2092,7 @@ namespace das {
<< value.no_deprecated
<< value.no_aliasing
<< value.strict_smart_pointers
+ << value.relaxed_pointer_const
<< value.no_init
<< value.strict_unsafe_delete
<< value.no_optimizations
@@ -2195,7 +2196,7 @@ namespace das {
}
uint32_t AstSerializer::getVersion () {
- static constexpr uint32_t currentVersion = 53;
+ static constexpr uint32_t currentVersion = 54;
return currentVersion;
}
diff --git a/prog/1stPartyLibs/daScript/src/builtin/module_builtin_math.cpp b/prog/1stPartyLibs/daScript/src/builtin/module_builtin_math.cpp
index 8595576bc..645522fbc 100644
--- a/prog/1stPartyLibs/daScript/src/builtin/module_builtin_math.cpp
+++ b/prog/1stPartyLibs/daScript/src/builtin/module_builtin_math.cpp
@@ -517,11 +517,11 @@ namespace das {
}
float4 quat_from_euler_vec(float3 v) {
- return v_quat_from_euler_yzx(v_make_vec3f(v.z, v.x, v.y));
+ return v_quat_from_euler(v_ldu(&v.x));
}
float4 quat_from_euler(float x, float y, float z) {
- return v_quat_from_euler_yzx(v_make_vec3f(z, x, y));
+ return v_quat_from_euler(v_make_vec4f(x, y, z, 0.f));
}
float3 euler_from_quat_vec(float4 v) {
diff --git a/prog/1stPartyLibs/daScript/src/builtin/module_builtin_rtti.cpp b/prog/1stPartyLibs/daScript/src/builtin/module_builtin_rtti.cpp
index 0661fb7f0..b0af2854b 100644
--- a/prog/1stPartyLibs/daScript/src/builtin/module_builtin_rtti.cpp
+++ b/prog/1stPartyLibs/daScript/src/builtin/module_builtin_rtti.cpp
@@ -717,6 +717,7 @@ namespace das {
// rtti
addField("rtti");
// language
+ addField("relaxed_pointer_const");
addField("version_2_syntax");
addField("gen2_make_syntax");
addField("relaxed_assign");
diff --git a/prog/1stPartyLibs/daScript/src/builtin/network.das b/prog/1stPartyLibs/daScript/src/builtin/network.das
index 109a70f6b..1c2acaccb 100644
--- a/prog/1stPartyLibs/daScript/src/builtin/network.das
+++ b/prog/1stPartyLibs/daScript/src/builtin/network.das
@@ -17,12 +17,12 @@ class Server
def init ( port : int ) : bool
return server_init(_server,port)
def restore ( var shared_orphan : smart_ptr& )
- _server <- shared_orphan
+ _server |> move() <| shared_orphan
let classInfo = class_info(self)
unsafe
server_restore(_server,addr(self),classInfo)
def save ( var shared_orphan : smart_ptr& )
- shared_orphan <- _server
+ shared_orphan |> move() <| _server
def has_session : bool
return _server != null
def is_open : bool
diff --git a/prog/1stPartyLibs/daScript/src/parser/ds2_parser.cpp b/prog/1stPartyLibs/daScript/src/parser/ds2_parser.cpp
index 692a6422c..4ca12dcb1 100644
--- a/prog/1stPartyLibs/daScript/src/parser/ds2_parser.cpp
+++ b/prog/1stPartyLibs/daScript/src/parser/ds2_parser.cpp
@@ -936,7 +936,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 11116
+#define YYLAST 11243
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 210
@@ -945,7 +945,7 @@ union yyalloc
/* YYNRULES -- Number of rules. */
#define YYNRULES 784
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 1438
+#define YYNSTATES 1439
/* YYMAXUTOK -- Last valid token kind. */
#define YYMAXUTOK 437
@@ -1230,7 +1230,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-1259)
+#define YYPACT_NINF (-1263)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -1244,150 +1244,150 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- -1259, 21, -1259, -1259, 30, -52, -12, 337, -1259, -67,
- 337, 337, 337, -1259, 28, 219, -1259, -1259, -70, 34,
- -1259, -1259, 407, -1259, 96, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, 51, -1259, 105, 129, 150,
- -1259, -1259, -12, 5, -1259, -1259, -1259, 169, 172, -1259,
- -1259, 96, 236, 284, 295, 330, 327, -1259, -1259, -1259,
- 219, 219, 219, 294, -1259, 498, 217, -1259, -1259, -1259,
- -1259, -1259, 477, 499, 506, -1259, 508, 23, 30, 381,
- -52, 352, 379, -1259, 384, 389, -1259, -1259, -1259, 520,
- -1259, -1259, -1259, -1259, 436, 442, -1259, -1259, -49, 30,
- 219, 219, 219, 219, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, 460, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, 518, 114, -1259, -1259, -1259, -1259, 547,
- -1259, -1259, 448, -1259, -1259, -1259, 449, 493, 494, -1259,
- -1259, 507, -1259, -106, -1259, 427, 534, 498, 1737, -1259,
- 505, 569, 479, -1259, -1259, -1259, 531, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, 55, -1259, 1583, -1259, -1259, -1259,
- -1259, -1259, 9647, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, 654, 655,
- -1259, 487, 528, 402, 535, -1259, 542, -1259, 30, 500,
- 544, -1259, -1259, -1259, 114, -1259, 522, 524, 525, 509,
- 526, 530, -1259, -1259, -1259, 511, -1259, -1259, -1259, -1259,
- -1259, 538, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, 539, -1259, -1259, -1259, 540, 543, -1259,
- -1259, -1259, -1259, 545, 546, 514, 28, -1259, -1259, -1259,
- -1259, -1259, -1259, 127, 552, 551, -1259, -1259, 558, 559,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- 560, 523, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, 707, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, 573, 533, -1259,
- -1259, -109, 557, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, 561, 570, -1259, 30, -1259,
- 369, -1259, -1259, -1259, -1259, -1259, 6365, -1259, -1259, 577,
- -1259, 278, 303, 304, -1259, -1259, 6365, 62, -1259, -1259,
- -1259, 32, -1259, -1259, -1259, 0, 3453, -1259, 541, 1298,
- -1259, 563, 1437, 343, -1259, -1259, -1259, -1259, 583, 614,
- -1259, 550, -1259, 57, -1259, -93, 1583, -1259, 1875, 585,
- 28, -1259, -1259, -1259, -1259, 586, 1583, -1259, 99, 1583,
- 1583, 1583, 564, 566, -1259, -1259, 53, 28, 567, 14,
- -1259, 81, 562, 571, 578, 565, 580, 572, 134, 581,
- -1259, 199, 584, 590, 6365, 6365, 574, 579, 587, 588,
- 591, 599, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, 3649, 6365, 6365, 6365, 6365, 6365, 3065, 6365, -1259,
- 554, -1259, -1259, -1259, 602, -1259, -1259, -1259, -1259, 568,
- -1259, -1259, -1259, -1259, -1259, -1259, 56, 915, -1259, 604,
- -1259, -1259, -1259, -1259, -1259, -1259, 1583, 1583, 589, 623,
- 1583, 487, 1583, 487, 1583, 487, 6708, 624, 6702, -1259,
- 6365, -1259, -1259, -1259, -1259, 606, -1259, -1259, 9159, 3843,
- -1259, -1259, 649, -1259, -53, -1259, -1259, 417, -1259, 552,
- 644, 635, 417, -1259, 646, -1259, -1259, 6365, -1259, -1259,
- 309, -74, -1259, 552, -1259, 615, -1259, -1259, 616, 4037,
- -1259, 528, 4231, 617, 657, -1259, 651, 669, 4425, -25,
- 4619, 788, -1259, 656, 658, 621, 817, -1259, -1259, -1259,
- -1259, -1259, 659, -1259, 660, 661, 662, 663, 665, -1259,
- 763, -1259, 666, 9531, 667, -1259, 664, -1259, 18, -1259,
- 108, -1259, -1259, -1259, 6365, 332, 419, 653, 367, -1259,
- -1259, -1259, 636, -1259, -1259, 250, -1259, 668, 670, 671,
- -1259, 6365, 1583, 6365, 6365, -1259, -1259, 6365, -1259, 6365,
- -1259, 6365, -1259, -1259, 6365, -1259, 1583, 46, 46, 6365,
- 6365, 6365, 6365, 6365, 6365, 513, 309, 9678, -1259, 674,
- 46, 46, -55, 46, 46, 309, 827, 676, 10335, 676,
- 194, 2673, 843, -1259, 640, 568, -1259, 10825, 10857, 6365,
- 6365, -1259, -1259, 6365, 6365, 6365, 6365, 687, 6365, 19,
- 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 4813,
- 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365,
- 10913, 6365, -1259, 5007, 439, 467, -1259, -1259, -19, 469,
- 557, 470, 557, 472, 557, -1259, 326, -1259, 339, -1259,
- 1583, 652, 676, -1259, -1259, -1259, 9190, -1259, 679, 1583,
- -1259, -1259, 1583, -1259, -1259, 6738, 673, 814, -1259, 145,
- -1259, 6365, 309, 6365, 10335, 851, 6365, 10335, 6365, 688,
- -1259, 685, 713, 10335, -1259, 6365, 10335, 699, -1259, -1259,
- 6365, 675, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -64,
- -1259, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365,
- 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365,
- 585, -1259, -1259, 862, 479, -1259, 6365, 9777, -1259, -1259,
- -1259, 1583, 1583, 1583, 1583, 3259, 709, 6365, 1583, -1259,
- -1259, -1259, 1583, 676, 341, 674, 6830, 1583, 1583, 6929,
- 1583, 6960, 1583, 676, 1583, 1583, 676, 1583, 686, 7059,
- 7151, 7184, 7276, 7375, 7406, -1259, 6365, -84, 16, 6365,
- 6365, 702, 22, 309, 6365, 677, 678, 680, 681, 305,
- -1259, -1259, 90, 682, -18, 2869, -1259, 111, 698, 683,
- 690, 487, 2080, -1259, 843, 692, 694, -1259, -1259, 703,
- 696, -1259, -1259, 1042, 1042, 672, 672, 175, 175, 700,
- 8, 701, -1259, 9280, -59, -59, 604, 1042, 1042, 823,
- 10538, 10570, 10424, 10945, 9866, 10652, 457, 10684, 672, 672,
- 1236, 1236, 8, 8, 8, 126, 6365, 704, 705, 237,
- 6365, 878, 706, 9311, -1259, 147, -1259, -1259, 728, -1259,
- -1259, 710, -1259, 711, -1259, 717, -1259, 6708, -1259, 624,
- 344, 552, -1259, -1259, -1259, -1259, 552, 552, -1259, 6365,
- 729, -1259, 731, -1259, 1583, -1259, 6365, 7505, 36, 10335,
- 528, 10335, 7597, 6365, -1259, -1259, 10335, -1259, 7630, 6365,
- 708, 861, 745, -1259, 374, -1259, 10335, 10335, 10335, 10335,
- 10335, 10335, 10335, 10335, 10335, 10335, 10335, 10335, 10335, 10335,
- 10335, 10335, 10335, 10335, 10335, -1259, 743, 537, 848, 744,
- 9898, -1259, -1259, -1259, -1259, 552, 732, 733, 475, 291,
- 165, 714, 715, 351, 7722, 480, 1583, 1583, 1583, 736,
- 719, 712, 1583, 720, -1259, 737, 742, -1259, 746, -1259,
- 747, 723, 748, 749, 725, 757, 843, -1259, -1259, -1259,
- -1259, -1259, 739, 9980, 6365, 10335, -1259, -1259, 6365, 40,
- 10335, -1259, -1259, 6365, 6365, 1583, 487, 119, -1259, 753,
- 6365, 6365, 6365, 256, 6559, -1259, 371, -1259, -69, 557,
- -1259, 487, -1259, 6365, -1259, 6365, 5201, 6365, -1259, 764,
- 750, -1259, -1259, 6365, 761, -1259, 9401, 6365, 5395, 762,
- -1259, 9432, -1259, 5589, -1259, 6365, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, 765, 1583, 7821, -1259, 926, -17, 10335, 528, 6365,
- -1259, 528, 10335, 2285, 528, 7852, 6365, 809, -1259, 191,
- 810, 1583, 99, -1259, -1259, -1259, 440, -1259, -1, -1259,
- -1259, -1259, -1259, -1259, 767, -1259, -1259, -1259, 769, 813,
- -1259, -1259, 790, 797, 798, -1259, -1259, 6365, 799, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, 76,
- 5783, -1259, 421, 424, 6365, 7951, 8043, 800, 557, -1259,
- 8076, 10335, 10335, 781, 2869, 783, 189, 828, 829, 784,
- 831, 833, -1259, 196, 12, 557, 1583, 8168, 1583, 8267,
- -1259, 197, 8298, -1259, 6365, 10456, 6365, -1259, 8397, -1259,
- 210, 6365, -1259, -1259, -1259, 213, -1259, -1259, -1259, 6365,
- 552, -1259, 834, 6365, -1259, 242, -1259, -1259, 519, 985,
- 8489, -1259, 836, 313, 956, 201, 6365, 967, -1, -1259,
- -1259, 537, 812, 815, -1259, -1259, 6365, 816, -1259, -1259,
- -1259, -1259, 818, 821, 674, 819, 6365, 6365, 6365, 824,
- 933, 842, 845, 5977, -1259, -1259, 255, 6365, 6365, 425,
- -1259, -1259, -1259, 832, 222, -1259, 276, 6365, 6365, 6365,
- -1259, -1259, 853, -1259, -1259, -69, -1259, 6171, -1259, -1259,
- 528, 835, -1259, 483, -1259, -1259, -1259, 1583, 8522, 8614,
- -1259, -1259, 8713, -1259, 822, -1259, 10335, 528, 528, -1259,
- -1259, 846, -1259, 2479, 847, -1259, -1259, 1583, 99, 860,
- -1259, 6365, 10012, -1259, -1259, 967, 309, 933, 933, 8744,
- 852, 854, 856, 857, 6365, -1259, -1259, 6365, 672, 672,
- 672, 6365, -1259, -1259, 933, 291, -1259, 8843, -1259, 864,
- 10094, 6365, 320, -1259, 6365, 6365, 863, 8935, 10335, 10335,
- 865, -1259, 6365, 10424, -1259, -1259, -1259, 488, -1259, -1259,
- -1259, -1259, -1259, -1259, 6365, -1259, -1259, -1259, -1259, -1259,
- 10335, -1259, 99, 6365, -1259, 10128, -1259, 1737, -1259, -1259,
- -35, -35, -1259, 6365, 933, 933, 291, 866, 867, 676,
- -35, 698, 869, -1259, 951, 870, 874, 10094, -1259, 320,
- 10335, 10335, -1259, 257, -1259, 10456, -1259, -1259, -1259, 8968,
- 6365, 10210, -1259, 880, 1737, 291, 698, 888, -1259, 873,
- 875, 9060, -35, -35, 876, -1259, -1259, 877, 879, -1259,
- 6365, -1259, -1259, 882, -1259, 6365, 6365, -1259, 528, 10299,
- -1259, -1259, 528, 263, 883, -1259, -1259, -1259, -1259, 881,
- 884, -1259, -1259, -1259, 10335, -1259, 10335, 10335, 519, -1259,
- -1259, -1259, 291, -1259, -1259, -1259, 269, -1259
+ -1263, 22, -1263, -1263, 72, 77, 0, 436, -1263, -97,
+ 436, 436, 436, -1263, 196, 67, -1263, -1263, -4, 79,
+ 92, -1263, 356, -1263, 278, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -7, -1263, 76, 166, 257,
+ -1263, -1263, 0, 17, -1263, -1263, -1263, 296, 298, -1263,
+ -1263, 278, 323, 350, 393, 404, 405, -1263, -1263, -1263,
+ 67, 67, 67, 349, -1263, 465, 124, -1263, -1263, -1263,
+ -1263, -1263, -1263, 467, 474, 483, -1263, 484, 21, 72,
+ 412, 77, 376, 410, -1263, 422, 461, -1263, -1263, -1263,
+ 485, -1263, -1263, -1263, -1263, 466, 456, -1263, -1263, -59,
+ 72, 67, 67, 67, 67, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, 476, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, 492, 123, -1263, -1263, -1263, -1263,
+ 593, -1263, -1263, 480, -1263, -1263, -1263, 500, 501, 502,
+ -1263, -1263, 510, -1263, 49, -1263, 241, 537, 465, 1738,
+ -1263, 497, 569, 471, -1263, -1263, -1263, 498, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, 71, -1263, 1584, -1263, -1263,
+ -1263, -1263, -1263, 9648, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, 645,
+ 646, -1263, 478, 514, 397, 515, -1263, 525, -1263, 72,
+ 482, 526, -1263, -1263, -1263, 123, -1263, 506, 508, 511,
+ 493, 512, 517, -1263, -1263, -1263, 499, -1263, -1263, -1263,
+ -1263, -1263, 518, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, 520, -1263, -1263, -1263, 521, 522,
+ -1263, -1263, -1263, -1263, 523, 524, 505, 196, -1263, -1263,
+ -1263, -1263, -1263, -1263, 9, 529, 550, -1263, -1263, 552,
+ 553, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, 554, 495, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, 695, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, 558, 519,
+ -1263, -1263, -73, 540, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, 541, 555, -1263, 72,
+ -1263, 344, -1263, -1263, -1263, -1263, -1263, 6366, -1263, -1263,
+ 562, -1263, 261, 273, 279, -1263, -1263, 6366, 63, -1263,
+ -1263, -1263, -2, -1263, -1263, -1263, -6, 3454, -1263, 527,
+ 1299, -1263, 548, 1438, 212, -1263, -1263, -1263, -1263, 566,
+ 597, -1263, 533, -1263, 50, -1263, -69, 1584, -1263, 1876,
+ 570, 196, -1263, -1263, -1263, -1263, 577, 1584, -1263, 35,
+ 1584, 1584, 1584, 546, 556, -1263, -1263, 54, 196, 557,
+ 15, -1263, 65, 535, 560, 565, 547, 568, 551, 126,
+ 572, -1263, 144, 578, 579, 6366, 6366, 561, 563, 567,
+ 571, 573, 575, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, 3650, 6366, 6366, 6366, 6366, 6366, 3066, 6366,
+ -1263, 559, -1263, -1263, -1263, 580, -1263, -1263, -1263, -1263,
+ 583, -1263, -1263, -1263, -1263, -1263, -1263, -49, 916, -1263,
+ 582, -1263, -1263, -1263, -1263, -1263, -1263, 1584, 1584, 564,
+ 609, 1584, 478, 1584, 478, 1584, 478, 6709, 626, 6703,
+ -1263, 6366, -1263, -1263, -1263, -1263, 585, -1263, -1263, 9160,
+ 3844, -1263, -1263, 631, -1263, -54, -1263, -1263, 372, -1263,
+ 529, 623, 615, 372, -1263, 634, -1263, -1263, 6366, -1263,
+ -1263, 18, -89, -1263, 529, -1263, 592, -1263, -1263, 601,
+ 4038, -1263, 514, 4232, 602, 648, -1263, 636, 656, 4426,
+ -99, 4620, 775, -1263, 644, 650, 612, 808, -1263, -1263,
+ -1263, -1263, -1263, 651, -1263, 652, 653, 654, 657, 658,
+ -1263, 761, -1263, 659, 9532, 649, -1263, 660, -1263, 8,
+ -1263, -28, -1263, -1263, -1263, 6366, 140, 269, 647, 341,
+ -1263, -1263, -1263, 627, -1263, -1263, 184, -1263, 662, 663,
+ 664, -1263, 6366, 1584, 6366, 6366, -1263, -1263, 6366, -1263,
+ 6366, -1263, 6366, -1263, -1263, 6366, -1263, 1584, 618, 618,
+ 6366, 6366, 6366, 6366, 6366, 6366, 488, 18, 9679, -1263,
+ 661, 618, 618, -88, 618, 618, 18, 821, 665, 10336,
+ 665, 180, 2674, 831, -1263, 628, 583, -1263, 10831, 10919,
+ 6366, 6366, -1263, -1263, 6366, 6366, 6366, 6366, 678, 6366,
+ -67, 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366,
+ 4814, 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366,
+ 6366, 11040, 6366, -1263, 5008, 329, 370, -1263, -1263, -9,
+ 408, 540, 413, 540, 414, 540, -1263, 328, -1263, 330,
+ -1263, 1584, 635, 665, -1263, -1263, -1263, 9191, -1263, 671,
+ 1584, -1263, -1263, 1584, -1263, -1263, 6739, 666, 807, -1263,
+ -50, -1263, 6366, 18, 6366, 10336, 837, 6366, 10336, 6366,
+ 674, -1263, 675, 699, 10336, -1263, 6366, 10336, 685, -1263,
+ -1263, 6366, 667, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -79, -1263, 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366,
+ 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366,
+ 6366, 570, -1263, -1263, 849, 471, -1263, 6366, 9778, -1263,
+ -1263, -1263, 1584, 1584, 1584, 1584, 3260, 696, 6366, 1584,
+ -1263, -1263, -1263, 1584, 665, 331, 661, 6831, 1584, 1584,
+ 6930, 1584, 6961, 1584, 665, 1584, 1584, 665, 1584, 680,
+ 7060, 7152, 7185, 7277, 7376, 7407, -1263, 6366, 318, 10,
+ 6366, 6366, 688, 23, 18, 6366, 669, 668, 672, 676,
+ 300, -1263, -1263, 11, 677, 16, 2870, -1263, 110, 689,
+ 679, 681, 478, 2081, -1263, 831, 683, 682, -1263, -1263,
+ 684, 686, -1263, -1263, 673, 673, 164, 164, 10767, 10767,
+ 687, 285, 691, -1263, 9281, -62, -62, 582, 673, 673,
+ 824, 10539, 10571, 10425, 10952, 9867, 10653, 458, 10685, 164,
+ 164, 1043, 1043, 285, 285, 285, 13, 6366, 692, 693,
+ 162, 6366, 869, 697, 9312, -1263, 127, -1263, -1263, 716,
+ -1263, -1263, 694, -1263, 702, -1263, 703, -1263, 6709, -1263,
+ 626, 332, 529, -1263, -1263, -1263, -1263, 529, 529, -1263,
+ 6366, 717, -1263, 728, -1263, 1584, -1263, 6366, 7506, 30,
+ 10336, 514, 10336, 7598, 6366, -1263, -1263, 10336, -1263, 7631,
+ 6366, 700, 851, 738, -1263, 354, -1263, 10336, 10336, 10336,
+ 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336,
+ 10336, 10336, 10336, 10336, 10336, 10336, -1263, 733, 494, 839,
+ 735, 9899, -1263, -1263, -1263, -1263, 529, 722, 724, 415,
+ 299, 185, 705, 706, 348, 7723, 416, 1584, 1584, 1584,
+ 729, 708, 711, 1584, 712, -1263, 731, 734, -1263, 736,
+ -1263, 737, 713, 740, 741, 715, 743, 831, -1263, -1263,
+ -1263, -1263, -1263, 719, 9981, 6366, 10336, -1263, -1263, 6366,
+ 53, 10336, -1263, -1263, 6366, 6366, 1584, 478, 120, -1263,
+ 726, 6366, 6366, 6366, 201, 6560, -1263, 339, -1263, -68,
+ 540, -1263, 478, -1263, 6366, -1263, 6366, 5202, 6366, -1263,
+ 745, 730, -1263, -1263, 6366, 739, -1263, 9402, 6366, 5396,
+ 751, -1263, 9433, -1263, 5590, -1263, 6366, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, 755, 1584, 7822, -1263, 890, -33, 10336, 514,
+ 6366, -1263, 514, 10336, 2286, 514, 7853, 6366, 772, -1263,
+ 192, 774, 1584, 35, -1263, -1263, -1263, 334, -1263, 3,
+ -1263, -1263, -1263, -1263, -1263, 744, -1263, -1263, -1263, 762,
+ 783, -1263, -1263, 782, 784, 785, -1263, -1263, 6366, 786,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ 60, 5784, -1263, 381, 391, 6366, 7952, 8044, 787, 540,
+ -1263, 8077, 10336, 10336, 768, 2870, 770, 121, 814, 815,
+ 779, 823, 825, -1263, 194, 34, 540, 1584, 8169, 1584,
+ 8268, -1263, 200, 8299, -1263, 6366, 10457, 6366, -1263, 8398,
+ -1263, 221, 6366, -1263, -1263, -1263, 226, -1263, -1263, -1263,
+ 6366, 529, -1263, 826, 6366, -1263, 242, -1263, -1263, 433,
+ 974, 8490, -1263, 827, -85, 947, 158, 6366, 958, 3,
+ -1263, -1263, 494, 789, 791, -1263, -1263, 6366, 806, -1263,
+ -1263, -1263, -1263, 792, 793, 661, 795, 6366, 6366, 6366,
+ 796, 928, 798, 799, 5978, -1263, -1263, 243, 6366, 6366,
+ 392, -1263, -1263, -1263, 819, 141, -1263, 207, 6366, 6366,
+ 6366, -1263, -1263, 854, -1263, -1263, -68, -1263, 6172, -1263,
+ -1263, 514, 832, -1263, 421, -1263, -1263, -1263, 1584, 8523,
+ 8615, -1263, -1263, 8714, -1263, 813, -1263, 10336, 514, 514,
+ -1263, -1263, 816, -1263, 2480, 848, -1263, -1263, 1584, 35,
+ 860, -1263, 6366, 10013, -1263, -1263, 958, 18, 928, 928,
+ 8745, 818, 820, 843, 846, 6366, -1263, -1263, 6366, 164,
+ 164, 164, 6366, -1263, -1263, 928, 299, -1263, 8844, -1263,
+ 852, 10095, 6366, 306, -1263, 6366, 6366, 822, 8936, 10336,
+ 10336, 836, -1263, 6366, 10425, -1263, -1263, -1263, 440, -1263,
+ -1263, -1263, -1263, -1263, -1263, 6366, -1263, -1263, -1263, -1263,
+ -1263, 10336, -1263, 35, 6366, -1263, 10129, -1263, 1738, -1263,
+ -1263, 82, 82, -1263, 6366, 928, 928, 299, 847, 856,
+ 665, 82, 689, 857, -1263, 976, 859, 833, 10095, -1263,
+ 306, 10336, 10336, -1263, 178, -1263, 10457, -1263, -1263, -1263,
+ 8969, 6366, 10211, -1263, 880, 1738, 299, 689, 882, -1263,
+ 861, 862, 9061, 82, 82, 864, -1263, -1263, 865, 866,
+ -1263, 6366, -1263, -1263, 870, -1263, 6366, 6366, -1263, 514,
+ 10300, -1263, -1263, 514, 244, 853, -1263, -1263, -1263, -1263,
+ 867, 873, -1263, -1263, -1263, 10336, -1263, 10336, 10336, 433,
+ -1263, -1263, -1263, 299, -1263, -1263, -1263, 256, -1263
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1397,212 +1397,212 @@ static const yytype_int16 yydefact[] =
{
2, 114, 1, 269, 0, 0, 0, 543, 270, 0,
543, 543, 543, 16, 0, 0, 15, 3, 0, 0,
- 9, 8, 0, 7, 531, 6, 11, 5, 4, 13,
+ 0, 8, 0, 7, 531, 6, 11, 5, 4, 13,
12, 14, 86, 87, 85, 94, 96, 38, 51, 48,
49, 40, 0, 46, 39, 545, 544, 0, 0, 22,
21, 531, 0, 0, 0, 0, 243, 36, 101, 102,
0, 0, 0, 103, 105, 112, 0, 100, 17, 10,
- 564, 563, 207, 549, 565, 532, 533, 0, 0, 0,
- 0, 41, 0, 47, 0, 0, 44, 546, 548, 18,
- 709, 701, 705, 245, 0, 0, 111, 106, 0, 0,
- 0, 0, 0, 0, 115, 209, 208, 211, 206, 551,
- 550, 0, 567, 566, 570, 535, 534, 536, 92, 93,
- 90, 91, 89, 0, 0, 88, 97, 52, 50, 46,
- 43, 42, 0, 19, 20, 23, 0, 0, 0, 244,
- 34, 37, 110, 0, 107, 108, 109, 113, 0, 552,
- 553, 560, 469, 24, 25, 29, 0, 81, 82, 79,
- 80, 78, 77, 83, 0, 45, 0, 710, 702, 706,
- 35, 104, 0, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 0, 0,
- 121, 116, 0, 0, 0, 561, 0, 571, 0, 470,
- 0, 26, 27, 28, 0, 95, 0, 0, 0, 0,
- 0, 0, 578, 598, 579, 614, 580, 584, 585, 586,
- 587, 604, 591, 592, 593, 594, 595, 596, 597, 599,
- 600, 601, 602, 671, 583, 590, 603, 678, 685, 581,
- 588, 582, 589, 0, 0, 0, 0, 613, 635, 638,
- 636, 637, 698, 633, 547, 619, 497, 503, 175, 176,
- 173, 124, 125, 127, 126, 128, 129, 130, 131, 157,
- 158, 155, 156, 148, 159, 160, 149, 146, 147, 174,
- 168, 0, 172, 161, 162, 163, 164, 135, 136, 137,
- 132, 133, 134, 145, 0, 151, 152, 150, 143, 144,
- 139, 138, 140, 141, 142, 123, 122, 167, 0, 153,
- 154, 469, 119, 234, 212, 605, 608, 611, 612, 606,
- 609, 607, 610, 554, 555, 558, 568, 98, 0, 523,
- 516, 537, 84, 639, 662, 665, 0, 668, 658, 0,
- 622, 672, 679, 686, 692, 695, 0, 0, 648, 653,
- 647, 0, 661, 657, 650, 0, 0, 652, 634, 0,
- 620, 780, 703, 707, 177, 178, 171, 166, 179, 169,
- 165, 0, 117, 268, 491, 0, 0, 210, 0, 540,
- 0, 562, 482, 572, 99, 0, 0, 517, 0, 0,
- 0, 0, 0, 0, 375, 376, 0, 0, 0, 0,
- 369, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 604, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 458, 314, 316, 315, 317, 318, 319, 320,
- 30, 0, 0, 0, 0, 0, 0, 0, 0, 299,
- 300, 373, 372, 451, 370, 444, 443, 442, 441, 114,
- 447, 371, 446, 445, 416, 377, 417, 0, 378, 0,
- 374, 713, 717, 714, 715, 716, 0, 0, 0, 0,
- 0, 116, 0, 116, 0, 116, 0, 0, 0, 644,
- 237, 655, 656, 649, 651, 0, 654, 630, 0, 0,
- 700, 699, 781, 711, 243, 626, 625, 0, 498, 493,
- 0, 0, 0, 504, 0, 180, 170, 0, 266, 267,
- 0, 469, 118, 120, 236, 0, 61, 62, 0, 260,
- 258, 0, 0, 0, 0, 259, 0, 0, 0, 0,
- 0, 213, 216, 0, 0, 0, 0, 229, 224, 221,
- 220, 222, 0, 235, 0, 68, 69, 66, 67, 230,
- 272, 219, 0, 65, 538, 541, 780, 559, 483, 524,
- 0, 514, 515, 513, 0, 0, 0, 0, 627, 736,
- 739, 248, 252, 251, 257, 0, 288, 0, 0, 0,
- 765, 0, 0, 0, 0, 279, 282, 0, 285, 0,
- 769, 0, 745, 751, 0, 742, 0, 405, 406, 0,
- 0, 0, 0, 0, 0, 0, 0, 749, 772, 780,
- 382, 381, 418, 380, 379, 0, 0, 780, 294, 780,
- 301, 0, 309, 234, 300, 114, 215, 0, 0, 0,
- 0, 407, 408, 0, 0, 0, 0, 0, 0, 0,
+ 9, 564, 563, 207, 549, 565, 532, 533, 0, 0,
+ 0, 0, 41, 0, 47, 0, 0, 44, 546, 548,
+ 18, 709, 701, 705, 245, 0, 0, 111, 106, 0,
+ 0, 0, 0, 0, 0, 115, 209, 208, 211, 206,
+ 551, 550, 0, 567, 566, 570, 535, 534, 536, 92,
+ 93, 90, 91, 89, 0, 0, 88, 97, 52, 50,
+ 46, 43, 42, 0, 19, 20, 23, 0, 0, 0,
+ 244, 34, 37, 110, 0, 107, 108, 109, 113, 0,
+ 552, 553, 560, 469, 24, 25, 29, 0, 81, 82,
+ 79, 80, 78, 77, 83, 0, 45, 0, 710, 702,
+ 706, 35, 104, 0, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 0,
+ 0, 121, 116, 0, 0, 0, 561, 0, 571, 0,
+ 470, 0, 26, 27, 28, 0, 95, 0, 0, 0,
+ 0, 0, 0, 578, 598, 579, 614, 580, 584, 585,
+ 586, 587, 604, 591, 592, 593, 594, 595, 596, 597,
+ 599, 600, 601, 602, 671, 583, 590, 603, 678, 685,
+ 581, 588, 582, 589, 0, 0, 0, 0, 613, 635,
+ 638, 636, 637, 698, 633, 547, 619, 497, 503, 175,
+ 176, 173, 124, 125, 127, 126, 128, 129, 130, 131,
+ 157, 158, 155, 156, 148, 159, 160, 149, 146, 147,
+ 174, 168, 0, 172, 161, 162, 163, 164, 135, 136,
+ 137, 132, 133, 134, 145, 0, 151, 152, 150, 143,
+ 144, 139, 138, 140, 141, 142, 123, 122, 167, 0,
+ 153, 154, 469, 119, 234, 212, 605, 608, 611, 612,
+ 606, 609, 607, 610, 554, 555, 558, 568, 98, 0,
+ 523, 516, 537, 84, 639, 662, 665, 0, 668, 658,
+ 0, 622, 672, 679, 686, 692, 695, 0, 0, 648,
+ 653, 647, 0, 661, 657, 650, 0, 0, 652, 634,
+ 0, 620, 780, 703, 707, 177, 178, 171, 166, 179,
+ 169, 165, 0, 117, 268, 491, 0, 0, 210, 0,
+ 540, 0, 562, 482, 572, 99, 0, 0, 517, 0,
+ 0, 0, 0, 0, 0, 375, 376, 0, 0, 0,
+ 0, 369, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 604, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 458, 314, 316, 315, 317, 318, 319,
+ 320, 30, 0, 0, 0, 0, 0, 0, 0, 0,
+ 299, 300, 373, 372, 451, 370, 444, 443, 442, 441,
+ 114, 447, 371, 446, 445, 416, 377, 417, 0, 378,
+ 0, 374, 713, 717, 714, 715, 716, 0, 0, 0,
+ 0, 0, 116, 0, 116, 0, 116, 0, 0, 0,
+ 644, 237, 655, 656, 649, 651, 0, 654, 630, 0,
+ 0, 700, 699, 781, 711, 243, 626, 625, 0, 498,
+ 493, 0, 0, 0, 504, 0, 180, 170, 0, 266,
+ 267, 0, 469, 118, 120, 236, 0, 61, 62, 0,
+ 260, 258, 0, 0, 0, 0, 259, 0, 0, 0,
+ 0, 0, 213, 216, 0, 0, 0, 0, 229, 224,
+ 221, 220, 222, 0, 235, 0, 68, 69, 66, 67,
+ 230, 272, 219, 0, 65, 538, 541, 780, 559, 483,
+ 524, 0, 514, 515, 513, 0, 0, 0, 0, 627,
+ 736, 739, 248, 252, 251, 257, 0, 288, 0, 0,
+ 0, 765, 0, 0, 0, 0, 279, 282, 0, 285,
+ 0, 769, 0, 745, 751, 0, 742, 0, 405, 406,
+ 0, 0, 0, 0, 0, 0, 0, 0, 749, 772,
+ 780, 382, 381, 418, 380, 379, 0, 0, 780, 294,
+ 780, 301, 0, 309, 234, 300, 114, 215, 0, 0,
+ 0, 0, 407, 408, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 359, 0, 642, 0, 0, 0, 615, 617, 0, 0,
- 119, 0, 119, 0, 119, 495, 0, 501, 0, 616,
- 0, 0, 780, 646, 629, 632, 0, 621, 0, 0,
- 499, 704, 0, 505, 708, 0, 0, 573, 489, 508,
- 492, 0, 0, 0, 261, 0, 0, 246, 0, 0,
- 233, 0, 0, 55, 73, 0, 263, 0, 231, 232,
- 0, 0, 223, 218, 225, 226, 227, 228, 271, 0,
- 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 359, 0, 642, 0, 0, 0, 615, 617, 0,
+ 0, 119, 0, 119, 0, 119, 495, 0, 501, 0,
+ 616, 0, 0, 780, 646, 629, 632, 0, 621, 0,
+ 0, 499, 704, 0, 505, 708, 0, 0, 573, 489,
+ 508, 492, 0, 0, 0, 261, 0, 0, 246, 0,
+ 0, 233, 0, 0, 55, 73, 0, 263, 0, 231,
+ 232, 0, 0, 223, 218, 225, 226, 227, 228, 271,
+ 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 781, 556, 569, 0, 469, 528, 0, 0, 640, 663,
- 666, 0, 0, 0, 0, 734, 0, 0, 0, 755,
- 758, 761, 0, 780, 0, 780, 0, 0, 0, 0,
- 0, 0, 0, 780, 0, 0, 780, 0, 0, 0,
- 0, 0, 0, 0, 0, 33, 0, 31, 0, 0,
- 781, 0, 0, 0, 781, 0, 0, 0, 0, 347,
- 344, 346, 0, 0, 243, 0, 362, 0, 727, 0,
- 0, 116, 0, 301, 309, 0, 0, 430, 429, 0,
- 0, 431, 435, 383, 384, 396, 397, 394, 395, 0,
- 424, 0, 414, 0, 448, 449, 450, 385, 386, 401,
- 402, 403, 404, 0, 0, 399, 400, 398, 392, 393,
- 388, 387, 389, 390, 391, 0, 0, 0, 353, 0,
- 0, 0, 0, 0, 367, 0, 669, 659, 0, 623,
- 673, 0, 680, 0, 687, 0, 693, 0, 696, 0,
- 0, 241, 643, 238, 631, 712, 494, 500, 490, 0,
- 0, 507, 0, 506, 0, 509, 0, 0, 0, 262,
- 0, 247, 0, 0, 53, 54, 264, 234, 0, 0,
- 0, 518, 0, 278, 516, 277, 331, 332, 334, 333,
- 335, 325, 326, 327, 336, 337, 323, 324, 338, 339,
- 328, 329, 330, 322, 539, 542, 0, 476, 479, 0,
- 0, 530, 641, 664, 667, 628, 0, 0, 0, 735,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 419, 0, 0, 420, 0, 452,
- 0, 0, 0, 0, 0, 0, 309, 453, 454, 455,
- 456, 457, 0, 0, 0, 748, 773, 774, 0, 0,
- 295, 754, 409, 0, 0, 0, 116, 0, 363, 0,
- 0, 0, 0, 0, 0, 366, 0, 364, 0, 119,
- 313, 116, 426, 0, 432, 0, 0, 0, 412, 0,
- 0, 436, 440, 0, 0, 415, 0, 0, 0, 0,
- 354, 0, 360, 0, 410, 0, 368, 670, 660, 618,
- 624, 674, 676, 681, 683, 688, 690, 694, 496, 697,
- 502, 0, 0, 0, 575, 576, 510, 512, 0, 0,
- 265, 0, 76, 0, 0, 0, 0, 0, 273, 0,
- 0, 0, 0, 557, 477, 478, 479, 480, 471, 484,
- 529, 737, 740, 249, 0, 254, 255, 253, 0, 0,
- 291, 289, 0, 0, 0, 766, 764, 239, 0, 775,
- 280, 283, 286, 770, 768, 746, 752, 750, 743, 0,
- 0, 32, 0, 0, 0, 0, 0, 0, 119, 365,
- 0, 719, 718, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 307, 0, 0, 119, 0, 0, 0, 0,
- 342, 0, 0, 437, 0, 425, 0, 413, 0, 355,
- 0, 0, 411, 361, 357, 0, 677, 684, 691, 237,
- 242, 574, 0, 0, 74, 0, 75, 214, 58, 63,
- 0, 520, 0, 516, 521, 0, 0, 474, 471, 472,
- 473, 476, 0, 0, 250, 256, 0, 0, 290, 756,
- 759, 762, 0, 0, 780, 0, 0, 0, 0, 0,
- 734, 0, 0, 0, 423, 459, 0, 0, 0, 0,
- 345, 468, 348, 0, 0, 340, 0, 0, 0, 0,
- 304, 305, 0, 303, 302, 0, 310, 0, 296, 311,
- 0, 0, 467, 0, 465, 343, 462, 0, 0, 0,
- 461, 356, 0, 358, 0, 577, 511, 0, 0, 56,
- 57, 0, 70, 0, 0, 519, 274, 0, 0, 0,
- 525, 0, 0, 475, 485, 474, 0, 734, 734, 0,
- 0, 0, 0, 0, 237, 776, 240, 239, 281, 284,
- 287, 0, 735, 747, 734, 0, 421, 0, 460, 778,
- 778, 0, 0, 351, 0, 0, 0, 0, 721, 720,
- 0, 308, 0, 297, 312, 427, 433, 0, 466, 464,
- 463, 645, 72, 59, 0, 64, 68, 69, 66, 67,
- 65, 71, 0, 0, 522, 0, 527, 0, 487, 481,
- 733, 733, 292, 0, 734, 734, 0, 0, 0, 780,
- 733, 726, 0, 422, 0, 0, 0, 778, 349, 0,
- 723, 722, 341, 0, 306, 298, 428, 434, 438, 0,
- 0, 0, 526, 0, 0, 0, 730, 780, 732, 0,
- 0, 0, 733, 733, 0, 767, 777, 0, 0, 744,
- 0, 784, 782, 0, 352, 0, 0, 439, 0, 0,
- 276, 486, 0, 0, 781, 731, 738, 741, 293, 0,
- 0, 763, 771, 753, 779, 783, 725, 724, 58, 275,
- 488, 728, 0, 757, 760, 60, 0, 729
+ 0, 781, 556, 569, 0, 469, 528, 0, 0, 640,
+ 663, 666, 0, 0, 0, 0, 734, 0, 0, 0,
+ 755, 758, 761, 0, 780, 0, 780, 0, 0, 0,
+ 0, 0, 0, 0, 780, 0, 0, 780, 0, 0,
+ 0, 0, 0, 0, 0, 0, 33, 0, 31, 0,
+ 0, 781, 0, 0, 0, 781, 0, 0, 0, 0,
+ 347, 344, 346, 0, 0, 243, 0, 362, 0, 727,
+ 0, 0, 116, 0, 301, 309, 0, 0, 430, 429,
+ 0, 0, 431, 435, 383, 384, 396, 397, 394, 395,
+ 0, 424, 0, 414, 0, 448, 449, 450, 385, 386,
+ 401, 402, 403, 404, 0, 0, 399, 400, 398, 392,
+ 393, 388, 387, 389, 390, 391, 0, 0, 0, 353,
+ 0, 0, 0, 0, 0, 367, 0, 669, 659, 0,
+ 623, 673, 0, 680, 0, 687, 0, 693, 0, 696,
+ 0, 0, 241, 643, 238, 631, 712, 494, 500, 490,
+ 0, 0, 507, 0, 506, 0, 509, 0, 0, 0,
+ 262, 0, 247, 0, 0, 53, 54, 264, 234, 0,
+ 0, 0, 518, 0, 278, 516, 277, 331, 332, 334,
+ 333, 335, 325, 326, 327, 336, 337, 323, 324, 338,
+ 339, 328, 329, 330, 322, 539, 542, 0, 476, 479,
+ 0, 0, 530, 641, 664, 667, 628, 0, 0, 0,
+ 735, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 419, 0, 0, 420, 0,
+ 452, 0, 0, 0, 0, 0, 0, 309, 453, 454,
+ 455, 456, 457, 0, 0, 0, 748, 773, 774, 0,
+ 0, 295, 754, 409, 0, 0, 0, 116, 0, 363,
+ 0, 0, 0, 0, 0, 0, 366, 0, 364, 0,
+ 119, 313, 116, 426, 0, 432, 0, 0, 0, 412,
+ 0, 0, 436, 440, 0, 0, 415, 0, 0, 0,
+ 0, 354, 0, 360, 0, 410, 0, 368, 670, 660,
+ 618, 624, 674, 676, 681, 683, 688, 690, 694, 496,
+ 697, 502, 0, 0, 0, 575, 576, 510, 512, 0,
+ 0, 265, 0, 76, 0, 0, 0, 0, 0, 273,
+ 0, 0, 0, 0, 557, 477, 478, 479, 480, 471,
+ 484, 529, 737, 740, 249, 0, 254, 255, 253, 0,
+ 0, 291, 289, 0, 0, 0, 766, 764, 239, 0,
+ 775, 280, 283, 286, 770, 768, 746, 752, 750, 743,
+ 0, 0, 32, 0, 0, 0, 0, 0, 0, 119,
+ 365, 0, 719, 718, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 307, 0, 0, 119, 0, 0, 0,
+ 0, 342, 0, 0, 437, 0, 425, 0, 413, 0,
+ 355, 0, 0, 411, 361, 357, 0, 677, 684, 691,
+ 237, 242, 574, 0, 0, 74, 0, 75, 214, 58,
+ 63, 0, 520, 0, 516, 521, 0, 0, 474, 471,
+ 472, 473, 476, 0, 0, 250, 256, 0, 0, 290,
+ 756, 759, 762, 0, 0, 780, 0, 0, 0, 0,
+ 0, 734, 0, 0, 0, 423, 459, 0, 0, 0,
+ 0, 345, 468, 348, 0, 0, 340, 0, 0, 0,
+ 0, 304, 305, 0, 303, 302, 0, 310, 0, 296,
+ 311, 0, 0, 467, 0, 465, 343, 462, 0, 0,
+ 0, 461, 356, 0, 358, 0, 577, 511, 0, 0,
+ 56, 57, 0, 70, 0, 0, 519, 274, 0, 0,
+ 0, 525, 0, 0, 475, 485, 474, 0, 734, 734,
+ 0, 0, 0, 0, 0, 237, 776, 240, 239, 281,
+ 284, 287, 0, 735, 747, 734, 0, 421, 0, 460,
+ 778, 778, 0, 0, 351, 0, 0, 0, 0, 721,
+ 720, 0, 308, 0, 297, 312, 427, 433, 0, 466,
+ 464, 463, 645, 72, 59, 0, 64, 68, 69, 66,
+ 67, 65, 71, 0, 0, 522, 0, 527, 0, 487,
+ 481, 733, 733, 292, 0, 734, 734, 0, 0, 0,
+ 780, 733, 726, 0, 422, 0, 0, 0, 778, 349,
+ 0, 723, 722, 341, 0, 306, 298, 428, 434, 438,
+ 0, 0, 0, 526, 0, 0, 0, 730, 780, 732,
+ 0, 0, 0, 733, 733, 0, 767, 777, 0, 0,
+ 744, 0, 784, 782, 0, 352, 0, 0, 439, 0,
+ 0, 276, 486, 0, 0, 781, 731, 738, 741, 293,
+ 0, 0, 763, 771, 753, 779, 783, 725, 724, 58,
+ 275, 488, 728, 0, 757, 760, 60, 0, 729
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -1259, -1259, -1259, -1259, -1259, -1259, 452, 993, -1259, -1259,
- -1259, 1079, -1259, -1259, -1259, 1047, -1259, 955, -1259, -1259,
- 1011, -1259, -1259, -1259, -334, -1259, -1259, -181, -1259, -1259,
- -1259, -1259, -1259, -1259, 893, -1259, -1259, -66, 997, -1259,
- -1259, -1259, 349, -1259, -422, -472, -662, -1259, -1259, -1259,
- -1253, -1259, -1259, -514, -1259, -1259, -628, -1135, -189, -1259,
- -14, -1259, -1259, -1259, -1259, -1259, -162, -161, -159, -157,
- -1259, -1259, 1108, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -336, -1259,
- 689, -126, -1259, -794, -1259, -1259, -1259, -1259, -1259, -1259,
- -1258, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- 536, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -144, -78,
- -163, -77, 27, -1259, -1259, -1259, -1259, -1259, 605, -1259,
- -471, -1259, -1259, -481, -1259, -1259, -706, -158, -560, -918,
- -1259, -1259, -1259, -1259, 1074, -1259, -1259, -1259, 372, -1259,
- 691, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -593,
- -164, -1259, 721, -1259, -1259, -1259, -1259, -1259, -1259, -339,
- -1259, -1259, -365, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -142, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, 730, -624, -225, -740, -1259, -1259,
- -955, -1003, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -796, -1259, -1259, -1259, -1259, -1259, -1259, -1259, -1259,
- -1259, -1259, -1259, -1259, -1259, -1259, -389, -1259, -1235, -523,
- -1259
+ -1263, -1263, -1263, -1263, -1263, -1263, 460, 1002, -1263, -1263,
+ -1263, 1080, -1263, -1263, -1263, 1040, -1263, 953, -1263, -1263,
+ 1003, -1263, -1263, -1263, -344, -1263, -1263, -188, -1263, -1263,
+ -1263, -1263, -1263, -1263, 872, -1263, -1263, -64, 988, -1263,
+ -1263, -1263, 335, -1263, -426, -472, -662, -1263, -1263, -1263,
+ -1198, -1263, -1263, -514, -1263, -1263, -627, -1135, -209, -1263,
+ -14, -1263, -1263, -1263, -1263, -1263, -184, -183, -182, -181,
+ -1263, -1263, 1094, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -336, -1263,
+ 630, -138, -1263, -782, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1262, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ 536, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -144, -90,
+ -176, -87, 20, -1263, -1263, -1263, -1263, -1263, 590, -1263,
+ -481, -1263, -1263, -475, -1263, -1263, -706, -174, -560, -918,
+ -1263, -1263, -1263, -1263, 1069, -1263, -1263, -1263, 360, -1263,
+ 655, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -593,
+ -164, -1263, 718, -1263, -1263, -1263, -1263, -1263, -1263, -339,
+ -1263, -1263, -365, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -142, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, 720, -624, -234, -748, -1263, -1263,
+ -1049, -980, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -809, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263,
+ -1263, -1263, -1263, -1263, -1263, -1263, -404, -1263, -1256, -523,
+ -1263
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- 0, 1, 16, 135, 51, 17, 156, 162, 615, 451,
- 141, 452, 95, 19, 20, 43, 44, 86, 21, 39,
- 40, 543, 544, 1271, 1272, 545, 1274, 546, 547, 548,
- 549, 550, 551, 552, 163, 164, 35, 36, 37, 209,
- 63, 64, 65, 66, 22, 322, 387, 201, 23, 107,
- 202, 108, 148, 324, 453, 553, 388, 691, 1213, 900,
- 454, 554, 582, 774, 1204, 455, 555, 556, 557, 558,
- 559, 520, 560, 739, 1089, 933, 561, 456, 787, 1216,
- 788, 1217, 790, 1218, 457, 778, 1208, 458, 627, 1249,
- 459, 1152, 1153, 831, 460, 636, 461, 562, 462, 463,
- 821, 464, 1015, 1312, 1016, 1369, 465, 881, 1173, 466,
- 628, 1156, 1376, 1158, 1377, 1257, 1407, 468, 383, 1201,
- 1284, 1096, 1098, 959, 568, 764, 1347, 1384, 384, 385,
- 507, 686, 372, 512, 688, 373, 1022, 708, 574, 398,
- 934, 340, 935, 341, 76, 117, 25, 152, 565, 566,
- 47, 48, 132, 26, 111, 150, 204, 27, 389, 956,
- 391, 206, 207, 74, 114, 393, 28, 151, 336, 709,
- 469, 333, 259, 260, 678, 371, 261, 479, 1060, 508,
- 577, 368, 262, 263, 399, 962, 690, 477, 1058, 400,
- 963, 401, 964, 476, 1057, 480, 1061, 481, 1176, 482,
- 1063, 483, 1177, 484, 1065, 485, 1178, 486, 1067, 487,
- 1069, 509, 29, 137, 266, 510, 30, 138, 267, 514,
- 31, 136, 265, 698, 470, 1386, 1362, 829, 1387, 1388,
- 1389, 972, 471, 772, 1202, 773, 1203, 797, 1222, 794,
- 1220, 618, 472, 795, 1221, 473, 976, 1291, 977, 1292,
- 978, 1293, 782, 1212, 792, 1219, 1214, 474, 1365, 503,
- 475
+ 0, 1, 16, 136, 51, 17, 157, 163, 616, 452,
+ 142, 453, 96, 19, 20, 43, 44, 87, 21, 39,
+ 40, 544, 545, 1272, 1273, 546, 1275, 547, 548, 549,
+ 550, 551, 552, 553, 164, 165, 35, 36, 37, 210,
+ 63, 64, 65, 66, 22, 323, 388, 202, 23, 108,
+ 203, 109, 149, 325, 454, 554, 389, 692, 1214, 901,
+ 455, 555, 583, 775, 1205, 456, 556, 557, 558, 559,
+ 560, 521, 561, 740, 1090, 934, 562, 457, 788, 1217,
+ 789, 1218, 791, 1219, 458, 779, 1209, 459, 628, 1250,
+ 460, 1153, 1154, 832, 461, 637, 462, 563, 463, 464,
+ 822, 465, 1016, 1313, 1017, 1370, 466, 882, 1174, 467,
+ 629, 1157, 1377, 1159, 1378, 1258, 1408, 469, 384, 1202,
+ 1285, 1097, 1099, 960, 569, 765, 1348, 1385, 385, 386,
+ 508, 687, 373, 513, 689, 374, 1023, 709, 575, 399,
+ 935, 341, 936, 342, 77, 118, 25, 153, 566, 567,
+ 47, 48, 133, 26, 112, 151, 205, 27, 390, 957,
+ 392, 207, 208, 75, 115, 394, 28, 152, 337, 710,
+ 470, 334, 260, 261, 679, 372, 262, 480, 1061, 509,
+ 578, 369, 263, 264, 400, 963, 691, 478, 1059, 401,
+ 964, 402, 965, 477, 1058, 481, 1062, 482, 1177, 483,
+ 1064, 484, 1178, 485, 1066, 486, 1179, 487, 1068, 488,
+ 1070, 510, 29, 138, 267, 511, 30, 139, 268, 515,
+ 31, 137, 266, 699, 471, 1387, 1363, 830, 1388, 1389,
+ 1390, 973, 472, 773, 1203, 774, 1204, 798, 1223, 795,
+ 1221, 619, 473, 796, 1222, 474, 977, 1292, 978, 1293,
+ 979, 1294, 783, 1213, 793, 1220, 1215, 475, 1366, 504,
+ 476
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -1610,1336 +1610,1389 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 57, 67, 258, 916, 501, 832, 687, 828, 210, 680,
- 766, 682, 126, 684, 1006, 685, 1092, 715, 891, 587,
- 893, 2, 895, 808, 264, 724, -114, 82, 3, 637,
- 638, 570, 812, 493, 513, 971, 1004, 632, 118, 119,
- 1031, 381, 1008, 761, 1264, 1199, 67, 67, 67, 32,
- 33, 4, 619, 5, 1368, 6, 1079, 1147, 402, 403,
- 1134, 7, 83, 1148, 518, 491, 647, 637, 638, 649,
- 650, 8, 78, 649, 650, 1366, 381, 9, 409, 521,
- 211, 212, 1019, 930, 411, 94, 67, 67, 67, 67,
- 100, 101, 102, 1149, 1383, 49, 811, 382, 931, 208,
- 171, 10, 68, 38, 815, 1200, 816, 519, 911, 911,
- 1150, 1404, 629, 522, 1021, 1151, 588, 589, 823, 918,
- 94, 418, 419, 11, 12, 641, 642, 1017, 699, 157,
- 158, 1412, 1403, 647, 208, 648, 649, 650, 651, 652,
- 50, 932, 337, 670, 671, 323, 763, 670, 671, 1247,
- 41, 828, 257, 888, 692, 421, 422, 142, 75, 1357,
- 358, 913, 913, 641, 642, 369, 55, 889, 700, 903,
- 1385, 647, 851, 703, 649, 650, 651, 652, 120, 42,
- 599, 852, 323, 121, 494, 122, 123, 359, 360, 762,
- 56, 55, 34, 13, 912, 84, 637, 638, 828, 590,
- 912, 1023, 1129, 495, 785, 258, 69, 85, 258, 496,
- 670, 671, 14, 834, 912, 56, 492, 1303, 912, 591,
- 1009, 15, 258, 441, 15, 571, 633, 784, 124, 1104,
- 77, 572, 258, 214, 571, 258, 258, 258, 581, 771,
- 572, 798, 357, 823, 523, 911, 323, 489, 670, 671,
- 361, 1021, 1017, 58, 362, 783, 447, 575, 576, 578,
- 980, 215, 983, 449, 634, 793, 592, 490, 796, 159,
- 991, 911, 394, 994, 160, 1278, 161, 123, 573, 1044,
- 765, 1223, 59, 78, 1350, 1351, 593, 573, 1045, 1024,
- 639, 640, 641, 642, 643, 827, 1018, 644, 913, 1083,
- 647, 1360, 648, 649, 650, 651, 652, 363, 653, 654,
- 79, 364, 258, 258, 365, 911, 258, 1025, 258, 600,
- 258, 1238, 258, 912, 913, 1055, 914, 571, 80, 915,
- 366, 87, 55, 572, 674, 675, 367, 885, 679, 601,
- 681, 817, 683, 1055, 88, 828, 818, 897, 911, 899,
- 60, 1392, 1393, 1056, 1314, 257, 56, 55, 257, 1029,
- 663, 664, 665, 666, 667, 668, 669, 1154, 913, 1192,
- 1183, 1105, 257, 1280, 1245, 1055, 567, 670, 671, 819,
- 573, 56, 257, 911, 603, 257, 257, 257, 1055, 1405,
- 1049, 1055, 257, 585, 45, 103, 1390, 1193, 90, 1050,
- 46, 913, 1246, 1255, 604, 1398, 1080, 966, 967, 96,
- 97, 98, 70, 71, 61, 72, 1261, 979, 1070, 1263,
- 1055, 104, 985, 986, 62, 988, 1068, 990, 258, 992,
- 993, 1309, 995, 1055, 1026, 776, 913, 1419, 1420, 970,
- 1239, 1026, 258, 73, 823, 982, 91, 1026, 1267, 144,
- 145, 146, 147, 1017, 1026, 777, 706, 92, 55, -675,
- 1143, 1308, 257, 257, -675, 94, 257, 817, 257, 1431,
- 257, 707, 257, 838, 842, 1437, 1233, 325, 637, 638,
- 1316, 326, 56, -675, -682, -689, -350, 1197, 856, -682,
- -689, -350, 93, 1250, 1277, 327, 328, 397, 505, 99,
- 329, 330, 331, 332, 506, 511, 882, 1097, -682, -689,
- -350, 505, 896, 505, 369, 505, 505, 506, 768, 506,
- 1236, 506, 506, 505, 1145, 898, 258, 981, 1315, 506,
- 1071, 1268, 1196, 1146, 105, 258, 127, 1108, 258, 505,
- 106, 129, 1269, 1270, 1138, 506, 130, 395, 901, 369,
- 396, 131, 1090, 397, 85, 1091, 109, 906, 397, 1155,
- 907, 1072, 110, 112, 1184, 115, 100, 1186, 102, 113,
- 1188, 116, 639, 640, 641, 642, 643, 133, 257, 644,
- 645, 646, 647, 134, 648, 649, 650, 651, 652, 505,
- 653, 654, 257, 1227, 1094, 506, 1228, 1311, 139, 1055,
- 1095, 369, 1055, 1055, 83, 769, 140, 258, 258, 258,
- 258, 1112, 1113, 1114, 258, 1224, 820, 1118, 258, 167,
- 958, 369, 149, 258, 258, 886, 258, 166, 258, 965,
- 258, 258, 968, 258, 1109, 1281, 975, 100, 101, 102,
- 1248, 662, 663, 664, 665, 666, 667, 668, 669, 369,
- 1137, 369, 369, 887, 369, 890, 892, 369, 894, 670,
- 671, 1103, 369, 168, 169, 369, 1111, 1406, 1132, 1326,
- 369, 170, 1133, 100, 1378, 205, 257, 153, 154, 805,
- 806, 1361, 153, 154, 155, 257, 203, 208, 257, 319,
- 320, 1296, 321, 637, 638, 211, 212, 213, 323, 1042,
- 1161, 52, 53, 54, 335, 334, 339, 343, 338, 344,
- 345, 347, 1170, 370, 346, 348, 349, 1175, 1343, 356,
- 374, 375, 376, 350, 351, 352, 1195, 377, 353, 378,
- 354, 355, 1361, 258, 369, 379, 1324, 380, 386, 478,
- 392, 502, 390, 1185, 499, 515, 516, 564, 569, 579,
- 258, 580, 586, 1332, 1333, 517, 595, 257, 257, 257,
- 257, 1413, 630, 596, 257, 598, 602, 594, 257, 605,
- 597, 15, 1076, 257, 257, 606, 257, 599, 257, 609,
- 257, 257, 1380, 257, 610, 677, 511, 639, 640, 641,
- 642, 1251, 611, 612, 1226, 676, 613, 647, 1229, 648,
- 649, 650, 651, 652, 614, 653, 654, 631, 1436, 673,
- 693, 697, 258, 258, 258, 701, 702, 704, 258, 719,
- 711, 712, 718, 720, 721, 727, 730, 731, 728, 738,
- 729, 732, 733, 734, 735, 736, 1397, 737, 740, 770,
- 813, 775, 760, 692, 637, 638, 759, 830, 833, 849,
- 905, 258, 810, 779, 814, 780, 781, 910, 902, 665,
- 666, 667, 668, 669, 1415, 920, 924, 923, 925, 927,
- 957, 973, 996, 1007, 670, 671, 1026, 1032, 909, 1052,
- 929, 1011, 467, 257, 1012, 1013, 1014, 1020, 1034, 1027,
- 1059, 1074, 488, 1075, 1428, 1028, 1062, 1064, 1430, 1033,
- 257, 1035, 498, 1066, 1087, 1036, 1037, 1088, 258, 1047,
- 1048, 1053, 1342, 1086, 1093, 1097, 1099, 1117, 1101, 1102,
- 1106, 1107, 1115, 1120, 563, 1116, 1119, 258, 1121, 1124,
- 1180, 1127, 1122, 1123, 1125, 1126, 637, 638, 639, 640,
- 641, 642, 643, 1128, 1130, 644, 645, 646, 647, 1163,
- 648, 649, 650, 651, 652, 1164, 653, 654, 692, 1139,
- 607, 608, 257, 257, 257, 1359, 1166, 1171, 257, 1182,
- 1179, 1191, 1194, 1205, 1206, 1207, 1209, 617, 620, 621,
- 622, 623, 624, 1210, 1211, 1215, 1232, 1235, 1237, 1242,
- 1240, 1241, 258, 1243, 258, 1244, 1265, 1273, 1276, 1279,
- 1283, 257, 1290, 1302, 1400, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 1320, 1253, 1287, 1313, 1341,
- 1288, 1325, 1344, 1294, 1297, 670, 671, 1295, 1331, 1301,
- 639, 640, 641, 642, 643, 696, 1364, 644, 645, 646,
- 647, 1401, 648, 649, 650, 651, 652, 1304, 653, 654,
- 1305, 1334, 1411, 705, 655, 656, 657, 1353, 257, 1354,
- 658, 1355, 1356, 637, 638, 714, 1414, 807, 717, 1372,
- 125, 1374, 1395, 1396, 723, 1399, 726, 257, 1402, 1416,
- 18, 1417, 1421, 1422, 165, 1423, 1425, 1433, 1432, 81,
- 1434, 128, 1335, 258, 1435, 659, 143, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 342, 1358, 24,
- 767, 1336, 1337, 258, 1338, 1327, 1339, 670, 671, 1321,
- 1285, 672, 1348, 1198, 1286, 89, 710, 583, 1349, 617,
- 786, 1394, 955, 789, 0, 791, 584, 0, 0, 0,
- 0, 0, 257, 0, 257, 799, 800, 801, 802, 803,
- 804, 0, 0, 0, 0, 635, 0, 0, 0, 641,
- 642, 0, 0, 0, 0, 0, 0, 647, 0, 648,
- 649, 650, 651, 652, 0, 843, 844, 0, 0, 845,
- 846, 847, 848, 0, 850, 0, 853, 854, 855, 857,
- 858, 859, 860, 861, 862, 864, 865, 866, 867, 868,
- 869, 870, 871, 872, 873, 874, 0, 883, 0, 0,
+ 57, 67, 1007, 259, 917, 502, 686, 833, 829, 211,
+ 681, 767, 683, 688, 685, 127, -114, 1093, 716, 892,
+ 588, 894, 2, 896, 809, 265, 725, 494, 972, 3,
+ 1005, 492, 571, 813, 633, 514, 119, 120, 620, 83,
+ 650, 651, 359, 1009, 762, 1265, 67, 67, 67, 1200,
+ 1080, 1369, 4, 1032, 5, 1367, 6, 519, 1148, 403,
+ 404, 382, 7, 648, 1149, 49, 650, 651, 931, 360,
+ 361, 324, 8, 1135, 84, 1020, 912, 382, 9, 410,
+ 101, 102, 103, 932, 95, 412, 852, 67, 67, 67,
+ 67, 32, 33, 912, 1150, 853, 1278, 812, 572, 398,
+ 520, 58, 10, 522, 573, 816, 600, 817, 1405, 1201,
+ 50, 1151, 1404, 630, 671, 672, 1152, 589, 590, 209,
+ 919, 634, 419, 420, 11, 12, 933, 700, 913, 914,
+ 59, 915, 362, 383, 916, 209, 363, 523, 158, 159,
+ 671, 672, 912, 764, 766, 338, 914, 143, 1022, 370,
+ 1384, 574, 829, 258, 95, 693, 422, 423, 450, 635,
+ 1358, 572, 41, 889, 824, 707, 1045, 573, 68, 701,
+ 904, 1248, 78, 1018, 704, 1046, 121, 890, 495, 763,
+ 708, 122, 493, 123, 124, 638, 639, 1413, 913, 364,
+ 786, 42, 55, 365, 13, 914, 366, 496, 60, 829,
+ 591, 913, 1024, 497, 324, 55, 259, 85, 913, 259,
+ 835, 15, 367, 14, 574, 1130, 56, 1019, 368, 86,
+ 592, 1010, 1105, 259, 442, 15, 125, 79, 785, 56,
+ 324, 913, 38, 259, 34, 824, 259, 259, 259, 582,
+ 772, 1304, 799, 358, 1018, 524, 912, 912, 490, 215,
+ 593, 69, 1022, 1239, 79, 172, 784, 448, 576, 577,
+ 579, 981, 61, 984, 70, 1224, 794, 912, 491, 797,
+ 594, 992, 62, 1315, 995, 395, 1279, 216, 160, 640,
+ 641, 642, 643, 161, 572, 162, 124, 1386, 1025, 648,
+ 573, 649, 650, 651, 652, 653, 828, 654, 655, 914,
+ 914, 1084, 104, 1391, 912, 1056, 638, 639, 1351, 1352,
+ 1406, 601, 1399, 259, 259, 1050, 1026, 259, 55, 259,
+ 914, 259, 370, 259, 1051, 1361, 769, 818, 105, 604,
+ 1281, 602, 819, 1057, 55, 675, 676, 574, 886, 680,
+ 76, 682, 56, 684, 1420, 1421, 829, 80, 898, 605,
+ 900, 666, 667, 668, 669, 670, 258, 914, 56, 258,
+ 1030, 71, 72, 1056, 73, 820, 671, 672, 1155, 777,
+ 1193, 1184, 1246, 258, 512, 1393, 1394, 568, 1056, 1027,
+ 101, 1198, 103, 258, 506, 1027, 258, 258, 258, 778,
+ 507, 1106, 74, 258, 586, 97, 98, 99, 1194, 1056,
+ 1247, 1098, 642, 643, 1056, 1144, 1256, 1081, 967, 968,
+ 648, 1317, 649, 650, 651, 652, 653, 1069, 980, 1310,
+ 1056, 1056, 1027, 986, 987, 1071, 989, 1262, 991, 259,
+ 993, 994, 1264, 996, 1027, 81, 145, 146, 147, 148,
+ 971, 1240, -675, 259, 55, 1269, 983, -675, 1268, 1309,
+ 1432, 370, 824, 818, -682, 770, 1270, 1271, 88, -682,
+ -689, 1018, 1438, 258, 258, -689, -675, 258, 56, 258,
+ 89, 258, 326, 258, 839, 843, 327, 1234, -682, 638,
+ 639, -350, 212, 213, -689, 91, -350, 671, 672, 857,
+ 328, 329, 1146, 45, 1251, 330, 331, 332, 333, 46,
+ 506, 1147, 506, 506, 506, -350, 507, 883, 507, 507,
+ 507, 370, 92, 506, 897, 887, 899, 982, 1072, 507,
+ 506, 1237, 396, 370, 106, 397, 507, 259, 398, 1316,
+ 107, 110, 1091, 1197, 1109, 1092, 259, 111, 398, 259,
+ 113, 116, 134, 95, 506, 1139, 114, 117, 135, 902,
+ 507, 1095, 370, 1228, 100, 93, 888, 1096, 907, 1056,
+ 1156, 908, 1073, 1229, 1312, 1185, 94, 128, 1187, 1056,
+ 1056, 1189, 130, 640, 641, 642, 643, 644, 86, 258,
+ 645, 646, 647, 648, 131, 649, 650, 651, 652, 653,
+ 370, 654, 655, 258, 891, 370, 370, 370, 370, 893,
+ 895, 1104, 1112, 370, 101, 102, 103, 1327, 259, 259,
+ 259, 259, 1113, 1114, 1115, 259, 1225, 821, 1119, 259,
+ 141, 959, 370, 132, 259, 259, 1379, 259, 140, 259,
+ 966, 259, 259, 969, 259, 1110, 1282, 976, 150, 638,
+ 639, 1249, 663, 664, 665, 666, 667, 668, 669, 670,
+ 84, 1138, 154, 155, 806, 807, 154, 155, 156, 167,
+ 671, 672, 212, 213, 214, 52, 53, 54, 1407, 1133,
+ 168, 169, 170, 1134, 171, 206, 101, 258, 204, 209,
+ 320, 321, 1362, 322, 324, 335, 258, 336, 340, 258,
+ 339, 344, 1297, 345, 638, 639, 346, 348, 347, 378,
+ 1043, 1162, 349, 351, 350, 352, 353, 354, 355, 356,
+ 357, 370, 371, 1171, 375, 376, 377, 379, 1176, 1344,
+ 380, 387, 391, 381, 479, 393, 503, 1196, 516, 517,
+ 500, 580, 565, 1362, 259, 642, 643, 1325, 518, 570,
+ 595, 581, 587, 648, 1186, 596, 650, 651, 652, 653,
+ 597, 259, 598, 599, 1333, 1334, 600, 603, 258, 258,
+ 258, 258, 1414, 606, 607, 258, 610, 631, 611, 258,
+ 677, 678, 612, 1077, 258, 258, 613, 258, 614, 258,
+ 615, 258, 258, 1381, 258, 632, 15, 674, 512, 694,
+ 642, 643, 1252, 698, 702, 1227, 703, 712, 648, 1230,
+ 649, 650, 651, 652, 653, 705, 713, 719, 721, 1437,
+ 720, 722, 728, 259, 259, 259, 729, 731, 732, 259,
+ 671, 672, 730, 733, 734, 735, 736, 739, 760, 737,
+ 738, 741, 776, 771, 814, 831, 834, 1398, 761, 811,
+ 850, 903, 906, 815, 693, 638, 639, 780, 781, 782,
+ 911, 921, 259, 924, 926, 928, 925, 958, 974, 1008,
+ 666, 667, 668, 669, 670, 1416, 997, 1027, 1033, 1035,
+ 1053, 910, 930, 1012, 1013, 671, 672, 1014, 1060, 1075,
+ 1063, 1015, 1021, 468, 258, 1028, 1029, 1034, 1065, 1067,
+ 1076, 1036, 1037, 489, 1088, 1429, 1038, 1048, 1049, 1431,
+ 1089, 258, 1054, 499, 1094, 1087, 1098, 1100, 1102, 259,
+ 1103, 1107, 1108, 1343, 1117, 1116, 1118, 1121, 1120, 1125,
+ 1122, 1128, 1123, 1124, 1131, 564, 1126, 1127, 259, 1129,
+ 1164, 1181, 1140, 1183, 1192, 1165, 1195, 638, 639, 640,
+ 641, 642, 643, 644, 1167, 1208, 645, 646, 647, 648,
+ 1206, 649, 650, 651, 652, 653, 1172, 654, 655, 693,
+ 1180, 608, 609, 258, 258, 258, 1360, 1207, 1210, 258,
+ 1211, 1212, 1216, 1233, 1236, 1238, 1241, 1242, 618, 621,
+ 622, 623, 624, 625, 1243, 1244, 1274, 1245, 1266, 1277,
+ 1280, 1284, 1291, 259, 1288, 259, 1289, 1295, 1303, 1296,
+ 1298, 1302, 258, 1305, 1306, 1314, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 1321, 1254, 1326, 1332,
+ 1342, 1335, 1345, 1354, 1365, 1355, 671, 672, 1373, 1401,
+ 1402, 640, 641, 642, 643, 644, 697, 1403, 645, 646,
+ 647, 648, 1375, 649, 650, 651, 652, 653, 1356, 654,
+ 655, 1357, 1412, 1396, 706, 656, 657, 658, 1433, 258,
+ 1415, 659, 1397, 1400, 638, 639, 715, 1417, 1418, 718,
+ 1422, 1423, 1424, 1434, 1426, 724, 808, 727, 258, 1435,
+ 126, 18, 82, 166, 129, 1436, 1336, 343, 144, 1359,
+ 1337, 1338, 1339, 1340, 259, 24, 660, 636, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 1322, 1286,
+ 1349, 768, 711, 1350, 259, 1287, 1328, 1199, 671, 672,
+ 90, 956, 673, 1395, 0, 584, 0, 585, 0, 0,
+ 618, 787, 0, 0, 790, 0, 792, 0, 0, 0,
+ 0, 0, 0, 258, 0, 258, 800, 801, 802, 803,
+ 804, 805, 0, 0, 0, 0, 0, 0, 0, 0,
+ 642, 643, 0, 0, 0, 0, 0, 0, 648, 0,
+ 649, 650, 651, 652, 653, 0, 844, 845, 0, 0,
+ 846, 847, 848, 849, 0, 851, 0, 854, 855, 856,
+ 858, 859, 860, 861, 862, 863, 865, 866, 867, 868,
+ 869, 870, 871, 872, 873, 874, 875, 0, 884, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 665,
- 666, 667, 668, 669, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 257, 670, 671, 0, 917, 0, 919,
- 0, 0, 921, 0, 922, 0, 0, 637, 638, 0,
- 0, 926, 0, 257, 0, 0, 928, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 936, 937, 938,
+ 0, 0, 668, 669, 670, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 258, 671, 672, 0, 918, 0,
+ 920, 0, 0, 922, 0, 923, 0, 0, 0, 0,
+ 0, 0, 927, 0, 258, 0, 0, 929, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 937, 938,
939, 940, 941, 942, 943, 944, 945, 946, 947, 948,
- 949, 950, 951, 952, 953, 954, 0, 0, 820, 0,
- 0, 0, 960, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 974, 0, 0, 0, 216, 0, 0,
- 0, 0, 0, 217, 0, 0, 0, 0, 0, 218,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 219,
- 0, 0, 1003, 0, 0, 1005, 617, 220, 0, 0,
- 1010, 0, 0, 641, 642, 820, 0, 0, 0, 0,
- 0, 647, 221, 648, 649, 650, 651, 652, 563, 222,
+ 949, 950, 951, 952, 953, 954, 955, 0, 0, 821,
+ 0, 0, 0, 961, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 975, 0, 0, 0, 217, 0,
+ 0, 0, 0, 0, 218, 0, 0, 0, 0, 0,
+ 219, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 0, 0, 1004, 0, 0, 1006, 618, 221, 0,
+ 0, 1011, 0, 0, 0, 0, 821, 0, 0, 0,
+ 0, 0, 0, 222, 0, 0, 0, 0, 0, 564,
223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1046, 0, 0, 0, 1051, 0, 0, 0,
- 0, 0, 0, 0, 0, 667, 668, 669, 0, 0,
- 0, 0, 0, 0, 0, 0, 55, 0, 670, 671,
- 0, 0, 0, 0, 0, 1073, 0, 0, 0, 255,
- 0, 0, 1077, 0, 0, 0, 216, 0, 0, 1082,
- 56, 0, 217, 0, 0, 1085, 0, 0, 218, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 219, 0,
- 0, 0, 0, 0, 0, 0, 220, 0, 0, 0,
+ 253, 254, 255, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1047, 0, 0, 0, 1052, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1074, 0, 0, 0,
+ 256, 0, 0, 1078, 0, 0, 0, 217, 0, 0,
+ 1083, 56, 0, 218, 0, 0, 1086, 0, 0, 219,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
+ 0, 0, 0, 0, 0, 0, 0, 221, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 221, 0, 0, 0, 256, 0, 500, 222, 223,
+ 0, 0, 222, 0, 0, 0, 257, 0, 501, 223,
224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 0, 0, 0, 0, 0, 0, 0, 0, 1135,
- 1136, 0, 0, 0, 0, 0, 1140, 1141, 1142, 0,
- 1010, 0, 0, 0, 0, 0, 0, 0, 0, 1157,
- 0, 1159, 0, 1162, 0, 55, 0, 0, 0, 1165,
- 0, 0, 0, 1168, 0, 0, 0, 0, 255, 0,
- 0, 1010, 0, 0, 0, 0, 0, 0, 0, 504,
- 0, 0, 216, 0, 0, 0, 0, 0, 217, 505,
- 0, 0, 0, 0, 218, 506, 0, 0, 0, 563,
- 0, 0, 1190, 0, 219, 0, 0, 0, 0, 0,
- 0, 0, 220, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 256, 0, 0, 221, 0, 0,
- 0, 0, 0, 617, 222, 223, 224, 225, 226, 227,
+ 254, 255, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1136, 1137, 0, 0, 0, 0, 0, 1141, 1142, 1143,
+ 0, 1011, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1158, 0, 1160, 0, 1163, 0, 55, 0, 0, 0,
+ 1166, 0, 0, 0, 1169, 0, 0, 0, 0, 256,
+ 0, 0, 1011, 0, 0, 0, 0, 0, 0, 0,
+ 505, 0, 0, 217, 0, 0, 0, 0, 0, 218,
+ 506, 0, 0, 0, 0, 219, 507, 0, 0, 0,
+ 564, 0, 0, 1191, 0, 220, 0, 0, 0, 0,
+ 0, 0, 0, 221, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 257, 0, 0, 222, 0,
+ 0, 0, 0, 0, 618, 223, 224, 225, 226, 227,
228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 0, 0, 0,
+ 248, 249, 250, 251, 252, 253, 254, 255, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1258, 0, 1259, 0, 0, 0, 0, 1262, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1266,
- 0, 55, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1282, 0, 255, 0, 0, 0, 0, 0,
- 0, 0, 1289, 0, 0, 56, 0, 0, 0, 0,
- 0, 0, 1298, 1299, 1300, 0, 0, 0, 0, 1307,
- 0, 0, 0, 617, 1310, 0, 0, 0, 0, 0,
- 0, 0, 172, 1317, 1318, 1319, 0, 0, 0, 0,
- 0, 0, 0, 1323, 0, 0, 0, 0, 0, 0,
- 256, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 173, 1340,
- 174, 0, 175, 176, 177, 178, 179, 1345, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 0,
- 191, 192, 193, 617, 0, 194, 195, 196, 197, 0,
- 0, 0, 0, 0, 0, 0, 0, 1367, 0, 0,
- 1370, 1371, 0, 0, 198, 199, 0, 0, 1375, 0,
+ 0, 1259, 0, 1260, 0, 0, 0, 0, 1263, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1379, 0, 0, 0, 0, 0, 524, 0, 0, 1381,
- 402, 403, 3, 0, 525, 526, 527, 0, 528, 1391,
- 404, 405, 406, 407, 408, 0, 0, 0, 0, 200,
- 409, 529, 410, 530, 531, 0, 411, 0, 0, 0,
- 0, 0, 0, 532, 412, 0, 1409, 533, 0, 534,
- 413, 0, 0, 414, 0, 8, 415, 535, 0, 536,
- 416, 0, 0, 537, 538, 0, 1424, 0, 0, 0,
- 539, 1426, 1427, 418, 419, 0, 222, 223, 224, 0,
- 226, 227, 228, 229, 230, 420, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 0, 244, 245,
- 246, 0, 0, 249, 250, 251, 252, 421, 422, 423,
- 540, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 424, 425, 0, 0, 0, 0, 0, 0,
+ 1267, 0, 55, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1283, 0, 256, 0, 0, 0, 0,
+ 0, 0, 0, 1290, 0, 0, 56, 0, 0, 0,
+ 0, 0, 0, 1299, 1300, 1301, 0, 0, 0, 0,
+ 1308, 0, 0, 0, 618, 1311, 0, 0, 0, 0,
+ 0, 0, 0, 173, 1318, 1319, 1320, 0, 0, 0,
+ 0, 0, 0, 0, 1324, 0, 0, 0, 0, 0,
+ 0, 257, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 174,
+ 1341, 175, 0, 176, 177, 178, 179, 180, 1346, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 0, 192, 193, 194, 618, 0, 195, 196, 197, 198,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1368, 0,
+ 0, 1371, 1372, 0, 0, 199, 200, 0, 0, 1376,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
- 0, 426, 427, 428, 429, 430, 0, 431, 0, 432,
- 433, 434, 435, 436, 437, 438, 439, 56, 440, 0,
- 0, 0, 0, 0, 0, 441, 541, 542, 0, 0,
+ 0, 1380, 0, 0, 0, 0, 0, 525, 0, 0,
+ 1382, 403, 404, 3, 0, 526, 527, 528, 0, 529,
+ 1392, 405, 406, 407, 408, 409, 0, 0, 0, 0,
+ 201, 410, 530, 411, 531, 532, 0, 412, 0, 0,
+ 0, 0, 0, 0, 533, 413, 0, 1410, 534, 0,
+ 535, 414, 0, 0, 415, 0, 8, 416, 536, 0,
+ 537, 417, 0, 0, 538, 539, 0, 1425, 0, 0,
+ 0, 540, 1427, 1428, 419, 420, 0, 223, 224, 225,
+ 0, 227, 228, 229, 230, 231, 421, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 0, 245,
+ 246, 247, 0, 0, 250, 251, 252, 253, 422, 423,
+ 424, 541, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 425, 426, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 442, 443, 444, 0, 14, 0, 0, 445,
- 446, 0, 0, 0, 0, 0, 0, 0, 447, 0,
- 448, 524, 449, 450, 0, 402, 403, 3, 0, 525,
- 526, 527, 0, 528, 0, 404, 405, 406, 407, 408,
- 0, 0, 0, 0, 0, 409, 529, 410, 530, 531,
- 0, 411, 0, 0, 0, 0, 0, 0, 532, 412,
- 0, 0, 533, 0, 534, 413, 0, 0, 414, 0,
- 8, 415, 535, 0, 536, 416, 0, 0, 537, 538,
- 0, 0, 0, 0, 0, 539, 0, 0, 418, 419,
- 0, 222, 223, 224, 0, 226, 227, 228, 229, 230,
- 420, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 0, 244, 245, 246, 0, 0, 249, 250,
- 251, 252, 421, 422, 423, 540, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 424, 425, 0,
+ 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
+ 0, 0, 427, 428, 429, 430, 431, 0, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 56, 441,
+ 0, 0, 0, 0, 0, 0, 442, 542, 543, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
- 0, 0, 0, 0, 0, 0, 426, 427, 428, 429,
- 430, 0, 431, 0, 432, 433, 434, 435, 436, 437,
- 438, 439, 56, 440, 0, 0, 0, 0, 0, 0,
- 441, 1030, 542, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 442, 443, 444,
- 0, 14, 0, 0, 445, 446, 0, 0, 0, 0,
- 0, 0, 0, 447, 0, 448, 524, 449, 450, 0,
- 402, 403, 3, 0, 525, 526, 527, 0, 528, 0,
- 404, 405, 406, 407, 408, 0, 0, 0, 0, 0,
- 409, 529, 410, 530, 531, 0, 411, 0, 0, 0,
- 0, 0, 0, 532, 412, 0, 0, 533, 0, 534,
- 413, 0, 0, 414, 0, 8, 415, 535, 0, 536,
- 416, 0, 0, 537, 538, 0, 0, 0, 0, 0,
- 539, 0, 0, 418, 419, 0, 222, 223, 224, 0,
- 226, 227, 228, 229, 230, 420, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 0, 244, 245,
- 246, 0, 0, 249, 250, 251, 252, 421, 422, 423,
- 540, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 424, 425, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 443, 444, 445, 0, 14, 0, 0,
+ 446, 447, 0, 0, 0, 0, 0, 0, 0, 448,
+ 0, 449, 525, 450, 451, 0, 403, 404, 3, 0,
+ 526, 527, 528, 0, 529, 0, 405, 406, 407, 408,
+ 409, 0, 0, 0, 0, 0, 410, 530, 411, 531,
+ 532, 0, 412, 0, 0, 0, 0, 0, 0, 533,
+ 413, 0, 0, 534, 0, 535, 414, 0, 0, 415,
+ 0, 8, 416, 536, 0, 537, 417, 0, 0, 538,
+ 539, 0, 0, 0, 0, 0, 540, 0, 0, 419,
+ 420, 0, 223, 224, 225, 0, 227, 228, 229, 230,
+ 231, 421, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 0, 245, 246, 247, 0, 0, 250,
+ 251, 252, 253, 422, 423, 424, 541, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 425, 426,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
- 0, 426, 427, 428, 429, 430, 0, 431, 0, 432,
- 433, 434, 435, 436, 437, 438, 439, 56, 440, 0,
- 0, 0, 0, 0, 0, 441, 1187, 542, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,
+ 0, 0, 0, 0, 0, 0, 0, 427, 428, 429,
+ 430, 431, 0, 432, 0, 433, 434, 435, 436, 437,
+ 438, 439, 440, 56, 441, 0, 0, 0, 0, 0,
+ 0, 442, 1031, 543, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 443, 444,
+ 445, 0, 14, 0, 0, 446, 447, 0, 0, 0,
+ 0, 0, 0, 0, 448, 0, 449, 525, 450, 451,
+ 0, 403, 404, 3, 0, 526, 527, 528, 0, 529,
+ 0, 405, 406, 407, 408, 409, 0, 0, 0, 0,
+ 0, 410, 530, 411, 531, 532, 0, 412, 0, 0,
+ 0, 0, 0, 0, 533, 413, 0, 0, 534, 0,
+ 535, 414, 0, 0, 415, 0, 8, 416, 536, 0,
+ 537, 417, 0, 0, 538, 539, 0, 0, 0, 0,
+ 0, 540, 0, 0, 419, 420, 0, 223, 224, 225,
+ 0, 227, 228, 229, 230, 231, 421, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 0, 245,
+ 246, 247, 0, 0, 250, 251, 252, 253, 422, 423,
+ 424, 541, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 425, 426, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 442, 443, 444, 0, 14, 0, 0, 445,
- 446, 0, 0, 0, 402, 403, 0, 0, 447, 0,
- 448, 0, 449, 450, 404, 405, 406, 407, 408, 0,
- 0, 0, 0, 0, 409, 529, 410, 530, 0, 0,
- 411, 0, 0, 0, 0, 0, 0, 0, 412, 0,
- 0, 0, 0, 0, 413, 0, 0, 414, 0, 0,
- 415, 535, 0, 0, 416, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 417, 0, 0, 418, 419, 0,
- 222, 223, 224, 0, 226, 227, 228, 229, 230, 420,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 0, 244, 245, 246, 0, 0, 249, 250, 251,
- 252, 421, 422, 423, 540, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 424, 425, 0, 0,
+ 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
+ 0, 0, 427, 428, 429, 430, 431, 0, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 56, 441,
+ 0, 0, 0, 0, 0, 0, 442, 1188, 543, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
- 0, 0, 0, 0, 0, 426, 427, 428, 429, 430,
- 0, 431, 0, 432, 433, 434, 435, 436, 437, 438,
- 439, 56, 440, 0, 0, 0, 0, 0, 0, 441,
+ 0, 0, 0, 443, 444, 445, 0, 14, 0, 0,
+ 446, 447, 0, 0, 0, 403, 404, 0, 0, 448,
+ 0, 449, 0, 450, 451, 405, 406, 407, 408, 409,
+ 0, 0, 0, 0, 0, 410, 530, 411, 531, 0,
+ 0, 412, 0, 0, 0, 0, 0, 0, 0, 413,
+ 0, 0, 0, 0, 0, 414, 0, 0, 415, 0,
+ 0, 416, 536, 0, 0, 417, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 418, 0, 0, 419, 420,
+ 0, 223, 224, 225, 0, 227, 228, 229, 230, 231,
+ 421, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 0, 245, 246, 247, 0, 0, 250, 251,
+ 252, 253, 422, 423, 424, 541, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 425, 426, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 442, 443, 444, 0,
- 14, 0, 0, 445, 446, 0, 0, 0, 402, 403,
- 0, 0, 447, 0, 448, 0, 449, 450, 404, 405,
- 406, 407, 408, 0, 0, 0, 0, 0, 409, 0,
- 410, 0, 0, 0, 411, 0, 0, 0, 0, 0,
- 0, 0, 412, 0, 0, 0, 0, 0, 413, 0,
- 0, 414, 0, 0, 415, 0, 0, 0, 416, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 417, 0,
- 0, 418, 419, 822, 222, 223, 224, 0, 226, 227,
- 228, 229, 230, 420, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 0, 244, 245, 246, 0,
- 0, 249, 250, 251, 252, 421, 422, 423, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 0, 0, 0, 0, 0, 0, 427, 428, 429, 430,
+ 431, 0, 432, 0, 433, 434, 435, 436, 437, 438,
+ 439, 440, 56, 441, 0, 0, 0, 0, 0, 0,
+ 442, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 443, 444, 445,
+ 0, 14, 0, 0, 446, 447, 0, 0, 0, 403,
+ 404, 0, 0, 448, 0, 449, 0, 450, 451, 405,
+ 406, 407, 408, 409, 0, 0, 0, 0, 0, 410,
+ 0, 411, 0, 0, 0, 412, 0, 0, 0, 0,
+ 0, 0, 0, 413, 0, 0, 0, 0, 0, 414,
+ 0, 0, 415, 0, 0, 416, 0, 0, 0, 417,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 418,
+ 0, 0, 419, 420, 823, 223, 224, 225, 0, 227,
+ 228, 229, 230, 231, 421, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 0, 245, 246, 247,
+ 0, 0, 250, 251, 252, 253, 422, 423, 424, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 424, 425, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 425, 426, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 55, 0, 0, 0, 0, 0, 0, 0, 426,
- 427, 428, 429, 430, 0, 431, 823, 432, 433, 434,
- 435, 436, 437, 438, 439, 824, 440, 0, 0, 0,
- 0, 0, 0, 441, 0, 0, 0, 0, 0, 0,
+ 0, 0, 55, 0, 0, 0, 0, 0, 0, 0,
+ 427, 428, 429, 430, 431, 0, 432, 824, 433, 434,
+ 435, 436, 437, 438, 439, 440, 825, 441, 0, 0,
+ 0, 0, 0, 0, 442, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 442, 443, 444, 0, 14, 0, 0, 445, 446, 0,
- 0, 0, 0, 0, 402, 403, 825, 0, 448, 826,
- 449, 450, 625, 0, 404, 405, 406, 407, 408, 0,
- 0, 0, 0, 0, 409, 0, 410, 0, 0, 0,
- 411, 0, 0, 0, 0, 0, 0, 0, 412, 0,
- 0, 0, 0, 0, 413, 0, 0, 414, 626, 0,
- 415, 0, 0, 0, 416, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 417, 0, 0, 418, 419, 0,
- 222, 223, 224, 0, 226, 227, 228, 229, 230, 420,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 0, 244, 245, 246, 0, 0, 249, 250, 251,
- 252, 421, 422, 423, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 424, 425, 0, 0,
+ 0, 443, 444, 445, 0, 14, 0, 0, 446, 447,
+ 0, 0, 0, 0, 0, 403, 404, 826, 0, 449,
+ 827, 450, 451, 626, 0, 405, 406, 407, 408, 409,
+ 0, 0, 0, 0, 0, 410, 0, 411, 0, 0,
+ 0, 412, 0, 0, 0, 0, 0, 0, 0, 413,
+ 0, 0, 0, 0, 0, 414, 0, 0, 415, 627,
+ 0, 416, 0, 0, 0, 417, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 418, 0, 0, 419, 420,
+ 0, 223, 224, 225, 0, 227, 228, 229, 230, 231,
+ 421, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 0, 245, 246, 247, 0, 0, 250, 251,
+ 252, 253, 422, 423, 424, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 425, 426, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
- 0, 0, 0, 0, 0, 426, 427, 428, 429, 430,
- 0, 431, 823, 432, 433, 434, 435, 436, 437, 438,
- 439, 824, 440, 0, 0, 0, 0, 0, 0, 441,
+ 0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 0, 0, 0, 0, 0, 0, 427, 428, 429, 430,
+ 431, 0, 432, 824, 433, 434, 435, 436, 437, 438,
+ 439, 440, 825, 441, 0, 0, 0, 0, 0, 0,
+ 442, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 443, 444, 445,
+ 0, 14, 0, 0, 446, 447, 0, 0, 0, 0,
+ 0, 403, 404, 448, 0, 449, 0, 450, 451, 626,
+ 0, 405, 406, 407, 408, 409, 0, 0, 0, 0,
+ 0, 410, 0, 411, 0, 0, 0, 412, 0, 0,
+ 0, 0, 0, 0, 0, 413, 0, 0, 0, 0,
+ 0, 414, 0, 0, 415, 627, 0, 416, 0, 0,
+ 0, 417, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 418, 0, 0, 419, 420, 0, 223, 224, 225,
+ 0, 227, 228, 229, 230, 231, 421, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 0, 245,
+ 246, 247, 0, 0, 250, 251, 252, 253, 422, 423,
+ 424, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 425, 426, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 442, 443, 444, 0,
- 14, 0, 0, 445, 446, 0, 0, 0, 0, 0,
- 402, 403, 447, 0, 448, 0, 449, 450, 625, 0,
- 404, 405, 406, 407, 408, 0, 0, 0, 0, 0,
- 409, 0, 410, 0, 0, 0, 411, 0, 0, 0,
- 0, 0, 0, 0, 412, 0, 0, 0, 0, 0,
- 413, 0, 0, 414, 626, 0, 415, 0, 0, 0,
- 416, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 417, 0, 0, 418, 419, 0, 222, 223, 224, 0,
- 226, 227, 228, 229, 230, 420, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 0, 244, 245,
- 246, 0, 0, 249, 250, 251, 252, 421, 422, 423,
+ 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
+ 0, 0, 427, 428, 429, 430, 431, 0, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 56, 441,
+ 0, 0, 0, 0, 0, 0, 442, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 424, 425, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 443, 444, 445, 0, 14, 0, 0,
+ 446, 447, 0, 0, 0, 403, 404, 0, 0, 448,
+ 0, 449, 0, 450, 451, 405, 406, 407, 408, 409,
+ 0, 0, 0, 0, 0, 410, 0, 411, 0, 0,
+ 0, 412, 0, 0, 0, 0, 0, 0, 0, 413,
+ 0, 0, 0, 0, 0, 414, 0, 0, 415, 0,
+ 0, 416, 0, 0, 0, 417, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 418, 0, 0, 419, 420,
+ 970, 223, 224, 225, 0, 227, 228, 229, 230, 231,
+ 421, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 0, 245, 246, 247, 0, 0, 250, 251,
+ 252, 253, 422, 423, 424, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 425, 426, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
- 0, 426, 427, 428, 429, 430, 0, 431, 0, 432,
- 433, 434, 435, 436, 437, 438, 439, 56, 440, 0,
- 0, 0, 0, 0, 0, 441, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 0, 0, 0, 0, 0, 0, 427, 428, 429, 430,
+ 431, 0, 432, 824, 433, 434, 435, 436, 437, 438,
+ 439, 440, 825, 441, 0, 0, 0, 0, 0, 0,
+ 442, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 443, 444, 445,
+ 0, 14, 0, 0, 446, 447, 0, 0, 0, 403,
+ 404, 0, 0, 448, 0, 449, 0, 450, 451, 405,
+ 406, 407, 408, 409, 0, 0, 0, 0, 0, 410,
+ 0, 411, 0, 0, 0, 412, 0, 0, 0, 0,
+ 0, 0, 0, 413, 0, 0, 0, 0, 0, 414,
+ 0, 0, 415, 0, 0, 416, 0, 0, 0, 417,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 418,
+ 0, 0, 419, 420, 0, 223, 224, 225, 0, 227,
+ 228, 229, 230, 231, 421, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 0, 245, 246, 247,
+ 0, 0, 250, 251, 252, 253, 422, 423, 424, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 442, 443, 444, 0, 14, 0, 0, 445,
- 446, 0, 0, 0, 402, 403, 0, 0, 447, 0,
- 448, 0, 449, 450, 404, 405, 406, 407, 408, 0,
- 0, 0, 0, 0, 409, 0, 410, 0, 0, 0,
- 411, 0, 0, 0, 0, 0, 0, 0, 412, 0,
- 0, 0, 0, 0, 413, 0, 0, 414, 0, 0,
- 415, 0, 0, 0, 416, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 417, 0, 0, 418, 419, 969,
- 222, 223, 224, 0, 226, 227, 228, 229, 230, 420,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 0, 244, 245, 246, 0, 0, 249, 250, 251,
- 252, 421, 422, 423, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 424, 425, 0, 0,
+ 0, 425, 426, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
- 0, 0, 0, 0, 0, 426, 427, 428, 429, 430,
- 0, 431, 823, 432, 433, 434, 435, 436, 437, 438,
- 439, 824, 440, 0, 0, 0, 0, 0, 0, 441,
+ 0, 0, 55, 0, 0, 0, 0, 0, 0, 0,
+ 427, 428, 429, 430, 431, 0, 432, 0, 433, 434,
+ 435, 436, 437, 438, 439, 440, 56, 441, 0, 0,
+ 0, 0, 0, 0, 442, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 442, 443, 444, 0,
- 14, 0, 0, 445, 446, 0, 0, 0, 402, 403,
- 0, 0, 447, 0, 448, 0, 449, 450, 404, 405,
- 406, 407, 408, 0, 0, 0, 0, 0, 409, 0,
- 410, 0, 0, 0, 411, 0, 0, 0, 0, 0,
- 0, 0, 412, 0, 0, 0, 0, 0, 413, 0,
- 0, 414, 0, 0, 415, 0, 0, 0, 416, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 417, 0,
- 0, 418, 419, 0, 222, 223, 224, 0, 226, 227,
- 228, 229, 230, 420, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 0, 244, 245, 246, 0,
- 0, 249, 250, 251, 252, 421, 422, 423, 0, 0,
+ 0, 443, 444, 445, 0, 14, 0, 0, 446, 447,
+ 0, 0, 0, 0, 0, 403, 404, 448, 498, 449,
+ 0, 450, 451, 617, 0, 405, 406, 407, 408, 409,
+ 0, 0, 0, 0, 0, 410, 0, 411, 0, 0,
+ 0, 412, 0, 0, 0, 0, 0, 0, 0, 413,
+ 0, 0, 0, 0, 0, 414, 0, 0, 415, 0,
+ 0, 416, 0, 0, 0, 417, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 418, 0, 0, 419, 420,
+ 0, 223, 224, 225, 0, 227, 228, 229, 230, 231,
+ 421, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 0, 245, 246, 247, 0, 0, 250, 251,
+ 252, 253, 422, 423, 424, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 425, 426, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 424, 425, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 0, 0, 0, 0, 0, 0, 427, 428, 429, 430,
+ 431, 0, 432, 0, 433, 434, 435, 436, 437, 438,
+ 439, 440, 56, 441, 0, 0, 0, 0, 0, 0,
+ 442, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 443, 444, 445,
+ 0, 14, 0, 0, 446, 447, 0, 0, 0, 403,
+ 404, 0, 0, 448, 0, 449, 0, 450, 451, 405,
+ 406, 407, 408, 409, 0, 0, 0, 0, 0, 410,
+ 0, 411, 0, 0, 0, 412, 0, 0, 0, 0,
+ 0, 0, 0, 413, 0, 0, 0, 0, 0, 414,
+ 0, 0, 415, 0, 0, 416, 0, 0, 0, 417,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 418,
+ 0, 0, 419, 420, 0, 223, 224, 225, 0, 227,
+ 228, 229, 230, 231, 421, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 0, 245, 246, 247,
+ 0, 0, 250, 251, 252, 253, 422, 423, 424, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 55, 0, 0, 0, 0, 0, 0, 0, 426,
- 427, 428, 429, 430, 0, 431, 0, 432, 433, 434,
- 435, 436, 437, 438, 439, 56, 440, 0, 0, 0,
- 0, 0, 0, 441, 0, 0, 0, 0, 0, 0,
+ 0, 425, 426, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 442, 443, 444, 0, 14, 0, 0, 445, 446, 0,
- 0, 0, 0, 0, 402, 403, 447, 497, 448, 0,
- 449, 450, 616, 0, 404, 405, 406, 407, 408, 0,
- 0, 0, 0, 0, 409, 0, 410, 0, 0, 0,
- 411, 0, 0, 0, 0, 0, 0, 0, 412, 0,
- 0, 0, 0, 0, 413, 0, 0, 414, 0, 0,
- 415, 0, 0, 0, 416, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 417, 0, 0, 418, 419, 0,
- 222, 223, 224, 0, 226, 227, 228, 229, 230, 420,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 0, 244, 245, 246, 0, 0, 249, 250, 251,
- 252, 421, 422, 423, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 424, 425, 0, 0,
+ 0, 0, 55, 0, 0, 0, 0, 0, 0, 0,
+ 427, 428, 429, 430, 431, 0, 432, 0, 433, 434,
+ 435, 436, 437, 438, 439, 440, 56, 441, 0, 0,
+ 0, 0, 0, 0, 442, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
- 0, 0, 0, 0, 0, 426, 427, 428, 429, 430,
- 0, 431, 0, 432, 433, 434, 435, 436, 437, 438,
- 439, 56, 440, 0, 0, 0, 0, 0, 0, 441,
+ 0, 443, 444, 445, 0, 14, 0, 0, 446, 447,
+ 0, 0, 0, 403, 404, 0, 0, 448, 696, 449,
+ 0, 450, 451, 405, 406, 407, 408, 409, 0, 0,
+ 0, 0, 0, 410, 0, 411, 0, 0, 0, 412,
+ 0, 0, 0, 0, 0, 0, 0, 413, 0, 0,
+ 0, 0, 0, 414, 0, 0, 415, 0, 0, 416,
+ 0, 0, 0, 417, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 418, 0, 0, 419, 420, 0, 223,
+ 224, 225, 0, 227, 228, 229, 230, 231, 421, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 0, 245, 246, 247, 0, 0, 250, 251, 252, 253,
+ 422, 423, 424, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 425, 426, 0, 0, 0,
+ 0, 0, 0, 0, 714, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
+ 0, 0, 0, 0, 427, 428, 429, 430, 431, 0,
+ 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
+ 56, 441, 0, 0, 0, 0, 0, 0, 442, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 442, 443, 444, 0,
- 14, 0, 0, 445, 446, 0, 0, 0, 402, 403,
- 0, 0, 447, 0, 448, 0, 449, 450, 404, 405,
- 406, 407, 408, 0, 0, 0, 0, 0, 409, 0,
- 410, 0, 0, 0, 411, 0, 0, 0, 0, 0,
- 0, 0, 412, 0, 0, 0, 0, 0, 413, 0,
- 0, 414, 0, 0, 415, 0, 0, 0, 416, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 417, 0,
- 0, 418, 419, 0, 222, 223, 224, 0, 226, 227,
- 228, 229, 230, 420, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 0, 244, 245, 246, 0,
- 0, 249, 250, 251, 252, 421, 422, 423, 0, 0,
+ 0, 0, 0, 0, 0, 443, 444, 445, 0, 14,
+ 0, 0, 446, 447, 0, 0, 0, 403, 404, 0,
+ 0, 448, 0, 449, 0, 450, 451, 405, 406, 407,
+ 408, 409, 0, 0, 0, 0, 0, 410, 0, 411,
+ 0, 0, 0, 412, 0, 0, 0, 0, 0, 0,
+ 0, 413, 0, 0, 0, 0, 0, 414, 0, 0,
+ 415, 0, 0, 416, 0, 0, 0, 417, 0, 0,
+ 0, 0, 0, 717, 0, 0, 0, 418, 0, 0,
+ 419, 420, 0, 223, 224, 225, 0, 227, 228, 229,
+ 230, 231, 421, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 0, 245, 246, 247, 0, 0,
+ 250, 251, 252, 253, 422, 423, 424, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 425,
+ 426, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 424, 425, 0, 0, 0, 0, 0, 0, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 427, 428,
+ 429, 430, 431, 0, 432, 0, 433, 434, 435, 436,
+ 437, 438, 439, 440, 56, 441, 0, 0, 0, 0,
+ 0, 0, 442, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 443,
+ 444, 445, 0, 14, 0, 0, 446, 447, 0, 0,
+ 0, 403, 404, 0, 0, 448, 0, 449, 0, 450,
+ 451, 405, 406, 407, 408, 409, 0, 0, 0, 0,
+ 0, 410, 0, 411, 0, 0, 0, 412, 0, 0,
+ 0, 0, 0, 0, 0, 413, 0, 0, 0, 0,
+ 0, 414, 0, 0, 415, 0, 0, 416, 0, 0,
+ 0, 417, 0, 0, 723, 0, 0, 0, 0, 0,
+ 0, 418, 0, 0, 419, 420, 0, 223, 224, 225,
+ 0, 227, 228, 229, 230, 231, 421, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 0, 245,
+ 246, 247, 0, 0, 250, 251, 252, 253, 422, 423,
+ 424, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 425, 426, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 55, 0, 0, 0, 0, 0, 0, 0, 426,
- 427, 428, 429, 430, 0, 431, 0, 432, 433, 434,
- 435, 436, 437, 438, 439, 56, 440, 0, 0, 0,
- 0, 0, 0, 441, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
+ 0, 0, 427, 428, 429, 430, 431, 0, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 56, 441,
+ 0, 0, 0, 0, 0, 0, 442, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 442, 443, 444, 0, 14, 0, 0, 445, 446, 0,
- 0, 0, 402, 403, 0, 0, 447, 695, 448, 0,
- 449, 450, 404, 405, 406, 407, 408, 0, 0, 0,
- 0, 0, 409, 0, 410, 0, 0, 0, 411, 0,
- 0, 0, 0, 0, 0, 0, 412, 0, 0, 0,
- 0, 0, 413, 0, 0, 414, 0, 0, 415, 0,
- 0, 0, 416, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 417, 0, 0, 418, 419, 0, 222, 223,
- 224, 0, 226, 227, 228, 229, 230, 420, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 0,
- 244, 245, 246, 0, 0, 249, 250, 251, 252, 421,
- 422, 423, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 424, 425, 0, 0, 0, 0,
- 0, 0, 0, 713, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 55, 0, 0, 0, 0,
- 0, 0, 0, 426, 427, 428, 429, 430, 0, 431,
- 0, 432, 433, 434, 435, 436, 437, 438, 439, 56,
- 440, 0, 0, 0, 0, 0, 0, 441, 0, 0,
+ 0, 0, 0, 443, 444, 445, 0, 14, 0, 0,
+ 446, 447, 0, 0, 0, 403, 404, 0, 0, 448,
+ 0, 449, 0, 450, 451, 405, 406, 407, 408, 409,
+ 0, 0, 0, 0, 0, 410, 0, 411, 0, 0,
+ 0, 412, 0, 0, 0, 0, 0, 0, 0, 413,
+ 0, 0, 0, 0, 0, 414, 0, 0, 415, 0,
+ 0, 416, 0, 0, 0, 417, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 418, 0, 0, 419, 420,
+ 0, 223, 224, 225, 0, 227, 228, 229, 230, 231,
+ 421, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 0, 245, 246, 247, 0, 0, 250, 251,
+ 252, 253, 422, 423, 424, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 425, 426, 0,
+ 0, 0, 0, 0, 0, 0, 726, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 0, 0, 0, 0, 0, 0, 427, 428, 429, 430,
+ 431, 0, 432, 0, 433, 434, 435, 436, 437, 438,
+ 439, 440, 56, 441, 0, 0, 0, 0, 0, 0,
+ 442, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 443, 444, 445,
+ 0, 14, 0, 0, 446, 447, 0, 0, 0, 403,
+ 404, 0, 0, 448, 0, 449, 0, 450, 451, 405,
+ 406, 407, 408, 409, 0, 0, 864, 0, 0, 410,
+ 0, 411, 0, 0, 0, 412, 0, 0, 0, 0,
+ 0, 0, 0, 413, 0, 0, 0, 0, 0, 414,
+ 0, 0, 415, 0, 0, 416, 0, 0, 0, 417,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 418,
+ 0, 0, 419, 420, 0, 223, 224, 225, 0, 227,
+ 228, 229, 230, 231, 421, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 0, 245, 246, 247,
+ 0, 0, 250, 251, 252, 253, 422, 423, 424, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 442, 443, 444, 0, 14, 0,
- 0, 445, 446, 0, 0, 0, 402, 403, 0, 0,
- 447, 0, 448, 0, 449, 450, 404, 405, 406, 407,
- 408, 0, 0, 0, 0, 0, 409, 0, 410, 0,
- 0, 0, 411, 0, 0, 0, 0, 0, 0, 0,
- 412, 0, 0, 0, 0, 0, 413, 0, 0, 414,
- 0, 0, 415, 0, 0, 0, 416, 0, 0, 0,
- 0, 0, 716, 0, 0, 0, 417, 0, 0, 418,
- 419, 0, 222, 223, 224, 0, 226, 227, 228, 229,
- 230, 420, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 0, 244, 245, 246, 0, 0, 249,
- 250, 251, 252, 421, 422, 423, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 424, 425,
+ 0, 425, 426, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,
- 0, 0, 0, 0, 0, 0, 0, 426, 427, 428,
- 429, 430, 0, 431, 0, 432, 433, 434, 435, 436,
- 437, 438, 439, 56, 440, 0, 0, 0, 0, 0,
- 0, 441, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 442, 443,
- 444, 0, 14, 0, 0, 445, 446, 0, 0, 0,
- 402, 403, 0, 0, 447, 0, 448, 0, 449, 450,
- 404, 405, 406, 407, 408, 0, 0, 0, 0, 0,
- 409, 0, 410, 0, 0, 0, 411, 0, 0, 0,
- 0, 0, 0, 0, 412, 0, 0, 0, 0, 0,
- 413, 0, 0, 414, 0, 0, 415, 0, 0, 0,
- 416, 0, 0, 722, 0, 0, 0, 0, 0, 0,
- 417, 0, 0, 418, 419, 0, 222, 223, 224, 0,
- 226, 227, 228, 229, 230, 420, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 0, 244, 245,
- 246, 0, 0, 249, 250, 251, 252, 421, 422, 423,
+ 0, 0, 55, 0, 0, 0, 0, 0, 0, 0,
+ 427, 428, 429, 430, 431, 0, 432, 0, 433, 434,
+ 435, 436, 437, 438, 439, 440, 56, 441, 0, 0,
+ 0, 0, 0, 0, 442, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 424, 425, 0, 0, 0, 0, 0, 0,
+ 0, 443, 444, 445, 0, 14, 0, 0, 446, 447,
+ 0, 0, 0, 403, 404, 0, 0, 448, 0, 449,
+ 0, 450, 451, 405, 406, 407, 408, 409, 0, 0,
+ 0, 0, 0, 410, 0, 411, 0, 0, 0, 412,
+ 0, 0, 0, 0, 0, 0, 0, 413, 0, 0,
+ 0, 0, 0, 414, 0, 0, 415, 0, 0, 416,
+ 0, 0, 0, 417, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 418, 0, 0, 419, 420, 0, 223,
+ 224, 225, 0, 227, 228, 229, 230, 231, 421, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 0, 245, 246, 247, 0, 0, 250, 251, 252, 253,
+ 422, 423, 424, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 425, 426, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
- 0, 426, 427, 428, 429, 430, 0, 431, 0, 432,
- 433, 434, 435, 436, 437, 438, 439, 56, 440, 0,
- 0, 0, 0, 0, 0, 441, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
+ 0, 0, 0, 0, 427, 428, 429, 430, 431, 0,
+ 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
+ 56, 441, 0, 0, 0, 0, 0, 0, 442, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 442, 443, 444, 0, 14, 0, 0, 445,
- 446, 0, 0, 0, 402, 403, 0, 0, 447, 0,
- 448, 0, 449, 450, 404, 405, 406, 407, 408, 0,
- 0, 0, 0, 0, 409, 0, 410, 0, 0, 0,
- 411, 0, 0, 0, 0, 0, 0, 0, 412, 0,
- 0, 0, 0, 0, 413, 0, 0, 414, 0, 0,
- 415, 0, 0, 0, 416, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 417, 0, 0, 418, 419, 0,
- 222, 223, 224, 0, 226, 227, 228, 229, 230, 420,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 0, 244, 245, 246, 0, 0, 249, 250, 251,
- 252, 421, 422, 423, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 424, 425, 0, 0,
- 0, 0, 0, 0, 0, 725, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
- 0, 0, 0, 0, 0, 426, 427, 428, 429, 430,
- 0, 431, 0, 432, 433, 434, 435, 436, 437, 438,
- 439, 56, 440, 0, 0, 0, 0, 0, 0, 441,
+ 0, 0, 0, 0, 0, 443, 444, 445, 0, 14,
+ 0, 0, 446, 447, 0, 0, 0, 403, 404, 0,
+ 0, 448, 0, 449, 885, 450, 451, 405, 406, 407,
+ 408, 409, 0, 0, 0, 0, 0, 410, 0, 411,
+ 0, 0, 0, 412, 0, 0, 0, 0, 0, 0,
+ 0, 413, 0, 0, 0, 0, 0, 414, 0, 0,
+ 415, 0, 0, 416, 0, 0, 0, 417, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 418, 0, 0,
+ 419, 420, 0, 223, 224, 225, 0, 227, 228, 229,
+ 230, 231, 421, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 0, 245, 246, 247, 0, 0,
+ 250, 251, 252, 253, 422, 423, 424, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 425,
+ 426, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 442, 443, 444, 0,
- 14, 0, 0, 445, 446, 0, 0, 0, 402, 403,
- 0, 0, 447, 0, 448, 0, 449, 450, 404, 405,
- 406, 407, 408, 0, 0, 863, 0, 0, 409, 0,
- 410, 0, 0, 0, 411, 0, 0, 0, 0, 0,
- 0, 0, 412, 0, 0, 0, 0, 0, 413, 0,
- 0, 414, 0, 0, 415, 0, 0, 0, 416, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 417, 0,
- 0, 418, 419, 0, 222, 223, 224, 0, 226, 227,
- 228, 229, 230, 420, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 0, 244, 245, 246, 0,
- 0, 249, 250, 251, 252, 421, 422, 423, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 427, 428,
+ 429, 430, 431, 0, 432, 0, 433, 434, 435, 436,
+ 437, 438, 439, 440, 56, 441, 0, 0, 0, 0,
+ 0, 0, 442, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 443,
+ 444, 445, 0, 14, 0, 0, 446, 447, 0, 0,
+ 0, 403, 404, 0, 0, 448, 0, 449, 1161, 450,
+ 451, 405, 406, 407, 408, 409, 0, 0, 0, 0,
+ 0, 410, 0, 411, 0, 0, 0, 412, 0, 0,
+ 0, 0, 0, 0, 0, 413, 0, 0, 0, 0,
+ 0, 414, 0, 0, 415, 0, 0, 416, 0, 0,
+ 0, 417, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 418, 0, 0, 419, 420, 0, 223, 224, 225,
+ 0, 227, 228, 229, 230, 231, 421, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 0, 245,
+ 246, 247, 0, 0, 250, 251, 252, 253, 422, 423,
+ 424, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 425, 426, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 424, 425, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
+ 0, 0, 427, 428, 429, 430, 431, 0, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 56, 441,
+ 0, 0, 0, 0, 0, 0, 442, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 55, 0, 0, 0, 0, 0, 0, 0, 426,
- 427, 428, 429, 430, 0, 431, 0, 432, 433, 434,
- 435, 436, 437, 438, 439, 56, 440, 0, 0, 0,
- 0, 0, 0, 441, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 443, 444, 445, 0, 14, 0, 0,
+ 446, 447, 0, 0, 0, 403, 404, 0, 0, 448,
+ 0, 449, 1170, 450, 451, 405, 406, 407, 408, 409,
+ 0, 0, 0, 0, 0, 410, 0, 411, 0, 0,
+ 0, 412, 0, 0, 0, 0, 0, 0, 0, 413,
+ 0, 0, 0, 0, 0, 414, 0, 0, 415, 0,
+ 0, 416, 0, 0, 0, 417, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 418, 0, 0, 419, 420,
+ 0, 223, 224, 225, 0, 227, 228, 229, 230, 231,
+ 421, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 0, 245, 246, 247, 0, 0, 250, 251,
+ 252, 253, 422, 423, 424, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 425, 426, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 442, 443, 444, 0, 14, 0, 0, 445, 446, 0,
- 0, 0, 402, 403, 0, 0, 447, 0, 448, 0,
- 449, 450, 404, 405, 406, 407, 408, 0, 0, 0,
- 0, 0, 409, 0, 410, 0, 0, 0, 411, 0,
- 0, 0, 0, 0, 0, 0, 412, 0, 0, 0,
- 0, 0, 413, 0, 0, 414, 0, 0, 415, 0,
- 0, 0, 416, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 417, 0, 0, 418, 419, 0, 222, 223,
- 224, 0, 226, 227, 228, 229, 230, 420, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 0,
- 244, 245, 246, 0, 0, 249, 250, 251, 252, 421,
- 422, 423, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 424, 425, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 0, 0, 0, 0, 0, 0, 427, 428, 429, 430,
+ 431, 0, 432, 0, 433, 434, 435, 436, 437, 438,
+ 439, 440, 56, 441, 0, 0, 0, 0, 0, 0,
+ 442, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 443, 444, 445,
+ 0, 14, 0, 0, 446, 447, 0, 0, 0, 403,
+ 404, 0, 0, 448, 0, 449, 1175, 450, 451, 405,
+ 406, 407, 408, 409, 0, 0, 0, 0, 0, 410,
+ 0, 411, 0, 0, 0, 412, 0, 0, 0, 0,
+ 0, 0, 0, 413, 0, 0, 0, 0, 0, 414,
+ 0, 0, 415, 0, 0, 416, 0, 0, 0, 417,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 418,
+ 0, 0, 419, 420, 0, 223, 224, 225, 0, 227,
+ 228, 229, 230, 231, 421, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 0, 245, 246, 247,
+ 0, 0, 250, 251, 252, 253, 422, 423, 424, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 55, 0, 0, 0, 0,
- 0, 0, 0, 426, 427, 428, 429, 430, 0, 431,
- 0, 432, 433, 434, 435, 436, 437, 438, 439, 56,
- 440, 0, 0, 0, 0, 0, 0, 441, 0, 0,
+ 0, 425, 426, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 442, 443, 444, 0, 14, 0,
- 0, 445, 446, 0, 0, 0, 402, 403, 0, 0,
- 447, 0, 448, 884, 449, 450, 404, 405, 406, 407,
- 408, 0, 0, 0, 0, 0, 409, 0, 410, 0,
- 0, 0, 411, 0, 0, 0, 0, 0, 0, 0,
- 412, 0, 0, 0, 0, 0, 413, 0, 0, 414,
- 0, 0, 415, 0, 0, 0, 416, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 417, 0, 0, 418,
- 419, 0, 222, 223, 224, 0, 226, 227, 228, 229,
- 230, 420, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 0, 244, 245, 246, 0, 0, 249,
- 250, 251, 252, 421, 422, 423, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 424, 425,
+ 0, 0, 55, 0, 0, 0, 0, 0, 0, 0,
+ 427, 428, 429, 430, 431, 0, 432, 0, 433, 434,
+ 435, 436, 437, 438, 439, 440, 56, 441, 0, 0,
+ 0, 0, 0, 0, 442, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,
- 0, 0, 0, 0, 0, 0, 0, 426, 427, 428,
- 429, 430, 0, 431, 0, 432, 433, 434, 435, 436,
- 437, 438, 439, 56, 440, 0, 0, 0, 0, 0,
- 0, 441, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 442, 443,
- 444, 0, 14, 0, 0, 445, 446, 0, 0, 0,
- 402, 403, 0, 0, 447, 0, 448, 1160, 449, 450,
- 404, 405, 406, 407, 408, 0, 0, 0, 0, 0,
- 409, 0, 410, 0, 0, 0, 411, 0, 0, 0,
- 0, 0, 0, 0, 412, 0, 0, 0, 0, 0,
- 413, 0, 0, 414, 0, 0, 415, 0, 0, 0,
- 416, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 417, 0, 0, 418, 419, 0, 222, 223, 224, 0,
- 226, 227, 228, 229, 230, 420, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 0, 244, 245,
- 246, 0, 0, 249, 250, 251, 252, 421, 422, 423,
+ 0, 443, 444, 445, 0, 14, 0, 0, 446, 447,
+ 0, 0, 0, 403, 404, 0, 0, 448, 0, 449,
+ 1226, 450, 451, 405, 406, 407, 408, 409, 0, 0,
+ 0, 0, 0, 410, 0, 411, 0, 0, 0, 412,
+ 0, 0, 0, 0, 0, 0, 0, 413, 0, 0,
+ 0, 0, 0, 414, 0, 0, 415, 0, 0, 416,
+ 0, 0, 0, 417, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 418, 0, 0, 419, 420, 0, 223,
+ 224, 225, 0, 227, 228, 229, 230, 231, 421, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 0, 245, 246, 247, 0, 0, 250, 251, 252, 253,
+ 422, 423, 424, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 425, 426, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 424, 425, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
+ 0, 0, 0, 0, 427, 428, 429, 430, 431, 0,
+ 432, 0, 433, 434, 435, 436, 437, 438, 439, 440,
+ 56, 441, 0, 0, 0, 0, 0, 0, 442, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
- 0, 426, 427, 428, 429, 430, 0, 431, 0, 432,
- 433, 434, 435, 436, 437, 438, 439, 56, 440, 0,
- 0, 0, 0, 0, 0, 441, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 443, 444, 445, 0, 14,
+ 0, 0, 446, 447, 0, 0, 0, 403, 404, 0,
+ 0, 448, 0, 449, 1307, 450, 451, 405, 406, 407,
+ 408, 409, 0, 0, 0, 0, 0, 410, 0, 411,
+ 0, 0, 0, 412, 0, 0, 0, 0, 0, 0,
+ 0, 413, 0, 0, 0, 0, 0, 414, 0, 0,
+ 415, 0, 0, 416, 0, 0, 0, 417, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 418, 0, 0,
+ 419, 420, 0, 223, 224, 225, 0, 227, 228, 229,
+ 230, 231, 421, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 0, 245, 246, 247, 0, 0,
+ 250, 251, 252, 253, 422, 423, 424, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 425,
+ 426, 0, 0, 0, 0, 0, 0, 0, 1323, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 442, 443, 444, 0, 14, 0, 0, 445,
- 446, 0, 0, 0, 402, 403, 0, 0, 447, 0,
- 448, 1169, 449, 450, 404, 405, 406, 407, 408, 0,
- 0, 0, 0, 0, 409, 0, 410, 0, 0, 0,
- 411, 0, 0, 0, 0, 0, 0, 0, 412, 0,
- 0, 0, 0, 0, 413, 0, 0, 414, 0, 0,
- 415, 0, 0, 0, 416, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 417, 0, 0, 418, 419, 0,
- 222, 223, 224, 0, 226, 227, 228, 229, 230, 420,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 0, 244, 245, 246, 0, 0, 249, 250, 251,
- 252, 421, 422, 423, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 424, 425, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 427, 428,
+ 429, 430, 431, 0, 432, 0, 433, 434, 435, 436,
+ 437, 438, 439, 440, 56, 441, 0, 0, 0, 0,
+ 0, 0, 442, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 443,
+ 444, 445, 0, 14, 0, 0, 446, 447, 0, 0,
+ 0, 403, 404, 0, 0, 448, 0, 449, 0, 450,
+ 451, 405, 406, 407, 408, 409, 0, 0, 0, 0,
+ 0, 410, 0, 411, 0, 0, 0, 412, 0, 0,
+ 0, 0, 0, 0, 0, 413, 0, 0, 0, 0,
+ 0, 414, 0, 0, 415, 0, 0, 416, 0, 0,
+ 0, 417, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 418, 0, 0, 419, 420, 0, 223, 224, 225,
+ 0, 227, 228, 229, 230, 231, 421, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 0, 245,
+ 246, 247, 0, 0, 250, 251, 252, 253, 422, 423,
+ 424, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 425, 426, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
- 0, 0, 0, 0, 0, 426, 427, 428, 429, 430,
- 0, 431, 0, 432, 433, 434, 435, 436, 437, 438,
- 439, 56, 440, 0, 0, 0, 0, 0, 0, 441,
+ 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
+ 0, 0, 427, 428, 429, 430, 431, 0, 432, 0,
+ 433, 434, 435, 436, 437, 438, 439, 440, 56, 441,
+ 0, 0, 0, 0, 0, 0, 442, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 442, 443, 444, 0,
- 14, 0, 0, 445, 446, 0, 0, 0, 402, 403,
- 0, 0, 447, 0, 448, 1174, 449, 450, 404, 405,
- 406, 407, 408, 0, 0, 0, 0, 0, 409, 0,
- 410, 0, 0, 0, 411, 0, 0, 0, 0, 0,
- 0, 0, 412, 0, 0, 0, 0, 0, 413, 0,
- 0, 414, 0, 0, 415, 0, 0, 0, 416, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 417, 0,
- 0, 418, 419, 0, 222, 223, 224, 0, 226, 227,
- 228, 229, 230, 420, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 0, 244, 245, 246, 0,
- 0, 249, 250, 251, 252, 421, 422, 423, 0, 0,
+ 0, 0, 0, 443, 444, 445, 0, 14, 0, 0,
+ 446, 447, 0, 0, 0, 403, 404, 0, 0, 448,
+ 0, 449, 0, 450, 451, 405, 406, 407, 408, 409,
+ 0, 0, 0, 0, 0, 410, 0, 411, 0, 0,
+ 0, 412, 0, 0, 0, 0, 0, 0, 0, 413,
+ 0, 0, 0, 0, 0, 414, 0, 0, 415, 0,
+ 0, 416, 0, 0, 0, 417, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 418, 0, 0, 419, 420,
+ 0, 223, 224, 225, 0, 227, 228, 229, 230, 231,
+ 421, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 0, 245, 246, 247, 0, 0, 250, 251,
+ 252, 253, 422, 423, 424, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 425, 426, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 424, 425, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 0, 0, 0, 0, 0, 0, 427, 428, 429, 430,
+ 431, 0, 432, 0, 433, 434, 435, 436, 437, 438,
+ 439, 440, 56, 441, 638, 639, 0, 0, 217, 0,
+ 442, 0, 0, 0, 218, 0, 0, 0, 0, 0,
+ 219, 0, 0, 0, 0, 0, 0, 443, 444, 445,
+ 220, 14, 0, 0, 446, 447, 0, 0, 221, 0,
+ 638, 639, 0, 1145, 0, 449, 0, 450, 451, 0,
+ 0, 0, 0, 222, 0, 0, 0, 0, 0, 0,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 0, 0, 0, 0, 0, 640, 641,
+ 642, 643, 644, 0, 0, 645, 646, 647, 648, 0,
+ 649, 650, 651, 652, 653, 0, 654, 655, 0, 0,
+ 0, 0, 656, 657, 658, 0, 0, 55, 659, 0,
+ 0, 0, 638, 639, 640, 641, 642, 643, 644, 0,
+ 256, 645, 646, 647, 648, 0, 649, 650, 651, 652,
+ 653, 505, 654, 655, 0, 0, 0, 0, 656, 657,
+ 658, 0, 0, 660, 659, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 671, 672, 0, 0, 690,
+ 0, 0, 0, 0, 0, 0, 257, 0, 0, 660,
+ 0, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 671, 672, 0, 0, 909, 640, 641, 642, 643,
+ 644, 638, 639, 645, 646, 647, 648, 0, 649, 650,
+ 651, 652, 653, 0, 654, 655, 0, 0, 0, 0,
+ 656, 657, 658, 0, 0, 0, 659, 0, 0, 0,
+ 0, 0, 638, 639, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 55, 0, 0, 0, 0, 0, 0, 0, 426,
- 427, 428, 429, 430, 0, 431, 0, 432, 433, 434,
- 435, 436, 437, 438, 439, 56, 440, 0, 0, 0,
- 0, 0, 0, 441, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 442, 443, 444, 0, 14, 0, 0, 445, 446, 0,
- 0, 0, 402, 403, 0, 0, 447, 0, 448, 1225,
- 449, 450, 404, 405, 406, 407, 408, 0, 0, 0,
- 0, 0, 409, 0, 410, 0, 0, 0, 411, 0,
- 0, 0, 0, 0, 0, 0, 412, 0, 0, 0,
- 0, 0, 413, 0, 0, 414, 0, 0, 415, 0,
- 0, 0, 416, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 417, 0, 0, 418, 419, 0, 222, 223,
- 224, 0, 226, 227, 228, 229, 230, 420, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 0,
- 244, 245, 246, 0, 0, 249, 250, 251, 252, 421,
- 422, 423, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 424, 425, 0, 0, 0, 0,
+ 0, 660, 0, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 671, 672, 0, 0, 985, 0, 0,
+ 0, 0, 0, 0, 0, 640, 641, 642, 643, 644,
+ 0, 0, 645, 646, 647, 648, 0, 649, 650, 651,
+ 652, 653, 0, 654, 655, 0, 0, 0, 0, 656,
+ 657, 658, 0, 0, 0, 659, 640, 641, 642, 643,
+ 644, 638, 639, 645, 646, 647, 648, 0, 649, 650,
+ 651, 652, 653, 0, 654, 655, 0, 0, 0, 0,
+ 656, 657, 658, 0, 0, 0, 659, 0, 0, 0,
+ 660, 0, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 671, 672, 0, 0, 988, 0, 0, 0,
+ 0, 660, 0, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 671, 672, 0, 0, 990, 0, 0,
+ 0, 0, 0, 638, 639, 640, 641, 642, 643, 644,
+ 0, 0, 645, 646, 647, 648, 0, 649, 650, 651,
+ 652, 653, 0, 654, 655, 0, 0, 0, 0, 656,
+ 657, 658, 0, 0, 0, 659, 638, 639, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 55, 0, 0, 0, 0,
- 0, 0, 0, 426, 427, 428, 429, 430, 0, 431,
- 0, 432, 433, 434, 435, 436, 437, 438, 439, 56,
- 440, 0, 0, 0, 0, 0, 0, 441, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 442, 443, 444, 0, 14, 0,
- 0, 445, 446, 0, 0, 0, 402, 403, 0, 0,
- 447, 0, 448, 1306, 449, 450, 404, 405, 406, 407,
- 408, 0, 0, 0, 0, 0, 409, 0, 410, 0,
- 0, 0, 411, 0, 0, 0, 0, 0, 0, 0,
- 412, 0, 0, 0, 0, 0, 413, 0, 0, 414,
- 0, 0, 415, 0, 0, 0, 416, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 417, 0, 0, 418,
- 419, 0, 222, 223, 224, 0, 226, 227, 228, 229,
- 230, 420, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 0, 244, 245, 246, 0, 0, 249,
- 250, 251, 252, 421, 422, 423, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 424, 425,
- 0, 0, 0, 0, 0, 0, 0, 1322, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,
- 0, 0, 0, 0, 0, 0, 0, 426, 427, 428,
- 429, 430, 0, 431, 0, 432, 433, 434, 435, 436,
- 437, 438, 439, 56, 440, 0, 0, 0, 0, 0,
- 0, 441, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 442, 443,
- 444, 0, 14, 0, 0, 445, 446, 0, 0, 0,
- 402, 403, 0, 0, 447, 0, 448, 0, 449, 450,
- 404, 405, 406, 407, 408, 0, 0, 0, 0, 0,
- 409, 0, 410, 0, 0, 0, 411, 0, 0, 0,
- 0, 0, 0, 0, 412, 0, 0, 0, 0, 0,
- 413, 0, 0, 414, 0, 0, 415, 0, 0, 0,
- 416, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 417, 0, 0, 418, 419, 0, 222, 223, 224, 0,
- 226, 227, 228, 229, 230, 420, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 0, 244, 245,
- 246, 0, 0, 249, 250, 251, 252, 421, 422, 423,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 424, 425, 0, 0, 0, 0, 0, 0,
+ 660, 0, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 671, 672, 0, 0, 998, 640, 641, 642,
+ 643, 644, 0, 0, 645, 646, 647, 648, 0, 649,
+ 650, 651, 652, 653, 0, 654, 655, 0, 0, 0,
+ 0, 656, 657, 658, 0, 0, 0, 659, 638, 639,
+ 640, 641, 642, 643, 644, 0, 0, 645, 646, 647,
+ 648, 0, 649, 650, 651, 652, 653, 0, 654, 655,
+ 0, 0, 0, 0, 656, 657, 658, 0, 0, 0,
+ 659, 0, 660, 0, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 671, 672, 0, 0, 999, 0,
+ 0, 0, 0, 0, 0, 660, 0, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 671, 672, 0,
+ 0, 1000, 640, 641, 642, 643, 644, 638, 639, 645,
+ 646, 647, 648, 0, 649, 650, 651, 652, 653, 0,
+ 654, 655, 0, 0, 0, 0, 656, 657, 658, 0,
+ 0, 0, 659, 0, 0, 0, 0, 0, 638, 639,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
- 0, 426, 427, 428, 429, 430, 0, 431, 0, 432,
- 433, 434, 435, 436, 437, 438, 439, 56, 440, 0,
- 0, 0, 0, 0, 0, 441, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 442, 443, 444, 0, 14, 0, 0, 445,
- 446, 0, 0, 0, 402, 403, 0, 0, 447, 0,
- 448, 0, 449, 450, 404, 405, 406, 407, 408, 0,
- 0, 0, 0, 0, 409, 0, 410, 0, 0, 0,
- 411, 0, 0, 0, 0, 0, 0, 0, 412, 0,
- 0, 0, 0, 0, 413, 0, 0, 414, 0, 0,
- 415, 0, 0, 0, 416, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 417, 0, 0, 418, 419, 0,
- 222, 223, 224, 0, 226, 227, 228, 229, 230, 420,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 0, 244, 245, 246, 0, 0, 249, 250, 251,
- 252, 421, 422, 423, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 424, 425, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 660, 0, 661,
+ 662, 663, 664, 665, 666, 667, 668, 669, 670, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 671,
+ 672, 0, 0, 1001, 0, 0, 0, 0, 0, 0,
+ 0, 640, 641, 642, 643, 644, 0, 0, 645, 646,
+ 647, 648, 0, 649, 650, 651, 652, 653, 0, 654,
+ 655, 0, 0, 0, 0, 656, 657, 658, 0, 0,
+ 0, 659, 640, 641, 642, 643, 644, 638, 639, 645,
+ 646, 647, 648, 0, 649, 650, 651, 652, 653, 0,
+ 654, 655, 0, 0, 0, 0, 656, 657, 658, 0,
+ 0, 0, 659, 0, 0, 0, 660, 0, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 671, 672,
+ 0, 0, 1002, 0, 0, 0, 0, 660, 0, 661,
+ 662, 663, 664, 665, 666, 667, 668, 669, 670, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 671,
+ 672, 0, 0, 1003, 0, 0, 0, 0, 0, 638,
+ 639, 640, 641, 642, 643, 644, 0, 0, 645, 646,
+ 647, 648, 0, 649, 650, 651, 652, 653, 0, 654,
+ 655, 0, 0, 0, 0, 656, 657, 658, 0, 0,
+ 0, 659, 638, 639, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
- 0, 0, 0, 0, 0, 426, 427, 428, 429, 430,
- 0, 431, 0, 432, 433, 434, 435, 436, 437, 438,
- 439, 56, 440, 637, 638, 0, 0, 216, 0, 441,
- 0, 0, 0, 217, 0, 0, 0, 0, 0, 218,
- 0, 0, 0, 0, 0, 0, 442, 443, 444, 219,
- 14, 0, 0, 445, 446, 0, 0, 220, 0, 637,
- 638, 0, 1144, 0, 448, 0, 449, 450, 0, 0,
- 0, 0, 221, 0, 0, 0, 0, 0, 0, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 0, 0, 0, 0, 0, 639, 640, 641,
- 642, 643, 0, 0, 644, 645, 646, 647, 0, 648,
- 649, 650, 651, 652, 0, 653, 654, 0, 0, 0,
- 0, 655, 656, 657, 0, 0, 55, 658, 0, 0,
- 0, 637, 638, 639, 640, 641, 642, 643, 0, 255,
- 644, 645, 646, 647, 0, 648, 649, 650, 651, 652,
- 504, 653, 654, 0, 0, 0, 0, 655, 656, 657,
- 0, 0, 659, 658, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 670, 671, 0, 0, 689, 0,
- 0, 0, 0, 0, 0, 256, 0, 0, 659, 0,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 670, 671, 0, 0, 908, 639, 640, 641, 642, 643,
- 637, 638, 644, 645, 646, 647, 0, 648, 649, 650,
- 651, 652, 0, 653, 654, 0, 0, 0, 0, 655,
- 656, 657, 0, 0, 0, 658, 0, 0, 0, 0,
- 0, 637, 638, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 660, 0, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 671, 672,
+ 0, 0, 1079, 640, 641, 642, 643, 644, 0, 0,
+ 645, 646, 647, 648, 0, 649, 650, 651, 652, 653,
+ 0, 654, 655, 0, 0, 0, 0, 656, 657, 658,
+ 0, 0, 0, 659, 638, 639, 640, 641, 642, 643,
+ 644, 0, 0, 645, 646, 647, 648, 0, 649, 650,
+ 651, 652, 653, 0, 654, 655, 0, 0, 0, 0,
+ 656, 657, 658, 0, 0, 0, 659, 0, 660, 0,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 671, 672, 0, 0, 1082, 0, 0, 0, 0, 0,
+ 0, 660, 0, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 671, 672, 0, 0, 1085, 640, 641,
+ 642, 643, 644, 638, 639, 645, 646, 647, 648, 0,
+ 649, 650, 651, 652, 653, 0, 654, 655, 0, 0,
+ 0, 0, 656, 657, 658, 0, 0, 0, 659, 0,
+ 0, 0, 0, 0, 638, 639, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 659, 0, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 670, 671, 0, 0, 984, 0, 0, 0,
- 0, 0, 0, 0, 639, 640, 641, 642, 643, 0,
- 0, 644, 645, 646, 647, 0, 648, 649, 650, 651,
- 652, 0, 653, 654, 0, 0, 0, 0, 655, 656,
- 657, 0, 0, 0, 658, 639, 640, 641, 642, 643,
- 637, 638, 644, 645, 646, 647, 0, 648, 649, 650,
- 651, 652, 0, 653, 654, 0, 0, 0, 0, 655,
- 656, 657, 0, 0, 0, 658, 0, 0, 0, 659,
- 0, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 670, 671, 0, 0, 987, 0, 0, 0, 0,
- 659, 0, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 670, 671, 0, 0, 989, 0, 0, 0,
- 0, 0, 637, 638, 639, 640, 641, 642, 643, 0,
- 0, 644, 645, 646, 647, 0, 648, 649, 650, 651,
- 652, 0, 653, 654, 0, 0, 0, 0, 655, 656,
- 657, 0, 0, 0, 658, 637, 638, 0, 0, 0,
+ 0, 0, 0, 660, 0, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 671, 672, 0, 0, 1111,
+ 0, 0, 0, 0, 0, 0, 0, 640, 641, 642,
+ 643, 644, 0, 0, 645, 646, 647, 648, 0, 649,
+ 650, 651, 652, 653, 0, 654, 655, 0, 0, 0,
+ 0, 656, 657, 658, 0, 0, 0, 659, 640, 641,
+ 642, 643, 644, 638, 639, 645, 646, 647, 648, 0,
+ 649, 650, 651, 652, 653, 0, 654, 655, 0, 0,
+ 0, 0, 656, 657, 658, 0, 0, 0, 659, 0,
+ 0, 0, 660, 0, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 671, 672, 0, 0, 1182, 0,
+ 0, 0, 0, 660, 0, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 671, 672, 0, 0, 1190,
+ 0, 0, 0, 0, 0, 638, 639, 640, 641, 642,
+ 643, 644, 0, 0, 645, 646, 647, 648, 0, 649,
+ 650, 651, 652, 653, 0, 654, 655, 0, 0, 0,
+ 0, 656, 657, 658, 0, 0, 0, 659, 638, 639,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 659,
- 0, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 670, 671, 0, 0, 997, 639, 640, 641, 642,
- 643, 0, 0, 644, 645, 646, 647, 0, 648, 649,
- 650, 651, 652, 0, 653, 654, 0, 0, 0, 0,
- 655, 656, 657, 0, 0, 0, 658, 637, 638, 639,
- 640, 641, 642, 643, 0, 0, 644, 645, 646, 647,
- 0, 648, 649, 650, 651, 652, 0, 653, 654, 0,
- 0, 0, 0, 655, 656, 657, 0, 0, 0, 658,
- 0, 659, 0, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 670, 671, 0, 0, 998, 0, 0,
- 0, 0, 0, 0, 659, 0, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 670, 671, 0, 0,
- 999, 639, 640, 641, 642, 643, 637, 638, 644, 645,
- 646, 647, 0, 648, 649, 650, 651, 652, 0, 653,
- 654, 0, 0, 0, 0, 655, 656, 657, 0, 0,
- 0, 658, 0, 0, 0, 0, 0, 637, 638, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 660, 0, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 671, 672, 0, 0, 1231, 640,
+ 641, 642, 643, 644, 0, 0, 645, 646, 647, 648,
+ 0, 649, 650, 651, 652, 653, 0, 654, 655, 0,
+ 0, 0, 0, 656, 657, 658, 0, 0, 0, 659,
+ 638, 639, 640, 641, 642, 643, 644, 0, 0, 645,
+ 646, 647, 648, 0, 649, 650, 651, 652, 653, 0,
+ 654, 655, 0, 0, 0, 0, 656, 657, 658, 0,
+ 0, 0, 659, 0, 660, 0, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 671, 672, 0, 0,
+ 1232, 0, 0, 0, 0, 0, 0, 660, 0, 661,
+ 662, 663, 664, 665, 666, 667, 668, 669, 670, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 671,
+ 672, 0, 0, 1235, 640, 641, 642, 643, 644, 638,
+ 639, 645, 646, 647, 648, 0, 649, 650, 651, 652,
+ 653, 0, 654, 655, 0, 0, 0, 0, 656, 657,
+ 658, 0, 0, 0, 659, 0, 0, 0, 0, 0,
+ 638, 639, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 659, 0, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 670, 671,
- 0, 0, 1000, 0, 0, 0, 0, 0, 0, 0,
- 639, 640, 641, 642, 643, 0, 0, 644, 645, 646,
- 647, 0, 648, 649, 650, 651, 652, 0, 653, 654,
- 0, 0, 0, 0, 655, 656, 657, 0, 0, 0,
- 658, 639, 640, 641, 642, 643, 637, 638, 644, 645,
- 646, 647, 0, 648, 649, 650, 651, 652, 0, 653,
- 654, 0, 0, 0, 0, 655, 656, 657, 0, 0,
- 0, 658, 0, 0, 0, 659, 0, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 670, 671, 0,
- 0, 1001, 0, 0, 0, 0, 659, 0, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 670, 671,
- 0, 0, 1002, 0, 0, 0, 0, 0, 637, 638,
- 639, 640, 641, 642, 643, 0, 0, 644, 645, 646,
- 647, 0, 648, 649, 650, 651, 652, 0, 653, 654,
- 0, 0, 0, 0, 655, 656, 657, 0, 0, 0,
- 658, 637, 638, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 660,
+ 0, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 671, 672, 0, 0, 1253, 0, 0, 0, 0,
+ 0, 0, 0, 640, 641, 642, 643, 644, 0, 0,
+ 645, 646, 647, 648, 0, 649, 650, 651, 652, 653,
+ 0, 654, 655, 0, 0, 0, 0, 656, 657, 658,
+ 0, 0, 0, 659, 640, 641, 642, 643, 644, 638,
+ 639, 645, 646, 647, 648, 0, 649, 650, 651, 652,
+ 653, 0, 654, 655, 0, 0, 0, 0, 656, 657,
+ 658, 0, 0, 0, 659, 0, 0, 0, 660, 0,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 671, 672, 0, 0, 1255, 0, 0, 0, 0, 660,
+ 0, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 671, 672, 0, 0, 1257, 0, 0, 0, 0,
+ 0, 638, 639, 640, 641, 642, 643, 644, 0, 0,
+ 645, 646, 647, 648, 0, 649, 650, 651, 652, 653,
+ 0, 654, 655, 0, 0, 0, 0, 656, 657, 658,
+ 0, 0, 0, 659, 638, 639, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 659, 0, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 670, 671, 0,
- 0, 1078, 639, 640, 641, 642, 643, 0, 0, 644,
- 645, 646, 647, 0, 648, 649, 650, 651, 652, 0,
- 653, 654, 0, 0, 0, 0, 655, 656, 657, 0,
- 0, 0, 658, 637, 638, 639, 640, 641, 642, 643,
- 0, 0, 644, 645, 646, 647, 0, 648, 649, 650,
- 651, 652, 0, 653, 654, 0, 0, 0, 0, 655,
- 656, 657, 0, 0, 0, 658, 0, 659, 0, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 670,
- 671, 0, 0, 1081, 0, 0, 0, 0, 0, 0,
- 659, 0, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 670, 671, 0, 0, 1084, 639, 640, 641,
- 642, 643, 637, 638, 644, 645, 646, 647, 0, 648,
- 649, 650, 651, 652, 0, 653, 654, 0, 0, 0,
- 0, 655, 656, 657, 0, 0, 0, 658, 0, 0,
- 0, 0, 0, 637, 638, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 660, 0,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 659, 0, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 670, 671, 0, 0, 1110, 0,
- 0, 0, 0, 0, 0, 0, 639, 640, 641, 642,
- 643, 0, 0, 644, 645, 646, 647, 0, 648, 649,
- 650, 651, 652, 0, 653, 654, 0, 0, 0, 0,
- 655, 656, 657, 0, 0, 0, 658, 639, 640, 641,
- 642, 643, 637, 638, 644, 645, 646, 647, 0, 648,
- 649, 650, 651, 652, 0, 653, 654, 0, 0, 0,
- 0, 655, 656, 657, 0, 0, 0, 658, 0, 0,
- 0, 659, 0, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 670, 671, 0, 0, 1181, 0, 0,
- 0, 0, 659, 0, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 670, 671, 0, 0, 1189, 0,
- 0, 0, 0, 0, 637, 638, 639, 640, 641, 642,
- 643, 0, 0, 644, 645, 646, 647, 0, 648, 649,
- 650, 651, 652, 0, 653, 654, 0, 0, 0, 0,
- 655, 656, 657, 0, 0, 0, 658, 637, 638, 0,
+ 671, 672, 0, 0, 1261, 640, 641, 642, 643, 644,
+ 0, 0, 645, 646, 647, 648, 0, 649, 650, 651,
+ 652, 653, 0, 654, 655, 0, 0, 0, 0, 656,
+ 657, 658, 0, 0, 0, 659, 638, 639, 640, 641,
+ 642, 643, 644, 0, 0, 645, 646, 647, 648, 0,
+ 649, 650, 651, 652, 653, 0, 654, 655, 0, 0,
+ 0, 0, 656, 657, 658, 0, 0, 0, 659, 0,
+ 660, 0, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 671, 672, 0, 0, 1276, 0, 0, 0,
+ 0, 0, 0, 660, 0, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 671, 672, 0, 0, 1329,
+ 640, 641, 642, 643, 644, 638, 639, 645, 646, 647,
+ 648, 0, 649, 650, 651, 652, 653, 0, 654, 655,
+ 0, 0, 0, 0, 656, 657, 658, 0, 0, 0,
+ 659, 0, 0, 0, 0, 0, 638, 639, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 660, 0, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 671, 672, 0,
+ 0, 1330, 0, 0, 0, 0, 0, 0, 0, 640,
+ 641, 642, 643, 644, 0, 0, 645, 646, 647, 648,
+ 0, 649, 650, 651, 652, 653, 0, 654, 655, 0,
+ 0, 0, 0, 656, 657, 658, 0, 0, 0, 659,
+ 640, 641, 642, 643, 644, 638, 639, 645, 646, 647,
+ 648, 0, 649, 650, 651, 652, 653, 0, 654, 655,
+ 0, 0, 0, 0, 656, 657, 658, 0, 0, 0,
+ 659, 0, 0, 0, 660, 0, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 671, 672, 0, 0,
+ 1331, 0, 0, 0, 0, 660, 0, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 671, 672, 0,
+ 0, 1353, 0, 0, 0, 0, 0, 638, 639, 640,
+ 641, 642, 643, 644, 0, 0, 645, 646, 647, 648,
+ 0, 649, 650, 651, 652, 653, 0, 654, 655, 0,
+ 0, 0, 0, 656, 657, 658, 0, 0, 0, 659,
+ 638, 639, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 659, 0, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 670, 671, 0, 0, 1230, 639, 640,
- 641, 642, 643, 0, 0, 644, 645, 646, 647, 0,
- 648, 649, 650, 651, 652, 0, 653, 654, 0, 0,
- 0, 0, 655, 656, 657, 0, 0, 0, 658, 637,
- 638, 639, 640, 641, 642, 643, 0, 0, 644, 645,
- 646, 647, 0, 648, 649, 650, 651, 652, 0, 653,
- 654, 0, 0, 0, 0, 655, 656, 657, 0, 0,
- 0, 658, 0, 659, 0, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 670, 671, 0, 0, 1231,
- 0, 0, 0, 0, 0, 0, 659, 0, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 670, 671,
- 0, 0, 1234, 639, 640, 641, 642, 643, 637, 638,
- 644, 645, 646, 647, 0, 648, 649, 650, 651, 652,
- 0, 653, 654, 0, 0, 0, 0, 655, 656, 657,
- 0, 0, 0, 658, 0, 0, 0, 0, 0, 637,
- 638, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 659, 0,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 0, 0, 0, 0, 660, 0, 661, 662, 663, 664,
+ 665, 666, 667, 668, 669, 670, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 671, 672, 0, 0,
+ 1364, 640, 641, 642, 643, 644, 0, 0, 645, 646,
+ 647, 648, 0, 649, 650, 651, 652, 653, 0, 654,
+ 655, 0, 0, 0, 0, 656, 657, 658, 0, 0,
+ 0, 659, 638, 639, 640, 641, 642, 643, 644, 0,
+ 0, 645, 646, 647, 648, 0, 649, 650, 651, 652,
+ 653, 0, 654, 655, 0, 0, 0, 0, 656, 657,
+ 658, 0, 0, 0, 659, 0, 660, 0, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 671, 672,
+ 0, 0, 1374, 0, 0, 0, 0, 0, 0, 660,
+ 0, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 671, 672, 0, 0, 1409, 640, 641, 642, 643,
+ 644, 638, 639, 645, 646, 647, 648, 0, 649, 650,
+ 651, 652, 653, 0, 654, 655, 0, 0, 0, 0,
+ 656, 657, 658, 0, 0, 0, 659, 0, 0, 0,
+ 0, 0, 638, 639, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 670, 671, 0, 0, 1252, 0, 0, 0, 0, 0,
- 0, 0, 639, 640, 641, 642, 643, 0, 0, 644,
- 645, 646, 647, 0, 648, 649, 650, 651, 652, 0,
- 653, 654, 0, 0, 0, 0, 655, 656, 657, 0,
- 0, 0, 658, 639, 640, 641, 642, 643, 637, 638,
- 644, 645, 646, 647, 0, 648, 649, 650, 651, 652,
- 0, 653, 654, 0, 0, 0, 0, 655, 656, 657,
- 0, 0, 0, 658, 0, 0, 0, 659, 0, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 670,
- 671, 0, 0, 1254, 0, 0, 0, 0, 659, 0,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 670, 671, 0, 0, 1256, 0, 0, 0, 0, 0,
- 637, 638, 639, 640, 641, 642, 643, 0, 0, 644,
- 645, 646, 647, 0, 648, 649, 650, 651, 652, 0,
- 653, 654, 0, 0, 0, 0, 655, 656, 657, 0,
- 0, 0, 658, 637, 638, 0, 0, 0, 0, 0,
+ 0, 660, 0, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 671, 672, 0, 0, 1419, 0, 0,
+ 0, 0, 0, 0, 0, 640, 641, 642, 643, 644,
+ 0, 0, 645, 646, 647, 648, 0, 649, 650, 651,
+ 652, 653, 0, 654, 655, 0, 0, 0, 0, 656,
+ 657, 658, 638, 639, 0, 659, 640, 641, 642, 643,
+ 644, 0, 0, 645, 646, 647, 648, 0, 649, 650,
+ 651, 652, 653, 0, 654, 655, 0, 0, 0, 0,
+ 656, 657, 658, 638, 639, 0, 659, 0, 0, 0,
+ 660, 0, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 671, 672, 695, 0, 0, 0, 0, 0,
+ 0, 660, 0, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 671, 672, 905, 640, 641, 642, 643,
+ 644, 0, 0, 645, 646, 647, 648, 0, 649, 650,
+ 651, 652, 653, 0, 654, 655, 0, 0, 0, 0,
+ 656, 657, 658, 638, 639, 0, 659, 640, 641, 642,
+ 643, 644, 0, 0, 645, 646, 647, 648, 0, 649,
+ 650, 651, 652, 653, 0, 654, 655, 0, 0, 0,
+ 0, 656, 657, 658, 638, 639, 0, 659, 0, 0,
+ 0, 660, 0, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 671, 672, 1039, 0, 0, 0, 0,
+ 0, 0, 660, 0, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 671, 672, 1055, 640, 641, 642,
+ 643, 644, 0, 0, 645, 646, 647, 648, 0, 649,
+ 650, 651, 652, 653, 0, 654, 655, 0, 0, 0,
+ 0, 656, 657, 658, 0, 0, 0, 659, 640, 641,
+ 642, 643, 644, 638, 639, 645, 646, 647, 648, 0,
+ 649, 650, 651, 652, 653, 0, 654, 655, 0, 0,
+ 0, 0, 656, 657, 658, 0, 0, 0, 659, 0,
+ 0, 0, 660, 0, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 671, 672, 1168, 0, 0, 0,
+ 0, 0, 0, 660, 0, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 671, 672, 1173, 0, 742,
+ 743, 744, 745, 746, 747, 748, 749, 640, 641, 642,
+ 643, 644, 750, 751, 645, 646, 647, 648, 752, 649,
+ 650, 651, 652, 653, 753, 654, 655, 754, 755, 269,
+ 270, 656, 657, 658, 756, 757, 758, 659, 0, 0,
+ 0, 0, 0, 0, 0, 0, 271, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 638, 639, 0, 0, -321, 0, 0, 0, 0, 0,
+ 0, 759, 660, 0, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 671, 672, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 659, 0, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 670,
- 671, 0, 0, 1260, 639, 640, 641, 642, 643, 0,
- 0, 644, 645, 646, 647, 0, 648, 649, 650, 651,
- 652, 0, 653, 654, 0, 0, 0, 0, 655, 656,
- 657, 0, 0, 0, 658, 637, 638, 639, 640, 641,
- 642, 643, 0, 0, 644, 645, 646, 647, 0, 648,
- 649, 650, 651, 652, 0, 653, 654, 0, 0, 0,
- 0, 655, 656, 657, 0, 0, 0, 658, 0, 659,
- 0, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 670, 671, 0, 0, 1275, 0, 0, 0, 0,
- 0, 0, 659, 0, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 670, 671, 0, 0, 1328, 639,
- 640, 641, 642, 643, 637, 638, 644, 645, 646, 647,
- 0, 648, 649, 650, 651, 652, 0, 653, 654, 0,
- 0, 0, 0, 655, 656, 657, 0, 0, 0, 658,
- 0, 0, 0, 0, 0, 637, 638, 0, 0, 0,
+ 0, 0, 0, 0, 0, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 0, 0, 290, 291, 292, 0, 0,
+ 293, 294, 295, 296, 297, 0, 0, 298, 299, 300,
+ 301, 302, 303, 304, 640, 641, 642, 643, 644, 638,
+ 639, 645, 646, 647, 648, 0, 649, 650, 651, 652,
+ 653, 0, 654, 655, 0, 0, 810, 0, 656, 657,
+ 658, 0, 0, 0, 659, 0, 0, 0, 305, 0,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 0, 0, 316, 317, 0, 0, 0, 0, 0, 0,
+ 318, 319, 0, 0, 0, 0, 0, 0, 0, 660,
+ 0, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 671, 672, 0, 0, 0, 0, 0, 638, 639,
+ 0, 0, 0, 640, 641, 642, 643, 644, 0, 0,
+ 645, 646, 647, 648, 0, 649, 650, 651, 652, 653,
+ 0, 654, 655, 0, 0, 0, 0, 656, 657, 658,
+ 638, 639, 0, 659, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 659, 0, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 670, 671, 0, 0,
- 1329, 0, 0, 0, 0, 0, 0, 0, 639, 640,
- 641, 642, 643, 0, 0, 644, 645, 646, 647, 0,
- 648, 649, 650, 651, 652, 0, 653, 654, 0, 0,
- 0, 0, 655, 656, 657, 0, 0, 0, 658, 639,
- 640, 641, 642, 643, 637, 638, 644, 645, 646, 647,
- 0, 648, 649, 650, 651, 652, 0, 653, 654, 0,
- 0, 0, 0, 655, 656, 657, 0, 0, 0, 658,
- 0, 0, 0, 659, 0, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 670, 671, 0, 0, 1330,
- 0, 0, 0, 0, 659, 0, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 670, 671, 0, 0,
- 1352, 0, 0, 0, 0, 0, 637, 638, 639, 640,
- 641, 642, 643, 0, 0, 644, 645, 646, 647, 0,
- 648, 649, 650, 651, 652, 0, 653, 654, 0, 0,
- 0, 0, 655, 656, 657, 0, 0, 0, 658, 637,
- 638, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 962, 0, 0, 0, 0, 0, 0, 0, 660, 0,
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 671, 672, 640, 641, 642, 643, 644, 0, 0, 645,
+ 646, 647, 648, 0, 649, 650, 651, 652, 653, 0,
+ 654, 655, 638, 639, 0, 0, 656, 657, 658, 0,
+ 0, 0, 659, 0, 640, 641, 642, 643, 644, 0,
+ 0, 645, 646, 647, 648, 0, 649, 650, 651, 652,
+ 653, 0, 654, 655, 638, 639, 0, 0, 656, 657,
+ 658, 0, 0, 0, 659, 0, 0, 660, 1044, 661,
+ 662, 663, 664, 665, 666, 667, 668, 669, 670, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 671,
+ 672, 1101, 0, 0, 0, 0, 0, 0, 0, 660,
+ 0, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 0, 0, 0, 0, 0, 640, 641, 642, 643,
+ 644, 671, 672, 645, 646, 647, 648, 0, 649, 650,
+ 651, 652, 653, 0, 654, 655, 638, 639, 0, 0,
+ 656, 657, 658, 0, 0, 0, 659, 0, 640, 641,
+ 642, 643, 644, 0, 0, 645, 646, 647, 648, 0,
+ 649, 650, 651, 652, 653, 0, 654, 655, 0, 1132,
+ 638, 639, 656, 657, 658, 0, 0, 0, 659, 0,
+ 0, 660, 0, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 671, 672, 1347, 0, 0, 0, 0,
+ 0, 0, 0, 660, 0, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 0, 0, 0, 0, 0,
+ 640, 641, 642, 643, 644, 671, 672, 645, 646, 647,
+ 648, 0, 649, 650, 651, 652, 653, 0, 654, 655,
+ 0, 0, 638, 639, 656, 657, 658, 0, 0, 0,
+ 659, 0, 0, 0, 640, 641, 642, 643, 644, 0,
+ 0, 645, 646, 647, 648, 0, 649, 650, 651, 652,
+ 653, 0, 654, 655, 0, 0, 0, 1365, 656, 657,
+ 658, 0, 0, 0, 659, 660, 0, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 671, 672, 0,
+ 0, 1383, 0, 0, 0, 0, 0, 0, 0, 660,
+ 0, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 638, 639, 0, 0, 0, 640, 641, 642, 643,
+ 644, 671, 672, 645, 646, 647, 648, 0, 649, 650,
+ 651, 652, 653, 0, 654, 655, 0, 0, 0, 0,
+ 656, 657, 658, 0, 0, 0, 659, 638, 639, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 659, 0, 660, 661, 662, 663, 664,
- 665, 666, 667, 668, 669, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 670, 671, 0, 0, 1363,
- 639, 640, 641, 642, 643, 0, 0, 644, 645, 646,
- 647, 0, 648, 649, 650, 651, 652, 0, 653, 654,
- 0, 0, 0, 0, 655, 656, 657, 0, 0, 0,
- 658, 637, 638, 639, 640, 641, 642, 643, 0, 0,
- 644, 645, 646, 647, 0, 648, 649, 650, 651, 652,
- 0, 653, 654, 0, 0, 0, 0, 655, 656, 657,
- 0, 0, 0, 658, 0, 659, 0, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 670, 671, 0,
- 0, 1373, 0, 0, 0, 0, 0, 0, 659, 0,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 670, 671, 0, 0, 1408, 639, 640, 641, 642, 643,
- 637, 638, 644, 645, 646, 647, 0, 648, 649, 650,
- 651, 652, 0, 653, 654, 0, 0, 0, 0, 655,
- 656, 657, 0, 0, 0, 658, 0, 0, 0, 0,
- 0, 637, 638, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1411, 0, 0, 0, 0, 0, 0,
+ 0, 660, 0, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 671, 672, 640, 641, 642, 643, 644,
+ 0, 0, 645, 646, 647, 648, 0, 649, 650, 651,
+ 652, 653, 0, 654, 655, 0, 0, 0, 0, 656,
+ 657, 658, 0, 0, 0, 659, 638, 639, 0, 0,
+ 0, 640, 641, 642, 643, 644, 0, 0, 645, 646,
+ 647, 648, 0, 649, 650, 651, 652, 653, 0, 654,
+ 655, 0, 1430, 0, 0, 656, 657, 658, 638, 639,
+ 660, 659, 661, 662, 663, 664, 665, 666, 667, 668,
+ 669, 670, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 671, 672, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 660, 0, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 670, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 671, 672,
+ 640, 641, 642, 643, 644, 0, 0, 645, 646, 647,
+ 648, 0, 649, 650, 651, 652, 653, 0, 654, 655,
+ 638, 639, 0, 0, 656, 657, 658, 0, 0, 0,
+ -690, 0, 640, 641, 642, 643, 644, 0, 0, 645,
+ 646, 647, 648, 0, 649, 650, 651, 652, 653, 0,
+ 654, 655, 638, 639, 0, 0, 656, 657, 658, 0,
+ 0, 0, 0, 0, 0, 660, 0, 661, 662, 663,
+ 664, 665, 666, 667, 668, 669, 670, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 671, 672, 0,
+ 0, 0, 0, 0, 0, 0, 0, 660, 0, 661,
+ 662, 663, 664, 665, 666, 667, 668, 669, 670, 0,
+ 0, 0, 0, 0, 640, 641, 642, 643, 644, 671,
+ 672, 645, 646, 647, 648, 0, 649, 650, 651, 652,
+ 653, 0, 654, 655, 638, 639, 0, 0, 656, 0,
+ 658, 0, 0, 0, 0, 0, 640, 641, 642, 643,
+ 644, 0, 0, 645, 646, 647, 648, 0, 649, 650,
+ 651, 652, 653, 0, 654, 655, 638, 639, 0, 0,
+ 656, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 670, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 671, 672, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 661, 662, 663, 664, 665, 666, 667,
+ 668, 669, 670, 0, 0, 0, 0, 0, 640, 641,
+ 642, 643, 644, 671, 672, 645, 646, 647, 648, 0,
+ 649, 650, 651, 652, 653, 0, 654, 655, 638, 639,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 640, 641, 642, 643, 644, 0, 0, 645, 646, 647,
+ 648, 0, 649, 650, 651, 652, 653, 0, 654, 655,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 659, 0, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 670, 671, 0, 0, 1418, 0, 0, 0,
- 0, 0, 0, 0, 639, 640, 641, 642, 643, 0,
- 0, 644, 645, 646, 647, 0, 648, 649, 650, 651,
- 652, 0, 653, 654, 0, 0, 0, 0, 655, 656,
- 657, 637, 638, 0, 658, 639, 640, 641, 642, 643,
- 0, 0, 644, 645, 646, 647, 0, 648, 649, 650,
- 651, 652, 0, 653, 654, 0, 0, 0, 0, 655,
- 656, 657, 637, 638, 0, 658, 0, 0, 0, 659,
- 0, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 670, 671, 694, 0, 0, 0, 0, 0, 0,
- 659, 0, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 670, 671, 904, 639, 640, 641, 642, 643,
- 0, 0, 644, 645, 646, 647, 0, 648, 649, 650,
- 651, 652, 0, 653, 654, 0, 0, 0, 0, 655,
- 656, 657, 637, 638, 0, 658, 639, 640, 641, 642,
- 643, 0, 0, 644, 645, 646, 647, 0, 648, 649,
- 650, 651, 652, 0, 653, 654, 0, 0, 0, 0,
- 655, 656, 657, 637, 638, 0, 658, 0, 0, 0,
- 659, 0, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 670, 671, 1038, 0, 0, 0, 0, 0,
- 0, 659, 0, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 670, 671, 1054, 639, 640, 641, 642,
- 643, 0, 0, 644, 645, 646, 647, 0, 648, 649,
- 650, 651, 652, 0, 653, 654, 0, 0, 0, 0,
- 655, 656, 657, 0, 0, 0, 658, 639, 640, 641,
- 642, 643, 637, 638, 644, 645, 646, 647, 0, 648,
- 649, 650, 651, 652, 0, 653, 654, 0, 0, 0,
- 0, 655, 656, 657, 0, 0, 0, 658, 0, 0,
- 0, 659, 0, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 670, 671, 1167, 0, 0, 0, 0,
- 0, 0, 659, 0, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 670, 671, 1172, 0, 741, 742,
- 743, 744, 745, 746, 747, 748, 639, 640, 641, 642,
- 643, 749, 750, 644, 645, 646, 647, 751, 648, 649,
- 650, 651, 652, 752, 653, 654, 753, 754, 268, 269,
- 655, 656, 657, 755, 756, 757, 658, 0, 0, 0,
- 0, 0, 0, 0, 0, 270, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 637,
- 638, 0, 0, -321, 0, 0, 0, 0, 0, 0,
- 758, 659, 0, 660, 661, 662, 663, 664, 665, 666,
- 667, 668, 669, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 670, 671, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 0, 0, 0, 0, 0,
+ 836, 0, 0, 0, 0, 671, 672, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 0, 0, 289, 290, 291, 0, 0, 292,
- 293, 294, 295, 296, 0, 0, 297, 298, 299, 300,
- 301, 302, 303, 639, 640, 641, 642, 643, 637, 638,
- 644, 645, 646, 647, 0, 648, 649, 650, 651, 652,
- 0, 653, 654, 0, 0, 809, 0, 655, 656, 657,
- 0, 0, 0, 658, 0, 0, 0, 304, 0, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 0,
- 0, 315, 316, 0, 0, 0, 0, 0, 0, 317,
- 318, 0, 0, 0, 0, 0, 0, 0, 659, 0,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
+ 664, 665, 666, 667, 668, 669, 670, 0, 0, 0,
+ 0, 0, 640, 641, 642, 643, 644, 671, 672, 645,
+ 0, 0, 648, 0, 649, 650, 651, 652, 653, 0,
+ 654, 655, 223, 224, 225, 0, 227, 228, 229, 230,
+ 231, 421, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 0, 245, 246, 247, 0, 0, 250,
+ 251, 252, 253, 0, 0, 0, 0, 0, 840, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 670, 671, 0, 0, 0, 0, 0, 637, 638, 0,
- 0, 0, 639, 640, 641, 642, 643, 0, 0, 644,
- 645, 646, 647, 0, 648, 649, 650, 651, 652, 0,
- 653, 654, 0, 0, 0, 0, 655, 656, 657, 637,
- 638, 0, 658, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 664, 665, 666, 667, 668, 669, 670, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 671,
+ 672, 1040, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 837, 0, 0, 0, 0, 0,
+ 223, 224, 225, 838, 227, 228, 229, 230, 231, 421,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 0, 245, 246, 247, 0, 0, 250, 251, 252,
+ 253, 0, 0, 223, 224, 225, 0, 227, 228, 229,
+ 230, 231, 421, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 0, 245, 246, 247, 0, 0,
+ 250, 251, 252, 253, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 961,
- 0, 0, 0, 0, 0, 0, 0, 659, 0, 660,
- 661, 662, 663, 664, 665, 666, 667, 668, 669, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 670,
- 671, 639, 640, 641, 642, 643, 0, 0, 644, 645,
- 646, 647, 0, 648, 649, 650, 651, 652, 0, 653,
- 654, 637, 638, 0, 0, 655, 656, 657, 0, 0,
- 0, 658, 0, 639, 640, 641, 642, 643, 0, 0,
- 644, 645, 646, 647, 0, 648, 649, 650, 651, 652,
- 0, 653, 654, 637, 638, 0, 0, 655, 656, 657,
- 0, 0, 0, 658, 0, 0, 659, 1043, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 670, 671,
- 1100, 0, 0, 0, 0, 0, 0, 0, 659, 0,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 0, 0, 0, 0, 0, 639, 640, 641, 642, 643,
- 670, 671, 644, 645, 646, 647, 0, 648, 649, 650,
- 651, 652, 0, 653, 654, 637, 638, 0, 0, 655,
- 656, 657, 0, 0, 0, 658, 0, 639, 640, 641,
- 642, 643, 0, 0, 644, 645, 646, 647, 0, 648,
- 649, 650, 651, 652, 0, 653, 654, 0, 1131, 637,
- 638, 655, 656, 657, 0, 0, 0, 658, 0, 0,
- 659, 0, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 670, 671, 1346, 0, 0, 0, 0, 0,
- 0, 0, 659, 0, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 0, 0, 0, 0, 0, 639,
- 640, 641, 642, 643, 670, 671, 644, 645, 646, 647,
- 0, 648, 649, 650, 651, 652, 0, 653, 654, 0,
- 0, 637, 638, 655, 656, 657, 0, 0, 0, 658,
- 0, 0, 0, 639, 640, 641, 642, 643, 0, 0,
- 644, 645, 646, 647, 0, 648, 649, 650, 651, 652,
- 0, 653, 654, 0, 0, 0, 1364, 655, 656, 657,
- 0, 0, 0, 658, 659, 0, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 670, 671, 0, 0,
- 1382, 0, 0, 0, 0, 0, 0, 0, 659, 0,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
- 637, 638, 0, 0, 0, 639, 640, 641, 642, 643,
- 670, 671, 644, 645, 646, 647, 0, 648, 649, 650,
- 651, 652, 0, 653, 654, 0, 0, 0, 0, 655,
- 656, 657, 0, 0, 0, 658, 637, 638, 0, 0,
+ 0, 0, 841, 0, 0, 0, 0, 0, 0, 0,
+ 0, 842, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1041, 0, 0, 0, 0,
+ 0, 223, 224, 225, 1042, 227, 228, 229, 230, 231,
+ 421, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 0, 245, 246, 247, 0, 0, 250, 251,
+ 252, 253, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1410, 0, 0, 0, 0, 0, 0, 0,
- 659, 0, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 670, 671, 639, 640, 641, 642, 643, 0,
- 0, 644, 645, 646, 647, 0, 648, 649, 650, 651,
- 652, 0, 653, 654, 0, 0, 0, 0, 655, 656,
- 657, 0, 0, 0, 658, 637, 638, 0, 0, 0,
- 639, 640, 641, 642, 643, 0, 0, 644, 645, 646,
- 647, 0, 648, 649, 650, 651, 652, 0, 653, 654,
- 0, 1429, 0, 0, 655, 656, 657, 637, 638, 659,
- 658, 660, 661, 662, 663, 664, 665, 666, 667, 668,
- 669, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 670, 671, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 659, 0, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 670, 671, 639,
- 640, 641, 642, 643, 0, 0, 644, 645, 646, 647,
- 0, 648, 649, 650, 651, 652, 0, 653, 654, 637,
- 638, 0, 0, 655, 656, 657, 0, 0, 0, -690,
- 0, 639, 640, 641, 642, 643, 0, 0, 644, 645,
- 646, 647, 0, 648, 649, 650, 651, 652, 0, 653,
- 654, 637, 638, 0, 0, 655, 656, 657, 0, 0,
- 0, 0, 0, 0, 659, 0, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 670, 671, 0, 0,
- 0, 0, 0, 0, 0, 0, 659, 0, 660, 661,
- 662, 663, 664, 665, 666, 667, 668, 669, 0, 0,
- 0, 0, 0, 639, 640, 641, 642, 643, 670, 671,
- 644, 645, 646, 647, 0, 648, 649, 650, 651, 652,
- 0, 653, 654, 637, 638, 0, 0, 655, 0, 657,
- 0, 0, 0, 0, 0, 639, 640, 641, 642, 643,
- 0, 0, 644, 645, 646, 647, 0, 648, 649, 650,
- 651, 652, 0, 653, 654, 637, 638, 0, 0, 655,
+ 0, 0, 0, 0, 0, 0, 0, 0, 876, 877,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 660, 661, 662, 663, 664, 665, 666, 667, 668, 669,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 670, 671, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 660, 661, 662, 663, 664, 665, 666, 667,
- 668, 669, 0, 0, 0, 0, 0, 639, 640, 641,
- 642, 643, 670, 671, 644, 645, 646, 647, 0, 648,
- 649, 650, 651, 652, 0, 653, 654, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 639,
- 640, 641, 642, 643, 0, 0, 644, 645, 646, 647,
- 0, 648, 649, 650, 651, 652, 0, 653, 654, 0,
+ 0, 0, 0, 878, 0, 0, 0, 0, 0, 0,
+ 0, 0, 879, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 835, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 670, 671, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 663,
- 664, 665, 666, 667, 668, 669, 839, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 670, 671, 0, 0,
- 0, 0, 0, 0, 0, 0, 222, 223, 224, 0,
- 226, 227, 228, 229, 230, 420, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 0, 244, 245,
- 246, 0, 0, 249, 250, 251, 252, 0, 222, 223,
- 224, 0, 226, 227, 228, 229, 230, 420, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 0,
- 244, 245, 246, 0, 0, 249, 250, 251, 252, 0,
- 0, 0, 0, 0, 1039, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 836, 0,
- 0, 0, 0, 0, 222, 223, 224, 837, 226, 227,
- 228, 229, 230, 420, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 0, 244, 245, 246, 0,
- 840, 249, 250, 251, 252, 0, 222, 223, 224, 841,
- 226, 227, 228, 229, 230, 420, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 0, 244, 245,
- 246, 875, 876, 249, 250, 251, 252, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 877, 0, 0, 0,
- 0, 0, 0, 0, 0, 878, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1040, 0,
- 0, 0, 0, 0, 0, 0, 0, 1041, 0, 0,
- 0, 0, 0, 0, 0, 879, 880
+ 0, 0, 880, 881
};
static const yytype_int16 yycheck[] =
{
- 14, 15, 166, 709, 369, 633, 487, 631, 152, 481,
- 570, 483, 78, 485, 810, 486, 934, 531, 680, 5,
- 682, 0, 684, 616, 166, 539, 8, 22, 7, 21,
- 22, 396, 625, 33, 373, 775, 20, 459, 15, 16,
- 834, 150, 20, 566, 1179, 46, 60, 61, 62, 19,
- 20, 30, 441, 32, 1312, 34, 20, 126, 5, 6,
- 20, 40, 57, 132, 7, 33, 125, 21, 22, 128,
- 129, 50, 178, 128, 129, 1310, 150, 56, 25, 172,
- 164, 165, 822, 147, 31, 138, 100, 101, 102, 103,
- 139, 140, 141, 162, 1347, 162, 619, 206, 162, 208,
- 206, 80, 172, 155, 627, 106, 629, 50, 126, 126,
- 179, 1369, 448, 206, 132, 184, 102, 103, 153, 712,
- 138, 68, 69, 102, 103, 117, 118, 162, 181, 15,
- 16, 1384, 1367, 125, 208, 127, 128, 129, 130, 131,
- 207, 205, 208, 202, 203, 170, 568, 202, 203, 137,
- 162, 775, 166, 172, 490, 102, 103, 206, 62, 1294,
- 33, 179, 179, 117, 118, 182, 138, 186, 507, 692,
- 205, 125, 153, 512, 128, 129, 130, 131, 155, 191,
- 205, 162, 170, 160, 184, 162, 163, 60, 61, 171,
- 162, 138, 162, 172, 178, 190, 21, 22, 822, 185,
- 178, 825, 996, 203, 593, 369, 172, 202, 372, 209,
- 202, 203, 191, 635, 178, 162, 184, 1220, 178, 205,
- 813, 203, 386, 170, 203, 126, 170, 592, 205, 969,
- 179, 132, 396, 178, 126, 399, 400, 401, 185, 578,
- 132, 606, 256, 153, 386, 126, 170, 185, 202, 203,
- 123, 132, 162, 34, 127, 591, 203, 399, 400, 401,
- 783, 206, 785, 207, 208, 601, 185, 205, 604, 155,
- 793, 126, 338, 796, 160, 1193, 162, 163, 179, 153,
- 172, 205, 63, 178, 1287, 1288, 205, 179, 162, 178,
- 115, 116, 117, 118, 119, 631, 206, 122, 179, 927,
- 125, 1304, 127, 128, 129, 130, 131, 180, 133, 134,
- 181, 184, 476, 477, 187, 126, 480, 206, 482, 185,
- 484, 132, 486, 178, 179, 178, 181, 126, 178, 184,
- 203, 162, 138, 132, 476, 477, 209, 673, 480, 205,
- 482, 147, 484, 178, 172, 969, 152, 686, 126, 688,
- 131, 1354, 1355, 206, 132, 369, 162, 138, 372, 831,
- 185, 186, 187, 188, 189, 190, 191, 1029, 179, 178,
- 1076, 206, 386, 172, 178, 178, 390, 202, 203, 185,
- 179, 162, 396, 126, 185, 399, 400, 401, 178, 132,
- 153, 178, 406, 407, 57, 178, 1351, 206, 162, 162,
- 63, 179, 206, 206, 205, 1360, 920, 772, 773, 60,
- 61, 62, 5, 6, 195, 8, 206, 782, 899, 206,
- 178, 204, 787, 788, 205, 790, 897, 792, 592, 794,
- 795, 1227, 797, 178, 178, 185, 179, 1392, 1393, 775,
- 1146, 178, 606, 36, 153, 784, 162, 178, 206, 100,
- 101, 102, 103, 162, 178, 205, 147, 162, 138, 181,
- 204, 206, 476, 477, 186, 138, 480, 147, 482, 206,
- 484, 162, 486, 637, 638, 206, 1138, 75, 21, 22,
- 204, 79, 162, 205, 181, 181, 181, 47, 652, 186,
- 186, 186, 162, 1155, 181, 93, 94, 184, 172, 205,
- 98, 99, 100, 101, 178, 162, 670, 67, 205, 205,
- 205, 172, 186, 172, 182, 172, 172, 178, 186, 178,
- 1144, 178, 178, 172, 153, 186, 690, 186, 1234, 178,
- 186, 12, 1092, 162, 57, 699, 155, 186, 702, 172,
- 63, 162, 23, 24, 1016, 178, 162, 178, 690, 182,
- 181, 162, 178, 184, 202, 181, 57, 699, 184, 1031,
- 702, 900, 63, 57, 1078, 57, 139, 1081, 141, 63,
- 1084, 63, 115, 116, 117, 118, 119, 57, 592, 122,
- 123, 124, 125, 63, 127, 128, 129, 130, 131, 172,
- 133, 134, 606, 172, 57, 178, 172, 172, 162, 178,
- 63, 182, 178, 178, 57, 186, 164, 771, 772, 773,
- 774, 976, 977, 978, 778, 1129, 630, 982, 782, 170,
- 764, 182, 162, 787, 788, 186, 790, 179, 792, 771,
- 794, 795, 774, 797, 973, 1195, 778, 139, 140, 141,
- 1154, 184, 185, 186, 187, 188, 189, 190, 191, 182,
- 1015, 182, 182, 186, 182, 186, 186, 182, 186, 202,
- 203, 186, 182, 170, 170, 182, 186, 1373, 1004, 186,
- 182, 164, 1008, 139, 186, 106, 690, 164, 165, 166,
- 167, 1305, 164, 165, 166, 699, 181, 208, 702, 35,
- 35, 1214, 205, 21, 22, 164, 165, 166, 170, 863,
- 1036, 10, 11, 12, 162, 170, 162, 185, 208, 185,
- 185, 185, 1048, 162, 205, 185, 205, 1053, 1278, 205,
- 162, 162, 162, 185, 185, 185, 1091, 204, 185, 22,
- 185, 185, 1356, 897, 182, 162, 1250, 204, 181, 162,
- 170, 178, 181, 1079, 203, 162, 132, 162, 162, 185,
- 914, 185, 185, 1267, 1268, 205, 185, 771, 772, 773,
- 774, 1385, 208, 185, 778, 185, 185, 205, 782, 185,
- 205, 203, 914, 787, 788, 185, 790, 205, 792, 205,
- 794, 795, 1342, 797, 205, 162, 162, 115, 116, 117,
- 118, 1156, 205, 205, 1130, 206, 205, 125, 1134, 127,
- 128, 129, 130, 131, 205, 133, 134, 205, 1432, 205,
- 204, 162, 976, 977, 978, 171, 181, 171, 982, 162,
- 205, 205, 205, 172, 155, 37, 205, 10, 172, 66,
- 172, 172, 172, 172, 172, 172, 1359, 172, 172, 186,
- 13, 205, 178, 1179, 21, 22, 179, 4, 208, 162,
- 171, 1015, 178, 185, 178, 185, 185, 43, 206, 187,
- 188, 189, 190, 191, 1387, 14, 181, 179, 155, 170,
- 8, 162, 186, 171, 202, 203, 178, 185, 205, 1,
- 205, 204, 346, 897, 206, 205, 205, 205, 185, 206,
- 162, 162, 356, 162, 1408, 205, 186, 186, 1412, 205,
- 914, 205, 366, 186, 43, 205, 205, 162, 1072, 205,
- 205, 205, 1277, 205, 171, 67, 172, 205, 186, 186,
- 206, 206, 186, 186, 388, 206, 206, 1091, 186, 206,
- 1072, 206, 186, 186, 186, 186, 21, 22, 115, 116,
- 117, 118, 119, 186, 205, 122, 123, 124, 125, 185,
- 127, 128, 129, 130, 131, 205, 133, 134, 1294, 206,
- 424, 425, 976, 977, 978, 1301, 205, 205, 982, 43,
- 205, 162, 162, 206, 205, 162, 186, 441, 442, 443,
- 444, 445, 446, 186, 186, 186, 186, 206, 205, 205,
- 162, 162, 1156, 162, 1158, 162, 162, 12, 162, 43,
- 33, 1015, 186, 70, 53, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 162, 1158, 205, 186, 172,
- 205, 186, 162, 205, 205, 202, 203, 206, 206, 205,
- 115, 116, 117, 118, 119, 499, 172, 122, 123, 124,
- 125, 171, 127, 128, 129, 130, 131, 205, 133, 134,
- 205, 205, 172, 517, 139, 140, 141, 205, 1072, 205,
- 145, 205, 205, 21, 22, 529, 178, 615, 532, 206,
- 77, 206, 206, 206, 538, 206, 540, 1091, 204, 206,
- 1, 206, 206, 206, 129, 206, 204, 206, 205, 42,
- 206, 80, 1273, 1257, 1428, 180, 99, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 214, 1297, 1,
- 574, 1273, 1273, 1277, 1273, 1257, 1273, 202, 203, 1245,
- 1198, 206, 1285, 1096, 1201, 51, 521, 406, 1286, 593,
- 594, 1356, 760, 597, -1, 599, 406, -1, -1, -1,
- -1, -1, 1156, -1, 1158, 609, 610, 611, 612, 613,
- 614, -1, -1, -1, -1, 466, -1, -1, -1, 117,
- 118, -1, -1, -1, -1, -1, -1, 125, -1, 127,
- 128, 129, 130, 131, -1, 639, 640, -1, -1, 643,
- 644, 645, 646, -1, 648, -1, 650, 651, 652, 653,
+ 14, 15, 811, 167, 710, 370, 487, 634, 632, 153,
+ 482, 571, 484, 488, 486, 79, 8, 935, 532, 681,
+ 5, 683, 0, 685, 617, 167, 540, 33, 776, 7,
+ 20, 33, 397, 626, 460, 374, 15, 16, 442, 22,
+ 128, 129, 33, 20, 567, 1180, 60, 61, 62, 46,
+ 20, 1313, 30, 835, 32, 1311, 34, 7, 126, 5,
+ 6, 150, 40, 125, 132, 162, 128, 129, 147, 60,
+ 61, 170, 50, 20, 57, 823, 126, 150, 56, 25,
+ 139, 140, 141, 162, 138, 31, 153, 101, 102, 103,
+ 104, 19, 20, 126, 162, 162, 181, 620, 126, 184,
+ 50, 34, 80, 172, 132, 628, 205, 630, 1370, 106,
+ 207, 179, 1368, 449, 202, 203, 184, 102, 103, 208,
+ 713, 170, 68, 69, 102, 103, 205, 181, 178, 179,
+ 63, 181, 123, 206, 184, 208, 127, 206, 15, 16,
+ 202, 203, 126, 569, 172, 209, 179, 206, 132, 182,
+ 1348, 179, 776, 167, 138, 491, 102, 103, 207, 208,
+ 1295, 126, 162, 172, 153, 147, 153, 132, 172, 508,
+ 693, 137, 179, 162, 513, 162, 155, 186, 184, 171,
+ 162, 160, 184, 162, 163, 21, 22, 1385, 178, 180,
+ 594, 191, 138, 184, 172, 179, 187, 203, 131, 823,
+ 185, 178, 826, 209, 170, 138, 370, 190, 178, 373,
+ 636, 203, 203, 191, 179, 997, 162, 206, 209, 202,
+ 205, 814, 970, 387, 170, 203, 205, 178, 593, 162,
+ 170, 178, 155, 397, 162, 153, 400, 401, 402, 185,
+ 579, 1221, 607, 257, 162, 387, 126, 126, 185, 178,
+ 185, 172, 132, 132, 178, 206, 592, 203, 400, 401,
+ 402, 784, 195, 786, 172, 205, 602, 126, 205, 605,
+ 205, 794, 205, 132, 797, 339, 1194, 206, 155, 115,
+ 116, 117, 118, 160, 126, 162, 163, 205, 178, 125,
+ 132, 127, 128, 129, 130, 131, 632, 133, 134, 179,
+ 179, 928, 178, 1352, 126, 178, 21, 22, 1288, 1289,
+ 132, 185, 1361, 477, 478, 153, 206, 481, 138, 483,
+ 179, 485, 182, 487, 162, 1305, 186, 147, 204, 185,
+ 172, 205, 152, 206, 138, 477, 478, 179, 674, 481,
+ 62, 483, 162, 485, 1393, 1394, 970, 181, 687, 205,
+ 689, 187, 188, 189, 190, 191, 370, 179, 162, 373,
+ 832, 5, 6, 178, 8, 185, 202, 203, 1030, 185,
+ 178, 1077, 178, 387, 162, 1355, 1356, 391, 178, 178,
+ 139, 47, 141, 397, 172, 178, 400, 401, 402, 205,
+ 178, 206, 36, 407, 408, 60, 61, 62, 206, 178,
+ 206, 67, 117, 118, 178, 204, 206, 921, 773, 774,
+ 125, 204, 127, 128, 129, 130, 131, 898, 783, 1228,
+ 178, 178, 178, 788, 789, 900, 791, 206, 793, 593,
+ 795, 796, 206, 798, 178, 178, 101, 102, 103, 104,
+ 776, 1147, 181, 607, 138, 12, 785, 186, 206, 206,
+ 206, 182, 153, 147, 181, 186, 23, 24, 162, 186,
+ 181, 162, 206, 477, 478, 186, 205, 481, 162, 483,
+ 172, 485, 75, 487, 638, 639, 79, 1139, 205, 21,
+ 22, 181, 164, 165, 205, 162, 186, 202, 203, 653,
+ 93, 94, 153, 57, 1156, 98, 99, 100, 101, 63,
+ 172, 162, 172, 172, 172, 205, 178, 671, 178, 178,
+ 178, 182, 162, 172, 186, 186, 186, 186, 186, 178,
+ 172, 1145, 178, 182, 57, 181, 178, 691, 184, 1235,
+ 63, 57, 178, 1093, 186, 181, 700, 63, 184, 703,
+ 57, 57, 57, 138, 172, 1017, 63, 63, 63, 691,
+ 178, 57, 182, 172, 205, 162, 186, 63, 700, 178,
+ 1032, 703, 901, 172, 172, 1079, 162, 155, 1082, 178,
+ 178, 1085, 162, 115, 116, 117, 118, 119, 202, 593,
+ 122, 123, 124, 125, 162, 127, 128, 129, 130, 131,
+ 182, 133, 134, 607, 186, 182, 182, 182, 182, 186,
+ 186, 186, 186, 182, 139, 140, 141, 186, 772, 773,
+ 774, 775, 977, 978, 979, 779, 1130, 631, 983, 783,
+ 164, 765, 182, 162, 788, 789, 186, 791, 162, 793,
+ 772, 795, 796, 775, 798, 974, 1196, 779, 162, 21,
+ 22, 1155, 184, 185, 186, 187, 188, 189, 190, 191,
+ 57, 1016, 164, 165, 166, 167, 164, 165, 166, 179,
+ 202, 203, 164, 165, 166, 10, 11, 12, 1374, 1005,
+ 170, 170, 170, 1009, 164, 106, 139, 691, 181, 208,
+ 35, 35, 1306, 205, 170, 170, 700, 162, 162, 703,
+ 208, 185, 1215, 185, 21, 22, 185, 185, 205, 204,
+ 864, 1037, 185, 185, 205, 185, 185, 185, 185, 185,
+ 205, 182, 162, 1049, 162, 162, 162, 22, 1054, 1279,
+ 162, 181, 181, 204, 162, 170, 178, 1092, 162, 132,
+ 203, 185, 162, 1357, 898, 117, 118, 1251, 205, 162,
+ 205, 185, 185, 125, 1080, 185, 128, 129, 130, 131,
+ 185, 915, 205, 185, 1268, 1269, 205, 185, 772, 773,
+ 774, 775, 1386, 185, 185, 779, 205, 208, 205, 783,
+ 206, 162, 205, 915, 788, 789, 205, 791, 205, 793,
+ 205, 795, 796, 1343, 798, 205, 203, 205, 162, 204,
+ 117, 118, 1157, 162, 171, 1131, 181, 205, 125, 1135,
+ 127, 128, 129, 130, 131, 171, 205, 205, 172, 1433,
+ 162, 155, 37, 977, 978, 979, 172, 205, 10, 983,
+ 202, 203, 172, 172, 172, 172, 172, 66, 179, 172,
+ 172, 172, 205, 186, 13, 4, 208, 1360, 178, 178,
+ 162, 206, 171, 178, 1180, 21, 22, 185, 185, 185,
+ 43, 14, 1016, 179, 155, 170, 181, 8, 162, 171,
+ 187, 188, 189, 190, 191, 1388, 186, 178, 185, 185,
+ 1, 205, 205, 204, 206, 202, 203, 205, 162, 162,
+ 186, 205, 205, 347, 898, 206, 205, 205, 186, 186,
+ 162, 205, 205, 357, 43, 1409, 205, 205, 205, 1413,
+ 162, 915, 205, 367, 171, 205, 67, 172, 186, 1073,
+ 186, 206, 206, 1278, 206, 186, 205, 186, 206, 206,
+ 186, 206, 186, 186, 205, 389, 186, 186, 1092, 186,
+ 185, 1073, 206, 43, 162, 205, 162, 21, 22, 115,
+ 116, 117, 118, 119, 205, 162, 122, 123, 124, 125,
+ 206, 127, 128, 129, 130, 131, 205, 133, 134, 1295,
+ 205, 425, 426, 977, 978, 979, 1302, 205, 186, 983,
+ 186, 186, 186, 186, 206, 205, 162, 162, 442, 443,
+ 444, 445, 446, 447, 205, 162, 12, 162, 162, 162,
+ 43, 33, 186, 1157, 205, 1159, 205, 205, 70, 206,
+ 205, 205, 1016, 205, 205, 186, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 162, 1159, 186, 206,
+ 172, 205, 162, 205, 172, 205, 202, 203, 206, 53,
+ 171, 115, 116, 117, 118, 119, 500, 204, 122, 123,
+ 124, 125, 206, 127, 128, 129, 130, 131, 205, 133,
+ 134, 205, 172, 206, 518, 139, 140, 141, 205, 1073,
+ 178, 145, 206, 206, 21, 22, 530, 206, 206, 533,
+ 206, 206, 206, 206, 204, 539, 616, 541, 1092, 206,
+ 78, 1, 42, 130, 81, 1429, 1274, 215, 100, 1298,
+ 1274, 1274, 1274, 1274, 1258, 1, 180, 467, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 1246, 1199,
+ 1286, 575, 522, 1287, 1278, 1202, 1258, 1097, 202, 203,
+ 51, 761, 206, 1357, -1, 407, -1, 407, -1, -1,
+ 594, 595, -1, -1, 598, -1, 600, -1, -1, -1,
+ -1, -1, -1, 1157, -1, 1159, 610, 611, 612, 613,
+ 614, 615, -1, -1, -1, -1, -1, -1, -1, -1,
+ 117, 118, -1, -1, -1, -1, -1, -1, 125, -1,
+ 127, 128, 129, 130, 131, -1, 640, 641, -1, -1,
+ 644, 645, 646, 647, -1, 649, -1, 651, 652, 653,
654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
- 664, 665, 666, 667, 668, 669, -1, 671, -1, -1,
+ 664, 665, 666, 667, 668, 669, 670, -1, 672, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 187,
- 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 1257, 202, 203, -1, 711, -1, 713,
- -1, -1, 716, -1, 718, -1, -1, 21, 22, -1,
- -1, 725, -1, 1277, -1, -1, 730, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 741, 742, 743,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 189, 190, 191, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 1258, 202, 203, -1, 712, -1,
+ 714, -1, -1, 717, -1, 719, -1, -1, -1, -1,
+ -1, -1, 726, -1, 1278, -1, -1, 731, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 742, 743,
744, 745, 746, 747, 748, 749, 750, 751, 752, 753,
- 754, 755, 756, 757, 758, 759, -1, -1, 1312, -1,
- -1, -1, 766, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 777, -1, -1, -1, 19, -1, -1,
- -1, -1, -1, 25, -1, -1, -1, -1, -1, 31,
+ 754, 755, 756, 757, 758, 759, 760, -1, -1, 1313,
+ -1, -1, -1, 767, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 778, -1, -1, -1, 19, -1,
+ -1, -1, -1, -1, 25, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 41, -1, -1, 807, -1, -1, 810, 811, 49, -1,
+ -1, 815, -1, -1, -1, -1, 1370, -1, -1, -1,
+ -1, -1, -1, 64, -1, -1, -1, -1, -1, 833,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 877, -1, -1, -1, 881, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 138, -1, -1,
+ -1, -1, -1, -1, -1, -1, 910, -1, -1, -1,
+ 151, -1, -1, 917, -1, -1, -1, 19, -1, -1,
+ 924, 162, -1, 25, -1, -1, 930, -1, -1, 31,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
- -1, -1, 806, -1, -1, 809, 810, 49, -1, -1,
- 814, -1, -1, 117, 118, 1369, -1, -1, -1, -1,
- -1, 125, 64, 127, 128, 129, 130, 131, 832, 71,
+ -1, -1, -1, -1, -1, -1, -1, 49, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 64, -1, -1, -1, 207, -1, 209, 71,
72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 876, -1, -1, -1, 880, -1, -1, -1,
- -1, -1, -1, -1, -1, 189, 190, 191, -1, -1,
- -1, -1, -1, -1, -1, -1, 138, -1, 202, 203,
- -1, -1, -1, -1, -1, 909, -1, -1, -1, 151,
- -1, -1, 916, -1, -1, -1, 19, -1, -1, 923,
- 162, -1, 25, -1, -1, 929, -1, -1, 31, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 41, -1,
- -1, -1, -1, -1, -1, -1, 49, -1, -1, -1,
+ 1014, 1015, -1, -1, -1, -1, -1, 1021, 1022, 1023,
+ -1, 1025, -1, -1, -1, -1, -1, -1, -1, -1,
+ 1034, -1, 1036, -1, 1038, -1, 138, -1, -1, -1,
+ 1044, -1, -1, -1, 1048, -1, -1, -1, -1, 151,
+ -1, -1, 1056, -1, -1, -1, -1, -1, -1, -1,
+ 162, -1, -1, 19, -1, -1, -1, -1, -1, 25,
+ 172, -1, -1, -1, -1, 31, 178, -1, -1, -1,
+ 1084, -1, -1, 1087, -1, 41, -1, -1, -1, -1,
+ -1, -1, -1, 49, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 207, -1, -1, 64, -1,
+ -1, -1, -1, -1, 1118, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 64, -1, -1, -1, 207, -1, 209, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, -1, -1, -1, -1, -1, -1, -1, -1, 1013,
- 1014, -1, -1, -1, -1, -1, 1020, 1021, 1022, -1,
- 1024, -1, -1, -1, -1, -1, -1, -1, -1, 1033,
- -1, 1035, -1, 1037, -1, 138, -1, -1, -1, 1043,
- -1, -1, -1, 1047, -1, -1, -1, -1, 151, -1,
- -1, 1055, -1, -1, -1, -1, -1, -1, -1, 162,
- -1, -1, 19, -1, -1, -1, -1, -1, 25, 172,
- -1, -1, -1, -1, 31, 178, -1, -1, -1, 1083,
- -1, -1, 1086, -1, 41, -1, -1, -1, -1, -1,
- -1, -1, 49, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 207, -1, -1, 64, -1, -1,
- -1, -1, -1, 1117, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, 1165, -1, 1167, -1, -1, -1, -1, 1172, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 1164, -1, 1166, -1, -1, -1, -1, 1171, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1183,
- -1, 138, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 1196, -1, 151, -1, -1, -1, -1, -1,
- -1, -1, 1206, -1, -1, 162, -1, -1, -1, -1,
- -1, -1, 1216, 1217, 1218, -1, -1, -1, -1, 1223,
- -1, -1, -1, 1227, 1228, -1, -1, -1, -1, -1,
- -1, -1, 35, 1237, 1238, 1239, -1, -1, -1, -1,
- -1, -1, -1, 1247, -1, -1, -1, -1, -1, -1,
- 207, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 71, 1273,
- 73, -1, 75, 76, 77, 78, 79, 1281, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, -1,
- 93, 94, 95, 1297, -1, 98, 99, 100, 101, -1,
- -1, -1, -1, -1, -1, -1, -1, 1311, -1, -1,
- 1314, 1315, -1, -1, 117, 118, -1, -1, 1322, -1,
+ 1184, -1, 138, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 1197, -1, 151, -1, -1, -1, -1,
+ -1, -1, -1, 1207, -1, -1, 162, -1, -1, -1,
+ -1, -1, -1, 1217, 1218, 1219, -1, -1, -1, -1,
+ 1224, -1, -1, -1, 1228, 1229, -1, -1, -1, -1,
+ -1, -1, -1, 35, 1238, 1239, 1240, -1, -1, -1,
+ -1, -1, -1, -1, 1248, -1, -1, -1, -1, -1,
+ -1, 207, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 71,
+ 1274, 73, -1, 75, 76, 77, 78, 79, 1282, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ -1, 93, 94, 95, 1298, -1, 98, 99, 100, 101,
+ -1, -1, -1, -1, -1, -1, -1, -1, 1312, -1,
+ -1, 1315, 1316, -1, -1, 117, 118, -1, -1, 1323,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 1334, -1, -1, -1, -1, -1, 1, -1, -1, 1343,
- 5, 6, 7, -1, 9, 10, 11, -1, 13, 1353,
- 15, 16, 17, 18, 19, -1, -1, -1, -1, 162,
- 25, 26, 27, 28, 29, -1, 31, -1, -1, -1,
- -1, -1, -1, 38, 39, -1, 1380, 42, -1, 44,
- 45, -1, -1, 48, -1, 50, 51, 52, -1, 54,
- 55, -1, -1, 58, 59, -1, 1400, -1, -1, -1,
- 65, 1405, 1406, 68, 69, -1, 71, 72, 73, -1,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, -1, 93, 94,
- 95, -1, -1, 98, 99, 100, 101, 102, 103, 104,
- 105, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 117, 118, -1, -1, -1, -1, -1, -1,
+ -1, 1335, -1, -1, -1, -1, -1, 1, -1, -1,
+ 1344, 5, 6, 7, -1, 9, 10, 11, -1, 13,
+ 1354, 15, 16, 17, 18, 19, -1, -1, -1, -1,
+ 162, 25, 26, 27, 28, 29, -1, 31, -1, -1,
+ -1, -1, -1, -1, 38, 39, -1, 1381, 42, -1,
+ 44, 45, -1, -1, 48, -1, 50, 51, 52, -1,
+ 54, 55, -1, -1, 58, 59, -1, 1401, -1, -1,
+ -1, 65, 1406, 1407, 68, 69, -1, 71, 72, 73,
+ -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, -1, 93,
+ 94, 95, -1, -1, 98, 99, 100, 101, 102, 103,
+ 104, 105, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 117, 118, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 138, -1, -1, -1, -1, -1,
+ -1, -1, 146, 147, 148, 149, 150, -1, 152, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ -1, -1, -1, -1, -1, -1, 170, 171, 172, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 187, 188, 189, -1, 191, -1, -1,
+ 194, 195, -1, -1, -1, -1, -1, -1, -1, 203,
+ -1, 205, 1, 207, 208, -1, 5, 6, 7, -1,
+ 9, 10, 11, -1, 13, -1, 15, 16, 17, 18,
+ 19, -1, -1, -1, -1, -1, 25, 26, 27, 28,
+ 29, -1, 31, -1, -1, -1, -1, -1, -1, 38,
+ 39, -1, -1, 42, -1, 44, 45, -1, -1, 48,
+ -1, 50, 51, 52, -1, 54, 55, -1, -1, 58,
+ 59, -1, -1, -1, -1, -1, 65, -1, -1, 68,
+ 69, -1, 71, 72, 73, -1, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, -1, 93, 94, 95, -1, -1, 98,
+ 99, 100, 101, 102, 103, 104, 105, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 117, 118,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
+ -1, -1, -1, -1, -1, -1, -1, 146, 147, 148,
+ 149, 150, -1, 152, -1, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, -1, -1, -1, -1, -1,
+ -1, 170, 171, 172, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 187, 188,
+ 189, -1, 191, -1, -1, 194, 195, -1, -1, -1,
+ -1, -1, -1, -1, 203, -1, 205, 1, 207, 208,
+ -1, 5, 6, 7, -1, 9, 10, 11, -1, 13,
+ -1, 15, 16, 17, 18, 19, -1, -1, -1, -1,
+ -1, 25, 26, 27, 28, 29, -1, 31, -1, -1,
+ -1, -1, -1, -1, 38, 39, -1, -1, 42, -1,
+ 44, 45, -1, -1, 48, -1, 50, 51, 52, -1,
+ 54, 55, -1, -1, 58, 59, -1, -1, -1, -1,
+ -1, 65, -1, -1, 68, 69, -1, 71, 72, 73,
+ -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, -1, 93,
+ 94, 95, -1, -1, 98, 99, 100, 101, 102, 103,
+ 104, 105, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 138, -1, -1, -1, -1, -1, -1,
- -1, 146, 147, 148, 149, 150, -1, 152, -1, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, -1,
- -1, -1, -1, -1, -1, 170, 171, 172, -1, -1,
+ -1, -1, -1, -1, 138, -1, -1, -1, -1, -1,
+ -1, -1, 146, 147, 148, 149, 150, -1, 152, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ -1, -1, -1, -1, -1, -1, 170, 171, 172, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 187, 188, 189, -1, 191, -1, -1, 194,
- 195, -1, -1, -1, -1, -1, -1, -1, 203, -1,
- 205, 1, 207, 208, -1, 5, 6, 7, -1, 9,
- 10, 11, -1, 13, -1, 15, 16, 17, 18, 19,
- -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
- -1, 31, -1, -1, -1, -1, -1, -1, 38, 39,
- -1, -1, 42, -1, 44, 45, -1, -1, 48, -1,
- 50, 51, 52, -1, 54, 55, -1, -1, 58, 59,
+ -1, -1, -1, 187, 188, 189, -1, 191, -1, -1,
+ 194, 195, -1, -1, -1, 5, 6, -1, -1, 203,
+ -1, 205, -1, 207, 208, 15, 16, 17, 18, 19,
+ -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
+ -1, 31, -1, -1, -1, -1, -1, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, -1, -1, 48, -1,
+ -1, 51, 52, -1, -1, 55, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 65, -1, -1, 68, 69,
-1, 71, 72, 73, -1, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
@@ -2951,721 +3004,669 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, 146, 147, 148, 149,
150, -1, 152, -1, 154, 155, 156, 157, 158, 159,
160, 161, 162, 163, -1, -1, -1, -1, -1, -1,
- 170, 171, 172, -1, -1, -1, -1, -1, -1, -1,
+ 170, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 187, 188, 189,
- -1, 191, -1, -1, 194, 195, -1, -1, -1, -1,
- -1, -1, -1, 203, -1, 205, 1, 207, 208, -1,
- 5, 6, 7, -1, 9, 10, 11, -1, 13, -1,
- 15, 16, 17, 18, 19, -1, -1, -1, -1, -1,
- 25, 26, 27, 28, 29, -1, 31, -1, -1, -1,
- -1, -1, -1, 38, 39, -1, -1, 42, -1, 44,
- 45, -1, -1, 48, -1, 50, 51, 52, -1, 54,
- 55, -1, -1, 58, 59, -1, -1, -1, -1, -1,
- 65, -1, -1, 68, 69, -1, 71, 72, 73, -1,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, -1, 93, 94,
- 95, -1, -1, 98, 99, 100, 101, 102, 103, 104,
- 105, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 117, 118, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 138, -1, -1, -1, -1, -1, -1,
- -1, 146, 147, 148, 149, 150, -1, 152, -1, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, -1,
- -1, -1, -1, -1, -1, 170, 171, 172, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 187, 188, 189, -1, 191, -1, -1, 194,
- 195, -1, -1, -1, 5, 6, -1, -1, 203, -1,
- 205, -1, 207, 208, 15, 16, 17, 18, 19, -1,
- -1, -1, -1, -1, 25, 26, 27, 28, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, 39, -1,
- -1, -1, -1, -1, 45, -1, -1, 48, -1, -1,
- 51, 52, -1, -1, 55, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, -1, -1, 68, 69, -1,
- 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, -1, 93, 94, 95, -1, -1, 98, 99, 100,
- 101, 102, 103, 104, 105, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 117, 118, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 138, -1, -1,
- -1, -1, -1, -1, -1, 146, 147, 148, 149, 150,
- -1, 152, -1, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, -1, -1, -1, -1, -1, -1, 170,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 187, 188, 189, -1,
- 191, -1, -1, 194, 195, -1, -1, -1, 5, 6,
- -1, -1, 203, -1, 205, -1, 207, 208, 15, 16,
- 17, 18, 19, -1, -1, -1, -1, -1, 25, -1,
- 27, -1, -1, -1, 31, -1, -1, -1, -1, -1,
- -1, -1, 39, -1, -1, -1, -1, -1, 45, -1,
- -1, 48, -1, -1, 51, -1, -1, -1, 55, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, -1,
- -1, 68, 69, 70, 71, 72, 73, -1, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, -1, 93, 94, 95, -1,
- -1, 98, 99, 100, 101, 102, 103, 104, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
- 147, 148, 149, 150, -1, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, -1, -1, -1,
- -1, -1, -1, 170, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 187, 188, 189, -1, 191, -1, -1, 194, 195, -1,
- -1, -1, -1, -1, 5, 6, 203, -1, 205, 206,
- 207, 208, 13, -1, 15, 16, 17, 18, 19, -1,
- -1, -1, -1, -1, 25, -1, 27, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, 39, -1,
- -1, -1, -1, -1, 45, -1, -1, 48, 49, -1,
- 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, -1, -1, 68, 69, -1,
- 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, -1, 93, 94, 95, -1, -1, 98, 99, 100,
- 101, 102, 103, 104, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 117, 118, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 138, -1, -1,
- -1, -1, -1, -1, -1, 146, 147, 148, 149, 150,
- -1, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, -1, -1, -1, -1, -1, -1, 170,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 187, 188, 189, -1,
- 191, -1, -1, 194, 195, -1, -1, -1, -1, -1,
- 5, 6, 203, -1, 205, -1, 207, 208, 13, -1,
- 15, 16, 17, 18, 19, -1, -1, -1, -1, -1,
- 25, -1, 27, -1, -1, -1, 31, -1, -1, -1,
- -1, -1, -1, -1, 39, -1, -1, -1, -1, -1,
- 45, -1, -1, 48, 49, -1, 51, -1, -1, -1,
- 55, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 65, -1, -1, 68, 69, -1, 71, 72, 73, -1,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, -1, 93, 94,
- 95, -1, -1, 98, 99, 100, 101, 102, 103, 104,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 117, 118, -1, -1, -1, -1, -1, -1,
+ -1, 191, -1, -1, 194, 195, -1, -1, -1, 5,
+ 6, -1, -1, 203, -1, 205, -1, 207, 208, 15,
+ 16, 17, 18, 19, -1, -1, -1, -1, -1, 25,
+ -1, 27, -1, -1, -1, 31, -1, -1, -1, -1,
+ -1, -1, -1, 39, -1, -1, -1, -1, -1, 45,
+ -1, -1, 48, -1, -1, 51, -1, -1, -1, 55,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 65,
+ -1, -1, 68, 69, 70, 71, 72, 73, -1, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, -1, 93, 94, 95,
+ -1, -1, 98, 99, 100, 101, 102, 103, 104, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 138, -1, -1, -1, -1, -1, -1,
- -1, 146, 147, 148, 149, 150, -1, 152, -1, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, -1,
- -1, -1, -1, -1, -1, 170, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 187, 188, 189, -1, 191, -1, -1, 194,
- 195, -1, -1, -1, 5, 6, -1, -1, 203, -1,
- 205, -1, 207, 208, 15, 16, 17, 18, 19, -1,
- -1, -1, -1, -1, 25, -1, 27, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, 39, -1,
- -1, -1, -1, -1, 45, -1, -1, 48, -1, -1,
- 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, -1, -1, 68, 69, 70,
- 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, -1, 93, 94, 95, -1, -1, 98, 99, 100,
- 101, 102, 103, 104, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 117, 118, -1, -1,
+ -1, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 138, -1, -1,
- -1, -1, -1, -1, -1, 146, 147, 148, 149, 150,
- -1, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, -1, -1, -1, -1, -1, -1, 170,
+ -1, -1, 138, -1, -1, -1, -1, -1, -1, -1,
+ 146, 147, 148, 149, 150, -1, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, -1, -1,
+ -1, -1, -1, -1, 170, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 187, 188, 189, -1,
- 191, -1, -1, 194, 195, -1, -1, -1, 5, 6,
- -1, -1, 203, -1, 205, -1, 207, 208, 15, 16,
- 17, 18, 19, -1, -1, -1, -1, -1, 25, -1,
- 27, -1, -1, -1, 31, -1, -1, -1, -1, -1,
- -1, -1, 39, -1, -1, -1, -1, -1, 45, -1,
- -1, 48, -1, -1, 51, -1, -1, -1, 55, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, -1,
- -1, 68, 69, -1, 71, 72, 73, -1, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, -1, 93, 94, 95, -1,
- -1, 98, 99, 100, 101, 102, 103, 104, -1, -1,
+ -1, 187, 188, 189, -1, 191, -1, -1, 194, 195,
+ -1, -1, -1, -1, -1, 5, 6, 203, -1, 205,
+ 206, 207, 208, 13, -1, 15, 16, 17, 18, 19,
+ -1, -1, -1, -1, -1, 25, -1, 27, -1, -1,
+ -1, 31, -1, -1, -1, -1, -1, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, -1, -1, 48, 49,
+ -1, 51, -1, -1, -1, 55, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, -1, -1, 68, 69,
+ -1, 71, 72, 73, -1, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, -1, 93, 94, 95, -1, -1, 98, 99,
+ 100, 101, 102, 103, 104, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 138, -1,
+ -1, -1, -1, -1, -1, -1, 146, 147, 148, 149,
+ 150, -1, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, -1, -1, -1, -1, -1, -1,
+ 170, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 187, 188, 189,
+ -1, 191, -1, -1, 194, 195, -1, -1, -1, -1,
+ -1, 5, 6, 203, -1, 205, -1, 207, 208, 13,
+ -1, 15, 16, 17, 18, 19, -1, -1, -1, -1,
+ -1, 25, -1, 27, -1, -1, -1, 31, -1, -1,
+ -1, -1, -1, -1, -1, 39, -1, -1, -1, -1,
+ -1, 45, -1, -1, 48, 49, -1, 51, -1, -1,
+ -1, 55, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 65, -1, -1, 68, 69, -1, 71, 72, 73,
+ -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, -1, 93,
+ 94, 95, -1, -1, 98, 99, 100, 101, 102, 103,
+ 104, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
- 147, 148, 149, 150, -1, 152, -1, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, -1, -1, -1,
- -1, -1, -1, 170, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 138, -1, -1, -1, -1, -1,
+ -1, -1, 146, 147, 148, 149, 150, -1, 152, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ -1, -1, -1, -1, -1, -1, 170, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 187, 188, 189, -1, 191, -1, -1, 194, 195, -1,
- -1, -1, -1, -1, 5, 6, 203, 204, 205, -1,
- 207, 208, 13, -1, 15, 16, 17, 18, 19, -1,
- -1, -1, -1, -1, 25, -1, 27, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, 39, -1,
- -1, -1, -1, -1, 45, -1, -1, 48, -1, -1,
- 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, -1, -1, 68, 69, -1,
- 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, -1, 93, 94, 95, -1, -1, 98, 99, 100,
- 101, 102, 103, 104, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 117, 118, -1, -1,
+ -1, -1, -1, 187, 188, 189, -1, 191, -1, -1,
+ 194, 195, -1, -1, -1, 5, 6, -1, -1, 203,
+ -1, 205, -1, 207, 208, 15, 16, 17, 18, 19,
+ -1, -1, -1, -1, -1, 25, -1, 27, -1, -1,
+ -1, 31, -1, -1, -1, -1, -1, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, -1, -1, 48, -1,
+ -1, 51, -1, -1, -1, 55, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, -1, -1, 68, 69,
+ 70, 71, 72, 73, -1, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, -1, 93, 94, 95, -1, -1, 98, 99,
+ 100, 101, 102, 103, 104, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 138, -1, -1,
- -1, -1, -1, -1, -1, 146, 147, 148, 149, 150,
- -1, 152, -1, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, -1, -1, -1, -1, -1, -1, 170,
+ -1, -1, -1, -1, -1, -1, -1, -1, 138, -1,
+ -1, -1, -1, -1, -1, -1, 146, 147, 148, 149,
+ 150, -1, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, -1, -1, -1, -1, -1, -1,
+ 170, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 187, 188, 189,
+ -1, 191, -1, -1, 194, 195, -1, -1, -1, 5,
+ 6, -1, -1, 203, -1, 205, -1, 207, 208, 15,
+ 16, 17, 18, 19, -1, -1, -1, -1, -1, 25,
+ -1, 27, -1, -1, -1, 31, -1, -1, -1, -1,
+ -1, -1, -1, 39, -1, -1, -1, -1, -1, 45,
+ -1, -1, 48, -1, -1, 51, -1, -1, -1, 55,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 65,
+ -1, -1, 68, 69, -1, 71, 72, 73, -1, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, -1, 93, 94, 95,
+ -1, -1, 98, 99, 100, 101, 102, 103, 104, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 187, 188, 189, -1,
- 191, -1, -1, 194, 195, -1, -1, -1, 5, 6,
- -1, -1, 203, -1, 205, -1, 207, 208, 15, 16,
- 17, 18, 19, -1, -1, -1, -1, -1, 25, -1,
- 27, -1, -1, -1, 31, -1, -1, -1, -1, -1,
- -1, -1, 39, -1, -1, -1, -1, -1, 45, -1,
- -1, 48, -1, -1, 51, -1, -1, -1, 55, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, -1,
- -1, 68, 69, -1, 71, 72, 73, -1, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, -1, 93, 94, 95, -1,
- -1, 98, 99, 100, 101, 102, 103, 104, -1, -1,
+ -1, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 138, -1, -1, -1, -1, -1, -1, -1,
+ 146, 147, 148, 149, 150, -1, 152, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, -1, -1,
+ -1, -1, -1, -1, 170, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
- 147, 148, 149, 150, -1, 152, -1, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, -1, -1, -1,
- -1, -1, -1, 170, -1, -1, -1, -1, -1, -1,
+ -1, 187, 188, 189, -1, 191, -1, -1, 194, 195,
+ -1, -1, -1, -1, -1, 5, 6, 203, 204, 205,
+ -1, 207, 208, 13, -1, 15, 16, 17, 18, 19,
+ -1, -1, -1, -1, -1, 25, -1, 27, -1, -1,
+ -1, 31, -1, -1, -1, -1, -1, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, -1, -1, 48, -1,
+ -1, 51, -1, -1, -1, 55, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, -1, -1, 68, 69,
+ -1, 71, 72, 73, -1, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, -1, 93, 94, 95, -1, -1, 98, 99,
+ 100, 101, 102, 103, 104, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 187, 188, 189, -1, 191, -1, -1, 194, 195, -1,
- -1, -1, 5, 6, -1, -1, 203, 204, 205, -1,
- 207, 208, 15, 16, 17, 18, 19, -1, -1, -1,
- -1, -1, 25, -1, 27, -1, -1, -1, 31, -1,
- -1, -1, -1, -1, -1, -1, 39, -1, -1, -1,
- -1, -1, 45, -1, -1, 48, -1, -1, 51, -1,
- -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 65, -1, -1, 68, 69, -1, 71, 72,
- 73, -1, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, -1,
- 93, 94, 95, -1, -1, 98, 99, 100, 101, 102,
- 103, 104, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, -1,
- -1, -1, -1, 126, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 138, -1, -1, -1, -1,
- -1, -1, -1, 146, 147, 148, 149, 150, -1, 152,
- -1, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, -1, -1, -1, -1, -1, -1, 170, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 138, -1,
+ -1, -1, -1, -1, -1, -1, 146, 147, 148, 149,
+ 150, -1, 152, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, -1, -1, -1, -1, -1, -1,
+ 170, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 187, 188, 189,
+ -1, 191, -1, -1, 194, 195, -1, -1, -1, 5,
+ 6, -1, -1, 203, -1, 205, -1, 207, 208, 15,
+ 16, 17, 18, 19, -1, -1, -1, -1, -1, 25,
+ -1, 27, -1, -1, -1, 31, -1, -1, -1, -1,
+ -1, -1, -1, 39, -1, -1, -1, -1, -1, 45,
+ -1, -1, 48, -1, -1, 51, -1, -1, -1, 55,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 65,
+ -1, -1, 68, 69, -1, 71, 72, 73, -1, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, -1, 93, 94, 95,
+ -1, -1, 98, 99, 100, 101, 102, 103, 104, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 187, 188, 189, -1, 191, -1,
- -1, 194, 195, -1, -1, -1, 5, 6, -1, -1,
- 203, -1, 205, -1, 207, 208, 15, 16, 17, 18,
- 19, -1, -1, -1, -1, -1, 25, -1, 27, -1,
- -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
- 39, -1, -1, -1, -1, -1, 45, -1, -1, 48,
- -1, -1, 51, -1, -1, -1, 55, -1, -1, -1,
- -1, -1, 61, -1, -1, -1, 65, -1, -1, 68,
- 69, -1, 71, 72, 73, -1, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, -1, 93, 94, 95, -1, -1, 98,
- 99, 100, 101, 102, 103, 104, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 117, 118,
+ -1, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
- -1, -1, -1, -1, -1, -1, -1, 146, 147, 148,
- 149, 150, -1, 152, -1, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, -1, -1, -1, -1, -1,
- -1, 170, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 187, 188,
- 189, -1, 191, -1, -1, 194, 195, -1, -1, -1,
- 5, 6, -1, -1, 203, -1, 205, -1, 207, 208,
- 15, 16, 17, 18, 19, -1, -1, -1, -1, -1,
- 25, -1, 27, -1, -1, -1, 31, -1, -1, -1,
- -1, -1, -1, -1, 39, -1, -1, -1, -1, -1,
- 45, -1, -1, 48, -1, -1, 51, -1, -1, -1,
- 55, -1, -1, 58, -1, -1, -1, -1, -1, -1,
- 65, -1, -1, 68, 69, -1, 71, 72, 73, -1,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, -1, 93, 94,
- 95, -1, -1, 98, 99, 100, 101, 102, 103, 104,
+ -1, -1, 138, -1, -1, -1, -1, -1, -1, -1,
+ 146, 147, 148, 149, 150, -1, 152, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, -1, -1,
+ -1, -1, -1, -1, 170, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 117, 118, -1, -1, -1, -1, -1, -1,
+ -1, 187, 188, 189, -1, 191, -1, -1, 194, 195,
+ -1, -1, -1, 5, 6, -1, -1, 203, 204, 205,
+ -1, 207, 208, 15, 16, 17, 18, 19, -1, -1,
+ -1, -1, -1, 25, -1, 27, -1, -1, -1, 31,
+ -1, -1, -1, -1, -1, -1, -1, 39, -1, -1,
+ -1, -1, -1, 45, -1, -1, 48, -1, -1, 51,
+ -1, -1, -1, 55, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 65, -1, -1, 68, 69, -1, 71,
+ 72, 73, -1, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ -1, 93, 94, 95, -1, -1, 98, 99, 100, 101,
+ 102, 103, 104, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 117, 118, -1, -1, -1,
+ -1, -1, -1, -1, 126, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 138, -1, -1, -1,
+ -1, -1, -1, -1, 146, 147, 148, 149, 150, -1,
+ 152, -1, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, -1, -1, -1, -1, -1, -1, 170, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 138, -1, -1, -1, -1, -1, -1,
- -1, 146, 147, 148, 149, 150, -1, 152, -1, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, -1,
- -1, -1, -1, -1, -1, 170, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 187, 188, 189, -1, 191,
+ -1, -1, 194, 195, -1, -1, -1, 5, 6, -1,
+ -1, 203, -1, 205, -1, 207, 208, 15, 16, 17,
+ 18, 19, -1, -1, -1, -1, -1, 25, -1, 27,
+ -1, -1, -1, 31, -1, -1, -1, -1, -1, -1,
+ -1, 39, -1, -1, -1, -1, -1, 45, -1, -1,
+ 48, -1, -1, 51, -1, -1, -1, 55, -1, -1,
+ -1, -1, -1, 61, -1, -1, -1, 65, -1, -1,
+ 68, 69, -1, 71, 72, 73, -1, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, -1, 93, 94, 95, -1, -1,
+ 98, 99, 100, 101, 102, 103, 104, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 117,
+ 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 187, 188, 189, -1, 191, -1, -1, 194,
- 195, -1, -1, -1, 5, 6, -1, -1, 203, -1,
- 205, -1, 207, 208, 15, 16, 17, 18, 19, -1,
- -1, -1, -1, -1, 25, -1, 27, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, 39, -1,
- -1, -1, -1, -1, 45, -1, -1, 48, -1, -1,
- 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, -1, -1, 68, 69, -1,
- 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, -1, 93, 94, 95, -1, -1, 98, 99, 100,
- 101, 102, 103, 104, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 117, 118, -1, -1,
- -1, -1, -1, -1, -1, 126, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 138, -1, -1,
- -1, -1, -1, -1, -1, 146, 147, 148, 149, 150,
- -1, 152, -1, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, -1, -1, -1, -1, -1, -1, 170,
+ 138, -1, -1, -1, -1, -1, -1, -1, 146, 147,
+ 148, 149, 150, -1, 152, -1, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, -1, -1, -1, -1,
+ -1, -1, 170, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 187,
+ 188, 189, -1, 191, -1, -1, 194, 195, -1, -1,
+ -1, 5, 6, -1, -1, 203, -1, 205, -1, 207,
+ 208, 15, 16, 17, 18, 19, -1, -1, -1, -1,
+ -1, 25, -1, 27, -1, -1, -1, 31, -1, -1,
+ -1, -1, -1, -1, -1, 39, -1, -1, -1, -1,
+ -1, 45, -1, -1, 48, -1, -1, 51, -1, -1,
+ -1, 55, -1, -1, 58, -1, -1, -1, -1, -1,
+ -1, 65, -1, -1, 68, 69, -1, 71, 72, 73,
+ -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, -1, 93,
+ 94, 95, -1, -1, 98, 99, 100, 101, 102, 103,
+ 104, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 187, 188, 189, -1,
- 191, -1, -1, 194, 195, -1, -1, -1, 5, 6,
- -1, -1, 203, -1, 205, -1, 207, 208, 15, 16,
- 17, 18, 19, -1, -1, 22, -1, -1, 25, -1,
- 27, -1, -1, -1, 31, -1, -1, -1, -1, -1,
- -1, -1, 39, -1, -1, -1, -1, -1, 45, -1,
- -1, 48, -1, -1, 51, -1, -1, -1, 55, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, -1,
- -1, 68, 69, -1, 71, 72, 73, -1, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, -1, 93, 94, 95, -1,
- -1, 98, 99, 100, 101, 102, 103, 104, -1, -1,
+ -1, -1, -1, -1, 138, -1, -1, -1, -1, -1,
+ -1, -1, 146, 147, 148, 149, 150, -1, 152, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ -1, -1, -1, -1, -1, -1, 170, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 187, 188, 189, -1, 191, -1, -1,
+ 194, 195, -1, -1, -1, 5, 6, -1, -1, 203,
+ -1, 205, -1, 207, 208, 15, 16, 17, 18, 19,
+ -1, -1, -1, -1, -1, 25, -1, 27, -1, -1,
+ -1, 31, -1, -1, -1, -1, -1, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, -1, -1, 48, -1,
+ -1, 51, -1, -1, -1, 55, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, -1, -1, 68, 69,
+ -1, 71, 72, 73, -1, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, -1, 93, 94, 95, -1, -1, 98, 99,
+ 100, 101, 102, 103, 104, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 117, 118, -1,
+ -1, -1, -1, -1, -1, -1, 126, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 138, -1,
+ -1, -1, -1, -1, -1, -1, 146, 147, 148, 149,
+ 150, -1, 152, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, -1, -1, -1, -1, -1, -1,
+ 170, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 187, 188, 189,
+ -1, 191, -1, -1, 194, 195, -1, -1, -1, 5,
+ 6, -1, -1, 203, -1, 205, -1, 207, 208, 15,
+ 16, 17, 18, 19, -1, -1, 22, -1, -1, 25,
+ -1, 27, -1, -1, -1, 31, -1, -1, -1, -1,
+ -1, -1, -1, 39, -1, -1, -1, -1, -1, 45,
+ -1, -1, 48, -1, -1, 51, -1, -1, -1, 55,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 65,
+ -1, -1, 68, 69, -1, 71, 72, 73, -1, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, -1, 93, 94, 95,
+ -1, -1, 98, 99, 100, 101, 102, 103, 104, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
- 147, 148, 149, 150, -1, 152, -1, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, -1, -1, -1,
- -1, -1, -1, 170, -1, -1, -1, -1, -1, -1,
+ -1, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 187, 188, 189, -1, 191, -1, -1, 194, 195, -1,
- -1, -1, 5, 6, -1, -1, 203, -1, 205, -1,
- 207, 208, 15, 16, 17, 18, 19, -1, -1, -1,
- -1, -1, 25, -1, 27, -1, -1, -1, 31, -1,
- -1, -1, -1, -1, -1, -1, 39, -1, -1, -1,
- -1, -1, 45, -1, -1, 48, -1, -1, 51, -1,
- -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 65, -1, -1, 68, 69, -1, 71, 72,
- 73, -1, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, -1,
- 93, 94, 95, -1, -1, 98, 99, 100, 101, 102,
- 103, 104, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, -1,
+ -1, -1, 138, -1, -1, -1, -1, -1, -1, -1,
+ 146, 147, 148, 149, 150, -1, 152, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, -1, -1,
+ -1, -1, -1, -1, 170, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 138, -1, -1, -1, -1,
- -1, -1, -1, 146, 147, 148, 149, 150, -1, 152,
- -1, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, -1, -1, -1, -1, -1, -1, 170, -1, -1,
+ -1, 187, 188, 189, -1, 191, -1, -1, 194, 195,
+ -1, -1, -1, 5, 6, -1, -1, 203, -1, 205,
+ -1, 207, 208, 15, 16, 17, 18, 19, -1, -1,
+ -1, -1, -1, 25, -1, 27, -1, -1, -1, 31,
+ -1, -1, -1, -1, -1, -1, -1, 39, -1, -1,
+ -1, -1, -1, 45, -1, -1, 48, -1, -1, 51,
+ -1, -1, -1, 55, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 65, -1, -1, 68, 69, -1, 71,
+ 72, 73, -1, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ -1, 93, 94, 95, -1, -1, 98, 99, 100, 101,
+ 102, 103, 104, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 187, 188, 189, -1, 191, -1,
- -1, 194, 195, -1, -1, -1, 5, 6, -1, -1,
- 203, -1, 205, 206, 207, 208, 15, 16, 17, 18,
- 19, -1, -1, -1, -1, -1, 25, -1, 27, -1,
- -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
- 39, -1, -1, -1, -1, -1, 45, -1, -1, 48,
- -1, -1, 51, -1, -1, -1, 55, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 65, -1, -1, 68,
- 69, -1, 71, 72, 73, -1, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, -1, 93, 94, 95, -1, -1, 98,
- 99, 100, 101, 102, 103, 104, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 117, 118,
+ -1, -1, -1, -1, -1, -1, 138, -1, -1, -1,
+ -1, -1, -1, -1, 146, 147, 148, 149, 150, -1,
+ 152, -1, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, -1, -1, -1, -1, -1, -1, 170, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
- -1, -1, -1, -1, -1, -1, -1, 146, 147, 148,
- 149, 150, -1, 152, -1, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, -1, -1, -1, -1, -1,
- -1, 170, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 187, 188,
- 189, -1, 191, -1, -1, 194, 195, -1, -1, -1,
- 5, 6, -1, -1, 203, -1, 205, 206, 207, 208,
- 15, 16, 17, 18, 19, -1, -1, -1, -1, -1,
- 25, -1, 27, -1, -1, -1, 31, -1, -1, -1,
- -1, -1, -1, -1, 39, -1, -1, -1, -1, -1,
- 45, -1, -1, 48, -1, -1, 51, -1, -1, -1,
- 55, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 65, -1, -1, 68, 69, -1, 71, 72, 73, -1,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, -1, 93, 94,
- 95, -1, -1, 98, 99, 100, 101, 102, 103, 104,
+ -1, -1, -1, -1, -1, 187, 188, 189, -1, 191,
+ -1, -1, 194, 195, -1, -1, -1, 5, 6, -1,
+ -1, 203, -1, 205, 206, 207, 208, 15, 16, 17,
+ 18, 19, -1, -1, -1, -1, -1, 25, -1, 27,
+ -1, -1, -1, 31, -1, -1, -1, -1, -1, -1,
+ -1, 39, -1, -1, -1, -1, -1, 45, -1, -1,
+ 48, -1, -1, 51, -1, -1, -1, 55, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 65, -1, -1,
+ 68, 69, -1, 71, 72, 73, -1, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, -1, 93, 94, 95, -1, -1,
+ 98, 99, 100, 101, 102, 103, 104, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 117,
+ 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 117, 118, -1, -1, -1, -1, -1, -1,
+ 138, -1, -1, -1, -1, -1, -1, -1, 146, 147,
+ 148, 149, 150, -1, 152, -1, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, -1, -1, -1, -1,
+ -1, -1, 170, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 187,
+ 188, 189, -1, 191, -1, -1, 194, 195, -1, -1,
+ -1, 5, 6, -1, -1, 203, -1, 205, 206, 207,
+ 208, 15, 16, 17, 18, 19, -1, -1, -1, -1,
+ -1, 25, -1, 27, -1, -1, -1, 31, -1, -1,
+ -1, -1, -1, -1, -1, 39, -1, -1, -1, -1,
+ -1, 45, -1, -1, 48, -1, -1, 51, -1, -1,
+ -1, 55, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 65, -1, -1, 68, 69, -1, 71, 72, 73,
+ -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, -1, 93,
+ 94, 95, -1, -1, 98, 99, 100, 101, 102, 103,
+ 104, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 138, -1, -1, -1, -1, -1, -1,
- -1, 146, 147, 148, 149, 150, -1, 152, -1, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, -1,
- -1, -1, -1, -1, -1, 170, -1, -1, -1, -1,
+ -1, -1, -1, -1, 138, -1, -1, -1, -1, -1,
+ -1, -1, 146, 147, 148, 149, 150, -1, 152, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ -1, -1, -1, -1, -1, -1, 170, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 187, 188, 189, -1, 191, -1, -1, 194,
- 195, -1, -1, -1, 5, 6, -1, -1, 203, -1,
- 205, 206, 207, 208, 15, 16, 17, 18, 19, -1,
- -1, -1, -1, -1, 25, -1, 27, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, 39, -1,
- -1, -1, -1, -1, 45, -1, -1, 48, -1, -1,
- 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, -1, -1, 68, 69, -1,
- 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, -1, 93, 94, 95, -1, -1, 98, 99, 100,
- 101, 102, 103, 104, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 117, 118, -1, -1,
+ -1, -1, -1, 187, 188, 189, -1, 191, -1, -1,
+ 194, 195, -1, -1, -1, 5, 6, -1, -1, 203,
+ -1, 205, 206, 207, 208, 15, 16, 17, 18, 19,
+ -1, -1, -1, -1, -1, 25, -1, 27, -1, -1,
+ -1, 31, -1, -1, -1, -1, -1, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, -1, -1, 48, -1,
+ -1, 51, -1, -1, -1, 55, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, -1, -1, 68, 69,
+ -1, 71, 72, 73, -1, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, -1, 93, 94, 95, -1, -1, 98, 99,
+ 100, 101, 102, 103, 104, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 138, -1, -1,
- -1, -1, -1, -1, -1, 146, 147, 148, 149, 150,
- -1, 152, -1, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, -1, -1, -1, -1, -1, -1, 170,
+ -1, -1, -1, -1, -1, -1, -1, -1, 138, -1,
+ -1, -1, -1, -1, -1, -1, 146, 147, 148, 149,
+ 150, -1, 152, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, -1, -1, -1, -1, -1, -1,
+ 170, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 187, 188, 189,
+ -1, 191, -1, -1, 194, 195, -1, -1, -1, 5,
+ 6, -1, -1, 203, -1, 205, 206, 207, 208, 15,
+ 16, 17, 18, 19, -1, -1, -1, -1, -1, 25,
+ -1, 27, -1, -1, -1, 31, -1, -1, -1, -1,
+ -1, -1, -1, 39, -1, -1, -1, -1, -1, 45,
+ -1, -1, 48, -1, -1, 51, -1, -1, -1, 55,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 65,
+ -1, -1, 68, 69, -1, 71, 72, 73, -1, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, -1, 93, 94, 95,
+ -1, -1, 98, 99, 100, 101, 102, 103, 104, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 187, 188, 189, -1,
- 191, -1, -1, 194, 195, -1, -1, -1, 5, 6,
- -1, -1, 203, -1, 205, 206, 207, 208, 15, 16,
- 17, 18, 19, -1, -1, -1, -1, -1, 25, -1,
- 27, -1, -1, -1, 31, -1, -1, -1, -1, -1,
- -1, -1, 39, -1, -1, -1, -1, -1, 45, -1,
- -1, 48, -1, -1, 51, -1, -1, -1, 55, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, -1,
- -1, 68, 69, -1, 71, 72, 73, -1, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, -1, 93, 94, 95, -1,
- -1, 98, 99, 100, 101, 102, 103, 104, -1, -1,
+ -1, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 138, -1, -1, -1, -1, -1, -1, -1,
+ 146, 147, 148, 149, 150, -1, 152, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, -1, -1,
+ -1, -1, -1, -1, 170, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
- 147, 148, 149, 150, -1, 152, -1, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, -1, -1, -1,
- -1, -1, -1, 170, -1, -1, -1, -1, -1, -1,
+ -1, 187, 188, 189, -1, 191, -1, -1, 194, 195,
+ -1, -1, -1, 5, 6, -1, -1, 203, -1, 205,
+ 206, 207, 208, 15, 16, 17, 18, 19, -1, -1,
+ -1, -1, -1, 25, -1, 27, -1, -1, -1, 31,
+ -1, -1, -1, -1, -1, -1, -1, 39, -1, -1,
+ -1, -1, -1, 45, -1, -1, 48, -1, -1, 51,
+ -1, -1, -1, 55, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 65, -1, -1, 68, 69, -1, 71,
+ 72, 73, -1, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ -1, 93, 94, 95, -1, -1, 98, 99, 100, 101,
+ 102, 103, 104, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 187, 188, 189, -1, 191, -1, -1, 194, 195, -1,
- -1, -1, 5, 6, -1, -1, 203, -1, 205, 206,
- 207, 208, 15, 16, 17, 18, 19, -1, -1, -1,
- -1, -1, 25, -1, 27, -1, -1, -1, 31, -1,
- -1, -1, -1, -1, -1, -1, 39, -1, -1, -1,
- -1, -1, 45, -1, -1, 48, -1, -1, 51, -1,
- -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 65, -1, -1, 68, 69, -1, 71, 72,
- 73, -1, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, -1,
- 93, 94, 95, -1, -1, 98, 99, 100, 101, 102,
- 103, 104, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 138, -1, -1, -1,
+ -1, -1, -1, -1, 146, 147, 148, 149, 150, -1,
+ 152, -1, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, -1, -1, -1, -1, -1, -1, 170, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 138, -1, -1, -1, -1,
- -1, -1, -1, 146, 147, 148, 149, 150, -1, 152,
- -1, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, -1, -1, -1, -1, -1, -1, 170, -1, -1,
+ -1, -1, -1, -1, -1, 187, 188, 189, -1, 191,
+ -1, -1, 194, 195, -1, -1, -1, 5, 6, -1,
+ -1, 203, -1, 205, 206, 207, 208, 15, 16, 17,
+ 18, 19, -1, -1, -1, -1, -1, 25, -1, 27,
+ -1, -1, -1, 31, -1, -1, -1, -1, -1, -1,
+ -1, 39, -1, -1, -1, -1, -1, 45, -1, -1,
+ 48, -1, -1, 51, -1, -1, -1, 55, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 65, -1, -1,
+ 68, 69, -1, 71, 72, 73, -1, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, -1, 93, 94, 95, -1, -1,
+ 98, 99, 100, 101, 102, 103, 104, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 117,
+ 118, -1, -1, -1, -1, -1, -1, -1, 126, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 187, 188, 189, -1, 191, -1,
- -1, 194, 195, -1, -1, -1, 5, 6, -1, -1,
- 203, -1, 205, 206, 207, 208, 15, 16, 17, 18,
- 19, -1, -1, -1, -1, -1, 25, -1, 27, -1,
- -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
- 39, -1, -1, -1, -1, -1, 45, -1, -1, 48,
- -1, -1, 51, -1, -1, -1, 55, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 65, -1, -1, 68,
- 69, -1, 71, 72, 73, -1, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, -1, 93, 94, 95, -1, -1, 98,
- 99, 100, 101, 102, 103, 104, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 117, 118,
- -1, -1, -1, -1, -1, -1, -1, 126, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
- -1, -1, -1, -1, -1, -1, -1, 146, 147, 148,
- 149, 150, -1, 152, -1, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, -1, -1, -1, -1, -1,
- -1, 170, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 187, 188,
- 189, -1, 191, -1, -1, 194, 195, -1, -1, -1,
- 5, 6, -1, -1, 203, -1, 205, -1, 207, 208,
- 15, 16, 17, 18, 19, -1, -1, -1, -1, -1,
- 25, -1, 27, -1, -1, -1, 31, -1, -1, -1,
- -1, -1, -1, -1, 39, -1, -1, -1, -1, -1,
- 45, -1, -1, 48, -1, -1, 51, -1, -1, -1,
- 55, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 65, -1, -1, 68, 69, -1, 71, 72, 73, -1,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, -1, 93, 94,
- 95, -1, -1, 98, 99, 100, 101, 102, 103, 104,
+ 138, -1, -1, -1, -1, -1, -1, -1, 146, 147,
+ 148, 149, 150, -1, 152, -1, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, -1, -1, -1, -1,
+ -1, -1, 170, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 187,
+ 188, 189, -1, 191, -1, -1, 194, 195, -1, -1,
+ -1, 5, 6, -1, -1, 203, -1, 205, -1, 207,
+ 208, 15, 16, 17, 18, 19, -1, -1, -1, -1,
+ -1, 25, -1, 27, -1, -1, -1, 31, -1, -1,
+ -1, -1, -1, -1, -1, 39, -1, -1, -1, -1,
+ -1, 45, -1, -1, 48, -1, -1, 51, -1, -1,
+ -1, 55, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 65, -1, -1, 68, 69, -1, 71, 72, 73,
+ -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, -1, 93,
+ 94, 95, -1, -1, 98, 99, 100, 101, 102, 103,
+ 104, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 117, 118, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 138, -1, -1, -1, -1, -1,
+ -1, -1, 146, 147, 148, 149, 150, -1, 152, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ -1, -1, -1, -1, -1, -1, 170, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 138, -1, -1, -1, -1, -1, -1,
- -1, 146, 147, 148, 149, 150, -1, 152, -1, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, -1,
- -1, -1, -1, -1, -1, 170, -1, -1, -1, -1,
+ -1, -1, -1, 187, 188, 189, -1, 191, -1, -1,
+ 194, 195, -1, -1, -1, 5, 6, -1, -1, 203,
+ -1, 205, -1, 207, 208, 15, 16, 17, 18, 19,
+ -1, -1, -1, -1, -1, 25, -1, 27, -1, -1,
+ -1, 31, -1, -1, -1, -1, -1, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, -1, -1, 48, -1,
+ -1, 51, -1, -1, -1, 55, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, -1, -1, 68, 69,
+ -1, 71, 72, 73, -1, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, -1, 93, 94, 95, -1, -1, 98, 99,
+ 100, 101, 102, 103, 104, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 187, 188, 189, -1, 191, -1, -1, 194,
- 195, -1, -1, -1, 5, 6, -1, -1, 203, -1,
- 205, -1, 207, 208, 15, 16, 17, 18, 19, -1,
- -1, -1, -1, -1, 25, -1, 27, -1, -1, -1,
- 31, -1, -1, -1, -1, -1, -1, -1, 39, -1,
- -1, -1, -1, -1, 45, -1, -1, 48, -1, -1,
- 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, -1, -1, 68, 69, -1,
- 71, 72, 73, -1, 75, 76, 77, 78, 79, 80,
+ -1, -1, -1, -1, -1, -1, -1, -1, 138, -1,
+ -1, -1, -1, -1, -1, -1, 146, 147, 148, 149,
+ 150, -1, 152, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 21, 22, -1, -1, 19, -1,
+ 170, -1, -1, -1, 25, -1, -1, -1, -1, -1,
+ 31, -1, -1, -1, -1, -1, -1, 187, 188, 189,
+ 41, 191, -1, -1, 194, 195, -1, -1, 49, -1,
+ 21, 22, -1, 203, -1, 205, -1, 207, 208, -1,
+ -1, -1, -1, 64, -1, -1, -1, -1, -1, -1,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, -1, 93, 94, 95, -1, -1, 98, 99, 100,
- 101, 102, 103, 104, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 117, 118, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 138, -1, -1,
- -1, -1, -1, -1, -1, 146, 147, 148, 149, 150,
- -1, 152, -1, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 21, 22, -1, -1, 19, -1, 170,
- -1, -1, -1, 25, -1, -1, -1, -1, -1, 31,
- -1, -1, -1, -1, -1, -1, 187, 188, 189, 41,
- 191, -1, -1, 194, 195, -1, -1, 49, -1, 21,
- 22, -1, 203, -1, 205, -1, 207, 208, -1, -1,
- -1, -1, 64, -1, -1, -1, -1, -1, -1, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, -1, -1, -1, -1, -1, 115, 116, 117,
- 118, 119, -1, -1, 122, 123, 124, 125, -1, 127,
- 128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
- -1, 139, 140, 141, -1, -1, 138, 145, -1, -1,
- -1, 21, 22, 115, 116, 117, 118, 119, -1, 151,
- 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
- 162, 133, 134, -1, -1, -1, -1, 139, 140, 141,
- -1, -1, 180, 145, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 202, 203, -1, -1, 206, -1,
- -1, -1, -1, -1, -1, 207, -1, -1, 180, -1,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 202, 203, -1, -1, 206, 115, 116, 117, 118, 119,
- 21, 22, 122, 123, 124, 125, -1, 127, 128, 129,
- 130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
- 140, 141, -1, -1, -1, 145, -1, -1, -1, -1,
- -1, 21, 22, -1, -1, -1, -1, -1, -1, -1,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, 115, 116,
+ 117, 118, 119, -1, -1, 122, 123, 124, 125, -1,
+ 127, 128, 129, 130, 131, -1, 133, 134, -1, -1,
+ -1, -1, 139, 140, 141, -1, -1, 138, 145, -1,
+ -1, -1, 21, 22, 115, 116, 117, 118, 119, -1,
+ 151, 122, 123, 124, 125, -1, 127, 128, 129, 130,
+ 131, 162, 133, 134, -1, -1, -1, -1, 139, 140,
+ 141, -1, -1, 180, 145, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 202, 203, -1, -1, 206,
+ -1, -1, -1, -1, -1, -1, 207, -1, -1, 180,
+ -1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 202, 203, -1, -1, 206, 115, 116, 117, 118,
+ 119, 21, 22, 122, 123, 124, 125, -1, 127, 128,
+ 129, 130, 131, -1, 133, 134, -1, -1, -1, -1,
+ 139, 140, 141, -1, -1, -1, 145, -1, -1, -1,
+ -1, -1, 21, 22, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 180, -1, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 202, 203, -1, -1, 206, -1, -1, -1,
- -1, -1, -1, -1, 115, 116, 117, 118, 119, -1,
- -1, 122, 123, 124, 125, -1, 127, 128, 129, 130,
- 131, -1, 133, 134, -1, -1, -1, -1, 139, 140,
- 141, -1, -1, -1, 145, 115, 116, 117, 118, 119,
- 21, 22, 122, 123, 124, 125, -1, 127, 128, 129,
+ -1, 180, -1, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 202, 203, -1, -1, 206, -1, -1,
+ -1, -1, -1, -1, -1, 115, 116, 117, 118, 119,
+ -1, -1, 122, 123, 124, 125, -1, 127, 128, 129,
130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
- 140, 141, -1, -1, -1, 145, -1, -1, -1, 180,
- -1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 202, 203, -1, -1, 206, -1, -1, -1, -1,
+ 140, 141, -1, -1, -1, 145, 115, 116, 117, 118,
+ 119, 21, 22, 122, 123, 124, 125, -1, 127, 128,
+ 129, 130, 131, -1, 133, 134, -1, -1, -1, -1,
+ 139, 140, 141, -1, -1, -1, 145, -1, -1, -1,
180, -1, 182, 183, 184, 185, 186, 187, 188, 189,
190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 202, 203, -1, -1, 206, -1, -1, -1,
- -1, -1, 21, 22, 115, 116, 117, 118, 119, -1,
- -1, 122, 123, 124, 125, -1, 127, 128, 129, 130,
- 131, -1, 133, 134, -1, -1, -1, -1, 139, 140,
- 141, -1, -1, -1, 145, 21, 22, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 180,
- -1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 202, 203, -1, -1, 206, 115, 116, 117, 118,
- 119, -1, -1, 122, 123, 124, 125, -1, 127, 128,
- 129, 130, 131, -1, 133, 134, -1, -1, -1, -1,
- 139, 140, 141, -1, -1, -1, 145, 21, 22, 115,
- 116, 117, 118, 119, -1, -1, 122, 123, 124, 125,
- -1, 127, 128, 129, 130, 131, -1, 133, 134, -1,
- -1, -1, -1, 139, 140, 141, -1, -1, -1, 145,
-1, 180, -1, 182, 183, 184, 185, 186, 187, 188,
189, 190, 191, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 202, 203, -1, -1, 206, -1, -1,
- -1, -1, -1, -1, 180, -1, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 202, 203, -1, -1,
- 206, 115, 116, 117, 118, 119, 21, 22, 122, 123,
- 124, 125, -1, 127, 128, 129, 130, 131, -1, 133,
- 134, -1, -1, -1, -1, 139, 140, 141, -1, -1,
- -1, 145, -1, -1, -1, -1, -1, 21, 22, -1,
+ -1, -1, -1, 21, 22, 115, 116, 117, 118, 119,
+ -1, -1, 122, 123, 124, 125, -1, 127, 128, 129,
+ 130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
+ 140, 141, -1, -1, -1, 145, 21, 22, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 180, -1, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 202, 203,
- -1, -1, 206, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 180, -1, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 202, 203, -1, -1, 206, 115, 116, 117,
+ 118, 119, -1, -1, 122, 123, 124, 125, -1, 127,
+ 128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
+ -1, 139, 140, 141, -1, -1, -1, 145, 21, 22,
115, 116, 117, 118, 119, -1, -1, 122, 123, 124,
125, -1, 127, 128, 129, 130, 131, -1, 133, 134,
-1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
- 145, 115, 116, 117, 118, 119, 21, 22, 122, 123,
- 124, 125, -1, 127, 128, 129, 130, 131, -1, 133,
- 134, -1, -1, -1, -1, 139, 140, 141, -1, -1,
- -1, 145, -1, -1, -1, 180, -1, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 202, 203, -1,
- -1, 206, -1, -1, -1, -1, 180, -1, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 202, 203,
- -1, -1, 206, -1, -1, -1, -1, -1, 21, 22,
- 115, 116, 117, 118, 119, -1, -1, 122, 123, 124,
- 125, -1, 127, 128, 129, 130, 131, -1, 133, 134,
- -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
- 145, 21, 22, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 145, -1, 180, -1, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 202, 203, -1, -1, 206, -1,
-1, -1, -1, -1, -1, 180, -1, 182, 183, 184,
185, 186, 187, 188, 189, 190, 191, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 202, 203, -1,
- -1, 206, 115, 116, 117, 118, 119, -1, -1, 122,
+ -1, 206, 115, 116, 117, 118, 119, 21, 22, 122,
123, 124, 125, -1, 127, 128, 129, 130, 131, -1,
133, 134, -1, -1, -1, -1, 139, 140, 141, -1,
- -1, -1, 145, 21, 22, 115, 116, 117, 118, 119,
- -1, -1, 122, 123, 124, 125, -1, 127, 128, 129,
- 130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
- 140, 141, -1, -1, -1, 145, -1, 180, -1, 182,
+ -1, -1, 145, -1, -1, -1, -1, -1, 21, 22,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 180, -1, 182,
183, 184, 185, 186, 187, 188, 189, 190, 191, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 202,
203, -1, -1, 206, -1, -1, -1, -1, -1, -1,
- 180, -1, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 202, 203, -1, -1, 206, 115, 116, 117,
- 118, 119, 21, 22, 122, 123, 124, 125, -1, 127,
- 128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
- -1, 139, 140, 141, -1, -1, -1, 145, -1, -1,
- -1, -1, -1, 21, 22, -1, -1, -1, -1, -1,
+ -1, 115, 116, 117, 118, 119, -1, -1, 122, 123,
+ 124, 125, -1, 127, 128, 129, 130, 131, -1, 133,
+ 134, -1, -1, -1, -1, 139, 140, 141, -1, -1,
+ -1, 145, 115, 116, 117, 118, 119, 21, 22, 122,
+ 123, 124, 125, -1, 127, 128, 129, 130, 131, -1,
+ 133, 134, -1, -1, -1, -1, 139, 140, 141, -1,
+ -1, -1, 145, -1, -1, -1, 180, -1, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 202, 203,
+ -1, -1, 206, -1, -1, -1, -1, 180, -1, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 202,
+ 203, -1, -1, 206, -1, -1, -1, -1, -1, 21,
+ 22, 115, 116, 117, 118, 119, -1, -1, 122, 123,
+ 124, 125, -1, 127, 128, 129, 130, 131, -1, 133,
+ 134, -1, -1, -1, -1, 139, 140, 141, -1, -1,
+ -1, 145, 21, 22, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 180, -1, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 202, 203, -1, -1, 206, -1,
- -1, -1, -1, -1, -1, -1, 115, 116, 117, 118,
- 119, -1, -1, 122, 123, 124, 125, -1, 127, 128,
- 129, 130, 131, -1, 133, 134, -1, -1, -1, -1,
- 139, 140, 141, -1, -1, -1, 145, 115, 116, 117,
- 118, 119, 21, 22, 122, 123, 124, 125, -1, 127,
- 128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
- -1, 139, 140, 141, -1, -1, -1, 145, -1, -1,
- -1, 180, -1, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 202, 203, -1, -1, 206, -1, -1,
- -1, -1, 180, -1, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 202, 203, -1, -1, 206, -1,
- -1, -1, -1, -1, 21, 22, 115, 116, 117, 118,
+ -1, -1, -1, -1, -1, -1, 180, -1, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 202, 203,
+ -1, -1, 206, 115, 116, 117, 118, 119, -1, -1,
+ 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
+ -1, 133, 134, -1, -1, -1, -1, 139, 140, 141,
+ -1, -1, -1, 145, 21, 22, 115, 116, 117, 118,
119, -1, -1, 122, 123, 124, 125, -1, 127, 128,
129, 130, 131, -1, 133, 134, -1, -1, -1, -1,
- 139, 140, 141, -1, -1, -1, 145, 21, 22, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 139, 140, 141, -1, -1, -1, 145, -1, 180, -1,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 202, 203, -1, -1, 206, -1, -1, -1, -1, -1,
-1, 180, -1, 182, 183, 184, 185, 186, 187, 188,
189, 190, 191, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 202, 203, -1, -1, 206, 115, 116,
- 117, 118, 119, -1, -1, 122, 123, 124, 125, -1,
+ 117, 118, 119, 21, 22, 122, 123, 124, 125, -1,
127, 128, 129, 130, 131, -1, 133, 134, -1, -1,
- -1, -1, 139, 140, 141, -1, -1, -1, 145, 21,
- 22, 115, 116, 117, 118, 119, -1, -1, 122, 123,
- 124, 125, -1, 127, 128, 129, 130, 131, -1, 133,
- 134, -1, -1, -1, -1, 139, 140, 141, -1, -1,
- -1, 145, -1, 180, -1, 182, 183, 184, 185, 186,
+ -1, -1, 139, 140, 141, -1, -1, -1, 145, -1,
+ -1, -1, -1, -1, 21, 22, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 180, -1, 182, 183, 184, 185, 186,
187, 188, 189, 190, 191, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 202, 203, -1, -1, 206,
- -1, -1, -1, -1, -1, -1, 180, -1, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 202, 203,
- -1, -1, 206, 115, 116, 117, 118, 119, 21, 22,
- 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
- -1, 133, 134, -1, -1, -1, -1, 139, 140, 141,
- -1, -1, -1, 145, -1, -1, -1, -1, -1, 21,
- 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 115, 116, 117,
+ 118, 119, -1, -1, 122, 123, 124, 125, -1, 127,
+ 128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
+ -1, 139, 140, 141, -1, -1, -1, 145, 115, 116,
+ 117, 118, 119, 21, 22, 122, 123, 124, 125, -1,
+ 127, 128, 129, 130, 131, -1, 133, 134, -1, -1,
+ -1, -1, 139, 140, 141, -1, -1, -1, 145, -1,
+ -1, -1, 180, -1, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 202, 203, -1, -1, 206, -1,
+ -1, -1, -1, 180, -1, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 202, 203, -1, -1, 206,
+ -1, -1, -1, -1, -1, 21, 22, 115, 116, 117,
+ 118, 119, -1, -1, 122, 123, 124, 125, -1, 127,
+ 128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
+ -1, 139, 140, 141, -1, -1, -1, 145, 21, 22,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 180, -1,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 202, 203, -1, -1, 206, -1, -1, -1, -1, -1,
- -1, -1, 115, 116, 117, 118, 119, -1, -1, 122,
- 123, 124, 125, -1, 127, 128, 129, 130, 131, -1,
- 133, 134, -1, -1, -1, -1, 139, 140, 141, -1,
- -1, -1, 145, 115, 116, 117, 118, 119, 21, 22,
- 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
- -1, 133, 134, -1, -1, -1, -1, 139, 140, 141,
- -1, -1, -1, 145, -1, -1, -1, 180, -1, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 202,
- 203, -1, -1, 206, -1, -1, -1, -1, 180, -1,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 202, 203, -1, -1, 206, -1, -1, -1, -1, -1,
+ -1, -1, 180, -1, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 202, 203, -1, -1, 206, 115,
+ 116, 117, 118, 119, -1, -1, 122, 123, 124, 125,
+ -1, 127, 128, 129, 130, 131, -1, 133, 134, -1,
+ -1, -1, -1, 139, 140, 141, -1, -1, -1, 145,
21, 22, 115, 116, 117, 118, 119, -1, -1, 122,
123, 124, 125, -1, 127, 128, 129, 130, 131, -1,
133, 134, -1, -1, -1, -1, 139, 140, 141, -1,
- -1, -1, 145, 21, 22, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 180, -1, 182,
+ -1, -1, 145, -1, 180, -1, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 202, 203, -1, -1,
+ 206, -1, -1, -1, -1, -1, -1, 180, -1, 182,
183, 184, 185, 186, 187, 188, 189, 190, 191, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 202,
- 203, -1, -1, 206, 115, 116, 117, 118, 119, -1,
- -1, 122, 123, 124, 125, -1, 127, 128, 129, 130,
+ 203, -1, -1, 206, 115, 116, 117, 118, 119, 21,
+ 22, 122, 123, 124, 125, -1, 127, 128, 129, 130,
131, -1, 133, 134, -1, -1, -1, -1, 139, 140,
- 141, -1, -1, -1, 145, 21, 22, 115, 116, 117,
- 118, 119, -1, -1, 122, 123, 124, 125, -1, 127,
- 128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
- -1, 139, 140, 141, -1, -1, -1, 145, -1, 180,
+ 141, -1, -1, -1, 145, -1, -1, -1, -1, -1,
+ 21, 22, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 180,
-1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
191, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 202, 203, -1, -1, 206, -1, -1, -1, -1,
- -1, -1, 180, -1, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 202, 203, -1, -1, 206, 115,
- 116, 117, 118, 119, 21, 22, 122, 123, 124, 125,
- -1, 127, 128, 129, 130, 131, -1, 133, 134, -1,
- -1, -1, -1, 139, 140, 141, -1, -1, -1, 145,
- -1, -1, -1, -1, -1, 21, 22, -1, -1, -1,
+ -1, -1, -1, 115, 116, 117, 118, 119, -1, -1,
+ 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
+ -1, 133, 134, -1, -1, -1, -1, 139, 140, 141,
+ -1, -1, -1, 145, 115, 116, 117, 118, 119, 21,
+ 22, 122, 123, 124, 125, -1, 127, 128, 129, 130,
+ 131, -1, 133, 134, -1, -1, -1, -1, 139, 140,
+ 141, -1, -1, -1, 145, -1, -1, -1, 180, -1,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 202, 203, -1, -1, 206, -1, -1, -1, -1, 180,
+ -1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 202, 203, -1, -1, 206, -1, -1, -1, -1,
+ -1, 21, 22, 115, 116, 117, 118, 119, -1, -1,
+ 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
+ -1, 133, 134, -1, -1, -1, -1, 139, 140, 141,
+ -1, -1, -1, 145, 21, 22, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 180, -1, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 202, 203, -1, -1,
- 206, -1, -1, -1, -1, -1, -1, -1, 115, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, 180, -1,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 202, 203, -1, -1, 206, 115, 116, 117, 118, 119,
+ -1, -1, 122, 123, 124, 125, -1, 127, 128, 129,
+ 130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
+ 140, 141, -1, -1, -1, 145, 21, 22, 115, 116,
117, 118, 119, -1, -1, 122, 123, 124, 125, -1,
127, 128, 129, 130, 131, -1, 133, 134, -1, -1,
- -1, -1, 139, 140, 141, -1, -1, -1, 145, 115,
- 116, 117, 118, 119, 21, 22, 122, 123, 124, 125,
- -1, 127, 128, 129, 130, 131, -1, 133, 134, -1,
- -1, -1, -1, 139, 140, 141, -1, -1, -1, 145,
+ -1, -1, 139, 140, 141, -1, -1, -1, 145, -1,
+ 180, -1, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 202, 203, -1, -1, 206, -1, -1, -1,
-1, -1, -1, 180, -1, 182, 183, 184, 185, 186,
187, 188, 189, 190, 191, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 202, 203, -1, -1, 206,
- -1, -1, -1, -1, 180, -1, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 202, 203, -1, -1,
- 206, -1, -1, -1, -1, -1, 21, 22, 115, 116,
- 117, 118, 119, -1, -1, 122, 123, 124, 125, -1,
- 127, 128, 129, 130, 131, -1, 133, 134, -1, -1,
- -1, -1, 139, 140, 141, -1, -1, -1, 145, 21,
- 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 115, 116, 117, 118, 119, 21, 22, 122, 123, 124,
+ 125, -1, 127, 128, 129, 130, 131, -1, 133, 134,
+ -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
+ 145, -1, -1, -1, -1, -1, 21, 22, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 180, -1, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 202, 203, -1, -1, 206,
- 115, 116, 117, 118, 119, -1, -1, 122, 123, 124,
+ -1, -1, -1, -1, -1, 180, -1, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 202, 203, -1,
+ -1, 206, -1, -1, -1, -1, -1, -1, -1, 115,
+ 116, 117, 118, 119, -1, -1, 122, 123, 124, 125,
+ -1, 127, 128, 129, 130, 131, -1, 133, 134, -1,
+ -1, -1, -1, 139, 140, 141, -1, -1, -1, 145,
+ 115, 116, 117, 118, 119, 21, 22, 122, 123, 124,
125, -1, 127, 128, 129, 130, 131, -1, 133, 134,
-1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
- 145, 21, 22, 115, 116, 117, 118, 119, -1, -1,
- 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
- -1, 133, 134, -1, -1, -1, -1, 139, 140, 141,
- -1, -1, -1, 145, -1, 180, -1, 182, 183, 184,
+ 145, -1, -1, -1, 180, -1, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 202, 203, -1, -1,
+ 206, -1, -1, -1, -1, 180, -1, 182, 183, 184,
185, 186, 187, 188, 189, 190, 191, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 202, 203, -1,
- -1, 206, -1, -1, -1, -1, -1, -1, 180, -1,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 202, 203, -1, -1, 206, 115, 116, 117, 118, 119,
- 21, 22, 122, 123, 124, 125, -1, 127, 128, 129,
- 130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
- 140, 141, -1, -1, -1, 145, -1, -1, -1, -1,
- -1, 21, 22, -1, -1, -1, -1, -1, -1, -1,
+ -1, 206, -1, -1, -1, -1, -1, 21, 22, 115,
+ 116, 117, 118, 119, -1, -1, 122, 123, 124, 125,
+ -1, 127, 128, 129, 130, 131, -1, 133, 134, -1,
+ -1, -1, -1, 139, 140, 141, -1, -1, -1, 145,
+ 21, 22, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 180, -1, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 202, 203, -1, -1, 206, -1, -1, -1,
- -1, -1, -1, -1, 115, 116, 117, 118, 119, -1,
+ -1, -1, -1, -1, 180, -1, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 202, 203, -1, -1,
+ 206, 115, 116, 117, 118, 119, -1, -1, 122, 123,
+ 124, 125, -1, 127, 128, 129, 130, 131, -1, 133,
+ 134, -1, -1, -1, -1, 139, 140, 141, -1, -1,
+ -1, 145, 21, 22, 115, 116, 117, 118, 119, -1,
-1, 122, 123, 124, 125, -1, 127, 128, 129, 130,
131, -1, 133, 134, -1, -1, -1, -1, 139, 140,
- 141, 21, 22, -1, 145, 115, 116, 117, 118, 119,
- -1, -1, 122, 123, 124, 125, -1, 127, 128, 129,
- 130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
- 140, 141, 21, 22, -1, 145, -1, -1, -1, 180,
+ 141, -1, -1, -1, 145, -1, 180, -1, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 202, 203,
+ -1, -1, 206, -1, -1, -1, -1, -1, -1, 180,
-1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
191, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 202, 203, 204, -1, -1, -1, -1, -1, -1,
- 180, -1, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 202, 203, 204, 115, 116, 117, 118, 119,
+ -1, 202, 203, -1, -1, 206, 115, 116, 117, 118,
+ 119, 21, 22, 122, 123, 124, 125, -1, 127, 128,
+ 129, 130, 131, -1, 133, 134, -1, -1, -1, -1,
+ 139, 140, 141, -1, -1, -1, 145, -1, -1, -1,
+ -1, -1, 21, 22, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 180, -1, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 202, 203, -1, -1, 206, -1, -1,
+ -1, -1, -1, -1, -1, 115, 116, 117, 118, 119,
-1, -1, 122, 123, 124, 125, -1, 127, 128, 129,
130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
140, 141, 21, 22, -1, 145, 115, 116, 117, 118,
@@ -3680,164 +3681,189 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, 202, 203, 204, 115, 116, 117, 118,
119, -1, -1, 122, 123, 124, 125, -1, 127, 128,
129, 130, 131, -1, 133, 134, -1, -1, -1, -1,
- 139, 140, 141, -1, -1, -1, 145, 115, 116, 117,
- 118, 119, 21, 22, 122, 123, 124, 125, -1, 127,
+ 139, 140, 141, 21, 22, -1, 145, 115, 116, 117,
+ 118, 119, -1, -1, 122, 123, 124, 125, -1, 127,
128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
- -1, 139, 140, 141, -1, -1, -1, 145, -1, -1,
+ -1, 139, 140, 141, 21, 22, -1, 145, -1, -1,
-1, 180, -1, 182, 183, 184, 185, 186, 187, 188,
189, 190, 191, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 202, 203, 204, -1, -1, -1, -1,
-1, -1, 180, -1, 182, 183, 184, 185, 186, 187,
188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 202, 203, 204, -1, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 21, 22,
- 139, 140, 141, 142, 143, 144, 145, -1, -1, -1,
- -1, -1, -1, -1, -1, 38, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 21,
- 22, -1, -1, 172, -1, -1, -1, -1, -1, -1,
- 179, 180, -1, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 202, 203, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, -1, -1, 127, 128, 129, -1, -1, 132,
- 133, 134, 135, 136, -1, -1, 139, 140, 141, 142,
- 143, 144, 145, 115, 116, 117, 118, 119, 21, 22,
- 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
- -1, 133, 134, -1, -1, 137, -1, 139, 140, 141,
- -1, -1, -1, 145, -1, -1, -1, 180, -1, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, -1,
- -1, 194, 195, -1, -1, -1, -1, -1, -1, 202,
- 203, -1, -1, -1, -1, -1, -1, -1, 180, -1,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ -1, -1, -1, -1, 202, 203, 204, 115, 116, 117,
+ 118, 119, -1, -1, 122, 123, 124, 125, -1, 127,
+ 128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
+ -1, 139, 140, 141, -1, -1, -1, 145, 115, 116,
+ 117, 118, 119, 21, 22, 122, 123, 124, 125, -1,
+ 127, 128, 129, 130, 131, -1, 133, 134, -1, -1,
+ -1, -1, 139, 140, 141, -1, -1, -1, 145, -1,
+ -1, -1, 180, -1, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 202, 203, 204, -1, -1, -1,
+ -1, -1, -1, 180, -1, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 202, 203, 204, -1, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 21,
+ 22, 139, 140, 141, 142, 143, 144, 145, -1, -1,
+ -1, -1, -1, -1, -1, -1, 38, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 202, 203, -1, -1, -1, -1, -1, 21, 22, -1,
- -1, -1, 115, 116, 117, 118, 119, -1, -1, 122,
- 123, 124, 125, -1, 127, 128, 129, 130, 131, -1,
- 133, 134, -1, -1, -1, -1, 139, 140, 141, 21,
- 22, -1, 145, -1, -1, -1, -1, -1, -1, -1,
+ 21, 22, -1, -1, 172, -1, -1, -1, -1, -1,
+ -1, 179, 180, -1, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 202, 203, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 172,
- -1, -1, -1, -1, -1, -1, -1, 180, -1, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 202,
- 203, 115, 116, 117, 118, 119, -1, -1, 122, 123,
- 124, 125, -1, 127, 128, 129, 130, 131, -1, 133,
- 134, 21, 22, -1, -1, 139, 140, 141, -1, -1,
- -1, 145, -1, 115, 116, 117, 118, 119, -1, -1,
- 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
- -1, 133, 134, 21, 22, -1, -1, 139, 140, 141,
- -1, -1, -1, 145, -1, -1, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 202, 203,
- 172, -1, -1, -1, -1, -1, -1, -1, 180, -1,
+ -1, -1, -1, -1, -1, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, -1, -1, 127, 128, 129, -1, -1,
+ 132, 133, 134, 135, 136, -1, -1, 139, 140, 141,
+ 142, 143, 144, 145, 115, 116, 117, 118, 119, 21,
+ 22, 122, 123, 124, 125, -1, 127, 128, 129, 130,
+ 131, -1, 133, 134, -1, -1, 137, -1, 139, 140,
+ 141, -1, -1, -1, 145, -1, -1, -1, 180, -1,
182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- -1, -1, -1, -1, -1, 115, 116, 117, 118, 119,
- 202, 203, 122, 123, 124, 125, -1, 127, 128, 129,
- 130, 131, -1, 133, 134, 21, 22, -1, -1, 139,
- 140, 141, -1, -1, -1, 145, -1, 115, 116, 117,
- 118, 119, -1, -1, 122, 123, 124, 125, -1, 127,
- 128, 129, 130, 131, -1, 133, 134, -1, 168, 21,
- 22, 139, 140, 141, -1, -1, -1, 145, -1, -1,
- 180, -1, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 202, 203, 172, -1, -1, -1, -1, -1,
- -1, -1, 180, -1, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, -1, -1, -1, -1, -1, 115,
- 116, 117, 118, 119, 202, 203, 122, 123, 124, 125,
- -1, 127, 128, 129, 130, 131, -1, 133, 134, -1,
- -1, 21, 22, 139, 140, 141, -1, -1, -1, 145,
+ -1, -1, 194, 195, -1, -1, -1, -1, -1, -1,
+ 202, 203, -1, -1, -1, -1, -1, -1, -1, 180,
+ -1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 202, 203, -1, -1, -1, -1, -1, 21, 22,
-1, -1, -1, 115, 116, 117, 118, 119, -1, -1,
122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
- -1, 133, 134, -1, -1, -1, 172, 139, 140, 141,
- -1, -1, -1, 145, 180, -1, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 202, 203, -1, -1,
+ -1, 133, 134, -1, -1, -1, -1, 139, 140, 141,
+ 21, 22, -1, 145, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
172, -1, -1, -1, -1, -1, -1, -1, 180, -1,
182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 21, 22, -1, -1, -1, 115, 116, 117, 118, 119,
- 202, 203, 122, 123, 124, 125, -1, 127, 128, 129,
- 130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
- 140, 141, -1, -1, -1, 145, 21, 22, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 172, -1, -1, -1, -1, -1, -1, -1,
- 180, -1, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 202, 203, 115, 116, 117, 118, 119, -1,
+ 202, 203, 115, 116, 117, 118, 119, -1, -1, 122,
+ 123, 124, 125, -1, 127, 128, 129, 130, 131, -1,
+ 133, 134, 21, 22, -1, -1, 139, 140, 141, -1,
+ -1, -1, 145, -1, 115, 116, 117, 118, 119, -1,
-1, 122, 123, 124, 125, -1, 127, 128, 129, 130,
- 131, -1, 133, 134, -1, -1, -1, -1, 139, 140,
- 141, -1, -1, -1, 145, 21, 22, -1, -1, -1,
- 115, 116, 117, 118, 119, -1, -1, 122, 123, 124,
+ 131, -1, 133, 134, 21, 22, -1, -1, 139, 140,
+ 141, -1, -1, -1, 145, -1, -1, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 202,
+ 203, 172, -1, -1, -1, -1, -1, -1, -1, 180,
+ -1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, -1, -1, -1, -1, -1, 115, 116, 117, 118,
+ 119, 202, 203, 122, 123, 124, 125, -1, 127, 128,
+ 129, 130, 131, -1, 133, 134, 21, 22, -1, -1,
+ 139, 140, 141, -1, -1, -1, 145, -1, 115, 116,
+ 117, 118, 119, -1, -1, 122, 123, 124, 125, -1,
+ 127, 128, 129, 130, 131, -1, 133, 134, -1, 168,
+ 21, 22, 139, 140, 141, -1, -1, -1, 145, -1,
+ -1, 180, -1, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 202, 203, 172, -1, -1, -1, -1,
+ -1, -1, -1, 180, -1, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, -1, -1, -1, -1, -1,
+ 115, 116, 117, 118, 119, 202, 203, 122, 123, 124,
125, -1, 127, 128, 129, 130, 131, -1, 133, 134,
- -1, 172, -1, -1, 139, 140, 141, 21, 22, 180,
- 145, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 202, 203, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 180, -1, 182, 183, 184,
+ -1, -1, 21, 22, 139, 140, 141, -1, -1, -1,
+ 145, -1, -1, -1, 115, 116, 117, 118, 119, -1,
+ -1, 122, 123, 124, 125, -1, 127, 128, 129, 130,
+ 131, -1, 133, 134, -1, -1, -1, 172, 139, 140,
+ 141, -1, -1, -1, 145, 180, -1, 182, 183, 184,
185, 186, 187, 188, 189, 190, 191, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 202, 203, 115,
- 116, 117, 118, 119, -1, -1, 122, 123, 124, 125,
- -1, 127, 128, 129, 130, 131, -1, 133, 134, 21,
- 22, -1, -1, 139, 140, 141, -1, -1, -1, 145,
+ -1, -1, -1, -1, -1, -1, -1, 202, 203, -1,
+ -1, 172, -1, -1, -1, -1, -1, -1, -1, 180,
+ -1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 21, 22, -1, -1, -1, 115, 116, 117, 118,
+ 119, 202, 203, 122, 123, 124, 125, -1, 127, 128,
+ 129, 130, 131, -1, 133, 134, -1, -1, -1, -1,
+ 139, 140, 141, -1, -1, -1, 145, 21, 22, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 172, -1, -1, -1, -1, -1, -1,
+ -1, 180, -1, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 202, 203, 115, 116, 117, 118, 119,
+ -1, -1, 122, 123, 124, 125, -1, 127, 128, 129,
+ 130, 131, -1, 133, 134, -1, -1, -1, -1, 139,
+ 140, 141, -1, -1, -1, 145, 21, 22, -1, -1,
-1, 115, 116, 117, 118, 119, -1, -1, 122, 123,
124, 125, -1, 127, 128, 129, 130, 131, -1, 133,
- 134, 21, 22, -1, -1, 139, 140, 141, -1, -1,
- -1, -1, -1, -1, 180, -1, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 202, 203, -1, -1,
+ 134, -1, 172, -1, -1, 139, 140, 141, 21, 22,
+ 180, 145, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 202, 203, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 180, -1, 182, 183,
184, 185, 186, 187, 188, 189, 190, 191, -1, -1,
- -1, -1, -1, 115, 116, 117, 118, 119, 202, 203,
- 122, 123, 124, 125, -1, 127, 128, 129, 130, 131,
- -1, 133, 134, 21, 22, -1, -1, 139, -1, 141,
- -1, -1, -1, -1, -1, 115, 116, 117, 118, 119,
- -1, -1, 122, 123, 124, 125, -1, 127, 128, 129,
- 130, 131, -1, 133, 134, 21, 22, -1, -1, 139,
+ -1, -1, -1, -1, -1, -1, -1, -1, 202, 203,
+ 115, 116, 117, 118, 119, -1, -1, 122, 123, 124,
+ 125, -1, 127, 128, 129, 130, 131, -1, 133, 134,
+ 21, 22, -1, -1, 139, 140, 141, -1, -1, -1,
+ 145, -1, 115, 116, 117, 118, 119, -1, -1, 122,
+ 123, 124, 125, -1, 127, 128, 129, 130, 131, -1,
+ 133, 134, 21, 22, -1, -1, 139, 140, 141, -1,
+ -1, -1, -1, -1, -1, 180, -1, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 202, 203, -1,
+ -1, -1, -1, -1, -1, -1, -1, 180, -1, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, -1,
+ -1, -1, -1, -1, 115, 116, 117, 118, 119, 202,
+ 203, 122, 123, 124, 125, -1, 127, 128, 129, 130,
+ 131, -1, 133, 134, 21, 22, -1, -1, 139, -1,
+ 141, -1, -1, -1, -1, -1, 115, 116, 117, 118,
+ 119, -1, -1, 122, 123, 124, 125, -1, 127, 128,
+ 129, 130, 131, -1, 133, 134, 21, 22, -1, -1,
+ 139, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 202, 203, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, -1, -1, -1, -1, -1, 115, 116,
+ 117, 118, 119, 202, 203, 122, 123, 124, 125, -1,
+ 127, 128, 129, 130, 131, -1, 133, 134, 21, 22,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 115, 116, 117, 118, 119, -1, -1, 122, 123, 124,
+ 125, -1, 127, 128, 129, 130, 131, -1, 133, 134,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 202, 203, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, -1, -1, -1, -1, -1, 115, 116, 117,
- 118, 119, 202, 203, 122, 123, 124, 125, -1, 127,
- 128, 129, 130, 131, -1, 133, 134, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 115,
- 116, 117, 118, 119, -1, -1, 122, 123, 124, 125,
- -1, 127, 128, 129, 130, 131, -1, 133, 134, -1,
+ -1, -1, -1, -1, -1, -1, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, -1, -1, -1, -1, -1,
+ 19, -1, -1, -1, -1, 202, 203, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 19, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 202, 203, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 185,
- 186, 187, 188, 189, 190, 191, 19, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 202, 203, -1, -1,
- -1, -1, -1, -1, -1, -1, 71, 72, 73, -1,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, -1, 93, 94,
- 95, -1, -1, 98, 99, 100, 101, -1, 71, 72,
- 73, -1, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, -1,
- 93, 94, 95, -1, -1, 98, 99, 100, 101, -1,
- -1, -1, -1, -1, 19, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 153, -1,
- -1, -1, -1, -1, 71, 72, 73, 162, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, -1, 93, 94, 95, -1,
- 153, 98, 99, 100, 101, -1, 71, 72, 73, 162,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, -1, 93, 94,
- 95, 128, 129, 98, 99, 100, 101, -1, -1, -1,
+ 185, 186, 187, 188, 189, 190, 191, -1, -1, -1,
+ -1, -1, 115, 116, 117, 118, 119, 202, 203, 122,
+ -1, -1, 125, -1, 127, 128, 129, 130, 131, -1,
+ 133, 134, 71, 72, 73, -1, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, -1, 93, 94, 95, -1, -1, 98,
+ 99, 100, 101, -1, -1, -1, -1, -1, 19, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 185, 186, 187, 188, 189, 190, 191, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 202,
+ 203, 19, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 153, -1, -1, -1, -1, -1,
+ 71, 72, 73, 162, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, -1, 93, 94, 95, -1, -1, 98, 99, 100,
+ 101, -1, -1, 71, 72, 73, -1, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, -1, 93, 94, 95, -1, -1,
+ 98, 99, 100, 101, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 153, -1, -1, -1, -1, -1, -1, -1,
+ -1, 162, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 153, -1, -1, -1,
- -1, -1, -1, -1, -1, 162, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 153, -1, -1, -1, -1,
+ -1, 71, 72, 73, 162, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, -1, 93, 94, 95, -1, -1, 98, 99,
+ 100, 101, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 153, -1,
- -1, -1, -1, -1, -1, -1, -1, 162, -1, -1,
- -1, -1, -1, -1, -1, 202, 203
+ -1, -1, -1, -1, -1, -1, -1, -1, 128, 129,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 153, -1, -1, -1, -1, -1, -1,
+ -1, -1, 162, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 202, 203
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
@@ -3851,143 +3877,143 @@ static const yytype_int16 yystos[] =
230, 162, 191, 225, 226, 57, 63, 360, 361, 162,
207, 214, 360, 360, 360, 138, 162, 270, 34, 63,
131, 195, 205, 250, 251, 252, 253, 270, 172, 172,
- 5, 6, 8, 36, 373, 62, 354, 179, 178, 181,
- 178, 225, 22, 57, 190, 202, 227, 162, 172, 354,
- 162, 162, 162, 162, 138, 222, 252, 252, 252, 205,
- 139, 140, 141, 178, 204, 57, 63, 259, 261, 57,
- 63, 364, 57, 63, 374, 57, 63, 355, 15, 16,
- 155, 160, 162, 163, 205, 217, 247, 155, 230, 162,
- 162, 162, 362, 57, 63, 213, 431, 423, 427, 162,
- 164, 220, 206, 248, 252, 252, 252, 252, 262, 162,
- 365, 377, 357, 164, 165, 166, 216, 15, 16, 155,
- 160, 162, 217, 244, 245, 227, 179, 170, 170, 170,
- 164, 206, 35, 71, 73, 75, 76, 77, 78, 79,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 94, 95, 98, 99, 100, 101, 117, 118,
- 162, 257, 260, 181, 366, 106, 371, 372, 208, 249,
- 328, 164, 165, 166, 178, 206, 19, 25, 31, 41,
- 49, 64, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 151, 207, 270, 380, 382,
- 383, 386, 392, 393, 421, 432, 424, 428, 21, 22,
- 38, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 127,
- 128, 129, 132, 133, 134, 135, 136, 139, 140, 141,
- 142, 143, 144, 145, 180, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 194, 195, 202, 203, 35,
- 35, 205, 255, 170, 263, 75, 79, 93, 94, 98,
- 99, 100, 101, 381, 170, 162, 378, 247, 208, 162,
- 351, 353, 244, 185, 185, 185, 205, 185, 185, 205,
- 185, 185, 185, 185, 185, 185, 205, 270, 33, 60,
- 61, 123, 127, 180, 184, 187, 203, 209, 391, 182,
- 162, 385, 342, 345, 162, 162, 162, 204, 22, 162,
- 204, 150, 206, 328, 338, 339, 181, 256, 266, 368,
- 181, 370, 170, 375, 247, 178, 181, 184, 349, 394,
- 399, 401, 5, 6, 15, 16, 17, 18, 19, 25,
- 27, 31, 39, 45, 48, 51, 55, 65, 68, 69,
- 80, 102, 103, 104, 117, 118, 146, 147, 148, 149,
- 150, 152, 154, 155, 156, 157, 158, 159, 160, 161,
- 163, 170, 187, 188, 189, 194, 195, 203, 205, 207,
- 208, 219, 221, 264, 270, 275, 287, 294, 297, 300,
- 304, 306, 308, 309, 311, 316, 319, 320, 327, 380,
- 434, 442, 452, 455, 467, 470, 403, 397, 162, 387,
- 405, 407, 409, 411, 413, 415, 417, 419, 320, 185,
- 205, 33, 184, 33, 184, 203, 209, 204, 320, 203,
- 209, 392, 178, 469, 162, 172, 178, 340, 389, 421,
- 425, 162, 343, 389, 429, 162, 132, 205, 7, 50,
- 281, 172, 206, 421, 1, 9, 10, 11, 13, 26,
- 28, 29, 38, 42, 44, 52, 54, 58, 59, 65,
- 105, 171, 172, 231, 232, 235, 237, 238, 239, 240,
- 241, 242, 243, 265, 271, 276, 277, 278, 279, 280,
- 282, 286, 307, 320, 162, 358, 359, 270, 334, 162,
- 392, 126, 132, 179, 348, 421, 421, 390, 421, 185,
- 185, 185, 272, 382, 434, 270, 185, 5, 102, 103,
- 185, 205, 185, 205, 205, 185, 185, 205, 185, 205,
- 185, 205, 185, 185, 205, 185, 185, 320, 320, 205,
- 205, 205, 205, 205, 205, 218, 13, 320, 451, 466,
- 320, 320, 320, 320, 320, 13, 49, 298, 320, 298,
- 208, 205, 254, 170, 208, 300, 305, 21, 22, 115,
- 116, 117, 118, 119, 122, 123, 124, 125, 127, 128,
- 129, 130, 131, 133, 134, 139, 140, 141, 145, 180,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 202, 203, 206, 205, 421, 421, 206, 162, 384, 421,
- 255, 421, 255, 421, 255, 340, 341, 343, 344, 206,
- 396, 267, 298, 204, 204, 204, 320, 162, 433, 181,
- 389, 171, 181, 389, 171, 320, 147, 162, 347, 379,
- 338, 205, 205, 126, 320, 263, 61, 320, 205, 162,
- 172, 155, 58, 320, 263, 126, 320, 37, 172, 172,
- 205, 10, 172, 172, 172, 172, 172, 172, 66, 283,
- 172, 107, 108, 109, 110, 111, 112, 113, 114, 120,
- 121, 126, 132, 135, 136, 142, 143, 144, 179, 179,
- 178, 469, 171, 254, 335, 172, 348, 320, 186, 186,
- 186, 389, 443, 445, 273, 205, 185, 205, 295, 185,
- 185, 185, 462, 298, 392, 466, 320, 288, 290, 320,
- 292, 320, 464, 298, 449, 453, 298, 447, 392, 320,
- 320, 320, 320, 320, 320, 166, 167, 216, 379, 137,
- 178, 469, 379, 13, 178, 469, 469, 147, 152, 185,
- 270, 310, 70, 153, 162, 203, 206, 298, 435, 437,
- 4, 303, 266, 208, 254, 19, 153, 162, 380, 19,
- 153, 162, 380, 320, 320, 320, 320, 320, 320, 162,
- 320, 153, 162, 320, 320, 320, 380, 320, 320, 320,
- 320, 320, 320, 22, 320, 320, 320, 320, 320, 320,
- 320, 320, 320, 320, 320, 128, 129, 153, 162, 202,
- 203, 317, 380, 320, 206, 298, 186, 186, 172, 186,
- 186, 256, 186, 256, 186, 256, 186, 389, 186, 389,
- 269, 421, 206, 469, 204, 171, 421, 421, 206, 205,
- 43, 126, 178, 179, 181, 184, 346, 320, 379, 320,
- 14, 320, 320, 179, 181, 155, 320, 170, 320, 205,
- 147, 162, 205, 285, 350, 352, 320, 320, 320, 320,
+ 172, 5, 6, 8, 36, 373, 62, 354, 179, 178,
+ 181, 178, 225, 22, 57, 190, 202, 227, 162, 172,
+ 354, 162, 162, 162, 162, 138, 222, 252, 252, 252,
+ 205, 139, 140, 141, 178, 204, 57, 63, 259, 261,
+ 57, 63, 364, 57, 63, 374, 57, 63, 355, 15,
+ 16, 155, 160, 162, 163, 205, 217, 247, 155, 230,
+ 162, 162, 162, 362, 57, 63, 213, 431, 423, 427,
+ 162, 164, 220, 206, 248, 252, 252, 252, 252, 262,
+ 162, 365, 377, 357, 164, 165, 166, 216, 15, 16,
+ 155, 160, 162, 217, 244, 245, 227, 179, 170, 170,
+ 170, 164, 206, 35, 71, 73, 75, 76, 77, 78,
+ 79, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 93, 94, 95, 98, 99, 100, 101, 117,
+ 118, 162, 257, 260, 181, 366, 106, 371, 372, 208,
+ 249, 328, 164, 165, 166, 178, 206, 19, 25, 31,
+ 41, 49, 64, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 151, 207, 270, 380,
+ 382, 383, 386, 392, 393, 421, 432, 424, 428, 21,
+ 22, 38, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 127, 128, 129, 132, 133, 134, 135, 136, 139, 140,
+ 141, 142, 143, 144, 145, 180, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 194, 195, 202, 203,
+ 35, 35, 205, 255, 170, 263, 75, 79, 93, 94,
+ 98, 99, 100, 101, 381, 170, 162, 378, 247, 208,
+ 162, 351, 353, 244, 185, 185, 185, 205, 185, 185,
+ 205, 185, 185, 185, 185, 185, 185, 205, 270, 33,
+ 60, 61, 123, 127, 180, 184, 187, 203, 209, 391,
+ 182, 162, 385, 342, 345, 162, 162, 162, 204, 22,
+ 162, 204, 150, 206, 328, 338, 339, 181, 256, 266,
+ 368, 181, 370, 170, 375, 247, 178, 181, 184, 349,
+ 394, 399, 401, 5, 6, 15, 16, 17, 18, 19,
+ 25, 27, 31, 39, 45, 48, 51, 55, 65, 68,
+ 69, 80, 102, 103, 104, 117, 118, 146, 147, 148,
+ 149, 150, 152, 154, 155, 156, 157, 158, 159, 160,
+ 161, 163, 170, 187, 188, 189, 194, 195, 203, 205,
+ 207, 208, 219, 221, 264, 270, 275, 287, 294, 297,
+ 300, 304, 306, 308, 309, 311, 316, 319, 320, 327,
+ 380, 434, 442, 452, 455, 467, 470, 403, 397, 162,
+ 387, 405, 407, 409, 411, 413, 415, 417, 419, 320,
+ 185, 205, 33, 184, 33, 184, 203, 209, 204, 320,
+ 203, 209, 392, 178, 469, 162, 172, 178, 340, 389,
+ 421, 425, 162, 343, 389, 429, 162, 132, 205, 7,
+ 50, 281, 172, 206, 421, 1, 9, 10, 11, 13,
+ 26, 28, 29, 38, 42, 44, 52, 54, 58, 59,
+ 65, 105, 171, 172, 231, 232, 235, 237, 238, 239,
+ 240, 241, 242, 243, 265, 271, 276, 277, 278, 279,
+ 280, 282, 286, 307, 320, 162, 358, 359, 270, 334,
+ 162, 392, 126, 132, 179, 348, 421, 421, 390, 421,
+ 185, 185, 185, 272, 382, 434, 270, 185, 5, 102,
+ 103, 185, 205, 185, 205, 205, 185, 185, 205, 185,
+ 205, 185, 205, 185, 185, 205, 185, 185, 320, 320,
+ 205, 205, 205, 205, 205, 205, 218, 13, 320, 451,
+ 466, 320, 320, 320, 320, 320, 13, 49, 298, 320,
+ 298, 208, 205, 254, 170, 208, 300, 305, 21, 22,
+ 115, 116, 117, 118, 119, 122, 123, 124, 125, 127,
+ 128, 129, 130, 131, 133, 134, 139, 140, 141, 145,
+ 180, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 202, 203, 206, 205, 421, 421, 206, 162, 384,
+ 421, 255, 421, 255, 421, 255, 340, 341, 343, 344,
+ 206, 396, 267, 298, 204, 204, 204, 320, 162, 433,
+ 181, 389, 171, 181, 389, 171, 320, 147, 162, 347,
+ 379, 338, 205, 205, 126, 320, 263, 61, 320, 205,
+ 162, 172, 155, 58, 320, 263, 126, 320, 37, 172,
+ 172, 205, 10, 172, 172, 172, 172, 172, 172, 66,
+ 283, 172, 107, 108, 109, 110, 111, 112, 113, 114,
+ 120, 121, 126, 132, 135, 136, 142, 143, 144, 179,
+ 179, 178, 469, 171, 254, 335, 172, 348, 320, 186,
+ 186, 186, 389, 443, 445, 273, 205, 185, 205, 295,
+ 185, 185, 185, 462, 298, 392, 466, 320, 288, 290,
+ 320, 292, 320, 464, 298, 449, 453, 298, 447, 392,
+ 320, 320, 320, 320, 320, 320, 166, 167, 216, 379,
+ 137, 178, 469, 379, 13, 178, 469, 469, 147, 152,
+ 185, 270, 310, 70, 153, 162, 203, 206, 298, 435,
+ 437, 4, 303, 266, 208, 254, 19, 153, 162, 380,
+ 19, 153, 162, 380, 320, 320, 320, 320, 320, 320,
+ 162, 320, 153, 162, 320, 320, 320, 380, 320, 320,
+ 320, 320, 320, 320, 22, 320, 320, 320, 320, 320,
+ 320, 320, 320, 320, 320, 320, 128, 129, 153, 162,
+ 202, 203, 317, 380, 320, 206, 298, 186, 186, 172,
+ 186, 186, 256, 186, 256, 186, 256, 186, 389, 186,
+ 389, 269, 421, 206, 469, 204, 171, 421, 421, 206,
+ 205, 43, 126, 178, 179, 181, 184, 346, 320, 379,
+ 320, 14, 320, 320, 179, 181, 155, 320, 170, 320,
+ 205, 147, 162, 205, 285, 350, 352, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
- 320, 320, 320, 320, 320, 358, 369, 8, 328, 333,
- 320, 172, 395, 400, 402, 421, 392, 392, 421, 70,
- 298, 437, 441, 162, 320, 421, 456, 458, 460, 392,
- 469, 186, 389, 469, 206, 392, 392, 206, 392, 206,
- 392, 469, 392, 392, 469, 392, 186, 206, 206, 206,
- 206, 206, 206, 320, 20, 320, 451, 171, 20, 379,
- 320, 204, 206, 205, 205, 312, 314, 162, 206, 437,
- 205, 132, 346, 435, 178, 206, 178, 206, 205, 255,
- 171, 303, 185, 205, 185, 205, 205, 205, 204, 19,
- 153, 162, 380, 181, 153, 162, 320, 205, 205, 153,
- 162, 320, 1, 205, 204, 178, 206, 404, 398, 162,
- 388, 406, 186, 410, 186, 414, 186, 418, 340, 420,
- 343, 186, 389, 320, 162, 162, 421, 320, 206, 20,
- 263, 206, 320, 266, 206, 320, 205, 43, 162, 284,
- 178, 181, 349, 171, 57, 63, 331, 67, 332, 172,
- 172, 186, 186, 186, 437, 206, 206, 206, 186, 389,
- 206, 186, 392, 392, 392, 186, 206, 205, 392, 206,
- 186, 186, 186, 186, 206, 186, 186, 206, 186, 303,
- 205, 168, 298, 298, 20, 320, 320, 392, 255, 206,
- 320, 320, 320, 204, 203, 153, 162, 126, 132, 162,
- 179, 184, 301, 302, 256, 255, 321, 320, 323, 320,
- 206, 298, 320, 185, 205, 320, 205, 204, 320, 206,
- 298, 205, 204, 318, 206, 298, 408, 412, 416, 205,
- 421, 206, 43, 346, 263, 298, 263, 171, 263, 206,
- 320, 162, 178, 206, 162, 392, 348, 47, 332, 46,
- 106, 329, 444, 446, 274, 206, 205, 162, 296, 186,
- 186, 186, 463, 268, 466, 186, 289, 291, 293, 465,
- 450, 454, 448, 205, 263, 206, 298, 172, 172, 298,
- 206, 206, 186, 256, 206, 206, 435, 205, 132, 346,
- 162, 162, 205, 162, 162, 178, 206, 137, 263, 299,
- 256, 392, 206, 421, 206, 206, 206, 325, 320, 320,
- 206, 206, 320, 206, 267, 162, 320, 206, 12, 23,
- 24, 233, 234, 12, 236, 206, 162, 181, 349, 43,
- 172, 348, 320, 33, 330, 329, 331, 205, 205, 320,
- 186, 457, 459, 461, 205, 206, 469, 205, 320, 320,
- 320, 205, 70, 441, 205, 205, 206, 320, 206, 451,
- 320, 172, 313, 186, 132, 346, 204, 320, 320, 320,
- 162, 301, 126, 320, 263, 186, 186, 421, 206, 206,
- 206, 206, 263, 263, 205, 237, 276, 277, 278, 279,
- 320, 172, 392, 348, 162, 320, 172, 336, 330, 347,
- 441, 441, 206, 205, 205, 205, 205, 267, 268, 298,
- 441, 435, 436, 206, 172, 468, 468, 320, 310, 315,
- 320, 320, 206, 206, 206, 320, 322, 324, 186, 320,
- 348, 320, 172, 260, 337, 205, 435, 438, 439, 440,
- 440, 320, 441, 441, 436, 206, 206, 469, 440, 206,
- 53, 171, 204, 468, 310, 132, 346, 326, 206, 320,
- 172, 172, 260, 435, 178, 469, 206, 206, 206, 440,
- 440, 206, 206, 206, 320, 204, 320, 320, 263, 172,
- 263, 206, 205, 206, 206, 234, 435, 206
+ 320, 320, 320, 320, 320, 320, 358, 369, 8, 328,
+ 333, 320, 172, 395, 400, 402, 421, 392, 392, 421,
+ 70, 298, 437, 441, 162, 320, 421, 456, 458, 460,
+ 392, 469, 186, 389, 469, 206, 392, 392, 206, 392,
+ 206, 392, 469, 392, 392, 469, 392, 186, 206, 206,
+ 206, 206, 206, 206, 320, 20, 320, 451, 171, 20,
+ 379, 320, 204, 206, 205, 205, 312, 314, 162, 206,
+ 437, 205, 132, 346, 435, 178, 206, 178, 206, 205,
+ 255, 171, 303, 185, 205, 185, 205, 205, 205, 204,
+ 19, 153, 162, 380, 181, 153, 162, 320, 205, 205,
+ 153, 162, 320, 1, 205, 204, 178, 206, 404, 398,
+ 162, 388, 406, 186, 410, 186, 414, 186, 418, 340,
+ 420, 343, 186, 389, 320, 162, 162, 421, 320, 206,
+ 20, 263, 206, 320, 266, 206, 320, 205, 43, 162,
+ 284, 178, 181, 349, 171, 57, 63, 331, 67, 332,
+ 172, 172, 186, 186, 186, 437, 206, 206, 206, 186,
+ 389, 206, 186, 392, 392, 392, 186, 206, 205, 392,
+ 206, 186, 186, 186, 186, 206, 186, 186, 206, 186,
+ 303, 205, 168, 298, 298, 20, 320, 320, 392, 255,
+ 206, 320, 320, 320, 204, 203, 153, 162, 126, 132,
+ 162, 179, 184, 301, 302, 256, 255, 321, 320, 323,
+ 320, 206, 298, 320, 185, 205, 320, 205, 204, 320,
+ 206, 298, 205, 204, 318, 206, 298, 408, 412, 416,
+ 205, 421, 206, 43, 346, 263, 298, 263, 171, 263,
+ 206, 320, 162, 178, 206, 162, 392, 348, 47, 332,
+ 46, 106, 329, 444, 446, 274, 206, 205, 162, 296,
+ 186, 186, 186, 463, 268, 466, 186, 289, 291, 293,
+ 465, 450, 454, 448, 205, 263, 206, 298, 172, 172,
+ 298, 206, 206, 186, 256, 206, 206, 435, 205, 132,
+ 346, 162, 162, 205, 162, 162, 178, 206, 137, 263,
+ 299, 256, 392, 206, 421, 206, 206, 206, 325, 320,
+ 320, 206, 206, 320, 206, 267, 162, 320, 206, 12,
+ 23, 24, 233, 234, 12, 236, 206, 162, 181, 349,
+ 43, 172, 348, 320, 33, 330, 329, 331, 205, 205,
+ 320, 186, 457, 459, 461, 205, 206, 469, 205, 320,
+ 320, 320, 205, 70, 441, 205, 205, 206, 320, 206,
+ 451, 320, 172, 313, 186, 132, 346, 204, 320, 320,
+ 320, 162, 301, 126, 320, 263, 186, 186, 421, 206,
+ 206, 206, 206, 263, 263, 205, 237, 276, 277, 278,
+ 279, 320, 172, 392, 348, 162, 320, 172, 336, 330,
+ 347, 441, 441, 206, 205, 205, 205, 205, 267, 268,
+ 298, 441, 435, 436, 206, 172, 468, 468, 320, 310,
+ 315, 320, 320, 206, 206, 206, 320, 322, 324, 186,
+ 320, 348, 320, 172, 260, 337, 205, 435, 438, 439,
+ 440, 440, 320, 441, 441, 436, 206, 206, 469, 440,
+ 206, 53, 171, 204, 468, 310, 132, 346, 326, 206,
+ 320, 172, 172, 260, 435, 178, 469, 206, 206, 206,
+ 440, 440, 206, 206, 206, 320, 204, 320, 320, 263,
+ 172, 263, 206, 205, 206, 206, 234, 435, 206
};
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
@@ -4077,7 +4103,7 @@ static const yytype_int16 yyr1[] =
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
static const yytype_int8 yyr2[] =
{
- 0, 2, 0, 2, 2, 2, 2, 2, 2, 2,
+ 0, 2, 0, 2, 2, 2, 2, 2, 2, 3,
3, 2, 2, 2, 2, 2, 2, 2, 0, 1,
1, 1, 1, 4, 1, 1, 2, 2, 3, 2,
0, 2, 4, 3, 1, 2, 0, 4, 2, 2,
diff --git a/prog/1stPartyLibs/daScript/src/parser/ds2_parser.ypp b/prog/1stPartyLibs/daScript/src/parser/ds2_parser.ypp
index 19939ce80..617536489 100644
--- a/prog/1stPartyLibs/daScript/src/parser/ds2_parser.ypp
+++ b/prog/1stPartyLibs/daScript/src/parser/ds2_parser.ypp
@@ -541,7 +541,7 @@ program
| program global_let { yyextra->das_has_type_declarations = true; }
| program global_function_declaration { yyextra->das_has_type_declarations = true; }
| program expect_declaration
- | program require_declaration
+ | program require_declaration ';'
| program options_declaration ';'
| program alias_declaration { yyextra->das_has_type_declarations = true; }
| program variant_alias_declaration { yyextra->das_has_type_declarations = true; }
diff --git a/prog/1stPartyLibs/daScript/src/simulate/runtime_string.cpp b/prog/1stPartyLibs/daScript/src/simulate/runtime_string.cpp
index 299c5c205..efba40b98 100644
--- a/prog/1stPartyLibs/daScript/src/simulate/runtime_string.cpp
+++ b/prog/1stPartyLibs/daScript/src/simulate/runtime_string.cpp
@@ -510,6 +510,25 @@ namespace das
}
}
+ int32_t levenshtein_distance ( const char * s1, const char * s2 ) {
+ int len1 = int(strlen(s1));
+ int len2 = int(strlen(s2));
+ if ( len1==0 ) return len2;
+ if ( len2==0 ) return len1;
+ int * v0 = (int *) alloca(sizeof(int)*(len2+1));
+ int * v1 = (int *) alloca(sizeof(int)*(len2+1));
+ for ( int i=0; i<=len2; ++i ) v0[i] = i;
+ for ( int i=0; i 0) braceCounter[0]--; break;
+ case '}': if (braceCounter[1] > 0) braceCounter[1]--; break;
+ case ']': if (braceCounter[2] > 0) braceCounter[2]--; break;
+ default: break;
+ }
+ }
+
+ if (braceCounter[0] > 0 || braceCounter[1] > 0 || braceCounter[2] > 0)
+ return true;
+
+
+ if (mLanguageDefinition == &LanguageDefinition::Daslang())
+ {
+ static const char * const startKeywordsIndent[] = {
+ "if", "elif", "else", "for", "while", "switch", "class", "struct", "enum", "def", "try", "except", "finally", "with", "lambda"
+ };
+
+ static const char * const singleKeywordsIndent[] = {
+ "let", "var"
+ };
+
+ bool singleWord = true;
+ eastl::string w = parse_first_word(line.c_str(), singleWord);
+
+ for (auto &k : startKeywordsIndent)
+ {
+ if (w == k)
+ return true;
+ }
+
+ if (singleWord)
+ for (auto &k : singleKeywordsIndent)
+ if (w == k)
+ return true;
+
+ // block_call() $ (arg1, arg2)
+ const char * lambdaPos = strrchr(line.c_str(), '$');
+ if (lambdaPos)
+ {
+ const char * endOfParameter = find_pair_brace(lambdaPos, '(', ')');
+ if (!endOfParameter)
+ return true;
+
+ const char * p = endOfParameter + 1;
+ while (*p && isspace(*p))
+ p++;
+
+ bool nonSpaceSymbols = *p && !isspace(*p);
+
+ if (!nonSpaceSymbols)
+ return true;
+ }
+ }
+
+ return false;
+}
diff --git a/prog/3rdPartyLibs/ImGuiColorTextEdit/TextEditor.cpp b/prog/3rdPartyLibs/ImGuiColorTextEdit/TextEditor.cpp
index 84597d9ce..cf3f82193 100644
--- a/prog/3rdPartyLibs/ImGuiColorTextEdit/TextEditor.cpp
+++ b/prog/3rdPartyLibs/ImGuiColorTextEdit/TextEditor.cpp
@@ -23,6 +23,7 @@ TextEditor::TextEditor()
TextEditor::~TextEditor()
{
+ ClearHighlights();
}
void TextEditor::SetPalette(PaletteId aValue)
@@ -159,6 +160,8 @@ void TextEditor::ClearSelections()
mState.mCursors[c].mInteractiveEnd =
mState.mCursors[c].mInteractiveStart =
mState.mCursors[c].GetSelectionEnd();
+
+ ClearHighlights();
}
void TextEditor::SetCursorPosition(int aLine, int aCharIndex)
@@ -197,6 +200,10 @@ void TextEditor::Copy()
auto& line = mLines[GetActualCursorCoordinates().mLine];
for (auto& g : line)
str.push_back(g.mChar);
+#ifdef _WIN32
+ str.push_back('\r');
+#endif
+ str.push_back('\n');
ImGui::SetClipboardText(str.c_str());
}
}
@@ -233,6 +240,46 @@ void TextEditor::Paste()
const char* text = ImGui::GetClipboardText();
if (!text || !text[0])
return;
+
+ if (!mLines.empty() && !AnyCursorHasSelection())
+ {
+ auto &line = mLines[GetActualCursorCoordinates().mLine];
+ int lineLen = (int)strlen(text);
+ if (lineLen > 0 && text[lineLen - 1] == '\n')
+ lineLen--;
+ if (lineLen > 0 && text[lineLen - 1] == '\r')
+ lineLen--;
+
+ if (bool sameLine = (lineLen == line.size() && lineLen > 0))
+ {
+ for (int i = 0; i < lineLen; i++)
+ if (line[i].mChar != text[i])
+ {
+ sameLine = false;
+ break;
+ }
+
+ if (sameLine)
+ {
+ eastl::string textToInsert = "\n";
+ textToInsert += text;
+ if (textToInsert.back() == '\n')
+ textToInsert.pop_back();
+
+ auto coords = GetActualCursorCoordinates();
+ auto newCursorPos = coords;
+
+ coords.mColumn = mLines[coords.mLine].size();
+ SetCursorPosition(coords, 0);
+ PasteText(textToInsert.c_str());
+
+ newCursorPos.mLine++;
+ SetCursorPosition(newCursorPos, 0, true);
+ return;
+ }
+ }
+ }
+
PasteText(ImGui::GetClipboardText());
}
@@ -298,6 +345,36 @@ void TextEditor::PasteText(const char * text)
AddUndo(u);
}
+void TextEditor::ClearHighlights()
+{
+ for (auto &h : highlights)
+ {
+ delete h;
+ h = nullptr;
+ }
+}
+
+void TextEditor::AddHighlight(int line, int start, int end)
+{
+ if (start > 32000 || end > 32000)
+ return;
+
+ if (line >= (int)highlights.size())
+ {
+ for (int i = (int)highlights.size(); i <= line; i++)
+ highlights.push_back(nullptr);
+ }
+
+ if (highlights[line] == nullptr)
+ highlights[line] = new HighlightRanges();
+
+ if (highlights[line]->size() > 20)
+ return;
+
+ highlights[line]->push_back({ start, end });
+}
+
+
bool TextEditor::UndoRecord::isSimilarTo(const TextEditor::UndoRecord& other) const
{
if (mOperations.size() != 1 || other.mOperations.size() != 1)
@@ -472,7 +549,11 @@ bool TextEditor::Render(const char* aTitle, bool aParentIsFocused, const ImVec2&
mCursorPositionChanged = false;
if (colorizeTime != 0.0 && ImGui::GetTime() > colorizeTime)
+ {
ColorizeAll();
+ ClearHighlights();
+ HighlightSelectedText();
+ }
ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::ColorConvertU32ToFloat4(mPalette[(int)PaletteIndex::Background]));
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0.0f, 0.0f));
@@ -1009,6 +1090,26 @@ void TextEditor::MoveEnd(bool aSelect)
}
}
+void TextEditor::FindPreferredIndentChar(int lineNum)
+{
+ int from = max(lineNum - 10, 0);
+ int to = min(lineNum + 10, (int)mLines.size());
+ int tabs = 0;
+ int spaces = 0;
+ for (int i = from; i < to; i++)
+ {
+ auto& line = mLines[i];
+ if (line.empty())
+ continue;
+ if (line[0].mChar == '\t')
+ tabs++;
+ else if (line[0].mChar == ' ')
+ spaces++;
+ }
+
+ preferredIndentChar = tabs > spaces ? '\t' : ' ';
+}
+
void TextEditor::EnterCharacter(ImWchar aChar, bool aShift)
{
EASTL_ASSERT(!mReadOnly);
@@ -1060,13 +1161,34 @@ void TextEditor::EnterCharacter(ImWchar aChar, bool aShift)
added.mText = "";
added.mText += (char)aChar;
if (mAutoIndent)
+ {
+ FindPreferredIndentChar(coord.mLine);
+ char lastIndentChar = preferredIndentChar;
+
for (int i = 0; i < line.size() && unsigned(line[i].mChar) < 128 && isblank(line[i].mChar); ++i)
{
if (i >= coord.mColumn)
break;
newLine.push_back(line[i]);
added.mText += line[i].mChar;
+ if (line[i].mChar == '\t' || line[i].mChar == ' ')
+ lastIndentChar = line[i].mChar;
+ }
+
+ eastl::string lineBeforeCursor;
+ for (int i = 0; i < coord.mColumn && i < (int)line.size(); i++)
+ lineBeforeCursor += line[i].mChar;
+
+ if (RequireIndentationAfterNewLine(lineBeforeCursor))
+ {
+ if (lastIndentChar == ' ')
+ for (int i = 0; i < mTabSize; ++i)
+ newLine.push_back(Glyph(' ', PaletteIndex::Background));
+
+ if (lastIndentChar == '\t')
+ newLine.push_back(Glyph('\t', PaletteIndex::Background));
}
+ }
const size_t whitespaceSize = newLine.size();
auto cindex = GetCharacterIndexR(coord);
@@ -1195,6 +1317,63 @@ void TextEditor::Delete(bool aWordMode, const EditorState* aEditorState)
}
}
+void TextEditor::HighlightSelectedText()
+{
+ eastl::string sel = GetSelectedText(0);
+ bool spacesOnly = true;
+
+ for (auto c : sel)
+ {
+ if (c != ' ' && c != '\t')
+ spacesOnly = false;
+
+ if (c == '\n')
+ return;
+ }
+
+ if (spacesOnly)
+ return;
+
+ int highlightedCount = 0;
+ int highlightAroundLine = mState.mCursors[0].mInteractiveStart.mLine;
+
+ for (int pass = 0; pass < 2; pass++)
+ {
+ for (int k = 0; k < Min((int)mLines.size(), 30000); k++)
+ {
+ bool insideRange = abs(k - highlightAroundLine) < 30;
+ if ((pass == 0) != (insideRange))
+ continue;
+
+ auto & line = mLines[k];
+ for (int i = 0; i <= (int)line.size() - (int)sel.length(); i++)
+ {
+ if (line[i].mChar == sel[0])
+ {
+ bool found = true;
+ for (int j = 1; j < (int)sel.length(); j++)
+ {
+ if (line[i + j].mChar != sel[j])
+ {
+ found = false;
+ break;
+ }
+ }
+
+ if (found)
+ {
+ AddHighlight(k, i, i + (int)sel.length());
+ i += (int)sel.length() - 1;
+ highlightedCount++;
+ if (highlightedCount > 400)
+ return;
+ }
+ }
+ }
+ }
+ }
+}
+
void TextEditor::SetSelection(Coordinates aStart, Coordinates aEnd, int aCursor)
{
if (aCursor == -1)
@@ -1214,6 +1393,9 @@ void TextEditor::SetSelection(Coordinates aStart, Coordinates aEnd, int aCursor)
mState.mCursors[aCursor].mInteractiveStart = aStart;
SetCursorPosition(aEnd, aCursor, false);
+
+ ClearHighlights();
+ HighlightSelectedText();
}
void TextEditor::SetSelection(int aStartLine, int aStartChar, int aEndLine, int aEndChar, int aCursor)
@@ -2438,6 +2620,23 @@ void TextEditor::Render(bool aParentIsFocused)
Coordinates lineStartCoord(lineNo, 0);
Coordinates lineEndCoord(lineNo, maxColumnLimited);
+ // Draw highlights for the current line
+ if (lineNo < highlights.size() && highlights[lineNo])
+ {
+ HighlightRanges &ranges = *highlights[lineNo];
+ for (auto && range : ranges)
+ {
+ if (range.first < line.size() && range.second <= line.size())
+ {
+ float x1 = TextDistanceToLineStart(Coordinates(lineNo, range.first));
+ float x2 = TextDistanceToLineStart(Coordinates(lineNo, range.second));
+ drawList->AddRectFilled(ImVec2{ lineStartScreenPos.x + mTextStart + x1, lineStartScreenPos.y },
+ ImVec2{ lineStartScreenPos.x + mTextStart + x2, lineStartScreenPos.y + mCharAdvance.y },
+ mPalette[(int)PaletteIndex::HighlightedTextFill]);
+ }
+ }
+ }
+
// Draw selection for the current line
for (int c = 0; c <= mState.mCurrentCursor; c++)
{
@@ -2693,6 +2892,9 @@ void TextEditor::OnCursorPositionChanged()
mState.SortCursorsFromTopToBottom();
MergeCursorsIfPossible();
}
+
+ ClearHighlights();
+ HighlightSelectedText();
}
void TextEditor::OnLineChanged(bool aBeforeChange, int aLine, int aColumn, int aCharCount, bool aDeleted) // adjusts cursor position when other cursor writes/deletes in the same line
@@ -2998,6 +3200,7 @@ const TextEditor::Palette& TextEditor::GetDarkPalette()
0x00000040, // Current line fill
0x80808040, // Current line fill (inactive)
0xa0a0a040, // Current line edge
+ 0xff406080, // Highlight fill
} };
return p;
}
@@ -3027,6 +3230,7 @@ const TextEditor::Palette& TextEditor::GetMarianaPalette()
0x4e5a6580, // Current line fill
0x4e5a6530, // Current line fill (inactive)
0x4e5a65b0, // Current line edge
+ 0xff406080, // Highlight fill
} };
return p;
}
@@ -3056,6 +3260,7 @@ const TextEditor::Palette& TextEditor::GetLightPalette()
0x00000040, // Current line fill
0x80808040, // Current line fill (inactive)
0x00000040, // Current line edge
+ 0xffA0A0A0, // Highlight fill
} };
return p;
}
@@ -3084,6 +3289,7 @@ const TextEditor::Palette& TextEditor::GetRetroBluePalette()
0x00000040, // Current line fill
0x80808040, // Current line fill (inactive)
0xe0e0e040, // Current line edge
+ 0xff404080, // Highlight fill
} };
return p;
}
diff --git a/prog/3rdPartyLibs/ImGuiColorTextEdit/TextEditor.h b/prog/3rdPartyLibs/ImGuiColorTextEdit/TextEditor.h
index ed787557a..23573777f 100644
--- a/prog/3rdPartyLibs/ImGuiColorTextEdit/TextEditor.h
+++ b/prog/3rdPartyLibs/ImGuiColorTextEdit/TextEditor.h
@@ -167,6 +167,7 @@ class IMGUI_API TextEditor
CurrentLineFill,
CurrentLineFillInactive,
CurrentLineEdge,
+ HighlightedTextFill,
Max
};
@@ -297,6 +298,8 @@ class IMGUI_API TextEditor
static const LanguageDefinition& Daslang();
};
+ bool RequireIndentationAfterNewLine(const eastl::string &line) const;
+
enum class UndoOperationType { Add, Delete };
struct UndoOperation
{
@@ -418,6 +421,7 @@ class IMGUI_API TextEditor
double colorizeTime = 0.0;
+ char preferredIndentChar = ' ';
int mTabSize = 4;
float mLineSpacing = 1.0f;
bool mOverwrite = false;
@@ -464,12 +468,20 @@ class IMGUI_API TextEditor
Palette mPalette;
LanguageDefinitionId mLanguageDefinitionId;
const LanguageDefinition* mLanguageDefinition = nullptr;
+
+ typedef eastl::vector> HighlightRanges;
+ eastl::vector highlights;
+ void ClearHighlights();
+ void AddHighlight(int line, int start, int end);
+ void HighlightSelectedText();
+
eastl::string mLineBuffer;
eastl::string tabString;
inline bool IsHorizontalScrollbarVisible() const { return mCurrentSpaceWidth > mContentWidth; }
inline bool IsVerticalScrollbarVisible() const { return mCurrentSpaceHeight > mContentHeight; }
inline int TabSizeAtColumn(int aColumn) const { return mTabSize - (aColumn % mTabSize); }
+ void FindPreferredIndentChar(int lineNum);
static const Palette& GetDarkPalette();
static const Palette& GetMarianaPalette();
diff --git a/prog/3rdPartyLibs/ImGuizmo/ImGuizmo.cpp b/prog/3rdPartyLibs/ImGuizmo/ImGuizmo.cpp
index 24f72b857..8312a53a5 100644
--- a/prog/3rdPartyLibs/ImGuizmo/ImGuizmo.cpp
+++ b/prog/3rdPartyLibs/ImGuizmo/ImGuizmo.cpp
@@ -2795,14 +2795,14 @@ namespace IMGUIZMO_NAMESPACE
}
}
- void ViewManipulate(float* view, const float* projection, OPERATION operation, MODE mode, float* matrix, float length, ImVec2 position, ImVec2 size, ImU32 backgroundColor)
+ bool ViewManipulate(float* view, const float* projection, OPERATION operation, MODE mode, float* matrix, float length, ImVec2 position, ImVec2 size, ImU32 backgroundColor)
{
// Scale is always local or matrix will be skewed when applying world scale or oriented matrix
ComputeContext(view, projection, matrix, (operation & SCALE) ? LOCAL : mode);
- ViewManipulate(view, length, position, size, backgroundColor);
+ return ViewManipulate(view, length, position, size, backgroundColor);
}
- void ViewManipulate(float* view, float length, ImVec2 position, ImVec2 size, ImU32 backgroundColor)
+ bool ViewManipulate(float* view, float length, ImVec2 position, ImVec2 size, ImU32 backgroundColor)
{
static bool isDraging = false;
static bool isClicking = false;
@@ -3023,5 +3023,6 @@ namespace IMGUIZMO_NAMESPACE
// restore view/projection because it was used to compute ray
ComputeContext(svgView.m16, svgProjection.m16, gContext.mModelSource.m16, gContext.mMode);
+ return isDraging;
}
};
diff --git a/prog/3rdPartyLibs/ImGuizmo/ImGuizmo.h b/prog/3rdPartyLibs/ImGuizmo/ImGuizmo.h
index 63af89d05..34e02c174 100644
--- a/prog/3rdPartyLibs/ImGuizmo/ImGuizmo.h
+++ b/prog/3rdPartyLibs/ImGuizmo/ImGuizmo.h
@@ -215,10 +215,10 @@ namespace IMGUIZMO_NAMESPACE
// It seems to be a defensive patent in the US. I don't think it will bring troubles using it as
// other software are using the same mechanics. But just in case, you are now warned!
//
- IMGUI_API void ViewManipulate(float* view, float length, ImVec2 position, ImVec2 size, ImU32 backgroundColor);
+ IMGUI_API bool ViewManipulate(float* view, float length, ImVec2 position, ImVec2 size, ImU32 backgroundColor);
// use this version if you did not call Manipulate before and you are just using ViewManipulate
- IMGUI_API void ViewManipulate(float* view, const float* projection, OPERATION operation, MODE mode, float* matrix, float length, ImVec2 position, ImVec2 size, ImU32 backgroundColor);
+ IMGUI_API bool ViewManipulate(float* view, const float* projection, OPERATION operation, MODE mode, float* matrix, float length, ImVec2 position, ImVec2 size, ImU32 backgroundColor);
IMGUI_API void SetID(int id);
diff --git a/prog/3rdPartyLibs/imgui/imgui.cpp b/prog/3rdPartyLibs/imgui/imgui.cpp
index b1db521ea..0e78b46c7 100644
--- a/prog/3rdPartyLibs/imgui/imgui.cpp
+++ b/prog/3rdPartyLibs/imgui/imgui.cpp
@@ -7192,8 +7192,11 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
if (window_title_visible_elsewhere && !window_just_created && strcmp(name, window->Name) != 0)
{
size_t buf_len = (size_t)window->NameBufLen;
+ const bool syncDrawListName = window->Name == window->DrawList->_OwnerName;
window->Name = ImStrdupcpy(window->Name, &buf_len, name);
window->NameBufLen = (int)buf_len;
+ if (syncDrawListName)
+ window->DrawList->_OwnerName = window->Name;
}
// UPDATE CONTENTS SIZE, UPDATE HIDDEN STATUS
diff --git a/prog/commonFx/commonFxGame/dafxCompound.cpp b/prog/commonFx/commonFxGame/dafxCompound.cpp
index 631805416..208309ea7 100644
--- a/prog/commonFx/commonFxGame/dafxCompound.cpp
+++ b/prog/commonFx/commonFxGame/dafxCompound.cpp
@@ -675,7 +675,7 @@ struct DafxCompound : BaseParticleEffect
dafx::set_instance_pos(g_dafx_ctx, iid, pos);
}
else if (id == _MAKE4C('PFXV'))
- dafx::set_instance_visibility(g_dafx_ctx, iid, value ? *(bool *)value : false);
+ dafx::set_instance_visibility(g_dafx_ctx, iid, value ? *(uint32_t *)value : 0);
else if (id == _MAKE4C('PFXI'))
((eastl::vector *)value)->push_back(iid);
else if (id == HUID_TM)
diff --git a/prog/commonFx/commonFxGame/dafxModFx.cpp b/prog/commonFx/commonFxGame/dafxModFx.cpp
index a387b213b..515f9dc28 100644
--- a/prog/commonFx/commonFxGame/dafxModFx.cpp
+++ b/prog/commonFx/commonFxGame/dafxModFx.cpp
@@ -163,7 +163,7 @@ struct DafxModFx : BaseParticleEffect
dafx::set_instance_pos(g_dafx_ctx, iid, pos);
}
else if (id == _MAKE4C('PFXV'))
- dafx::set_instance_visibility(g_dafx_ctx, iid, value ? *(bool *)value : false);
+ dafx::set_instance_visibility(g_dafx_ctx, iid, value ? *(uint32_t *)value : 0);
else if (id == HUID_TM)
setTm((TMatrix *)value);
else if (id == HUID_EMITTER_TM)
diff --git a/prog/commonFx/commonFxGame/dafxModFxSystem.cpp b/prog/commonFx/commonFxGame/dafxModFxSystem.cpp
index b3985c0c9..8e98f5657 100644
--- a/prog/commonFx/commonFxGame/dafxModFxSystem.cpp
+++ b/prog/commonFx/commonFxGame/dafxModFxSystem.cpp
@@ -343,6 +343,7 @@ bool dafx_modfx_system_load(const char *ptr, int len, BaseParamScriptLoadCB *loa
GDATA(dt);
GDATA(water_level);
GDATA(globtm);
+ GDATA(globtm_prev);
GDATA(view_dir_x);
GDATA(view_dir_y);
GDATA(view_dir_z);
@@ -358,6 +359,7 @@ bool dafx_modfx_system_load(const char *ptr, int len, BaseParamScriptLoadCB *loa
GDATA(sky_color);
GDATA(zn_zfar);
GDATA(znear_offset);
+ GDATA(proj_hk);
GDATA(wind_dir);
GDATA(wind_power);
GDATA(wind_scroll);
@@ -1930,4 +1932,4 @@ bool dafx_modfx_system_load(const char *ptr, int len, BaseParamScriptLoadCB *loa
sinfo.onePointRadius = parGlobals.one_point_radius;
return true;
-}
\ No newline at end of file
+}
diff --git a/prog/commonFx/commonFxGame/dafxSparks.cpp b/prog/commonFx/commonFxGame/dafxSparks.cpp
index ba0b105e1..d1912c7b2 100644
--- a/prog/commonFx/commonFxGame/dafxSparks.cpp
+++ b/prog/commonFx/commonFxGame/dafxSparks.cpp
@@ -365,7 +365,7 @@ struct DafxSparks : BaseParticleEffect
((eastl::vector *)value)->push_back(iid);
}
else if (id == _MAKE4C('PFXV'))
- dafx::set_instance_visibility(g_dafx_ctx, iid, value ? *(bool *)value : false);
+ dafx::set_instance_visibility(g_dafx_ctx, iid, value ? *(uint32_t *)value : 0);
else if (id == _MAKE4C('PFXG'))
dafx::warmup_instance(g_dafx_ctx, iid, value ? *(float *)value : 0);
else if (id == _MAKE4C('GZTM'))
diff --git a/prog/commonFx/commonFxGame/dafx_frame_boundary.dshl b/prog/commonFx/commonFxGame/dafx_frame_boundary.dshl
index 04ca49a7f..e25db430b 100644
--- a/prog/commonFx/commonFxGame/dafx_frame_boundary.dshl
+++ b/prog/commonFx/commonFxGame/dafx_frame_boundary.dshl
@@ -14,23 +14,25 @@ int dafx_fill_boundary_frame_id = 0;
int dafx_use_experimental_boundary_calc = 0;
interval dafx_use_experimental_boundary_calc: no < 1, yes;
+int dafx_fill_boundary_legacy_frame_boundary_result_uav_no = 0;
// horribly slow, only used for debugging ->> should be deprecated if there is no problem with the optimized version
shader fill_fx_keyframe_boundary_legacy
{
- (cs){
+ (cs) {
dafx_fill_boundary_tex@tex2d = dafx_fill_boundary_tex;
dafx_fill_boundary_params@f4 = dafx_fill_boundary_params;
dafx_fill_boundary_offset@i1 = dafx_fill_boundary_offset;
tile_size@f2 = (dafx_fill_boundary_params.z / dafx_fill_boundary_params.x, dafx_fill_boundary_params.w / dafx_fill_boundary_params.y);
tile_size_inv@f2 = (dafx_fill_boundary_params.x / dafx_fill_boundary_params.z, dafx_fill_boundary_params.y / dafx_fill_boundary_params.w);
+ frame_boundary_result@uav : register(dafx_fill_boundary_legacy_frame_boundary_result_uav_no) hlsl {
+ RWStructuredBuffer frame_boundary_result@uav;
+ };
}
ENABLE_ASSERT(cs)
hlsl(cs) {
- RWStructuredBuffer frame_boundary_result : register(u0);
-
float4 transformInverseY(float4 boundary)
{
boundary.yw = 1 - boundary.wy;
@@ -80,14 +82,19 @@ shader fill_fx_keyframe_boundary_legacy
compile("target_cs", "main_cs");
}
-
+int dafx_fill_boundary_opt_start_frame_boundary_tmp_uav_no = 0;
shader fill_fx_keyframe_boundary_opt_start
{
ENABLE_ASSERT(cs)
- hlsl(cs) {
- RWStructuredBuffer dafx_frame_boundary_tmp : register(u0);
+ (cs) {
+ dafx_frame_boundary_tmp@uav : register(dafx_fill_boundary_opt_start_frame_boundary_tmp_uav_no) hlsl {
+ RWStructuredBuffer dafx_frame_boundary_tmp@uav;
+ };
+ }
+
+ hlsl(cs) {
[numthreads( 16, 4, 1 )]
void main_cs( uint2 dtId : SV_DispatchThreadID )
{
@@ -99,19 +106,22 @@ shader fill_fx_keyframe_boundary_opt_start
compile("target_cs", "main_cs");
}
+int dafx_fill_boundary_approx_frame_boundary_tmp_uav_no = 0;
+
shader fill_fx_keyframe_boundary_approx
{
- (cs){
+ (cs) {
dafx_fill_boundary_tex@tex2d = dafx_fill_boundary_tex;
dafx_fill_boundary_params@f4 = dafx_fill_boundary_params;
tile_size@f2 = (dafx_fill_boundary_params.z / dafx_fill_boundary_params.x, dafx_fill_boundary_params.w / dafx_fill_boundary_params.y);
+ dafx_frame_boundary_tmp@uav : register(dafx_fill_boundary_approx_frame_boundary_tmp_uav_no) hlsl {
+ RWStructuredBuffer dafx_frame_boundary_tmp@uav;
+ };
}
ENABLE_ASSERT(cs)
hlsl(cs) {
- RWStructuredBuffer dafx_frame_boundary_tmp : register(u0);
-
#define BOUNDARY_CACHE_SIZE 8
groupshared uint tmp_boundary_cache[4];
@@ -174,19 +184,22 @@ shader fill_fx_keyframe_boundary_approx
compile("target_cs", "main_cs");
}
+int dafx_fill_boundary_opt_frame_boundary_tmp_uav_no = 0;
+
shader fill_fx_keyframe_boundary_opt
{
- (cs){
+ (cs) {
dafx_fill_boundary_tex@tex2d = dafx_fill_boundary_tex;
dafx_fill_boundary_params@f4 = dafx_fill_boundary_params;
tile_size@f2 = (dafx_fill_boundary_params.z / dafx_fill_boundary_params.x, dafx_fill_boundary_params.w / dafx_fill_boundary_params.y);
+ dafx_frame_boundary_tmp@uav : register(dafx_fill_boundary_opt_frame_boundary_tmp_uav_no) hlsl {
+ RWStructuredBuffer dafx_frame_boundary_tmp@uav;
+ };
}
ENABLE_ASSERT(cs)
hlsl(cs) {
- RWStructuredBuffer dafx_frame_boundary_tmp : register(u0);
-
#define BOUNDARY_CACHE_SIZE 8
##if dafx_use_experimental_boundary_calc == yes
@@ -254,18 +267,23 @@ shader fill_fx_keyframe_boundary_opt
compile("target_cs", "main_cs");
}
+int dafx_fill_boundary_opt_end_frame_boundary_result_uav_no = 0;
+
shader fill_fx_keyframe_boundary_opt_end
{
- (cs){
+ (cs) {
dafx_fill_boundary_params@f4 = dafx_fill_boundary_params;
dafx_fill_boundary_offset@i1 = dafx_fill_boundary_offset;
tile_size_inv@f2 = (dafx_fill_boundary_params.x / dafx_fill_boundary_params.z, dafx_fill_boundary_params.y / dafx_fill_boundary_params.w);
dafx_frame_boundary_tmp@buf = dafx_frame_boundary_tmp hlsl { StructuredBuffer dafx_frame_boundary_tmp@buf; };
+ frame_boundary_result@uav : register(dafx_fill_boundary_opt_end_frame_boundary_result_uav_no) hlsl {
+ RWStructuredBuffer frame_boundary_result@uav;
+ };
}
+
ENABLE_ASSERT(cs)
- hlsl(cs) {
- RWStructuredBuffer frame_boundary_result : register(u0);
+ hlsl(cs) {
float4 transformInverseY(float4 boundary)
{
boundary.yw = 1 - boundary.wy;
@@ -299,16 +317,20 @@ shader fill_fx_keyframe_boundary_opt_end
compile("target_cs", "main_cs");
}
+int dafx_clear_boundary_frame_boundary_result_uav_no = 0;
shader clear_fx_keyframe_boundary
{
- (cs){
+ (cs) {
dafx_fill_boundary_count@i1 = dafx_fill_boundary_count;
+ frame_boundary_result@uav : register(dafx_clear_boundary_frame_boundary_result_uav_no) hlsl {
+ RWStructuredBuffer frame_boundary_result@uav;
+ };
}
+
ENABLE_ASSERT(cs)
- hlsl(cs) {
- RWStructuredBuffer frame_boundary_result : register(u0);
+ hlsl(cs) {
[numthreads( 64, 1, 1 )]
void main_cs( uint dtId : SV_DispatchThreadID )
{
@@ -319,10 +341,11 @@ shader clear_fx_keyframe_boundary
compile("target_cs", "main_cs");
}
+int dafx_frame_boundary_debug_update_outputTex_uav_no = 0;
shader frame_boundary_debug_update
{
- (cs){
+ (cs) {
dafx_fill_boundary_tex@smp2d = dafx_fill_boundary_tex;
dafx_fill_boundary_params@f4 = dafx_fill_boundary_params;
dafx_fill_boundary_offset@i1 = dafx_fill_boundary_offset;
@@ -331,12 +354,12 @@ shader frame_boundary_debug_update
tile_size_inv@f2 = (dafx_fill_boundary_params.x / dafx_fill_boundary_params.z, dafx_fill_boundary_params.y / dafx_fill_boundary_params.w);
frames_inv@f2 = (1.0 / dafx_fill_boundary_params.x, 1.0 / dafx_fill_boundary_params.y, 0, 0);
dafx_frame_boundary_buffer@buf = dafx_frame_boundary_buffer hlsl { StructuredBuffer dafx_frame_boundary_buffer@buf; };
+ outputTex@uav : register(dafx_frame_boundary_debug_update_outputTex_uav_no) hlsl { RWTexture2D outputTex@uav; };
}
- ENABLE_ASSERT(cs)
- hlsl(cs) {
- RWTexture2D outputTex : register(u0);
+ ENABLE_ASSERT(cs)
+ hlsl(cs) {
float4 getTextureResult(uint2 dtId)
{
if (any(dtId >= (uint2)tile_size))
diff --git a/prog/commonFx/commonFxGame/modfx/modfx_bboard_render.hlsl b/prog/commonFx/commonFxGame/modfx/modfx_bboard_render.hlsl
index 8dde2e597..79180e995 100644
--- a/prog/commonFx/commonFxGame/modfx/modfx_bboard_render.hlsl
+++ b/prog/commonFx/commonFxGame/modfx/modfx_bboard_render.hlsl
@@ -970,13 +970,19 @@ struct PsOutput
#if DAFXEX_USE_REACTIVE_MASK
float reactive : SV_Target1;
#endif
+#if MODFX_USE_DEPTH_OUTPUT
+ float depth : SV_Target1;
+#endif
};
-PsOutput encode_output(float4 color)
+PsOutput encode_output(float4 color, float depth)
{
PsOutput output;
output.color = color;
#if DAFXEX_USE_REACTIVE_MASK
output.reactive = color.a;
+#endif
+#if MODFX_USE_DEPTH_OUTPUT
+ output.depth = depth;
#endif
return output;
}
@@ -988,7 +994,7 @@ PsOutput encode_output(float4 color)
#elif MODFX_SHADER_VOLSHAPE_WBOIT
#define fx_null (WboitData)0
#else
- #define fx_null encode_output(0)
+ #define fx_null encode_output(0, 0)
#endif
bool color_discard_test(float4 src, uint flags)
@@ -1019,7 +1025,7 @@ bool color_discard_test(float4 src, uint flags)
{
#if MODFX_DEBUG_RENDER_ENABLED
- PsOutput output = encode_output(0);
+ PsOutput output = encode_output(0, 0);
#if !MODFX_RIBBON_SHAPE // TODO: add ribbon support for debug rendering
output.color.xyz = modfx_pack_hdr(calc_debug_color(input.delta.xy));
#endif
@@ -1336,7 +1342,7 @@ bool color_discard_test(float4 src, uint flags)
float3 col = wboit_accum.xyz / clamp(wboit_accum.w, 0.0000001f, 1000.f);
float a = 1.f - wboit_r;
- return encode_output(float4(col * a, a) * alpha * a);
+ return encode_output(float4(col * a, a) * alpha * a, 0);
#endif
#endif
@@ -1446,16 +1452,17 @@ bool color_discard_test(float4 src, uint flags)
emissive_part *= alpha;
float4 result = float4( emissive_part + lighting_part, alpha );
-
+ float depth = 0;
#if MODFX_SHADER_DISTORTION
float depthScene = tex2Dlod(haze_scene_depth_tex, float4(viewport_tc.xy,0, haze_scene_depth_tex_lod)).x;
float depthHaze = GET_SCREEN_POS(input.pos).z;
+ depth = depthHaze;
BRANCH
if (depthHaze <= depthScene)
{
discard;
- return encode_output(0);
+ return encode_output(0, 0);
}
float distortionMod = dafx_get_1f(0, parent_data.mods_offsets[MODFX_RMOD_DISTORTION_STRENGTH]);
@@ -1514,7 +1521,7 @@ bool color_discard_test(float4 src, uint flags)
result.xyz = modfx_pack_hdr( result.xyz );
clip_alpha( result.w );
result.w = 1.f;
- return encode_output(result);
+ return encode_output(result, depth);
#elif MODFX_SHADER_FOM
@@ -1581,7 +1588,7 @@ bool color_discard_test(float4 src, uint flags)
wboit_res.alpha = result.w * wboit_weight(cur_depth, result.w);
return wboit_res;
#else
- return encode_output(result);
+ return encode_output(result, depth);
#endif
#endif
diff --git a/prog/commonFx/commonFxGame/modfx_bboard_render.dshl b/prog/commonFx/commonFxGame/modfx_bboard_render.dshl
index 03242edc3..15e651b55 100644
--- a/prog/commonFx/commonFxGame/modfx_bboard_render.dshl
+++ b/prog/commonFx/commonFxGame/modfx_bboard_render.dshl
@@ -37,6 +37,9 @@ float haze_scene_depth_tex_lod;
define_macro_if_not_defined DAFX_USE_CLOUD_SHADOWS()
endmacro
+int dafx_modfx_g_tex_0_const_no = 10;
+int dafx_modfx_g_tex_1_const_no = 11;
+
shader dafx_modfx_bboard_render, dafx_modfx_ribbon_render, dafx_modfx_ribbon_render_side_only, dafx_modfx_bboard_render_atest, dafx_modfx_bboard_distortion, dafx_modfx_ribbon_distortion, dafx_modfx_ribbon_distortion_side_only, dafx_modfx_bboard_thermals, dafx_modfx_bboard_render_fom, dafx_modfx_bboard_rain, dafx_modfx_bboard_rain_distortion, dafx_modfx_volshape_render, dafx_modfx_volshape_thermal, dafx_modfx_volshape_wboit_render, dafx_modfx_bboard_volfog_injection
{
ENABLE_ASSERT(ps)
@@ -187,11 +190,14 @@ shader dafx_modfx_bboard_render, dafx_modfx_ribbon_render, dafx_modfx_ribbon_ren
else if ( shader == dafx_modfx_bboard_distortion || shader == dafx_modfx_ribbon_distortion || shader == dafx_modfx_ribbon_distortion_side_only || shader == dafx_modfx_bboard_rain_distortion)
{
z_write =true;
- blend_src=one;
- blend_dst=one;
+ blend_src[0]=one;
+ blend_dst[0]=one;
- blend_asrc=one;
- blend_adst=one;
+ blend_asrc[0]=one;
+ blend_adst[0]=one;
+
+ blend_src[1] = 1; blend_dst[1] = 1;
+ blend_op[1] = max; // reverse depth
(ps)
{
@@ -209,7 +215,11 @@ shader dafx_modfx_bboard_render, dafx_modfx_ribbon_render, dafx_modfx_ribbon_ren
hlsl
{
+ #undef DAFXEX_USE_REACTIVE_MASK
+ #define DAFXEX_USE_REACTIVE_MASK 0 // Disable reactive mask for distortions, since they apply after txaa
+
#define MODFX_SHADER_DISTORTION 1
+ #define MODFX_USE_DEPTH_OUTPUT 1
#undef HAS_STATIC_SHADOW
#undef MODFX_USE_SHADOW
@@ -387,14 +397,14 @@ shader dafx_modfx_bboard_render, dafx_modfx_ribbon_render, dafx_modfx_ribbon_ren
#undef FX_VS
}
- hlsl(ps)
+ (ps)
{
- Texture2D g_tex_0 : register(t10);
- SamplerState g_tex_0_samplerstate:register(s10);
-
- Texture2D g_tex_1 : register(t11);
- SamplerState g_tex_1_samplerstate:register(s11);
+ g_tex_0@smp2d : register(dafx_modfx_g_tex_0_const_no);
+ g_tex_1@smp2d : register(dafx_modfx_g_tex_1_const_no);
+ }
+ hlsl(ps)
+ {
#define FX_PS 1
#include "modfx/modfx_bboard_render.hlsl"
#undef FX_PS
@@ -450,6 +460,11 @@ shader dafx_modfx_bvh
DAFXEX_USE_ABOVE_DEPTH_PLACEMENT()
+ (vs)
+ {
+ bvh_meta_id@i1 : register(dafx_modfx_bvh_meta_id_regno);
+ }
+
hlsl(vs)
{
#define MODFX_USE_FRAMEBLEND 1
@@ -466,8 +481,6 @@ shader dafx_modfx_bvh
#include "modfx/modfx_bboard_render.hlsl"
#undef FX_VS
- int bvh_meta_id : register(c32);
-
#define ADD_SHADOW_INSTANCE 0
float4 dafx_bvh_vs(uint vertexId : SV_VertexID, uint instanceId : SV_InstanceID, uint draw_call_id : TEXCOORD0) : SV_Position
diff --git a/prog/daNetGame/camera/stub/camstub.cpp b/prog/daNetGame/camera/stub/camstub.cpp
index 4ab10efa5..e6e76bda7 100644
--- a/prog/daNetGame/camera/stub/camstub.cpp
+++ b/prog/daNetGame/camera/stub/camstub.cpp
@@ -27,6 +27,4 @@ ecs::EntityId enable_spectator_camera(const TMatrix &, int, ecs::EntityId) { ret
void reset_all_cameras() {}
ecs::EntityId get_cur_cam_entity() { return ecs::INVALID_ENTITY_ID; }
ecs::EntityId set_scene_camera_entity(ecs::EntityId) { return ecs::INVALID_ENTITY_ID; }
-CameraSetup get_active_camera_setup() { return CameraSetup(); }
-void calc_camera_values(const CameraSetup &, TMatrix &viewTm, Driver3dPerspective &, int &, int &) { viewTm = TMatrix::IDENT; }
TMatrix4 calc_active_camera_globtm() { return TMatrix4::IDENT; }
diff --git a/prog/daNetGame/dasModules/websocket/webSocket.das b/prog/daNetGame/dasModules/websocket/webSocket.das
index 51f84625f..e4afa416a 100644
--- a/prog/daNetGame/dasModules/websocket/webSocket.das
+++ b/prog/daNetGame/dasModules/websocket/webSocket.das
@@ -14,12 +14,12 @@ class WebSocket
def init_path(port : int; document_root : string) : bool
return websocket_init_path(_websocket, port, document_root)
def restore(var shared_orphan : smart_ptr&)
- _websocket <- shared_orphan
+ _websocket |> move() <| shared_orphan
let classInfo = class_info(self)
unsafe
websocket_restore(_websocket, addr(self), classInfo)
def save(var shared_orphan : smart_ptr&)
- shared_orphan <- _websocket
+ shared_orphan |> move() <| _websocket
def has_session : bool
return _websocket != null
def is_open : bool
diff --git a/prog/daNetGame/game/capsuleApproximationCollisionsES.cpp.gen.es.cpp b/prog/daNetGame/game/capsuleApproximationCollisionsES.cpp.gen.es.cpp
index 5cf4cb057..c0948a07e 100644
--- a/prog/daNetGame/game/capsuleApproximationCollisionsES.cpp.gen.es.cpp
+++ b/prog/daNetGame/game/capsuleApproximationCollisionsES.cpp.gen.es.cpp
@@ -61,7 +61,7 @@ static ecs::EntitySystemDesc capsules_collisions_es_es_desc
empty_span(),
ecs::EventSetBuilder::build(),
0
-,"render",nullptr,nullptr,"animchar_before_render_es");
+,"render",nullptr,"*");
static constexpr ecs::ComponentDesc get_attached_to_capsules_preprocess_ecs_query_comps[] =
{
//start of 1 rw components at [0]
diff --git a/prog/daNetGame/game/capsuleApproximationCollisionsES.cpp.inl b/prog/daNetGame/game/capsuleApproximationCollisionsES.cpp.inl
index 7aab41b98..c7e067e33 100644
--- a/prog/daNetGame/game/capsuleApproximationCollisionsES.cpp.inl
+++ b/prog/daNetGame/game/capsuleApproximationCollisionsES.cpp.inl
@@ -44,7 +44,7 @@ void capsules_collision_on_appear_es(const ecs::Event &,
}
ECS_TAG(render)
-ECS_AFTER(animchar_before_render_es)
+ECS_NO_ORDER
void capsules_collisions_es(const UpdateStageInfoBeforeRender &,
ecs::EntityId &slot_attach__attachedTo,
ecs::IntList &capsule_approximation_collisions_ids,
diff --git a/prog/daNetGame/game/riDestr.h b/prog/daNetGame/game/riDestr.h
index 0fd16f95f..869736a1f 100644
--- a/prog/daNetGame/game/riDestr.h
+++ b/prog/daNetGame/game/riDestr.h
@@ -1,6 +1,8 @@
// Copyright (C) Gaijin Games KFT. All rights reserved.
#pragma once
+class TMatrix;
+class TMatrix4;
namespace net
{
class IConnection;
diff --git a/prog/daNetGame/game/riDestrES.cpp.inl b/prog/daNetGame/game/riDestrES.cpp.inl
index fe1b99f79..56a29075c 100644
--- a/prog/daNetGame/game/riDestrES.cpp.inl
+++ b/prog/daNetGame/game/riDestrES.cpp.inl
@@ -1,7 +1,5 @@
// Copyright (C) Gaijin Games KFT. All rights reserved.
-#include