commit c688af1c315ebde238c299d9a8a0cdcba6e2f78a Author: 孙羽 Date: Sat Oct 21 16:53:46 2023 +0800 完成后端(虽然啥也没写) diff --git a/live2demo/App.vue b/live2demo/App.vue new file mode 100644 index 0000000..8c2b732 --- /dev/null +++ b/live2demo/App.vue @@ -0,0 +1,17 @@ + + + diff --git a/live2demo/Core/CHANGELOG.md b/live2demo/Core/CHANGELOG.md new file mode 100644 index 0000000..3ca60c4 --- /dev/null +++ b/live2demo/Core/CHANGELOG.md @@ -0,0 +1,308 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + + +## 2023-08-17 + +### Added + +* Enhance Blend Shape features. + * Please see [here](https://docs.live2d.com/en/cubism-editor-manual/blend-shape/). + +### Changed + +* Upgrade Core version to 05.00.0000. + + +## 2023-05-09 + +### Changed + +* Change the GCC version of the library for Linux from 6.5.0 to 8.3.0. + + +## 2023-03-16 + +### Fixed + +* Fix a case in which the index of the mask's drawable object was negative value for `csmGetDrawableMasks()`. +* Fix a problem in which `csmHasMocConsistency()` was returned as 0 even though the MOC3 file was in the correct format. + * This problem was occurring in some models using the blendshape weight limit settings. +* Fix a problem that could cause a crash if a MOC3 file that is not in the correct format is loaded with `csmHasMocConsistency()`. + +### Changed + +* Upgrade Core version to 04.02.0004. + + +## 2023-03-10 + +### Added + +* Add the function `csmHasMocConsistency`. + * This function verifies that the `MOC3` file is valid. + +### Changed + +* Upgrade Core version to 04.02.0003. + + +## 2023-02-21 + +### Added + +* [Web] Added classes related to `Memory`. + * Add the funciton `initializeAmountOfMemory()` to adjust the amount of memory at initialization. + + +## 2022-10-28 + +### Fixed + +* [Java] Remove unnecessary methods. + + +## 2022-10-06 + +### Added + +* [Java] Add AAR file for Android. + + +## 2022-09-08 + +### Added + +* Add the multilingual supported documents. +* Support Visual Studio 2022. + + +## 2022-08-04 + +### Fixed + +* [Web] Fix `csmGetMocVersion` function argument. + + +## 2022-07-07 + +### Added + +* Add functions + * `csmGetParameterTypes` + * `csmGetDrawableParentPartIndices` + +* Add type `csmMocVersion` and enum. This type is the return value of `csmGetMocVersion`, `csmGetLatestMocVersion`. + +### Changed + +* Upgrade Core version to 04.02.0002. + + +## 2022-06-02 + +### Changed + +* Upgrade Core version to 04.02.0001. + +### Fixed + +* Fixed a bug that caused Multiply Color / Screen Color of different objects to be applied. + + +## 2022-05-19 + +### Added + +* Support new Multiply Color / Screen Color features. +* Support new Blend Shape features. + +### Changed + +* Upgrade Core version to 04.02.0000. This upgrade is following Cubism Editor 4.2 features. + + +## 2022-02-10 + +### Added + +* [Unity] Add bitcode library(.bc) for Emscripten latest version build. + +### Changed + +* [Unity] Change the bitcode file directory location. + * emsdk latest version build bitcode file in `latest` directory. + * emsdk 1.38.48 build bitcode file in `1_38_48` directory. + + +## 2021-12-09 + +### Added + +* Add static library(.a) for Mac Catalyst. + + +## 2021-10-07 + +### Added + +* Add `x86_64` library for Android. +* Add `arm64` library for macOS. + + +## 2021-03-09 + +### Added + +* Add funtcions for Viewer. + * `csmGetParameterKeyCounts` + * `csmGetParameterKeyValues` + + +### Changed + +* Update Core version to `04.01.0000`. + + +## 2020-01-30 + +### Added + +* Add static library(.lib) for statically linking DLL. +* Add symbol file for Windows dynamic library (dll). + + +## 2019-11-19 + +### Fixed + +* Fix linking static libraries for Windows (.lib). + + +## 2019-11-14 + +### Added + +* Support Visual Studio 2019. +* Support macOS dynamic library (dylib). + +### Changed + +* Update Windows dynamic library: Use Visual Studio 2019 for building. + +### Security + +* Bundle certificate and notary ticket to macOS shared library. + + +## 2019-09-04 + +### Added + +* Support new Inverted Masking features. +* Support ARM64 architecture for Universal Windows Platform. + +### Changed + +* Upgrade Core version to 04.00.0000 (67108864). This upgrade is following Cubism Editor 4.0 features. +* Add calling convention for *Windows/x86 DLL* only. + +### Removed + +* Remove bitcode binary due to suspension of *Cubism Bindings.* + + +## 2019-04-09 + +### Added + +* Support Universal Windows Platform for Windows Store Application. + + +## 2019-01-31 + +### Added + +* Add API to get the parent part of the specified part. +* Add API to get moc3 version. + + +## 2018-12-20 + +### Added + +* [Native] Add new function: `csmGetPartParentPartIndices`. +* [Native, 3.3 Support] Support new Warp Deformer features. + +### Changed + +* Upgrade Core version to 03.03.0000 (50528256). This upgrade is following Cubism Editor 3.3 features. + + +## 2018-08-22 + +### Added + +* [Native] Add support for Neon. + + +## 2018-05-14 + +### Added + +* [Native] Add Windows **Visual C++ 2013** library. +* [Windows] Add runtime library choice `MT`, `MD`, `MTd`, `MDd`. +* [iOS] Add support for iPhone Simulator SDK. + +### Fixed + +* Fix an error occurred when linking libraries for Android `arm64-v8a`. + + +## 2017-11-17 + +### Fixed + +* Fix processing of vertex index. + + +## 2017-10-05 + +### Added + +* Provide bitcode for iOS. + + +## 2017-08-09 + +### Added + +* [Native] Add Android *arm64-v8a* ABI library. + +### Fixed + +* Fix drawing order in certain scenarios. + + +## 2017-07-12 + +### Added + +* Add experimental support for Emscripten. +* Add `CHANGELOG.md`. + +### Fixed + +* Fix access violation in certain scenarios. +* Fix update result in certain scenarios. + + +## 2017-05-02 + +### Added + +* [Native] Add experimental support for Raspberry PI. +* Add `README.md`. diff --git a/live2demo/Core/LICENSE.md b/live2demo/Core/LICENSE.md new file mode 100644 index 0000000..4139d4f --- /dev/null +++ b/live2demo/Core/LICENSE.md @@ -0,0 +1,7 @@ +## Live2D Proprietary Software License + +Live2D Cubism Core is available under Live2D Proprietary Software License. + +* [Live2D Proprietary Software License Agreement](https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html) +* [Live2D Proprietary Software 使用許諾契約書](https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_jp.html) +* [Live2D Proprietary Software 使用授权协议](https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_cn.html) diff --git a/live2demo/Core/README.ja.md b/live2demo/Core/README.ja.md new file mode 100644 index 0000000..359c71a --- /dev/null +++ b/live2demo/Core/README.ja.md @@ -0,0 +1,30 @@ +[English](README.md) / [日本語](README.ja.md) + +--- + +# Live2D Cubism Core + +このフォルダーには、JavaScriptまたはTypeScriptアプリケーションを開発するためのコアライブラリファイルが含まれています。 + + +## ファイルリスト + +### live2dcubismcore.d.ts + +このファイルには、`live2dcubismcore.js`に関するTypeScriptの型情報が含まれています。 +TypeScriptで開発する場合は、このファイルを`live2dcubismcore.js`とともに使用してください。 + +### live2dcubismcore.js + +このファイルには、CubismCoreの機能といくつかのラッパーが含まれています。 +JavaScriptで開発する場合は、このファイルを使用してください。 + +### live2dcubismcore.js.map + +このファイルは、`live2dcubismcore.d.ts`と`live2dcubismcore.js`の間のソースマップです。 +デバッグ時にこのファイルを使用します。 + +### live2dcubismcore.min.js + +このファイルは、`live2dcubismcore.js`のminify版です。 +このファイルを本番環境で使用します。 diff --git a/live2demo/Core/README.md b/live2demo/Core/README.md new file mode 100644 index 0000000..c8764e9 --- /dev/null +++ b/live2demo/Core/README.md @@ -0,0 +1,30 @@ +[English](README.md) / [日本語](README.ja.md) + +--- + +# Live2D Cubism Core + +This folder contains core library files for developing JavaScript or TypeScript applications. + + +## File List + +### live2dcubismcore.d.ts + +This file contains typescript type information about `live2dcubismcore.js`. +Use this file with `live2dcubismcore.js` when developing with TypeScript. + +### live2dcubismcore.js + +This file contains Cubism Core features and some wrapper features. +Use this file when developing with JavaScript. + +### live2dcubismcore.js.map + +This file is the source map between `live2dcubismcore.d.ts` and `live2dcubismcore.js`. +Use this file when debugging. + +### live2dcubismcore.min.js + +This file is the minified version of `live2dcubismcore.js`. +Use this file in production. diff --git a/live2demo/Core/RedistributableFiles.txt b/live2demo/Core/RedistributableFiles.txt new file mode 100644 index 0000000..daf7a73 --- /dev/null +++ b/live2demo/Core/RedistributableFiles.txt @@ -0,0 +1,6 @@ +The following is a list of files available for redistribution +under the terms of the Live2D Proprietary Software License Agreement: + +- live2dcubismcore.d.ts +- live2dcubismcore.js +- live2dcubismcore.min.js diff --git a/live2demo/Core/live2dcubismcore.d.ts b/live2demo/Core/live2dcubismcore.d.ts new file mode 100644 index 0000000..fb291fe --- /dev/null +++ b/live2demo/Core/live2dcubismcore.d.ts @@ -0,0 +1,367 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Proprietary Software license + * that can be found at https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html. + */ +declare namespace Live2DCubismCore { + /** Cubism version identifier. */ + type csmVersion = number; + /** moc3 version identifier. */ + type csmMocVersion = number; + /** Parameter type identifier. */ + type csmParameterType = number; + /** Necessary alignment for mocs (in bytes). */ + const AlignofMoc: number; + /** Necessary alignment for models (in bytes). */ + const AlignofModel: number; + /** .moc3 file version Unknown */ + const MocVersion_Unknown: number; + /** .moc3 file version 3.0.00 - 3.2.07 */ + const MocVersion_30: number; + /** .moc3 file version 3.3.00 - 3.3.03 */ + const MocVersion_33: number; + /** .moc3 file version 4.0.00 - 4.1.05 */ + const MocVersion_40: number; + /** .moc3 file version 4.2.00 - 4.2.04 */ + const MocVersion_42: number; + /** .moc3 file version 5.0.00 - */ + const MocVersion_50: number; + /** Normal Parameter. */ + const ParameterType_Normal: number; + /** Parameter for blend shape. */ + const ParameterType_BlendShape: number; + /** Log handler. + * + * @param message Null-terminated string message to log. + */ + interface csmLogFunction { + (message: string): void; + } + /** Cubism version. */ + class Version { + /** + * Queries Core version. + * + * @return Core version. + */ + static csmGetVersion(): csmVersion; + /** + * Gets Moc file supported latest version. + * + * @return Moc file latest format version. + */ + static csmGetLatestMocVersion(): csmMocVersion; + /** + * Gets Moc file format version. + * + * @param moc Moc + * + * @return csmMocVersion + */ + static csmGetMocVersion(moc: Moc, mocBytes: ArrayBuffer): csmMocVersion; + private constructor(); + } + /** Cubism logging. */ + class Logging { + private static logFunction; + /** + * Sets log handler. + * + * @param handler Handler to use. + */ + static csmSetLogFunction(handler: csmLogFunction): void; + /** + * Queries log handler. + * + * @return Log handler. + */ + static csmGetLogFunction(): csmLogFunction; + /** + * Wrap log function. + * + * @param messagePtr number + * + * @return string + */ + private static wrapLogFunction; + private constructor(); + } + /** Cubism moc. */ + class Moc { + /** + * Checks consistency of a moc. + * + * @param mocBytes Moc bytes. + * + * @returns '1' if Moc is valid; '0' otherwise. + */ + hasMocConsistency(mocBytes: ArrayBuffer): number; + /** Creates [[Moc]] from [[ArrayBuffer]]. + * + * @param buffer Array buffer + * + * @return [[Moc]] on success; [[null]] otherwise. + */ + static fromArrayBuffer(buffer: ArrayBuffer): Moc; + /** Releases instance. */ + _release(): void; + /** Native moc. */ + _ptr: number; + /** + * Initializes instance. + * + * @param mocBytes Moc bytes. + */ + private constructor(); + } + /** Cubism model. */ + class Model { + /** Parameters. */ + parameters: Parameters; + /** Parts. */ + parts: Parts; + /** Drawables. */ + drawables: Drawables; + /** Canvas information. */ + canvasinfo: CanvasInfo; + /** + * Creates [[Model]] from [[Moc]]. + * + * @param moc Moc + * + * @return [[Model]] on success; [[null]] otherwise. + */ + static fromMoc(moc: Moc): Model; + /** Updates instance. */ + update(): void; + /** Releases instance. */ + release(): void; + /** Native model. */ + _ptr: number; + /** + * Initializes instance. + * + * @param moc Moc + */ + private constructor(); + } + /** Canvas information interface. */ + class CanvasInfo { + /** Width of native model canvas. */ + CanvasWidth: number; + /** Height of native model canvas. */ + CanvasHeight: number; + /** Coordinate origin of X axis. */ + CanvasOriginX: number; + /** Coordinate origin of Y axis. */ + CanvasOriginY: number; + /** Pixels per unit of native model. */ + PixelsPerUnit: number; + /** + * Initializes instance. + * + * @param modelPtr Native model pointer. + */ + constructor(modelPtr: number); + } + /** Cubism model parameters */ + class Parameters { + /** Parameter count. */ + count: number; + /** Parameter IDs. */ + ids: Array; + /** Minimum parameter values. */ + minimumValues: Float32Array; + /** Parameter types. */ + types: Int32Array; + /** Maximum parameter values. */ + maximumValues: Float32Array; + /** Default parameter values. */ + defaultValues: Float32Array; + /** Parameter values. */ + values: Float32Array; + /** Number of key values of each parameter. */ + keyCounts: Int32Array; + /** Key values of each parameter. */ + keyValues: Array; + /** + * Initializes instance. + * + * @param modelPtr Native model. + */ + constructor(modelPtr: number); + } + /** Cubism model parts */ + class Parts { + /** Part count. */ + count: number; + /** Part IDs. */ + ids: Array; + /** Opacity values. */ + opacities: Float32Array; + /** Part's parent part indices. */ + parentIndices: Int32Array; + /** + * Initializes instance. + * + * @param modelPtr Native model. + */ + constructor(modelPtr: number); + } + /** Cubism model drawables */ + class Drawables { + /** Drawable count. */ + count: number; + /** Drawable IDs. */ + ids: Array; + /** Constant drawable flags. */ + constantFlags: Uint8Array; + /** Dynamic drawable flags. */ + dynamicFlags: Uint8Array; + /** Drawable texture indices. */ + textureIndices: Int32Array; + /** Drawable draw orders. */ + drawOrders: Int32Array; + /** Drawable render orders. */ + renderOrders: Int32Array; + /** Drawable opacities. */ + opacities: Float32Array; + /** Mask count for each drawable. */ + maskCounts: Int32Array; + /** Masks for each drawable. */ + masks: Array; + /** Number of vertices of each drawable. */ + vertexCounts: Int32Array; + /** 2D vertex position data of each drawable. */ + vertexPositions: Array; + /** 2D texture coordinate data of each drawables. */ + vertexUvs: Array; + /** Number of triangle indices for each drawable. */ + indexCounts: Int32Array; + /** Triangle index data for each drawable. */ + indices: Array; + /** Information multiply color. */ + multiplyColors: Float32Array; + /** Information Screen color. */ + screenColors: Float32Array; + /** Indices of drawables parent part. */ + parentPartIndices: Int32Array; + /** Resets all dynamic drawable flags.. */ + resetDynamicFlags(): void; + /** Native model. */ + private _modelPtr; + /** + * Initializes instance. + * + * @param modelPtr Native model. + */ + constructor(modelPtr: number); + } + /** Utility functions. */ + class Utils { + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasBlendAdditiveBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasBlendMultiplicativeBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasIsDoubleSidedBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasIsInvertedMaskBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasIsVisibleBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasVisibilityDidChangeBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasOpacityDidChangeBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasDrawOrderDidChangeBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasRenderOrderDidChangeBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasVertexPositionsDidChangeBit(bitfield: number): boolean; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + static hasBlendColorDidChangeBit(bitfield: number): boolean; + } + /** Memory functions. */ + class Memory { + /** + * HACK: + * Extend memory size allocated during module initialization. + * If the specified size is less than or equal to 16777216(byte), the default of 16 MB is allocated. + * + * @see https://github.com/emscripten-core/emscripten/blob/main/src/settings.js#L161 + * + * @param size allocated memory size [byte(s)] + */ + static initializeAmountOfMemory(size: number): void; + private constructor(); + } + /** Emscripten Cubism Core module. */ +} diff --git a/live2demo/Core/live2dcubismcore.js b/live2demo/Core/live2dcubismcore.js new file mode 100644 index 0000000..6a033db --- /dev/null +++ b/live2demo/Core/live2dcubismcore.js @@ -0,0 +1,686 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Proprietary Software license + * that can be found at https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html. + */ +var Live2DCubismCore; +(function (Live2DCubismCore) { + /** C calls. */ + var _csm = /** @class */ (function () { + function _csm() { + } + _csm.getVersion = function () { + return _em.ccall("csmGetVersion", "number", [], []); + }; + _csm.getLatestMocVersion = function () { + return _em.ccall("csmGetLatestMocVersion", "number", [], []); + }; + _csm.getMocVersion = function (moc, mocSize) { + return _em.ccall("csmGetMocVersion", "number", ["number", "number"], [moc, mocSize]); + }; + _csm.getSizeofModel = function (moc) { + return _em.ccall("csmGetSizeofModel", "number", ["number"], [moc]); + }; + _csm.reviveMocInPlace = function (memory, mocSize) { + return _em.ccall("csmReviveMocInPlace", "number", ["number", "number"], [memory, mocSize]); + }; + _csm.initializeModelInPlace = function (moc, memory, modelSize) { + return _em.ccall("csmInitializeModelInPlace", "number", ["number", "number", "number"], [moc, memory, modelSize]); + }; + _csm.hasMocConsistency = function (memory, mocSize) { + return _em.ccall("csmHasMocConsistency", "number", ["number", "number"], [memory, mocSize]); + }; + _csm.getParameterCount = function (model) { + return _em.ccall("csmGetParameterCount", "number", ["number"], [model]); + }; + _csm.getParameterIds = function (model) { + return _em.ccall("csmGetParameterIds", "number", ["number"], [model]); + }; + _csm.getParameterMinimumValues = function (model) { + return _em.ccall("csmGetParameterMinimumValues", "number", ["number"], [model]); + }; + _csm.getParameterTypes = function (model) { + return _em.ccall("csmGetParameterTypes", "number", ["number"], [model]); + }; + _csm.getParameterMaximumValues = function (model) { + return _em.ccall("csmGetParameterMaximumValues", "number", ["number"], [model]); + }; + _csm.getParameterDefaultValues = function (model) { + return _em.ccall("csmGetParameterDefaultValues", "number", ["number"], [model]); + }; + _csm.getParameterValues = function (model) { + return _em.ccall("csmGetParameterValues", "number", ["number"], [model]); + }; + _csm.getParameterKeyCounts = function (model) { + return _em.ccall("csmGetParameterKeyCounts", "number", ["number"], [model]); + }; + _csm.getParameterKeyValues = function (model) { + return _em.ccall("csmGetParameterKeyValues", "number", ["number"], [model]); + }; + _csm.getPartCount = function (model) { + return _em.ccall("csmGetPartCount", "number", ["number"], [model]); + }; + _csm.getPartIds = function (model) { + return _em.ccall("csmGetPartIds", "number", ["number"], [model]); + }; + _csm.getPartOpacities = function (model) { + return _em.ccall("csmGetPartOpacities", "number", ["number"], [model]); + }; + _csm.getPartParentPartIndices = function (model) { + return _em.ccall("csmGetPartParentPartIndices", "number", ["number"], [model]); + }; + _csm.getDrawableCount = function (model) { + return _em.ccall("csmGetDrawableCount", "number", ["number"], [model]); + }; + _csm.getDrawableIds = function (model) { + return _em.ccall("csmGetDrawableIds", "number", ["number"], [model]); + }; + _csm.getDrawableConstantFlags = function (model) { + return _em.ccall("csmGetDrawableConstantFlags", "number", ["number"], [model]); + }; + _csm.getDrawableDynamicFlags = function (model) { + return _em.ccall("csmGetDrawableDynamicFlags", "number", ["number"], [model]); + }; + _csm.getDrawableTextureIndices = function (model) { + return _em.ccall("csmGetDrawableTextureIndices", "number", ["number"], [model]); + }; + _csm.getDrawableDrawOrders = function (model) { + return _em.ccall("csmGetDrawableDrawOrders", "number", ["number"], [model]); + }; + _csm.getDrawableRenderOrders = function (model) { + return _em.ccall("csmGetDrawableRenderOrders", "number", ["number"], [model]); + }; + _csm.getDrawableOpacities = function (model) { + return _em.ccall("csmGetDrawableOpacities", "number", ["number"], [model]); + }; + _csm.getDrawableMaskCounts = function (model) { + return _em.ccall("csmGetDrawableMaskCounts", "number", ["number"], [model]); + }; + _csm.getDrawableMasks = function (model) { + return _em.ccall("csmGetDrawableMasks", "number", ["number"], [model]); + }; + _csm.getDrawableVertexCounts = function (model) { + return _em.ccall("csmGetDrawableVertexCounts", "number", ["number"], [model]); + }; + _csm.getDrawableVertexPositions = function (model) { + return _em.ccall("csmGetDrawableVertexPositions", "number", ["number"], [model]); + }; + _csm.getDrawableVertexUvs = function (model) { + return _em.ccall("csmGetDrawableVertexUvs", "number", ["number"], [model]); + }; + _csm.getDrawableIndexCounts = function (model) { + return _em.ccall("csmGetDrawableIndexCounts", "number", ["number"], [model]); + }; + _csm.getDrawableIndices = function (model) { + return _em.ccall("csmGetDrawableIndices", "number", ["number"], [model]); + }; + _csm.getDrawableMultiplyColors = function (model) { + return _em.ccall("csmGetDrawableMultiplyColors", "number", ["number"], [model]); + }; + _csm.getDrawableScreenColors = function (model) { + return _em.ccall("csmGetDrawableScreenColors", "number", ["number"], [model]); + }; + _csm.getDrawableParentPartIndices = function (model) { + return _em.ccall("csmGetDrawableParentPartIndices", "number", ["number"], [model]); + }; + _csm.mallocMoc = function (mocSize) { + return _em.ccall("csmMallocMoc", "number", ["number"], [mocSize]); + }; + _csm.mallocModelAndInitialize = function (moc) { + return _em.ccall("csmMallocModelAndInitialize", "number", ["number"], [moc]); + }; + _csm.malloc = function (size) { + return _em.ccall("csmMalloc", "number", ["number"], [size]); + }; + _csm.setLogFunction = function (handler) { + _em.ccall("csmSetLogFunction", null, ["number"], [handler]); + }; + _csm.updateModel = function (model) { + _em.ccall("csmUpdateModel", null, ["number"], [model]); + }; + _csm.readCanvasInfo = function (model, outSizeInPixels, outOriginInPixels, outPixelsPerUnit) { + _em.ccall("csmReadCanvasInfo", null, ["number", "number", "number", "number"], [model, outSizeInPixels, outOriginInPixels, outPixelsPerUnit]); + }; + _csm.resetDrawableDynamicFlags = function (model) { + _em.ccall("csmResetDrawableDynamicFlags", null, ["number"], [model]); + }; + _csm.free = function (memory) { + _em.ccall("csmFree", null, ["number"], [memory]); + }; + _csm.initializeAmountOfMemory = function (size) { + _em.ccall("csmInitializeAmountOfMemory", null, ["number"], [size]); + }; + return _csm; + }()); + /** Necessary alignment for mocs (in bytes). */ + Live2DCubismCore.AlignofMoc = 64; + /** Necessary alignment for models (in bytes). */ + Live2DCubismCore.AlignofModel = 16; + /** .moc3 file version Unknown */ + Live2DCubismCore.MocVersion_Unknown = 0; + /** .moc3 file version 3.0.00 - 3.2.07 */ + Live2DCubismCore.MocVersion_30 = 1; + /** .moc3 file version 3.3.00 - 3.3.03 */ + Live2DCubismCore.MocVersion_33 = 2; + /** .moc3 file version 4.0.00 - 4.1.05 */ + Live2DCubismCore.MocVersion_40 = 3; + /** .moc3 file version 4.2.00 - 4.2.04 */ + Live2DCubismCore.MocVersion_42 = 4; + /** .moc3 file version 5.0.00 - */ + Live2DCubismCore.MocVersion_50 = 5; + /** Normal Parameter. */ + Live2DCubismCore.ParameterType_Normal = 0; + /** Parameter for blend shape. */ + Live2DCubismCore.ParameterType_BlendShape = 1; + ; + /** Cubism version. */ + var Version = /** @class */ (function () { + function Version() { + } + /** + * Queries Core version. + * + * @return Core version. + */ + Version.csmGetVersion = function () { + return _csm.getVersion(); + }; + /** + * Gets Moc file supported latest version. + * + * @return Moc file latest format version. + */ + Version.csmGetLatestMocVersion = function () { + return _csm.getLatestMocVersion(); + }; + /** + * Gets Moc file format version. + * + * @param moc Moc + * + * @return csmMocVersion + */ + Version.csmGetMocVersion = function (moc, mocBytes) { + return _csm.getMocVersion(moc._ptr, mocBytes.byteLength); + }; + return Version; + }()); + Live2DCubismCore.Version = Version; + /** Cubism logging. */ + var Logging = /** @class */ (function () { + function Logging() { + } + /** + * Sets log handler. + * + * @param handler Handler to use. + */ + Logging.csmSetLogFunction = function (handler) { + // Cache log handler. + Logging.logFunction = handler; + // Wrap function to pointer. + var pointer = _em.addFunction(Logging.wrapLogFunction, 'vi'); + // Sets log handler. + _csm.setLogFunction(pointer); + }; + /** + * Queries log handler. + * + * @return Log handler. + */ + Logging.csmGetLogFunction = function () { + return Logging.logFunction; + }; + /** + * Wrap log function. + * + * @param messagePtr number + * + * @return string + */ + Logging.wrapLogFunction = function (messagePtr) { + // Pointer to string. + var messageStr = _em.UTF8ToString(messagePtr); + // Run log function. + Logging.logFunction(messageStr); + }; + return Logging; + }()); + Live2DCubismCore.Logging = Logging; + /** Cubism moc. */ + var Moc = /** @class */ (function () { + /** + * Initializes instance. + * + * @param mocBytes Moc bytes. + */ + function Moc(mocBytes) { + // Allocate memory. + var memory = _csm.mallocMoc(mocBytes.byteLength); + if (!memory) { + return; + } + // Initialize memory. + var destination = new Uint8Array(_em.HEAPU8.buffer, memory, mocBytes.byteLength); + destination.set(new Uint8Array(mocBytes)); + // Revive moc. + this._ptr = _csm.reviveMocInPlace(memory, mocBytes.byteLength); + if (!this._ptr) { + _csm.free(memory); + } + } + /** + * Checks consistency of a moc. + * + * @param mocBytes Moc bytes. + * + * @returns '1' if Moc is valid; '0' otherwise. + */ + Moc.prototype.hasMocConsistency = function (mocBytes) { + // Allocate memory. + var memory = _csm.mallocMoc(mocBytes.byteLength); + if (!memory) { + return; + } + // Initialize memory. + var destination = new Uint8Array(_em.HEAPU8.buffer, memory, mocBytes.byteLength); + destination.set(new Uint8Array(mocBytes)); + var hasConsistency = _csm.hasMocConsistency(memory, mocBytes.byteLength); + _csm.free(memory); + return hasConsistency; + }; + /** Creates [[Moc]] from [[ArrayBuffer]]. + * + * @param buffer Array buffer + * + * @return [[Moc]] on success; [[null]] otherwise. + */ + Moc.fromArrayBuffer = function (buffer) { + if (!buffer) { + return null; + } + var moc = new Moc(buffer); + return (moc._ptr) + ? moc + : null; + }; + /** Releases instance. */ + Moc.prototype._release = function () { + _csm.free(this._ptr); + this._ptr = 0; + }; + return Moc; + }()); + Live2DCubismCore.Moc = Moc; + /** Cubism model. */ + var Model = /** @class */ (function () { + /** + * Initializes instance. + * + * @param moc Moc + */ + function Model(moc) { + this._ptr = _csm.mallocModelAndInitialize(moc._ptr); + if (!this._ptr) { + return; + } + this.parameters = new Parameters(this._ptr); + this.parts = new Parts(this._ptr); + this.drawables = new Drawables(this._ptr); + this.canvasinfo = new CanvasInfo(this._ptr); + } + /** + * Creates [[Model]] from [[Moc]]. + * + * @param moc Moc + * + * @return [[Model]] on success; [[null]] otherwise. + */ + Model.fromMoc = function (moc) { + var model = new Model(moc); + return (model._ptr) + ? model + : null; + }; + /** Updates instance. */ + Model.prototype.update = function () { + _csm.updateModel(this._ptr); + }; + /** Releases instance. */ + Model.prototype.release = function () { + _csm.free(this._ptr); + this._ptr = 0; + }; + return Model; + }()); + Live2DCubismCore.Model = Model; + /** Canvas information interface. */ + var CanvasInfo = /** @class */ (function () { + /** + * Initializes instance. + * + * @param modelPtr Native model pointer. + */ + function CanvasInfo(modelPtr) { + if (!modelPtr) { + return; + } + // Preserve the pointer ant heap for get data throw args. + var _canvasSize_data = new Float32Array(2); + var _canvasSize_nDataBytes = _canvasSize_data.length * _canvasSize_data.BYTES_PER_ELEMENT; + var _canvasSize_dataPtr = _csm.malloc(_canvasSize_nDataBytes); + var _canvasSize_dataHeap = new Uint8Array(_em.HEAPU8.buffer, _canvasSize_dataPtr, _canvasSize_nDataBytes); + _canvasSize_dataHeap.set(new Uint8Array(_canvasSize_data.buffer)); + var _canvasOrigin_data = new Float32Array(2); + var _canvasOrigin_nDataBytes = _canvasOrigin_data.length * _canvasOrigin_data.BYTES_PER_ELEMENT; + var _canvasOrigin_dataPtr = _csm.malloc(_canvasOrigin_nDataBytes); + var _canvasOrigin_dataHeap = new Uint8Array(_em.HEAPU8.buffer, _canvasOrigin_dataPtr, _canvasOrigin_nDataBytes); + _canvasOrigin_dataHeap.set(new Uint8Array(_canvasOrigin_data.buffer)); + var _canvasPPU_data = new Float32Array(1); + var _canvasPPU_nDataBytes = _canvasPPU_data.length * _canvasPPU_data.BYTES_PER_ELEMENT; + var _canvasPPU_dataPtr = _csm.malloc(_canvasPPU_nDataBytes); + var _canvasPPU_dataHeap = new Uint8Array(_em.HEAPU8.buffer, _canvasPPU_dataPtr, _canvasPPU_nDataBytes); + _canvasPPU_dataHeap.set(new Uint8Array(_canvasPPU_data.buffer)); + // Call function and get result + _csm.readCanvasInfo(modelPtr, _canvasSize_dataHeap.byteOffset, _canvasOrigin_dataHeap.byteOffset, _canvasPPU_dataHeap.byteOffset); + _canvasSize_data = new Float32Array(_canvasSize_dataHeap.buffer, _canvasSize_dataHeap.byteOffset, _canvasSize_dataHeap.length); + _canvasOrigin_data = new Float32Array(_canvasOrigin_dataHeap.buffer, _canvasOrigin_dataHeap.byteOffset, _canvasOrigin_dataHeap.length); + _canvasPPU_data = new Float32Array(_canvasPPU_dataHeap.buffer, _canvasPPU_dataHeap.byteOffset, _canvasPPU_dataHeap.length); + this.CanvasWidth = _canvasSize_data[0]; + this.CanvasHeight = _canvasSize_data[1]; + this.CanvasOriginX = _canvasOrigin_data[0]; + this.CanvasOriginY = _canvasOrigin_data[1]; + this.PixelsPerUnit = _canvasPPU_data[0]; + // Free heap memory + _csm.free(_canvasSize_dataHeap.byteOffset); + _csm.free(_canvasOrigin_dataHeap.byteOffset); + _csm.free(_canvasPPU_dataHeap.byteOffset); + } + return CanvasInfo; + }()); + Live2DCubismCore.CanvasInfo = CanvasInfo; + /** Cubism model parameters */ + var Parameters = /** @class */ (function () { + /** + * Initializes instance. + * + * @param modelPtr Native model. + */ + function Parameters(modelPtr) { + var length = 0; + var length2 = null; + this.count = _csm.getParameterCount(modelPtr); + length = _csm.getParameterCount(modelPtr); + this.ids = new Array(length); + var _ids = new Uint32Array(_em.HEAPU32.buffer, _csm.getParameterIds(modelPtr), length); + for (var i = 0; i < _ids.length; i++) { + this.ids[i] = _em.UTF8ToString(_ids[i]); + } + length = _csm.getParameterCount(modelPtr); + this.minimumValues = new Float32Array(_em.HEAPF32.buffer, _csm.getParameterMinimumValues(modelPtr), length); + length = _csm.getParameterCount(modelPtr); + this.types = new Int32Array(_em.HEAP32.buffer, _csm.getParameterTypes(modelPtr), length); + length = _csm.getParameterCount(modelPtr); + this.maximumValues = new Float32Array(_em.HEAPF32.buffer, _csm.getParameterMaximumValues(modelPtr), length); + length = _csm.getParameterCount(modelPtr); + this.defaultValues = new Float32Array(_em.HEAPF32.buffer, _csm.getParameterDefaultValues(modelPtr), length); + length = _csm.getParameterCount(modelPtr); + this.values = new Float32Array(_em.HEAPF32.buffer, _csm.getParameterValues(modelPtr), length); + length = _csm.getParameterCount(modelPtr); + this.keyCounts = new Int32Array(_em.HEAP32.buffer, _csm.getParameterKeyCounts(modelPtr), length); + length = _csm.getParameterCount(modelPtr); + length2 = new Int32Array(_em.HEAP32.buffer, _csm.getParameterKeyCounts(modelPtr), length); + this.keyValues = new Array(length); + var _keyValues = new Uint32Array(_em.HEAPU32.buffer, _csm.getParameterKeyValues(modelPtr), length); + for (var i = 0; i < _keyValues.length; i++) { + this.keyValues[i] = new Float32Array(_em.HEAPF32.buffer, _keyValues[i], length2[i]); + } + } + return Parameters; + }()); + Live2DCubismCore.Parameters = Parameters; + /** Cubism model parts */ + var Parts = /** @class */ (function () { + /** + * Initializes instance. + * + * @param modelPtr Native model. + */ + function Parts(modelPtr) { + var length = 0; + this.count = _csm.getPartCount(modelPtr); + length = _csm.getPartCount(modelPtr); + this.ids = new Array(length); + var _ids = new Uint32Array(_em.HEAPU32.buffer, _csm.getPartIds(modelPtr), length); + for (var i = 0; i < _ids.length; i++) { + this.ids[i] = _em.UTF8ToString(_ids[i]); + } + length = _csm.getPartCount(modelPtr); + this.opacities = new Float32Array(_em.HEAPF32.buffer, _csm.getPartOpacities(modelPtr), length); + length = _csm.getPartCount(modelPtr); + this.parentIndices = new Int32Array(_em.HEAP32.buffer, _csm.getPartParentPartIndices(modelPtr), length); + } + return Parts; + }()); + Live2DCubismCore.Parts = Parts; + /** Cubism model drawables */ + var Drawables = /** @class */ (function () { + /** + * Initializes instance. + * + * @param modelPtr Native model. + */ + function Drawables(modelPtr) { + this._modelPtr = modelPtr; + var length = 0; + var length2 = null; + this.count = _csm.getDrawableCount(modelPtr); + length = _csm.getDrawableCount(modelPtr); + this.ids = new Array(length); + var _ids = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableIds(modelPtr), length); + for (var i = 0; i < _ids.length; i++) { + this.ids[i] = _em.UTF8ToString(_ids[i]); + } + length = _csm.getDrawableCount(modelPtr); + this.constantFlags = new Uint8Array(_em.HEAPU8.buffer, _csm.getDrawableConstantFlags(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + this.dynamicFlags = new Uint8Array(_em.HEAPU8.buffer, _csm.getDrawableDynamicFlags(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + this.textureIndices = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableTextureIndices(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + this.drawOrders = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableDrawOrders(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + this.renderOrders = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableRenderOrders(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + this.opacities = new Float32Array(_em.HEAPF32.buffer, _csm.getDrawableOpacities(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + this.maskCounts = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableMaskCounts(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + this.vertexCounts = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableVertexCounts(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + this.indexCounts = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableIndexCounts(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + this.multiplyColors = new Float32Array(_em.HEAPF32.buffer, _csm.getDrawableMultiplyColors(modelPtr), length * 4); + length = _csm.getDrawableCount(modelPtr); + this.screenColors = new Float32Array(_em.HEAPF32.buffer, _csm.getDrawableScreenColors(modelPtr), length * 4); + length = _csm.getDrawableCount(modelPtr); + this.parentPartIndices = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableParentPartIndices(modelPtr), length); + length = _csm.getDrawableCount(modelPtr); + length2 = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableMaskCounts(modelPtr), length); + this.masks = new Array(length); + var _masks = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableMasks(modelPtr), length); + for (var i = 0; i < _masks.length; i++) { + this.masks[i] = new Int32Array(_em.HEAP32.buffer, _masks[i], length2[i]); + } + length = _csm.getDrawableCount(modelPtr); + length2 = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableVertexCounts(modelPtr), length); + this.vertexPositions = new Array(length); + var _vertexPositions = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableVertexPositions(modelPtr), length); + for (var i = 0; i < _vertexPositions.length; i++) { + this.vertexPositions[i] = new Float32Array(_em.HEAPF32.buffer, _vertexPositions[i], length2[i] * 2); + } + length = _csm.getDrawableCount(modelPtr); + length2 = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableVertexCounts(modelPtr), length); + this.vertexUvs = new Array(length); + var _vertexUvs = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableVertexUvs(modelPtr), length); + for (var i = 0; i < _vertexUvs.length; i++) { + this.vertexUvs[i] = new Float32Array(_em.HEAPF32.buffer, _vertexUvs[i], length2[i] * 2); + } + length = _csm.getDrawableCount(modelPtr); + length2 = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableIndexCounts(modelPtr), length); + this.indices = new Array(length); + var _indices = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableIndices(modelPtr), length); + for (var i = 0; i < _indices.length; i++) { + this.indices[i] = new Uint16Array(_em.HEAPU16.buffer, _indices[i], length2[i]); + } + } + /** Resets all dynamic drawable flags.. */ + Drawables.prototype.resetDynamicFlags = function () { + _csm.resetDrawableDynamicFlags(this._modelPtr); + }; + return Drawables; + }()); + Live2DCubismCore.Drawables = Drawables; + /** Utility functions. */ + var Utils = /** @class */ (function () { + function Utils() { + } + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasBlendAdditiveBit = function (bitfield) { + return (bitfield & (1 << 0)) == (1 << 0); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasBlendMultiplicativeBit = function (bitfield) { + return (bitfield & (1 << 1)) == (1 << 1); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasIsDoubleSidedBit = function (bitfield) { + return (bitfield & (1 << 2)) == (1 << 2); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasIsInvertedMaskBit = function (bitfield) { + return (bitfield & (1 << 3)) == (1 << 3); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasIsVisibleBit = function (bitfield) { + return (bitfield & (1 << 0)) == (1 << 0); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasVisibilityDidChangeBit = function (bitfield) { + return (bitfield & (1 << 1)) == (1 << 1); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasOpacityDidChangeBit = function (bitfield) { + return (bitfield & (1 << 2)) == (1 << 2); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasDrawOrderDidChangeBit = function (bitfield) { + return (bitfield & (1 << 3)) == (1 << 3); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasRenderOrderDidChangeBit = function (bitfield) { + return (bitfield & (1 << 4)) == (1 << 4); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasVertexPositionsDidChangeBit = function (bitfield) { + return (bitfield & (1 << 5)) == (1 << 5); + }; + /** + * Checks whether flag is set in bitfield. + * + * @param bitfield Bitfield to query against. + * + * @return [[true]] if bit set; [[false]] otherwise + */ + Utils.hasBlendColorDidChangeBit = function (bitfield) { + return (bitfield & (1 << 6)) == (1 << 6); + }; + return Utils; + }()); + Live2DCubismCore.Utils = Utils; + /** Memory functions. */ + var Memory = /** @class */ (function () { + function Memory() { + } + /** + * HACK: + * Extend memory size allocated during module initialization. + * If the specified size is less than or equal to 16777216(byte), the default of 16 MB is allocated. + * + * @see https://github.com/emscripten-core/emscripten/blob/main/src/settings.js#L161 + * + * @param size allocated memory size [byte(s)] + */ + Memory.initializeAmountOfMemory = function (size) { + if (size > 16777216) { + _csm.initializeAmountOfMemory(size); + } + }; + return Memory; + }()); + Live2DCubismCore.Memory = Memory; + /** Emscripten Cubism Core module. */ + var _em_module=function(){var _scriptDir="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(_em_module){_em_module=_em_module||{};var b,n,l={};for(n in b=b||(void 0!==_em_module?_em_module:{}))b.hasOwnProperty(n)&&(l[n]=b[n]);var x,y,v,w,p=!1,q=!1,r=!1,p="object"==typeof window,q="function"==typeof importScripts,r="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node&&!p&&!q,t=!p&&!r&&!q,u="",D=(r?(u=__dirname+"/",v=function(a,c){var d=z(a);return d||(x=x||require("fs"),a=(y=y||require("path")).normalize(a),d=x.readFileSync(a)),c?d:d.toString()},w=function(a){return assert((a=(a=v(a,!0)).buffer?a:new Uint8Array(a)).buffer),a},1>2]+(Ln<<5)|0)>>2],Pn=q[a+60>>2]+w(Wn,24)|0,Ln=(ko=q[Pn+8>>2])+-1|0,xo=(qo=q[Pn+4>>2])+-1|0,yo=uo=(Wn=q[q[a+152>>2]+(Wn<<2)>>2])+(ko<<3)|0,zo=vo=Wn+((to=w(qo,lo=ko+1|0))<<3)|0,Ao=wo=Wn+(ko+to<<3)|0,Io=q[Pn+12>>2],ro=x(0|qo),so=x(0|ko),a=0;;)if(Vn=u[(Pn=(oo=a<<3)+Mn|0)+4>>2],Rn=x(Vn*ro),Xn=u[Pn>>2],Qn=x(Xn*so),Pn=Vn>=x(1),Rn=!(Vn=x(1)|Xn>2],Bo=u[Wn+4>>2],Yn=x(ao-Bo),Co=u[4+yo>>2],Do=u[4+zo>>2],Zn=x(Co-Do),bo=x(x(Yn-Zn)*x(.5)),Eo=u[wo>>2],Fo=u[Wn>>2],_n=x(Eo-Fo),Go=u[uo>>2],Ho=u[vo>>2],$n=x(Go-Ho),co=x(x(_n-$n)*x(.5)),Zn=x(x(Zn+Yn)*x(.5)),$n=x(x($n+_n)*x(.5)),Jo=1,Yn=x(x(x(x(x(Bo+Co)+Do)+ao)*x(.25))-x(Yn*x(.5))),_n=x(x(x(x(x(Fo+Go)+Ho)+Eo)*x(.25))-x(_n*x(.5)))),Vnx(-2)^1|(Xnx(-2)^1)?(u[Nn+oo>>2]=x(Vn*co)+x(x(Xn*$n)+_n),Qn=x(Vn*bo),x(x(Xn*Zn)+Yn)):(Xn<=x(0)?Vn<=x(0)?(Un=x(x(Vn+x(2))*x(.5)),Tn=x(x(Xn+x(2))*x(.5)),Qn=x(bo+bo),mo=x(Yn-Qn),Rn=x(co+co),no=x(_n-Rn),io=x(Yn-x(Zn+Zn)),eo=x(io-Qn),jo=x(_n-x($n+$n)),fo=x(jo-Rn),go=u[Wn+4>>2],ho=u[Wn>>2]):Pn?(Qn=x(bo*x(3)),Rn=x(Yn-x(Zn+Zn)),io=x(Qn+Rn),eo=x(co*x(3)),fo=x(_n-x($n+$n)),jo=x(eo+fo),Un=x(x(Vn+x(-1))*x(.5)),Tn=x(x(Xn+x(2))*x(.5)),go=x(Qn+Yn),ho=x(eo+_n),eo=x(bo+Rn),fo=x(co+fo),mo=u[4+zo>>2],no=u[vo>>2]):(Qn=x(Yn-x(Zn+Zn)),Pn=xo,Sn=x(y(Rn))>2],no=u[Pn>>2],Pn=Wn+(w(Sn,lo)<<3)|0,go=u[Pn+4>>2],ho=u[Pn>>2]):Xn>=x(1)?Vn<=x(0)?(Un=x(x(Vn+x(2))*x(.5)),Tn=x(x(Xn+x(-1))*x(.5)),Qn=x(bo+bo),eo=x(x(Zn+Yn)-Qn),Rn=x(co+co),fo=x(x($n+_n)-Rn),go=x(x(Zn*x(3))+Yn),mo=x(go-Qn),ho=x(x($n*x(3))+_n),no=x(ho-Rn),io=u[4+yo>>2],jo=u[uo>>2]):Pn?(Qn=x(bo*x(3)),io=x(Qn+x(Zn+Yn)),Rn=x(co*x(3)),jo=x(Rn+x($n+_n)),ao=Qn,Qn=x(x(Zn*x(3))+Yn),go=x(ao+Qn),ao=Rn,Rn=x(x($n*x(3))+_n),ho=x(ao+Rn),Un=x(x(Vn+x(-1))*x(.5)),Tn=x(x(Xn+x(-1))*x(.5)),mo=x(bo+Qn),no=x(co+Rn),eo=u[4+Ao>>2],fo=u[wo>>2]):(Qn=x(x(Zn*x(3))+Yn),Pn=xo,Sn=x(y(Rn))>2],fo=u[Pn>>2],Pn=Wn+(w(Sn,lo)+ko<<3)|0,io=u[Pn+4>>2],jo=u[Pn>>2]):Vn<=x(0)?(Un=x(x(Vn+x(2))*x(.5)),Pn=Ln,Sn=x(y(Rn=Qn))>2],jo=u[Pn>>2],go=u[(Pn=Wn+(Sn<<3)|0)+4>>2],ho=u[Pn>>2]):Pn?(ao=Rn=x(bo*x(3)),Pn=Ln,Sn=x(y(Qn))>2],fo=u[Pn>>2],mo=u[(Pn=Wn+(Sn+to<<3)|0)+4>>2],no=u[Pn>>2]):(v[16+po>>3]=Vn,q[po>>2]=a,v[8+po>>3]=Xn,Y(4,1107,po)),x(Tn+Un)<=x(1)?(u[Nn+oo>>2]=x(fo+x(x(no-fo)*Tn))+x(x(jo-fo)*Un),Qn=x(eo+x(x(mo-eo)*Tn)),x(x(io-eo)*Un)):(Qn=x(x(1)-Tn),Rn=x(x(1)-Un),u[Nn+oo>>2]=x(ho+x(x(jo-ho)*Qn))+x(x(no-ho)*Rn),Qn=x(go+x(x(io-go)*Qn)),x(x(mo-go)*Rn)))):(Pn=x(y(ao=Rn))>2]=x(x(x(Qn*x(Rn*u[Sn>>2]))+x(Qn*x(Tn*u[Sn+8>>2])))+x(Un*x(Rn*u[Pn>>2])))+x(Un*x(Tn*u[Pn+8>>2])),Qn=x(x(x(Qn*x(Rn*u[Sn+4>>2]))+x(Qn*x(Tn*u[Sn+12>>2])))+x(Un*x(Rn*u[Pn+4>>2]))),x(Un*x(Tn*u[Pn+12>>2]))):x(Tn+Un)<=x(1)?(Qn=x(x(x(1)-Tn)-Un),Sn=Wn+(Pn<<3)|0,Pn=Wn+(Pn+lo<<3)|0,u[Nn+oo>>2]=x(x(Qn*u[Sn>>2])+x(Tn*u[Sn+8>>2]))+x(Un*u[Pn>>2]),Qn=x(x(Qn*u[Sn+4>>2])+x(Tn*u[Sn+12>>2])),x(Un*u[Pn+4>>2])):(Qn=x(x(Tn+x(-1))+Un),Sn=Wn+(Pn+lo<<3)|0,Rn=x(x(1)-Tn),Vn=x(x(1)-Un),Pn=Wn+(Pn<<3)|0,u[Nn+oo>>2]=x(x(Qn*u[Sn+8>>2])+x(Rn*u[Sn>>2]))+x(Vn*u[Pn+8>>2]),Qn=x(x(Qn*u[Sn+12>>2])+x(Rn*u[Sn+4>>2])),x(Vn*u[Pn+12>>2]))),u[4+(Nn+oo|0)>>2]=Qn+Rn,(0|On)==(0|(a=a+1|0)))break;L=32+po|0},n[2]=function(a,mh){a|=0,mh|=0;var Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=x(0),Jh=0,Kh=0,Mh=(x(0),0),Nh=0,Gh=q[a+320>>2],Dh=q[a+316>>2],Hh=q[a+308>>2];-1==(0|(Eh=q[(Fh=Hh+(mh<<5)|0)+8>>2]))?(q[(Nh=Dh)+(Dh=mh<<2)>>2]=q[q[a+148>>2]+(q[Fh+16>>2]<<2)>>2],q[Dh+Gh>>2]=1065353216):(Jh=q[Fh+16>>2],Kh=q[q[a+152>>2]+(Jh<<2)>>2],n[q[24+(Hh+(Eh<<5)|0)>>2]](a,Eh,Kh,Kh,q[16+(q[a+60>>2]+w(Jh,24)|0)>>2]),Ih=u[q[a+148>>2]+(q[Fh+16>>2]<<2)>>2],Fh=q[Fh+8>>2]<<2,u[(Eh=mh<<2)+Dh>>2]=Ih*u[Fh+Dh>>2],q[Eh+Gh>>2]=q[Fh+Gh>>2]),4<=r[q[a>>2]+4|0]&&(Gh=mh<<2,Dh=q[a+308>>2]+(mh<<5)|0,Eh=q[Dh+16>>2]<<2,Fh=q[a+328>>2],mh=q[a+324>>2],-1==(0|(Hh=q[Dh+8>>2]))?(Hh=q[a+156>>2],q[(Dh=Gh<<2)+mh>>2]=q[Hh+(Eh<<=2)>>2],q[(Jh=4|Dh)+mh>>2]=q[(Kh=4|Eh)+Hh>>2],q[(Mh=8|Dh)+mh>>2]=q[Hh+(Nh=8|Eh)>>2],q[mh+((Gh|=3)<<2)>>2]=1065353216,a=q[a+160>>2],q[Dh+Fh>>2]=q[a+Eh>>2],q[Fh+Jh>>2]=q[a+Kh>>2],q[Fh+Mh>>2]=q[a+Nh>>2]):(Eh=(Kh=Eh<<2)+q[a+156>>2]|0,u[(Dh=(Jh=Gh<<2)+mh|0)>>2]=u[Eh>>2]*u[(Hh=(Mh=Hh<<4)+mh|0)>>2],u[Dh+4>>2]=u[Eh+4>>2]*u[Hh+4>>2],u[Dh+8>>2]=u[Eh+8>>2]*u[Hh+8>>2],q[mh+((Gh|=3)<<2)>>2]=1065353216,a=Kh+q[a+160>>2]|0,Nh=u[a>>2],Ih=u[(Dh=Fh+Mh|0)>>2],u[(mh=Fh+Jh|0)>>2]=x(Nh+Ih)-x(Nh*Ih),Nh=u[a+4>>2],Ih=u[Dh+4>>2],u[mh+4>>2]=x(Nh+Ih)-x(Nh*Ih),Nh=u[a+8>>2],Ih=u[Dh+8>>2],u[mh+8>>2]=x(Nh+Ih)-x(Nh*Ih)),q[Fh+(Gh<<2)>>2]=1065353216)},n[3]=function(a,Sm,un,xn,yn){a|=0,Sm|=0,un|=0,xn|=0,yn|=0;var Dn,En,Fn,Hn,In,zn=0,zn=(x(0),x(0),x(0),x(0),x(0),x(0),x(0),x(0),(Sm=q[16+(q[a+308>>2]+(Sm<<5)|0)>>2])<<2),Bn=function(a){var El,Hl,Fl,Dl=x(0),Gl=0;L=Fl=L-16|0,j(a);a:if((El=2147483647&(Gl=b[0]))>>>0<=1061752794)Dl=x(1),El>>>0<964689920||(Dl=ba(+a));else if(El>>>0<=1081824209)Hl=+a,Dl=1075235812<=El>>>0?x(-ba(((0|Gl)<0?3.141592653589793:-3.141592653589793)+Hl)):aa((0|Gl)<=-1?1.5707963267948966+Hl:1.5707963267948966-Hl);else if(El>>>0<=1088565717)Dl=1085271520<=El>>>0?ba(+a+((0|Gl)<0?6.283185307179586:-6.283185307179586)):aa((0|Gl)<=-1?-4.71238898038469-+a:+a-4.71238898038469);else if(Dl=x(a-a),!(2139095040<=El>>>0))if((El=3&Da(a,8+Fl|0))>>>0<=2){b:switch(El-1|0){default:Dl=ba(v[8+Fl>>3]);break a;case 0:Dl=aa(-v[8+Fl>>3]);break a;case 1:break b}Dl=x(-ba(v[8+Fl>>3]))}else Dl=aa(v[8+Fl>>3]);return L=16+Fl|0,a=Dl}(An=x(x(x(u[4+(q[a+168>>2]+w(Sm,12)|0)>>2]+u[zn+q[a+284>>2]>>2])*x(3.1415927410125732))/x(180))),Cn=u[zn+q[a+272>>2]>>2],Gn=q[zn+q[a+292>>2]>>2],An=function(a){var Vk,Al,Bl=0,Cl=0;L=Al=L-16|0,j(a);a:if((Vk=2147483647&(Cl=b[0]))>>>0<=1061752794)Vk>>>0<964689920||(a=aa(+a));else if(Vk>>>0<=1081824209)Bl=+a,a=Vk>>>0<=1075235811?(0|Cl)<=-1?x(-ba(Bl+1.5707963267948966)):ba(Bl+-1.5707963267948966):aa(-(((0|Cl)<0?3.141592653589793:-3.141592653589793)+Bl));else if(Vk>>>0<=1088565717)Bl=+a,a=Vk>>>0<=1085271519?(0|Cl)<=-1?ba(Bl+4.71238898038469):x(-ba(Bl+-4.71238898038469)):aa(((0|Cl)<0?6.283185307179586:-6.283185307179586)+Bl);else if(2139095040<=Vk>>>0)a=x(a-a);else if((Vk=3&Da(a,8+Al|0))>>>0<=2){b:switch(Vk-1|0){default:a=aa(v[8+Al>>3]);break a;case 0:a=ba(v[8+Al>>3]);break a;case 1:break b}a=aa(-v[8+Al>>3])}else a=x(-ba(v[8+Al>>3]));return L=16+Al|0,a}(An);if((Sm=0)<(0|yn))for(Bn=x(Cn*Bn),En=x(Gn?-1:1),Hn=x(Bn*En),Dn=q[zn+q[a+288>>2]>>2]?x(-1):x(1),In=x(x(Cn*An)*Dn),Bn=x(Bn*Dn),Cn=x(x(Cn*x(-An))*En),An=u[zn+q[a+280>>2]>>2],En=u[zn+q[a+276>>2]>>2];;)if(zn=(a=Sm<<3)+xn|0,Dn=u[(a=a+un|0)>>2],Fn=u[a+4>>2],u[zn+4>>2]=An+x(x(In*Dn)+x(Hn*Fn)),u[zn>>2]=En+x(x(Bn*Dn)+x(Cn*Fn)),(0|yn)==(0|(Sm=Sm+1|0)))break},n[4]=function(a,mh){a|=0,mh|=0;var yh,zh,Ah,Bh,Ch,nh,oh=0,ph=0,qh=0,rh=x(0),sh=0,th=0,uh=x(0),vh=0,wh=0,xh=0;if(x(0),x(0),x(0),x(0),L=nh=L+-64|0,vh=q[a+320>>2],wh=q[a+316>>2],ph=q[a+308>>2],-1==(0|(sh=q[(qh=ph+(mh<<5)|0)+8>>2])))oh=q[qh+16>>2]<<2,q[(ph=mh<<2)+wh>>2]=q[oh+q[a+268>>2]>>2],q[ph+vh>>2]=q[oh+q[a+272>>2]>>2];else{oh=q[qh+16>>2]<<2,xh=q[oh+q[a+276>>2]>>2],q[24+nh>>2]=xh,oh=q[oh+q[a+280>>2]>>2],q[28+nh>>2]=oh,q[16+nh>>2]=0,zh=1==q[(th=ph+(sh<<5)|0)+12>>2]?x(-10):x(-.10000000149011612),u[20+nh>>2]=zh,q[60+nh>>2]=oh,q[56+nh>>2]=xh,n[q[th+24>>2]](a,sh,56+nh|0,48+nh|0,1),rh=x(1),ph=9;b:{for(;;){if(oh=ph,uh=x(rh*x(0)),u[32+nh>>2]=uh+u[56+nh>>2],yh=x(zh*rh),u[36+nh>>2]=yh+u[60+nh>>2],n[q[th+24>>2]](a,sh,32+nh|0,40+nh|0,1),Ah=x(u[44+nh>>2]-u[52+nh>>2]),u[44+nh>>2]=Ah,Bh=x(u[40+nh>>2]-u[48+nh>>2]),u[40+nh>>2]=Bh,Ah!=x(0)||Bh!=x(0)){ph=q[44+nh>>2],q[8+nh>>2]=q[40+nh>>2],q[12+nh>>2]=ph;break b}if(u[32+nh>>2]=u[56+nh>>2]-uh,u[36+nh>>2]=u[60+nh>>2]-yh,n[q[th+24>>2]](a,sh,32+nh|0,40+nh|0,1),uh=x(u[40+nh>>2]-u[48+nh>>2]),u[40+nh>>2]=uh,yh=x(u[44+nh>>2]-u[52+nh>>2]),(u[44+nh>>2]=yh)!=x(0)||uh!=x(0)){u[12+nh>>2]=-yh,u[8+nh>>2]=-uh;break b}if(ph=oh+-1|0,rh=x(rh*x(.10000000149011612)),!oh)break}Y(3,1311,0)}rh=function(a,ji){var ki=x(0);if((ki=x(Ba(u[a+4>>2],u[a>>2])-Ba(u[ji+4>>2],u[ji>>2])))x(3.1415927410125732))for(;;)if(!((ki=x(ki+x(-6.2831854820251465)))>x(3.1415927410125732)))break;return ki}(16+nh|0,8+nh|0),n[q[th+24>>2]](a,q[qh+8>>2],24+nh|0,24+nh|0,1),ph=q[qh+16>>2]<<2,q[ph+q[a+276>>2]>>2]=q[24+nh>>2],q[ph+q[a+280>>2]>>2]=q[28+nh>>2],oh=ph+q[a+284>>2]|0,u[oh>>2]=u[oh>>2]+x(x(rh*x(-180))/x(3.1415927410125732)),qh=q[qh+8>>2]<<2,u[(oh=mh<<2)+wh>>2]=u[ph+q[a+268>>2]>>2]*u[qh+wh>>2],ph=ph+q[a+272>>2]|0,rh=x(u[ph>>2]*u[qh+vh>>2]),u[oh+vh>>2]=rh,u[ph>>2]=rh}4<=r[q[a>>2]+4|0]&&(oh=mh<<2,qh=q[a+308>>2]+(mh<<5)|0,sh=q[qh+16>>2]<<2,ph=q[a+328>>2],mh=q[a+324>>2],-1==(0|(th=q[qh+8>>2]))?(th=q[a+296>>2],q[(qh=oh<<2)+mh>>2]=q[th+(sh<<=2)>>2],q[(vh=4|qh)+mh>>2]=q[(wh=4|sh)+th>>2],q[(xh=8|qh)+mh>>2]=q[th+(Ch=8|sh)>>2],q[mh+((oh|=3)<<2)>>2]=1065353216,a=q[a+300>>2],q[ph+qh>>2]=q[a+sh>>2],q[ph+vh>>2]=q[a+wh>>2],q[ph+xh>>2]=q[a+Ch>>2]):(sh=(wh=sh<<2)+q[a+296>>2]|0,u[(qh=(vh=oh<<2)+mh|0)>>2]=u[sh>>2]*u[(th=(xh=th<<4)+mh|0)>>2],u[qh+4>>2]=u[sh+4>>2]*u[th+4>>2],u[qh+8>>2]=u[sh+8>>2]*u[th+8>>2],q[mh+((oh|=3)<<2)>>2]=1065353216,a=wh+q[a+300>>2]|0,rh=u[a>>2],uh=u[(qh=ph+xh|0)>>2],u[(mh=ph+vh|0)>>2]=x(rh+uh)-x(rh*uh),rh=u[a+4>>2],uh=u[qh+4>>2],u[mh+4>>2]=x(rh+uh)-x(rh*uh),rh=u[a+8>>2],uh=u[qh+8>>2],u[mh+8>>2]=x(rh+uh)-x(rh*uh)),q[ph+(oh<<2)>>2]=1065353216),L=nh+64|0},n[5]=function(a,Vk){return a|=0,Vk|=0,x(0),x(0),0|((a=u[a>>2])<(Vk=u[Vk>>2])?-1:Vk>2])))for(_j=q[a+12>>2],Zj=q[a+20>>2];;)if(u[(Wj=Vj<<2)+_j>>2]=u[vj+Wj>>2]*u[Wj+Zj>>2],!((0|(Vj=Vj+1|0))<(0|Yj)))break;if(!((0|(Yj=q[a>>2]))<1))if(_j=q[a+4>>2],yj)for(Wj=vj=0;;){if(q[yj>>2]){if((0|(Vj=q[(Zj=vj<<2)+q[a+16>>2]>>2]))<1)Xj=x(0);else for($j=Vj+Wj|0,ak=q[a+12>>2],Xj=x(0),Vj=Wj;;)if(Xj=x(Xj+u[ak+(Vj<<2)>>2]),!((0|(Vj=Vj+1|0))<(0|$j)))break;u[xj+Zj>>2]=Xj}if(yj=yj+4|0,Wj=q[_j+(vj<<2)>>2]+Wj|0,!((0|(vj=vj+1|0))<(0|Yj)))break}else for(Zj=q[a+16>>2],vj=yj=0;;){if((0|(Vj=q[(Wj=yj<<2)+Zj>>2]))<=0)Xj=x(0);else for($j=vj+Vj|0,ak=q[a+12>>2],Xj=x(0),Vj=vj;;)if(Xj=x(Xj+u[ak+(Vj<<2)>>2]),!((0|(Vj=Vj+1|0))<(0|$j)))break;if(u[xj+Wj>>2]=Xj,vj=q[Wj+_j>>2]+vj|0,!((0|(yj=yj+1|0))<(0|Yj)))break}},n[7]=function(a,vj,xj,yj){a|=0,vj|=0,xj|=0,yj|=0;var zj=0,Aj=x(0),Qj=0,Rj=0,Sj=0,Tj=0,Uj=0;if(1<=(0|(Tj=q[a+8>>2])))for(Rj=q[a+12>>2],Sj=q[a+20>>2];;)if(u[(Qj=zj<<2)+Rj>>2]=u[vj+Qj>>2]*u[Qj+Sj>>2],!((0|(zj=zj+1|0))<(0|Tj)))break;if(!((0|(zj=q[a>>2]))<1))if(Tj=q[a+4>>2],yj)for(Qj=vj=0;;){if(q[yj>>2]){if((0|(zj=q[(Rj=vj<<2)+q[a+16>>2]>>2]))<1)Aj=x(0);else for(Sj=zj+Qj|0,Uj=q[a+12>>2],Aj=x(0),zj=Qj;;)if(Aj=x(Aj+u[Uj+(zj<<2)>>2]),!((0|(zj=zj+1|0))<(0|Sj)))break;zj=xj+Rj|0,Aj=x(Aj+x(.0010000000474974513)),Rj=x(y(Aj))>2]=Rj,zj=q[a>>2]}if(yj=yj+4|0,Qj=q[Tj+(vj<<2)>>2]+Qj|0,!((0|(vj=vj+1|0))<(0|zj)))break}else for(Rj=q[a+16>>2],vj=yj=0;;){if((0|(zj=q[(Qj=yj<<2)+Rj>>2]))<=0)Aj=x(0);else for(Sj=vj+zj|0,Uj=q[a+12>>2],Aj=x(0),zj=vj;;)if(Aj=x(Aj+u[Uj+(zj<<2)>>2]),!((0|(zj=zj+1|0))<(0|Sj)))break;if(zj=xj+Qj|0,Aj=x(Aj+x(.0010000000474974513)),Sj=x(y(Aj))>2]=Sj,vj=q[Qj+Tj>>2]+vj|0,!((0|(yj=yj+1|0))>2]))break}},n[8]=function(a,vj,xj,yj,zj,Aj){a|=0,vj|=0,xj|=0,yj|=0,zj|=0,Aj|=0;var Oj,Pj,Bj=0,Cj=0,Dj=0,Ej=0,Fj=0,Gj=0,Hj=0,Ij=0,Kj=0,Lj=0,Mj=x(0),Nj=0,Jj=q[a>>2];if(!((0|Jj)<1))if(Oj=zj<<2,Pj=q[a+4>>2],Aj)for(;;){if(q[Aj>>2]&&(Dj=q[(Bj=Ej<<2)+q[a+16>>2]>>2],Hj=q[xj+Bj>>2],Cj=q[yj+Bj>>2],(Bj=(0|(Ij=w(Cj,zj)))<1)||ca(Hj,0,w(Cj,Oj)),!(Bj|(0|Dj)<1)))for(Kj=Dj+Gj|0,Lj=q[a+20>>2],Bj=Gj;;){for(Mj=u[(Cj=Bj<<2)+Lj>>2],Nj=q[vj+Cj>>2],Fj=0;;)if(u[(Cj=(Dj=Fj<<2)+Hj|0)>>2]=u[Cj>>2]+x(Mj*u[Dj+Nj>>2]),(0|Ij)==(0|(Fj=Fj+1|0)))break;if(!((0|(Bj=Bj+1|0))<(0|Kj)))break}if(Aj=Aj+4|0,Gj=q[(Ej<<2)+Pj>>2]+Gj|0,!((0|(Ej=Ej+1|0))<(0|Jj)))break}else for(Aj=0;;){if(Dj=q[(Ej=Aj<<2)+q[a+16>>2]>>2],Hj=q[xj+Ej>>2],Cj=q[yj+Ej>>2],(Bj=(0|(Ij=w(Cj,zj)))<1)||ca(Hj,0,w(Cj,Oj)),!(Bj|(0|Dj)<=0))for(Kj=Dj+Gj|0,Lj=q[a+20>>2],Bj=Gj;;){for(Mj=u[(Cj=Bj<<2)+Lj>>2],Nj=q[vj+Cj>>2],Fj=0;;)if(u[(Cj=(Dj=Fj<<2)+Hj|0)>>2]=u[Cj>>2]+x(Mj*u[Dj+Nj>>2]),(0|Ij)==(0|(Fj=Fj+1|0)))break;if(!((0|(Bj=Bj+1|0))<(0|Kj)))break}if(Gj=q[Ej+Pj>>2]+Gj|0,!((0|(Aj=Aj+1|0))<(0|Jj)))break}},n[9]=function(a){a|=0;var Me,Ne,Oe,Ie=0,Je=0,Ke=0,Le=0;if(!(q[a+648>>2]||(0|(Ie=q[a+332>>2]))<1))for(Ne=(Je=q[a+336>>2])+w(Ie,20)|0,Ie=q[a+424>>2],Le=q[a+444>>2];;){if(q[Ie>>2]&&!((0|(Ke=q[Je+16>>2]))<(a=1)))for(Ke<<=1,Oe=q[Le>>2];;)if(u[(Me=(a<<2)+Oe|0)>>2]=-u[Me>>2],!((0|(a=a+2|0))<(0|Ke)))break;if(Le=Le+4|0,Ie=Ie+4|0,!((Je=Je+20|0)>>>0>>0))break}},n[10]=function(a,Sm,un){var wn;return $(wn=q[(a|=0)+20>>2],Sm|=0,Sm=(un|=0)>>>0<(Sm=q[a+16>>2]-wn|0)>>>0?un:Sm),q[a+20>>2]=Sm+q[a+20>>2],0|un},n[11]=function(a,Il,Rm,Sm,Tm,Um){a|=0,Il=+Il,Rm|=0,Sm|=0,Tm|=0,Um|=0;var fn,qn,Zm,Vm=0,Wm=0,Xm=0,Ym=0,_m=0,$m=0,an=0,bn=0,cn=0,dn=0,en=0,gn=0,hn=0,jn=0,kn=0,mn=0;if(q[44+(L=Zm=L-560|0)>>2]=0,h(+Il),Vm=0|b[1],qn=4294967295>>0?0:1,kn=(0|Vm)<-1||((0|Vm)<=-1?qn:0)?(h(+(Il=-Il)),Vm=0|b[1],b[0],jn=1,3840):2048&Tm?(jn=1,3843):(jn=1&Tm)?3846:3841,2146435072==(2146435072&Vm))_(a,32,Rm,$m=jn+3|0,-65537&Tm),Z(a,kn,jn),Sm=Um>>>5&1,Z(a,Il!=Il?Sm?3867:3871:Sm?3859:3863,3);else if(Il=function Ja(a,ic){var kc,lc,jc=0;if(h(+a),jc=0|b[1],kc=0|b[0],2047!=(0|(jc=(lc=jc)>>>20&2047))){if(!jc)return jc=ic,ic=0==a?0:(a=Ja(0x10000000000000000*a,ic),q[ic>>2]+-64|0),q[jc>>2]=ic,a;q[ic>>2]=jc+-1022,f(0,0|kc),f(1,-2146435073&lc|1071644672),a=+g()}return a}(Il,44+Zm|0),0!=(Il+=Il)&&(q[44+Zm>>2]=q[44+Zm>>2]+-1),fn=16+Zm|0,97==(0|(qn=32|Um))){if(en=(dn=32&Um)?kn+9|0:kn,!(11>>0)&&(Vm=12-Sm|0)){for(gn=8;;)if(gn*=16,!(Vm=Vm+-1|0))break;Il=45==r[0|en]?-(gn+(-Il-gn)):Il+gn-gn}for((0|fn)==(0|(Vm=ga((Xm=(Vm=q[44+Zm>>2])>>31)^Vm+Xm,0,fn)))&&(o[15+Zm|0]=48,Vm=15+Zm|0),_m=2|jn,Xm=q[44+Zm>>2],o[0|(cn=Vm+-2|0)]=Um+15,o[Vm+-1|0]=(0|Xm)<0?45:43,Vm=8&Tm,Wm=16+Zm|0;;)if(Um=Wm,bn=dn,Xm=y(Il)<2147483648?~~Il:-2147483648,o[0|Wm]=bn|r[Xm+3824|0],1!=((Wm=Um+1|0)-(16+Zm|0)|0)|(0==(Il=16*(Il-(0|Xm)))?!(Vm|0<(0|Sm)):0)||(o[Um+1|0]=46,Wm=Um+2|0),0==Il)break;_(a,32,Rm,$m=(Um=!Sm|(0|Sm)<=((Wm-Zm|0)-18|0)?((fn-(16+Zm|0)|0)-cn|0)+Wm|0:2+((Sm+fn|0)-cn|0)|0)+_m|0,Tm),Z(a,en,_m),_(a,48,Rm,$m,65536^Tm),Z(a,16+Zm|0,Sm=Wm-(16+Zm|0)|0),_(a,48,Um-((Vm=Sm)+(Sm=fn-cn|0)|0)|0,0,0),Z(a,cn,Sm)}else{for(Vm=(0|Sm)<0,0==Il?Ym=q[44+Zm>>2]:(Ym=q[44+Zm>>2]+-28|0,q[44+Zm>>2]=Ym,Il*=268435456),an=Vm?6:Sm,Xm=dn=(0|Ym)<0?48+Zm|0:336+Zm|0;;)if(Xm=(Sm=Xm)+4|0,0==(Il=1e9*(Il-((q[Sm>>2]=Vm=Il<4294967296&0<=Il?~~Il>>>0:0)>>>0))))break;if((0|Ym)<1)Vm=Xm,Wm=dn;else for(Wm=dn;;){if(cn=(0|Ym)<29?Ym:29,!((Vm=Xm+-4|0)>>>0>>0)){for(Sm=cn,bn=0;;)if(mn=bn,bn=q[(en=Vm)>>2],_m=31&Sm,_m=32<=(63&Sm)>>>($m=0)?(Ym=bn<<_m,0):(Ym=(1<<_m)-1&bn>>>32-_m,bn<<_m),$m=Ym+$m|0,$m=(bn=mn+_m|0)>>>0<_m>>>0?$m+1|0:$m,mn=en,en=ad(bn=bd(_m=bn,$m,1e9),M,1e9),q[mn>>2]=_m-en,!(Wm>>>0<=(Vm=Vm+-4|0)>>>0))break;(Sm=bn)&&(q[(Wm=Wm+-4|0)>>2]=Sm)}for(;;)if(!(Wm>>>0<(Vm=Xm)>>>0)||q[(Xm=Vm+-4|0)>>2])break;if(Ym=q[44+Zm>>2]-cn|0,Xm=Vm,!(0<(0|(q[44+Zm>>2]=Ym))))break}if((0|Ym)<=-1)for(hn=1+((an+25|0)/9|0)|0,cn=102==(0|qn);;){if(bn=(0|Ym)<-9?9:0-Ym|0,Vm>>>0<=Wm>>>0)Wm=q[Wm>>2]?Wm:Wm+4|0;else{for(en=1e9>>>bn,_m=-1<>2],q[Xm>>2]=(Sm>>>bn)+Ym,Ym=w(en,Sm&_m),!((Xm=Xm+4|0)>>>0>>0))break;Wm=q[Wm>>2]?Wm:Wm+4|0,Ym&&(q[Vm>>2]=Ym,Vm=Vm+4|0)}if(Ym=bn+q[44+Zm>>2]|0,Vm=(0|hn)>2?Sm+(hn<<2)|0:Vm,!((0|(q[44+Zm>>2]=Ym))<0))break}if(!(Vm>>>(Xm=0)<=Wm>>>0||(Xm=w(dn-Wm>>2,9),(Sm=q[Wm>>2])>>>0<(Ym=10))))for(;;)if(Xm=Xm+1|0,!((Ym=w(Ym,10))>>>0<=Sm>>>0))break;if((0|(Sm=(an-(102==(0|qn)?0:Xm)|0)-(103==(0|qn)&0!=(0|an))|0))<(w(Vm-dn>>2,9)+-9|0)){if($m=(dn+((Sm=(0|(_m=Sm+9216|0))/9|0)<<2)|0)-4092|0,Ym=10,(0|(Sm=1+(_m-w(Sm,9)|0)|0))<=8)for(;;)if(Ym=w(Ym,10),9==(0|(Sm=Sm+1|0)))break;if(hn=$m+4|0,((cn=(en=q[$m>>2])-w(Ym,_m=(en>>>0)/(Ym>>>0)|0)|0)||(0|hn)!=(0|Vm))&&(gn=cn>>>0<(Sm=Ym>>>1)>>>0?.5:(0|Vm)==(0|hn)&&(0|Sm)==(0|cn)?1:1.5,Il=1&_m?9007199254740994:9007199254740992,!jn|45!=r[0|kn]||(gn=-gn,Il=-Il),q[$m>>2]=Sm=en-cn|0,Il+gn!=Il)){if(1e9<=(q[$m>>2]=Sm=Sm+Ym|0)>>>0)for(;;)if(($m=$m+-4|(q[$m>>2]=0))>>>0>>0&&(q[(Wm=Wm+-4|0)>>2]=0),Sm=q[$m>>2]+1|0,!(999999999<(q[$m>>2]=Sm)>>>0))break;if(Xm=w(dn-Wm>>2,9),!((Sm=q[Wm>>2])>>>0<(Ym=10)))for(;;)if(Xm=Xm+1|0,!((Ym=w(Ym,10))>>>0<=Sm>>>0))break}Vm=(Sm=$m+4|0)>>>0>>0?Sm:Vm}j:{for(;;){if((cn=Vm)>>>(en=0)<=Wm>>>0)break j;if(q[(Vm=cn+-4|0)>>2])break}en=1}if(103!=(0|qn))_m=8&Tm;else if(an=((Sm=(0|Xm)<(0|(Vm=an||1))&-5<(0|Xm))?-1^Xm:-1)+Vm|0,Um=(Sm?-1:-2)+Um|0,!(_m=8&Tm)){if(Vm=9,en&&(_m=q[cn+-4>>2])&&!((_m>>>(Vm=0))%(Sm=10)))for(;;)if(Vm=Vm+1|0,(_m>>>0)%((Sm=w(Sm,10))>>>0))break;Sm=w(cn-dn>>2,9)+-9|0,an=102==(32|Um)?((_m=0)|an)<(0|(Sm=0<(0|(Sm=Sm-Vm|0))?Sm:0))?an:Sm:((_m=0)|an)<(0|(Sm=0<(0|(Sm=(Sm+Xm|0)-Vm|0))?Sm:0))?an:Sm}if($m=0!=(0|(Ym=an|_m)),Sm=a,mn=Rm,Vm=0<(0|Xm)?Xm:0,102!=(0|(bn=32|Um))){if((fn-(Vm=ga((Vm=Xm>>31)+Xm^Vm,0,fn))|0)<=1)for(;;)if(o[0|(Vm=Vm+-1|0)]=48,!((fn-Vm|0)<2))break;o[0|(hn=Vm+-2|0)]=Um,o[Vm+-1|0]=(0|Xm)<0?45:43,Vm=fn-hn|0}if(_(Sm,32,mn,$m=1+(Vm+($m+(an+jn|0)|0)|0)|0,Tm),Z(a,kn,jn),_(a,48,Rm,$m,65536^Tm),102==(0|bn)){for(Sm=16+Zm|8,Xm=16+Zm|9,Wm=Um=dn>>>0>>0?dn:Wm;;){if(Vm=ga(q[Wm>>2],0,Xm),(0|Um)!=(0|Wm)){if(!(Vm>>>0<=16+Zm>>>0))for(;;)if(o[0|(Vm=Vm+-1|0)]=48,!(16+Zm>>>0>>0))break}else(0|Vm)==(0|Xm)&&(o[24+Zm|0]=48,Vm=Sm);if(Z(a,Vm,Xm-Vm|0),!((Wm=Wm+4|0)>>>0<=dn>>>0))break}Ym&&Z(a,3875,1);p:if(!((0|an)<1|cn>>>0<=Wm>>>0))for(;;){if(16+Zm>>>0<(Vm=ga(q[Wm>>2],0,Xm))>>>0)for(;;)if(o[0|(Vm=Vm+-1|0)]=48,!(16+Zm>>>0>>0))break;if(Z(a,Vm,(0|an)<9?an:9),an=an+-9|0,cn>>>0<=(Wm=Wm+4|0)>>>0)break p;if(!(0<(0|an)))break}_(a,48,an+9|0,9,0)}else{q:if(!((0|an)<0))for(Um=en?cn:Wm+4|0,Sm=16+Zm|8,dn=16+Zm|9,Xm=Wm;;){if((0|dn)==(0|(Vm=ga(q[Xm>>2],0,dn)))&&(o[24+Zm|0]=48,Vm=Sm),(0|Wm)!=(0|Xm)){if(!(Vm>>>0<=16+Zm>>>0))for(;;)if(o[0|(Vm=Vm+-1|0)]=48,!(16+Zm>>>0>>0))break}else Z(a,Vm,1),Vm=Vm+1|0,(0|an)<1&&!_m||Z(a,3875,1);if(Z(a,bn=Vm,(0|(Vm=dn-Vm|0))<(0|an)?Vm:an),an=an-Vm|0,Um>>>0<=(Xm=Xm+4|0)>>>0)break q;if(!(-1<(0|an)))break}_(a,48,an+18|0,18,0),Z(a,hn,fn-hn|0)}}return _(a,32,Rm,$m,8192^Tm),L=560+Zm|0,0|((0|$m)<(0|Rm)?Rm:$m)},n[12]=function(a,Il){a|=0;var tm=0,tm=Il|=0;Il=q[Il>>2]+15&-16,q[tm>>2]=Il+16,tm=a,a=Cc(q[Il>>2],q[Il+4>>2],q[Il+8>>2],q[Il+12>>2]),v[tm>>3]=a},n[13]=function(a){return 0},n[14]=function(a,Il,tm){Il|=0,tm|=0;var Om,Cm,Bm=0,Lm=0,Mm=0,Nm=0;for(L=Cm=L-32|0,Bm=q[(a|=0)+28>>2],q[16+Cm>>2]=Bm,Mm=q[a+20>>2],q[28+Cm>>2]=tm,q[24+Cm>>2]=Il,Mm=(q[20+Cm>>2]=Il=Mm-Bm|0)+tm|0,Nm=2,Il=16+Cm|0;;){a:{if((Lm=(Bm=0)|K(q[a+60>>2],0|Il,0|Nm,12+Cm|0))&&(q[2086]=Lm,Bm=-1),(0|(Bm=Bm?q[12+Cm>>2]=-1:q[12+Cm>>2]))==(0|Mm))Il=q[a+44>>2],q[a+28>>2]=Il,q[a+20>>2]=Il,q[a+16>>2]=Il+q[a+48>>2],a=tm;else{if(-1<(0|Bm))break a;q[a+28>>2]=0,q[a+16>>2]=0,q[a+20>>2]=0,q[a>>2]=32|q[a>>2],2!=((a=0)|Nm)&&(a=tm-q[Il+4>>2]|0)}return L=32+Cm|0,0|a}Lm=q[Il+4>>2],q[(Il=(Om=Lm>>>0>>0)?Il+8|0:Il)>>2]=(Lm=Bm-(Om?Lm:0)|0)+q[Il>>2],q[Il+4>>2]=q[Il+4>>2]-Lm,Mm=Mm-Bm|0,Nm=Nm-Om|0}},n[15]=function(a,Il,tm,Bm){return M=0},{d:function(){},e:function(){return 83886080},f:function(){return 5},g:function(a,vj){return vj|=0,L=vj=L-16|0,a=(a|=0)?sa(a)?(Y(4,2150,0),0):r[a+4|0]:(q[vj+4>>2]=1444,q[vj>>2]=2267,Y(4,1294,vj),0),L=vj+16|0,0|a},h:function(a,vj){var wj;return vj|=0,L=wj=L-48|0,a=(a|=0)?(a+63&-64)!=(0|a)?(q[36+wj>>2]=1522,q[32+wj>>2]=2284,Y(4,1294,32+wj|0),0):(vj+63&-64)==(0|vj)&&vj?function(a,Vk){var Wk=0,Xk=0,Yk=0,Zk=0,_k=0,$k=0,al=0,bl=0,cl=0,dl=0,el=0,fl=0,gl=0,hl=0,il=0,jl=0,kl=0,ll=0,ml=0,nl=0,ol=0,pl=0;L=_k=(pl=Xk=L)-704&-64;a:if(Vk>>>0<=1343)Y(4,1235,0);else if(sa(a))Y(4,1469,0);else if(Xk=r[0|(nl=a+4|0)]){if(!(6<=Xk>>>0)){(jl=1==(0|!r[a+5|0]))||(da(nl,1),X(a- -64|0,4,160)),ca(_k- -64|0,0,640),na(a,_k- -64|0),Xk=a+Vk|0,Vk=q[_k+64>>2];b:{c:{d:{if(5<=(il=r[a+4|0])>>>0){if(Vk>>>0>>0|Xk>>>0>>0)break c;if((Zk=Vk+256|0)>>>0>>0)break c;if(Zk>>>0<=Xk>>>0)break d;break c}if(Vk>>>0>>0|Xk>>>0>>0)break c;if((Zk=Vk+128|0)>>>0>>0|Xk>>>0>>0)break c}if(!((Yk=q[_k+68>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0)&&!((Yk=Yk- -64|0)>>>0>>0|Xk>>>0>>0||(0|(dl=q[Vk>>2]))<0||(Zk=q[_k+72>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=(Wk=Zk)+(Zk=dl<<2)|0)>>>0>>0|Xk>>>0>>0||(al=q[_k+76>>2])>>>0>>0|Xk>>>0>>0|al>>>0>>0||(Wk=(dl<<6)+al|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+80>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+84>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+88>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+92>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+96>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+100>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+4>>2]))<0||(Zk=q[_k+104>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||($k=(Yk=Zk)+(Zk=Wk<<2)|0)>>>0>>0|Xk>>>0<$k>>>0||(Yk=q[_k+108>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0<$k>>>0||(Wk=Yk+(Wk<<6)|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+112>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+116>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+120>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+124>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+128>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+132>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+136>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+8>>2]))<0||(Zk=q[_k+140>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=(el=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+144>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+148>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+156>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+160>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+164>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+12>>2]))<0||(Zk=q[_k+172>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=(fl=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+176>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+fl|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+180>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+fl|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+188>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=Zk+fl|0)>>>0>>0|Xk>>>0>>0||(0|(Yk=q[Vk+16>>2]))<0||(Zk=q[_k+192>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||($k=(Wk=Zk)+(Zk=Yk<<2)|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+196>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+200>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+204>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+208>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+(Yk<<6)|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+212>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+216>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+220>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+228>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+232>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+236>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+240>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+244>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+248>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||(Wk=Wk+Yk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+252>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+256>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+260>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+264>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+268>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+272>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|($k=q[Vk+20>>2]))<0||(Yk=q[_k+276>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(gl=(Wk=Yk)+(Yk=$k<<2)|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+280>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||($k=Wk+($k<<6)|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+284>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+288>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+292>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+296>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+300>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+308>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+312>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(0|(gl=q[Vk+24>>2]))<0||(Wk=q[_k+336>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+(gl<<2)|0)>>>0>>0|Xk>>>0<$k>>>0||(0|(gl=q[Vk+28>>2]))<0||(Wk=q[_k+340>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=(ll=gl<<2)+Wk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+344>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+ll|0)>>>0>>0|Xk>>>0<$k>>>0||(0|(gl=q[Vk+32>>2]))<0||(Wk=q[_k+356>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||(gl=($k=gl<<2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+360>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+364>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+368>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+372>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+376>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+380>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(0|(bl=q[Vk+36>>2]))<0||(Wk=q[_k+392>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=(gl=bl<<2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+396>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+gl|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+400>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+gl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+40>>2]))<0||(Wk=q[_k+412>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+44>>2]))<0||(Wk=q[_k+424>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+48>>2]))<0||(Wk=q[_k+428>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=(cl<<=2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+432>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+cl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+52>>2]))<0||(Wk=q[_k+416>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=(cl<<=2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+420>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+cl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+56>>2]))<0||(Wk=q[_k+552>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+60>>2]))<0||(Wk=q[_k+556>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+64>>2]))<0||(Wk=q[_k+560>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<1)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+68>>2]))<0||(Wk=q[_k+564>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+72>>2]))<0||(Wk=q[_k+568>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(cl=(bl=Wk)+(Wk=cl<<2)|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+572>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+576>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+580>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+584>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(bl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+76>>2]))<0||(Wk=q[_k+588>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(cl=(bl=cl<<2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+592>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+596>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+80>>2]))<0||(Wk=q[_k+600>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(hl=(bl=Wk)+(Wk=cl<<2)|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+604>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=bl+(cl<<6)|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+608>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+612>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+616>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+620>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+624>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+628>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+632>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(bl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+84>>2]))<0||(Wk=q[_k+636>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+640>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<1)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+88>>2]))<0||(Wk=q[_k+644>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(Wk=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0)){if(!(il>>>0<2)){if((bl=q[_k+168>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0)break c;if((Wk=bl+el|0)>>>0>>0|Xk>>>0>>0)break c;if(!(il>>>0<4)){if((bl=q[_k+324>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0)break c;if((bl=Yk+bl|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+328>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((bl=Wk+Yk|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+332>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((bl=Wk+Yk|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+152>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((el=Wk+el|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+184>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((el=Wk+fl|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+224>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((Wk=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(el=q[Vk+92>>2]))<0)break c;if((Zk=q[_k+648>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((el=(Wk=el<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+652>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((el=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+656>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(el=q[Vk+96>>2]))<0)break c;if((Zk=q[_k+660>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((el=(Wk=el<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+664>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((el=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+668>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+304>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+316>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+320>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+100>>2]))<0)break c;if((Zk=q[_k+436>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+440>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+444>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+104>>2]))<0)break c;if((Zk=q[_k+448>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Zk)+(Zk=Wk<<2)|0)>>>0>>0|Xk>>>0>>0)break c;if((Yk=q[_k+452>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Yk=q[_k+456>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Yk=q[_k+460>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Yk=q[_k+464>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+108>>2]))<0)break c;if((Zk=q[_k+480>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+484>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+488>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+112>>2]))<0)break c;if((Zk=q[_k+504>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+508>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+512>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+116>>2]))<0)break c;if((Zk=q[_k+528>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Zk+(Wk<<2)|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+120>>2]))<0)break c;if((Zk=q[_k+532>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+536>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+540>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+124>>2]))<0)break c;if((Zk=q[_k+544>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=(Wk<<=2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+548>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c}}if(il>>>0<5)break b;if(!((Zk=q[_k+348>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+ll|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+352>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+ll|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+384>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+$k|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+388>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+$k|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+404>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+gl|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+408>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+gl|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+128>>2]))<0||(Zk=q[_k+468>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+472>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+476>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+132>>2]))<0||(Zk=q[_k+492>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+496>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+500>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+136>>2]))<0||(Zk=q[_k+516>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+520>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+524>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Zk=Yk+Zk|0)>>>0>>0||!(Zk>>>0<=Xk>>>0)))break b}}Y(4,1760,0),da(nl,1),X(a- -64|0,4,160);break a}jl||(ya(a),o[a+5|0]=0,Vk=q[_k+64>>2],dl=q[Vk>>2],al=q[_k+76>>2],il=r[a+4|0]);f:{if((a=0)<(0|dl)){for(;;){if(63>>0)break f;if((0|dl)==(0|(a=a+1|0)))break}if(Wk=Vk+48|0,(Xk=0)<(0|(a=q[Vk>>2]))){for(Zk=q[Vk+48>>2],Yk=q[_k+80>>2];;){if((0|(al=q[Yk+(Xk<<2)>>2]))<0|(0|Zk)<=(0|al))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(gl=Vk+24|0,Zk=q[Vk+24>>2],$k=q[_k+88>>2],dl=q[_k+84>>2],Xk=0;;){if(Yk=q[(al=Xk<<2)+$k>>2]){if((0|Yk)<0|(0|Zk)<(0|Yk))break f;if((0|(al=q[al+dl>>2]))<0|(0|Zk)<=(0|al))break f;if((Yk=Yk+al|0)>>>31|(0|Zk)<(0|Yk))break f}if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+92>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+96>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+100>>2];;){if((0|(Yk=q[Zk+(Xk<<2)>>2]))<-1|(0|a)<=(0|Yk))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}}else gl=Vk+24|0}else gl=Vk+24|0,Wk=Vk+48|0;if((a=0)<(0|(Xk=q[Vk+4>>2]))){for(Zk=q[_k+108>>2];;){if(63>>0)break f;if((0|Xk)==(0|(a=a+1|0)))break}if(Zk=q[Vk+48>>2],$k=Zk+-1|0,!(((Xk=0)|(a=q[Vk+4>>2]))<=0)){for(Yk=q[_k+112>>2];;){if((0|(al=q[Yk+(Xk<<2)>>2]))<0|(0|Zk)<=(0|al))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+116>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+120>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Zk=q[Vk>>2],Xk=0,Yk=q[_k+124>>2];;){if((0|(al=q[Yk+(Xk<<2)>>2]))<-1|(0|Zk)<=(0|al))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+128>>2];;){if((0|(Yk=q[Zk+(Xk<<2)>>2]))<-1|(0|a)<=(0|Yk))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+132>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=Vk+8|0,al=Vk+12|0,dl=q[_k+136>>2],Xk=0;;){if(1<(fl=q[(el=Xk<<2)+Zk>>2])>>>0)break f;if((0|(el=q[dl+el>>2]))<0|(0|el)>=q[(fl-1|0?Yk:al)>>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}}}else $k=q[Wk>>2]+-1|0;if((a=0)<(0|(Xk=q[Vk+8>>2]))){for(Zk=q[_k+140>>2];;){if((0|(Yk=q[Zk+(a<<2)>>2]))<0|(0|$k)<(0|Yk))break f;if((0|Xk)==(0|(a=a+1|0)))break}for(ll=Vk+28|0,Zk=q[Vk+28>>2],dl=q[_k+148>>2],el=q[_k+144>>2],a=0;;){if(Yk=q[(al=a<<2)+dl>>2]){if((0|Yk)<0|(0|Zk)<(0|Yk))break f;if((0|(al=q[al+el>>2]))<0|(0|Zk)<=(0|al))break f;if((Yk=Yk+al|0)>>>31|(0|Zk)<(0|Yk))break f}if((0|Xk)==(0|(a=a+1|0)))break}for(a=0,Yk=q[_k+156>>2],al=q[_k+164>>2],dl=q[_k+160>>2];;){if((0|(el=q[(Zk=a<<2)+dl>>2]))<1)break f;if((0|(fl=q[Zk+al>>2]))<1)break f;if((0|(Zk=q[Yk+Zk>>2]))<1|(0|Zk)!=(0|w(fl+1|0,el+1|0)))break f;if((0|Xk)==(0|(a=a+1|0)))break}}else ll=Vk+28|0;if((a=0)<(0|(Yk=q[Vk+12>>2]))){for(Xk=q[_k+172>>2];;){if((0|(Zk=q[Xk+(a<<2)>>2]))<0|(0|$k)<(0|Zk))break f;if((0|Yk)==(0|(a=a+1|0)))break}for(bl=Vk+32|0,Xk=q[Vk+32>>2],$k=q[_k+180>>2],dl=q[_k+176>>2],a=0;;){if(Zk=q[(al=a<<2)+$k>>2]){if((0|Zk)<0|(0|Xk)<(0|Zk))break f;if((0|(al=q[al+dl>>2]))<0|(0|Xk)<=(0|al))break f;if((Zk=Zk+al|0)>>>31|(0|Xk)<(0|Zk))break f}if((0|Yk)==(0|(a=a+1|0)))break}}else bl=Vk+32|0;Zk=Vk+16|0,a=0;m:{n:{if(!((0|(Xk=q[Vk+16>>2]))<=0)){for(Yk=q[_k+208>>2];;){if(63>>0)break f;if((0|Xk)==(0|(a=a+1|0)))break}if(!(((Xk=0)|(a=q[Zk>>2]))<=0)){for(Yk=q[Wk>>2],al=q[_k+212>>2];;){if((0|($k=q[al+(Xk<<2)>>2]))<0|(0|Yk)<=(0|$k))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(nl=Vk+36|0,Yk=q[Vk+36>>2],dl=q[_k+220>>2],el=q[_k+216>>2],Xk=0;;){if(al=q[($k=Xk<<2)+dl>>2]){if((0|al)<0|(0|Yk)<(0|al))break f;if((0|($k=q[$k+el>>2]))<0|(0|Yk)<=(0|$k))break f;if((al=al+$k|0)>>>31|(0|Yk)<(0|al))break f}if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Yk=q[_k+228>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Yk=q[_k+232>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=q[Vk>>2],Xk=0,al=q[_k+236>>2];;){if((0|($k=q[al+(Xk<<2)>>2]))<-1|(0|Yk)<=(0|$k))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=q[Vk+4>>2],Xk=0,al=q[_k+240>>2];;){if((0|($k=q[al+(Xk<<2)>>2]))<-1|(0|Yk)<=(0|$k))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=q[_k+244>>2],Xk=0;;){if(q[Yk+(Xk<<2)>>2]<0)break f;if((0|a)==(0|(Xk=Xk+1|0)))break}break n}}al=Vk+68|0,nl=Vk+36|0;break m}for(Yk=q[_k+252>>2],Xk=0;;){if(q[Yk+(Xk<<2)>>2]<0)break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(al=q[Vk+60>>2],Xk=0,$k=q[_k+256>>2];;){if((dl=q[(dl=Xk<<2)+$k>>2]+(q[Yk+dl>>2]<<1)|0)>>>31|(0|al)<(0|dl))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=q[Vk+64>>2],dl=q[_k+264>>2],el=q[_k+260>>2],Xk=0;;){if(al=q[($k=Xk<<2)+dl>>2]){if((0|al)<0|(0|Yk)<(0|al))break f;if((0|($k=q[$k+el>>2]))<0|(0|Yk)<=(0|$k))break f;if((al=al+$k|0)>>>31|(0|Yk)<(0|al))break f}if((0|a)==(0|(Xk=Xk+1|0)))break}for(al=Vk+68|0,Yk=q[Vk+68>>2],el=q[_k+272>>2],fl=q[_k+268>>2],Xk=0;;){if($k=q[(dl=Xk<<2)+el>>2]){if((0|$k)<0|(0|Yk)<(0|$k))break f;if((0|(dl=q[dl+fl>>2]))<0|(0|Yk)<=(0|dl))break f;if(($k=$k+dl|0)>>>31|(0|Yk)<(0|$k))break f}if((0|a)==(0|(Xk=Xk+1|0)))break}}a=0;p:{q:{if(!((0|(Xk=q[Vk+20>>2]))<=0)){for(Yk=q[_k+280>>2];;){if(63>>0)break f;if((0|Xk)==(0|(a=a+1|0)))break}if(!(((a=0)|(Xk=q[Vk+20>>2]))<=0)){for(Yk=q[_k+296>>2];;){if(1>2])break f;if((0|Xk)==(0|(a=a+1|0)))break}for(Yk=q[_k+300>>2],a=0;;){if(q[Yk+(a<<2)>>2]<0)break f;if((0|Xk)==(0|(a=a+1|0)))break}break q}}a=q[Vk+52>>2];break p}for(a=q[Vk+52>>2],el=q[_k+312>>2],fl=q[_k+308>>2],$k=0;;){if(Yk=q[(dl=$k<<2)+el>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(dl=q[dl+fl>>2]))<0|(0|a)<=(0|dl))break f;if((Yk=Yk+dl|0)>>>31|(0|a)<(0|Yk))break f}if((0|Xk)==(0|($k=$k+1|0)))break}}if(Xk=0,Yk=q[Vk+40>>2],0<(0|($k=q[Vk+8>>2])))for(dl=q[_k+344>>2],el=q[_k+156>>2];;){if((fl=q[(fl=Xk<<2)+dl>>2]+(q[el+fl>>2]<<1)|0)>>>31|(0|Yk)<(0|fl))break f;if((0|$k)==(0|(Xk=Xk+1|0)))break}if((Xk=0)<(0|($k=q[bl>>2]))){for(dl=q[_k+376>>2];;){if(1>2])break f;if((0|$k)==(0|(Xk=Xk+1|0)))break}for(Xk=0,dl=q[_k+380>>2];;){if(1>2])break f;if((0|$k)==(0|(Xk=Xk+1|0)))break}}if((Xk=0)<(0|($k=q[Zk>>2])))for(dl=q[_k+400>>2],el=q[_k+252>>2];;){if((fl=q[(fl=Xk<<2)+dl>>2]+(q[el+fl>>2]<<1)|0)>>>31|(0|Yk)<(0|fl))break f;if((0|$k)==(0|(Xk=Xk+1|0)))break}if((Xk=0)<(0|(Yk=q[Vk+44>>2])))for(dl=q[_k+424>>2];;){if((0|(el=q[dl+(Xk<<2)>>2]))<0|(0|a)<=(0|el))break f;if((0|Yk)==(0|(Xk=Xk+1|0)))break}if(1<=(0|(el=q[Wk>>2])))for(Xk=0,fl=q[_k+432>>2],cl=q[_k+428>>2];;){if(Wk=q[(dl=Xk<<2)+fl>>2]){if((0|Wk)<0|(0|Yk)<(0|Wk))break f;if((0|(dl=q[cl+dl>>2]))<0|(0|Yk)<=(0|dl))break f;if((Wk=Wk+dl|0)>>>31|(0|Yk)<(0|Wk))break f}if((0|el)==(0|(Xk=Xk+1|0)))break}if(1<=(0|a))for(Yk=q[Vk+56>>2],Xk=0,el=q[_k+420>>2],fl=q[_k+416>>2];;){if(Wk=q[(dl=Xk<<2)+el>>2]){if((0|Wk)<0|(0|Yk)<(0|Wk))break f;if((0|(dl=q[dl+fl>>2]))<0|(0|Yk)<=(0|dl))break f;if((Wk=Wk+dl|0)>>>31|(0|Yk)<(0|Wk))break f}if((0|(Xk=Xk+1|0))==(0|a))break}if((a=0)<(0|(Xk=q[al>>2])))for(Yk=q[_k+564>>2];;){if((0|(al=q[Yk+(a<<2)>>2]))<-1|(0|$k)<=(0|al))break f;if((0|Xk)==(0|(a=a+1|0)))break}if(a=q[Vk+76>>2],1<=(0|(al=q[Vk+72>>2])))for(Xk=0,$k=q[_k+572>>2],dl=q[_k+568>>2];;){if(Yk=q[(Wk=Xk<<2)+$k>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(Wk=q[Wk+dl>>2]))<0|(0|a)<=(0|Wk))break f;if((Yk=Wk+Yk|0)>>>31|(0|a)<(0|Yk))break f}if((0|al)==(0|(Xk=Xk+1|0)))break}if((Xk=0)<(0|a)){for(Yk=q[_k+588>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Wk=q[_k+592>>2],Xk=0;;){if(1<(dl=q[($k=Xk<<2)+Yk>>2])>>>0)break f;if((0|($k=q[Wk+$k>>2]))<0|(0|$k)>=q[(dl-1|0?Zk:Vk)>>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Yk=q[_k+596>>2];;){if((0|(Wk=q[Yk+(Xk<<2)>>2]))<-1|(0|al)<=(0|Wk))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}}a=0;s:{if(!((0|($k=q[Vk+80>>2]))<=0)){for(Xk=q[_k+604>>2];;){if(63>>0)break f;if((0|$k)==(0|(a=a+1|0)))break}if(!(((a=0)|($k=q[Vk+80>>2]))<=0)){for(Xk=q[Vk+48>>2],Yk=q[_k+608>>2];;){if((0|(al=q[Yk+(a<<2)>>2]))<0|(0|Xk)<=(0|al))break f;if((0|$k)==(0|(a=a+1|0)))break}for(el=q[Vk+88>>2],al=q[_k+616>>2],Wk=q[_k+612>>2],a=0;;){if(Xk=q[(Yk=a<<2)+al>>2]){if((0|Xk)<0|(0|el)<(0|Xk))break f;if((0|(Yk=q[Wk+Yk>>2]))<0|(0|el)<=(0|Yk))break f;if((Xk=Xk+Yk|0)>>>31|(0|el)<(0|Xk))break f}if((0|$k)==(0|(a=a+1|0)))break}for(Zk=q[Zk>>2],al=q[_k+620>>2],a=0;;){if((0|(Xk=q[al+(a<<2)>>2]))<0|(0|Zk)<=(0|Xk))break f;if((0|$k)==(0|(a=a+1|0)))break}for(Wk=q[_k+624>>2],a=0;;){if((0|(Xk=q[Wk+(a<<2)>>2]))<0|(0|Zk)<=(0|Xk))break f;if((0|$k)==(0|(a=a+1|0)))break}for(Xk=q[Vk+84>>2],dl=q[_k+632>>2],fl=q[_k+628>>2],a=0;;){if(Yk=q[(cl=a<<2)+dl>>2]){if((0|Yk)<0|(0|Xk)<(0|Yk))break f;if((0|(cl=q[cl+fl>>2]))<0|(0|Xk)<=(0|cl))break f;if((Yk=Yk+cl|0)>>>31|(0|Xk)<(0|Yk))break f}if((0|$k)==(0|(a=a+1|0)))break}for(hl=q[_k+640>>2],Xk=q[_k+252>>2],Yk=0;;){if(0<(0|(jl=q[(a=Yk<<2)+dl>>2])))for(cl=hl+(q[a+fl>>2]<<1)|0,ol=q[Xk+(q[a+Wk>>2]<<2)>>2],kl=q[Xk+(q[a+al>>2]<<2)>>2],a=0;;){if((0|ol)<=s[cl+(2|(ml=a<<1))>>1]|(0|kl)<=s[cl+ml>>1])break f;if(!((0|(a=a+2|0))<(0|jl)))break}if((0|$k)==(0|(Yk=Yk+1|0)))break}break s}}Zk=q[Vk+16>>2],el=q[Vk+88>>2]}if(!((255&il)>>>0<2)){if((a=0)<(0|(dl=q[Vk+8>>2])))for(Xk=q[_k+168>>2];;){if(1>2])break f;if((0|dl)==(0|(a=a+1|0)))break}if(!((255&il)>>>0<4)){if(al=q[Vk+56>>2],1<=(0|(fl=q[Vk+20>>2])))for(Wk=q[_k+332>>2],cl=q[_k+328>>2],a=0;;){if(Xk=q[(Yk=a<<2)+Wk>>2]){if((0|Xk)<0|(0|al)<(0|Xk))break f;if((0|(Yk=q[Yk+cl>>2]))<0|(0|al)<=(0|Yk))break f;if((Xk=Xk+Yk|0)>>>31|(0|al)<(0|Xk))break f}if((0|fl)==(0|(a=a+1|0)))break}if((0|(a=q[Vk+92>>2]))!=q[Vk+96>>2])break f;if(1<=(0|dl))for(cl=q[_k+152>>2],Xk=0,hl=q[_k+148>>2];;){if(Yk=q[(Wk=Xk<<2)+hl>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(Wk=q[Wk+cl>>2]))<0|(0|a)<=(0|Wk))break f;if((Yk=Wk+Yk|0)>>>31|(0|a)<(0|Yk))break f}if((0|dl)==(0|(Xk=Xk+1|0)))break}if(1<=(0|(ol=q[Vk+12>>2])))for(cl=q[_k+184>>2],Xk=0,hl=q[_k+180>>2];;){if(Yk=q[(Wk=Xk<<2)+hl>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(Wk=q[Wk+cl>>2]))<0|(0|a)<=(0|Wk))break f;if((Yk=Wk+Yk|0)>>>31|(0|a)<(0|Yk))break f}if((0|ol)==(0|(Xk=Xk+1|0)))break}if(1<=(0|Zk))for(cl=q[_k+224>>2],Xk=0,hl=q[_k+220>>2];;){if(Yk=q[(Wk=Xk<<2)+hl>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(Wk=q[Wk+cl>>2]))<0|(0|a)<=(0|Wk))break f;if((Yk=Wk+Yk|0)>>>31|(0|a)<(0|Yk))break f}if((0|Zk)==(0|(Xk=Xk+1|0)))break}if((Xk=0)<(0|fl)){for(Yk=q[_k+304>>2];;){if(1>2])break f;if((0|fl)==(0|(Xk=Xk+1|0)))break}for(Yk=q[Vk+100>>2],hl=q[_k+320>>2],jl=q[_k+316>>2],Xk=0;;){if(Wk=q[(cl=Xk<<2)+hl>>2]){if((0|Wk)<0|(0|Yk)<(0|Wk))break f;if((0|(cl=q[cl+jl>>2]))<0|(0|Yk)<=(0|cl))break f;if((Wk=Wk+cl|0)>>>31|(0|Yk)<(0|Wk))break f}if((0|fl)==(0|(Xk=Xk+1|0)))break}}else Yk=q[Vk+100>>2];if(1<=(0|Yk)){for(cl=q[_k+440>>2],Xk=0,jl=q[_k+436>>2];;){if(Wk=q[(hl=Xk<<2)+cl>>2]){if((0|Wk)<0|(0|al)<(0|Wk))break f;if((0|(hl=q[hl+jl>>2]))<0|(0|al)<=(0|hl))break f;if((Wk=Wk+hl|0)>>>31|(0|al)<(0|Wk))break f}if((0|Yk)==(0|(Xk=Xk+1|0)))break}for(al=q[_k+444>>2],Xk=0;;){if((0|(hl=q[(Wk=Xk<<2)+al>>2]))<0|(0|hl)>=q[Wk+cl>>2])break f;if((0|Yk)==(0|(Xk=Xk+1|0)))break}}if((al=0)<(0|(Xk=q[Vk+104>>2]))){for(Wk=q[_k+448>>2];;){if((0|(cl=q[Wk+(al<<2)>>2]))<0|(0|Yk)<=(0|cl))break f;if((0|Xk)==(0|(al=al+1|0)))break}for(Wk=q[Vk+116>>2],hl=q[_k+464>>2],jl=q[_k+460>>2],Yk=0;;){if(al=q[(cl=Yk<<2)+hl>>2]){if((0|al)<0|(0|Wk)<(0|al))break f;if((0|(cl=q[cl+jl>>2]))<0|(0|Wk)<=(0|cl))break f;if((al=al+cl|0)>>>31|(0|Wk)<(0|al))break f}if((0|Xk)==(0|(Yk=Yk+1|0)))break}}else Wk=q[Vk+116>>2];if((Yk=0)<(0|(cl=q[Vk+108>>2]))){for(al=q[_k+480>>2];;){if((0|(hl=q[al+(Yk<<2)>>2]))<0|(0|dl)<=(0|hl))break f;if((0|cl)==(0|(Yk=Yk+1|0)))break}for(hl=q[_k+488>>2],kl=q[_k+484>>2],Yk=0;;){if(al=q[(dl=Yk<<2)+hl>>2]){if((0|al)<0|(0|Xk)<(0|al))break f;if((0|(dl=q[dl+kl>>2]))<0|(0|Xk)<=(0|dl))break f;if((al=al+dl|0)>>>31|(0|Xk)<(0|al))break f}if((0|cl)==(0|(Yk=Yk+1|0)))break}for(hl=q[ll>>2],Yk=q[_k+456>>2],dl=q[_k+452>>2],al=0;;){if(ml=q[kl+(al<<2)>>2]<<2,jl=q[ml+Yk>>2]){if((0|jl)<0|(0|hl)<(0|jl))break f;if((0|(ml=q[dl+ml>>2]))<0|(0|hl)<=(0|ml))break f;if((0|(jl=jl+ml|0))<0|(0|hl)<(0|jl))break f}if((0|cl)==(0|(al=al+1|0)))break}}else Yk=q[_k+456>>2],dl=q[_k+452>>2];if((al=0)<(0|(cl=q[Vk+112>>2]))){for(hl=q[_k+504>>2];;){if((0|(jl=q[hl+(al<<2)>>2]))<0|(0|Zk)<=(0|jl))break f;if((0|cl)==(0|(al=al+1|0)))break}for(kl=q[_k+512>>2],jl=q[_k+508>>2],Zk=0;;){if(al=q[(hl=Zk<<2)+kl>>2]){if((0|al)<0|(0|Xk)<(0|al))break f;if((0|(hl=q[hl+jl>>2]))<0|(0|Xk)<=(0|hl))break f;if((al=al+hl|0)>>>31|(0|Xk)<(0|al))break f}if((0|cl)==(0|(Zk=Zk+1|0)))break}for(al=q[nl>>2],Zk=0;;){if(kl=q[jl+(Zk<<2)>>2]<<2,hl=q[kl+Yk>>2]){if((0|hl)<0|(0|al)<(0|hl))break f;if((0|(kl=q[dl+kl>>2]))<0|(0|al)<=(0|kl))break f;if((0|(hl=hl+kl|0))<0|(0|al)<(0|hl))break f}if((0|cl)==(0|(Zk=Zk+1|0)))break}}if(Zk=0,al=q[Vk+120>>2],0<(0|Wk))for(cl=q[_k+528>>2];;){if((0|(hl=q[cl+(Zk<<2)>>2]))<0|(0|al)<=(0|hl))break f;if((0|(Zk=Zk+1|0))==(0|Wk))break}if((Zk=0)<(0|al)){for(Wk=q[_k+532>>2];;){if((0|(cl=q[Wk+(Zk<<2)>>2]))<-1|(0|fl)<=(0|cl))break f;if((0|al)==(0|(Zk=Zk+1|0)))break}for(Wk=q[Vk+124>>2],hl=q[_k+540>>2],jl=q[_k+536>>2],Zk=0;;){if(fl=q[(cl=Zk<<2)+hl>>2]){if((0|fl)<0|(0|Wk)<(0|fl))break f;if((0|(cl=q[cl+jl>>2]))<0|(0|Wk)<=(0|cl))break f;if((fl=cl+fl|0)>>>31|(0|Wk)<(0|fl))break f}if((0|al)==(0|(Zk=Zk+1|0)))break}}if(!((255&il)>>>0<5)){if((Zk=0)<(0|(il=q[ll>>2]))){for(al=q[_k+348>>2];;){if((0|(Wk=q[al+(Zk<<2)>>2]))<0|(0|a)<(0|Wk))break f;if((0|il)==(0|(Zk=Zk+1|0)))break}for(al=q[_k+352>>2],Zk=0;;){if((0|(Wk=q[al+(Zk<<2)>>2]))<0|(0|a)<(0|Wk))break f;if((0|il)==(0|(Zk=Zk+1|0)))break}}if((il=0)<(0|(Zk=q[bl>>2]))){for(al=q[_k+384>>2];;){if((0|(Wk=q[al+(il<<2)>>2]))<0|(0|a)<(0|Wk))break f;if((0|Zk)==(0|(il=il+1|0)))break}for(al=q[_k+388>>2],il=0;;){if((0|(Wk=q[al+(il<<2)>>2]))<0|(0|a)<(0|Wk))break f;if((0|Zk)==(0|(il=il+1|0)))break}}if((il=0)<(0|(al=q[nl>>2]))){for(Wk=q[_k+404>>2];;){if((0|(fl=q[Wk+(il<<2)>>2]))<0|(0|a)<(0|fl))break f;if((0|al)==(0|(il=il+1|0)))break}for(Wk=q[_k+408>>2],il=0;;){if((0|(fl=q[Wk+(il<<2)>>2]))<0|(0|a)<(0|fl))break f;if((0|al)==(0|(il=il+1|0)))break}}if((a=0)<(0|(il=q[Vk+128>>2]))){for(al=q[Vk>>2],Wk=q[_k+468>>2];;){if((0|(fl=q[Wk+(a<<2)>>2]))<0|(0|al)<=(0|fl))break f;if((0|il)==(0|(a=a+1|0)))break}for(ll=q[_k+476>>2],fl=q[_k+472>>2],a=0;;){if(al=q[(Wk=a<<2)+ll>>2]){if((0|al)<0|(0|Xk)<(0|al))break f;if((0|(Wk=q[Wk+fl>>2]))<0|(0|Xk)<=(0|Wk))break f;if((al=Wk+al|0)>>>31|(0|Xk)<(0|al))break f}if((0|il)==(0|(a=a+1|0)))break}for(al=q[gl>>2],a=0;;){if(gl=q[fl+(a<<2)>>2]<<2,Wk=q[gl+Yk>>2]){if((0|Wk)<0|(0|al)<(0|Wk))break f;if((0|(gl=q[dl+gl>>2]))<0|(0|al)<=(0|gl))break f;if((0|(Wk=Wk+gl|0))<0|(0|al)<(0|Wk))break f}if((0|il)==(0|(a=a+1|0)))break}}if((a=0)<(0|(il=q[Vk+132>>2]))){for(al=q[_k+492>>2];;){if((0|(Wk=q[al+(a<<2)>>2]))<0|(0|ol)<=(0|Wk))break f;if((0|il)==(0|(a=a+1|0)))break}for(gl=q[_k+500>>2],Wk=q[_k+496>>2],a=0;;){if(al=q[(fl=a<<2)+gl>>2]){if((0|al)<0|(0|Xk)<(0|al))break f;if((0|(fl=q[Wk+fl>>2]))<0|(0|Xk)<=(0|fl))break f;if((al=al+fl|0)>>>31|(0|Xk)<(0|al))break f}if((0|il)==(0|(a=a+1|0)))break}for(a=0;;){if(fl=q[Wk+(a<<2)>>2]<<2,al=q[fl+Yk>>2]){if((0|al)<0|(0|Zk)<(0|al))break f;if((0|(fl=q[dl+fl>>2]))<0|(0|Zk)<=(0|fl))break f;if((0|(al=al+fl|0))<0|(0|Zk)<(0|al))break f}if((0|il)==(0|(a=a+1|0)))break}}if(!(((a=0)|(Vk=q[Vk+136>>2]))<=0)){for(Zk=q[_k+516>>2];;){if((0|(il=q[Zk+(a<<2)>>2]))<0|(0|$k)<=(0|il))break f;if((0|Vk)==(0|(a=a+1|0)))break}for(al=q[_k+524>>2],Zk=q[_k+520>>2],a=0;;){if(_k=q[(il=a<<2)+al>>2]){if((0|_k)<0|(0|Xk)<(0|_k))break f;if((0|(il=q[Zk+il>>2]))<0|(0|Xk)<=(0|il))break f;if((_k=_k+il|0)>>>31|(0|Xk)<(0|_k))break f}if((0|Vk)==(0|(a=a+1|0)))break}for(a=0;;){if(_k=q[Zk+(a<<2)>>2]<<2,Xk=q[_k+Yk>>2]){if((0|Xk)<0|(0|el)<(0|Xk))break f;if((0|(_k=q[_k+dl>>2]))<0|(0|el)<=(0|_k))break f;if((0|(Xk=Xk+_k|0))<0|(0|el)<(0|Xk))break f}if((0|Vk)==(0|(a=a+1|0)))break}}}}}return L=pl,1}return Y(4,1846,0),L=pl,0}q[_k+52>>2]=Xk,q[_k+48>>2]=5,Y(4,1640,_k+48|0)}else q[_k+32>>2]=Xk,Y(4,1554,_k+32|0);return L=pl,0}(a,vj):(q[20+wj>>2]=1621,q[16+wj>>2]=2284,Y(4,1294,16+wj|0),0):(q[4+wj>>2]=1444,q[wj>>2]=2284,Y(4,1294,wj),0),L=48+wj|0,0|a},i:function(a){q[1805]=a|=0},j:function(a,ej){var fj;return ej|=0,L=fj=L-48|0,a=(a|=0)?(a+63&-64)!=(0|a)?(q[36+fj>>2]=1522,q[32+fj>>2]=2305,Y(4,1294,32+fj|0),0):(ej+63&-64)==(0|ej)&&ej?function(a){var Kk=0,Lk=0,Mk=0,Nk=0,Ok=0,Pk=0,Qk=0,Rk=0,Sk=0,Tk=0,Uk=0;q[24+(L=Qk=L-32|0)>>2]=0,q[16+Qk>>2]=5,q[20+Qk>>2]=0,function(a){var Uh;Ka(16+(L=Uh=L-272|0)|0,2227,q[12+Uh>>2]=a),Sa(16+Uh|0),L=272+Uh|0}(16+Qk|0);a:{if(sa(a))Y(4,1932,0);else{if(!(6<=(Mk=r[a+4|0])>>>0)){if(1!=(0|!r[a+5|0])?(da(a+4|0,1),X(a- -64|0,4,160),o[a+5|0]=0,na(a,a+704|0),ya(a)):na(a,a+704|0),r[7224]||(q[1807]=6,o[7224]=1,q[1808]=7,q[1809]=8,q[1810]=9),Lk=q[a+704>>2],1<=(0|(Mk=q[Lk+16>>2]))){for(Nk=q[a+912>>2],Sk=Nk+(Mk<<2)|0,Ok=q[a+908>>2];;){Rk=q[a+1204>>2]+(q[Ok>>2]<<2)|0,Lk=0,Mk=q[Nk>>2],Kk=Mk+-1|0;d:if(!((0|Kk)<1))e:for(;;){for(;;){if(q[(Pk=Rk+(Lk<<2)|0)>>2]<=-1){if(!function(a,Vk,ql){var rl=0,sl=0;a:if((0|a)!=(0|Vk)){if(!(a>>>0>>0&&Vk>>>0<(sl=a+ql|0)>>>0))return $(a,Vk,ql);if(rl=3&(a^Vk),a>>>0>>0){if(!rl){if(3&a)for(;;){if(!ql)break a;if(o[0|a]=r[0|Vk],Vk=Vk+1|0,ql=ql+-1|0,!(3&(a=a+1|0)))break}if(!(ql>>>0<=3)){for(rl=ql;;)if(q[a>>2]=q[Vk>>2],Vk=Vk+4|0,a=a+4|0,!(3<(rl=rl+-4|0)>>>0))break;ql&=3}}if(ql)for(;;)if(o[0|a]=r[0|Vk],a=a+1|0,Vk=Vk+1|0,!(ql=ql+-1|0))break}else{if(!rl){if(3&sl)for(;;){if(!ql)break a;if(o[0|(rl=(ql=ql+-1|0)+a|0)]=r[Vk+ql|0],!(3&rl))break}if(!(ql>>>0<=3))for(;;)if(q[(ql=ql+-4|0)+a>>2]=q[Vk+ql>>2],!(3>>0))break}if(ql)for(;;)if(o[(ql=ql+-1|0)+a|0]=r[Vk+ql|0],!ql)break}}}(Pk,Pk+4|0,(-1^Lk)+Mk<<2),(0|Lk)<(0|(Kk=(Mk=Kk)+-1|0)))continue e;break d}if(!((0|(Lk=Lk+1|0))<(0|Kk)))break}break}if(Lk=Nk,0<(0|Mk)&&(Mk=q[Rk+(Kk<<2)>>2]<0?Kk:Mk),q[Lk>>2]=Mk,Ok=Ok+4|0,!((Nk=Nk+4|0)>>>0>>0))break}Lk=q[a+704>>2]}if(1<=q[Lk>>2])for(Kk=0;;)if(q[q[a+712>>2]+(Kk<<2)>>2]=q[a+716>>2]+(Kk<<6),Kk=Kk+1|0,Lk=q[a+704>>2],!((0|Kk)>2]))break;if(1<=q[Lk+4>>2])for(Kk=0;;)if(q[q[a+744>>2]+(Kk<<2)>>2]=q[a+748>>2]+(Kk<<6),Kk=Kk+1|0,Lk=q[a+704>>2],!((0|Kk)>2]))break;if(1<=q[Lk+16>>2])for(Kk=0;;)if(q[(Mk=Kk<<2)+q[a+832>>2]>>2]=q[a+848>>2]+(Kk<<6),q[Mk+q[a+836>>2]>>2]=q[a+1196>>2]+(q[Mk+q[a+896>>2]>>2]<<2),q[Mk+q[a+840>>2]>>2]=q[a+1200>>2]+(q[Mk+q[a+900>>2]>>2]<<1),q[Mk+q[a+844>>2]>>2]=q[a+1204>>2]+(q[Mk+q[a+908>>2]>>2]<<2),Kk=Kk+1|0,Lk=q[a+704>>2],!((0|Kk)>2]))break;if(1<=q[Lk+20>>2])for(Kk=0;;)if(q[q[a+916>>2]+(Kk<<2)>>2]=q[a+920>>2]+(Kk<<6),Kk=Kk+1|0,Lk=q[a+704>>2],!((0|Kk)>2]))break;if(1<=q[Lk+80>>2])for(Kk=0;;)if(q[q[a+1240>>2]+(Kk<<2)>>2]=q[a+1244>>2]+(Kk<<6),Kk=Kk+1|0,Lk=q[a+704>>2],!((0|Kk)>2]))break;if(1&o[q[a+708>>2]+20|0])break a;if((0|(Nk=q[Lk+16>>2]))<1)break a;for(Kk=q[a+904>>2],Rk=q[a+900>>2],Pk=q[a+1200>>2],Ok=0;;){if(0<(0|(Sk=q[(Mk=Ok<<2)+Kk>>2]+-1|0)))for(Tk=Pk+(q[Mk+Rk>>2]<<1)|0,Lk=0;;)if(Uk=s[(Mk=Tk+(Lk<<1)|0)>>1],p[Mk>>1]=s[Mk+4>>1],p[Mk+4>>1]=Uk,!((0|(Lk=Lk+3|0))<(0|Sk)))break;if((0|Nk)==(0|(Ok=Ok+1|0)))break}for(Mk=q[a+892>>2],Ok=q[a+896>>2],Rk=q[a+1196>>2],Kk=0;;){if(1<=(0|(Pk=q[(Lk=Kk<<2)+Mk>>2])))for(Lk=Rk+(q[Lk+Ok>>2]<<2)|0,Pk=Lk+(Pk<<3)|0,Lk=Lk+4|0;;)if(u[Lk>>2]=x(1)-u[Lk>>2],!((Lk=Lk+8|0)>>>0>>0))break;if((0|Nk)==(0|(Kk=Kk+1|0)))break}break a}q[4+Qk>>2]=Mk,q[Qk>>2]=5,Y(4,2023,Qk)}a=0}return L=32+Qk|0,a}(a):(q[20+fj>>2]=1621,q[16+fj>>2]=2305,Y(4,1294,16+fj|0),0):(q[4+fj>>2]=1444,q[fj>>2]=2305,Y(4,1294,fj),0),L=48+fj|0,0|a},k:function(a,ej,fj,gj){var hj;ej|=0,fj|=0,gj|=0,L=hj=L+-64|0,(a|=0)?ej?fj?gj?(a=q[q[a>>2]+708>>2],q[ej>>2]=q[a+12>>2],q[ej+4>>2]=q[a+16>>2],q[fj>>2]=q[a+4>>2],q[fj+4>>2]=q[a+8>>2],q[gj>>2]=q[a>>2]):(q[52+hj>>2]=1995,q[48+hj>>2]=2325,Y(4,1294,48+hj|0)):(q[36+hj>>2]=1903,q[32+hj>>2]=2325,Y(4,1294,32+hj|0)):(q[20+hj>>2]=1819,q[16+hj>>2]=2325,Y(4,1294,16+hj|0)):(q[4+hj>>2]=1740,q[hj>>2]=2325,Y(4,1294,hj)),L=hj+64|0},l:xa,m:wa,n:function(a){var dj;L=dj=L-16|0,(a|=0)?ua(a):(q[4+dj>>2]=1740,q[dj>>2]=2387,Y(4,1294,dj)),L=16+dj|0},o:function(a){var cj;return L=cj=L-16|0,a=(a|=0)?q[a+540>>2]:(q[4+cj>>2]=1740,q[cj>>2]=2402,Y(4,1294,cj),-1),L=16+cj|0,0|a},p:function(a){var bj;return L=bj=L-16|0,a=(a|=0)?q[q[a>>2]+916>>2]:(q[4+bj>>2]=1740,q[bj>>2]=2423,Y(4,1294,bj),0),L=16+bj|0,0|a},q:function(a){var aj;return L=aj=L-16|0,a=(a|=0)?q[a+548>>2]:(q[4+aj>>2]=1740,q[aj>>2]=2442,Y(4,1294,aj),0),L=16+aj|0,0|a},r:function(a){var $i;return L=$i=L-16|0,a=(a|=0)?q[q[a>>2]+928>>2]:(q[4+$i>>2]=1740,q[$i>>2]=2463,Y(4,1294,$i),0),L=16+$i|0,0|a},s:function(a){var _i;return L=_i=L-16|0,a=(a|=0)?q[q[a>>2]+924>>2]:(q[4+_i>>2]=1740,q[_i>>2]=2492,Y(4,1294,_i),0),L=16+_i|0,0|a},t:function(a){var Zi;return L=Zi=L-16|0,a=(a|=0)?q[q[a>>2]+932>>2]:(q[4+Zi>>2]=1740,q[Zi>>2]=2521,Y(4,1294,Zi),0),L=16+Zi|0,0|a},u:function(a){var Yi;return L=Yi=L-16|0,a=(a|=0)?q[a+552>>2]:(q[4+Yi>>2]=1740,q[Yi>>2]=2550,Y(4,1294,Yi),0),L=16+Yi|0,0|a},v:function(a){var Xi;return L=Xi=L-16|0,a=(a|=0)?q[a+4>>2]:(q[4+Xi>>2]=1740,q[Xi>>2]=2572,Y(4,1294,Xi),-1),L=16+Xi|0,0|a},w:function(a){var Wi;return L=Wi=L-16|0,a=(a|=0)?q[q[a>>2]+712>>2]:(q[4+Wi>>2]=1740,q[Wi>>2]=2588,Y(4,1294,Wi),0),L=16+Wi|0,0|a},x:function(a){var Vi;return L=Vi=L-16|0,a=(a|=0)?q[a+52>>2]:(q[4+Vi>>2]=1740,q[Vi>>2]=2602,Y(4,1294,Vi),0),L=16+Vi|0,0|a},y:function(a){var Ui;return L=Ui=L-16|0,a=(a|=0)?q[q[a>>2]+740>>2]:(q[4+Ui>>2]=1740,q[Ui>>2]=2622,Y(4,1294,Ui),0),L=16+Ui|0,0|a},z:function(a){var Ti;return L=Ti=L-16|0,a=(a|=0)?q[a+332>>2]:(q[4+Ti>>2]=1740,q[Ti>>2]=2650,Y(4,1294,Ti),-1),L=16+Ti|0,0|a},A:function(a){var Si;return L=Si=L-16|0,a=(a|=0)?q[q[a>>2]+832>>2]:(q[4+Si>>2]=1740,q[Si>>2]=2670,Y(4,1294,Si),0),L=16+Si|0,0|a},B:function(a){var Ri;return L=Ri=L-16|0,a=(a|=0)?q[q[a>>2]+888>>2]:(q[4+Ri>>2]=1740,q[Ri>>2]=2688,Y(4,1294,Ri),0),L=16+Ri|0,0|a},C:function(a){var Qi;return L=Qi=L-16|0,a=(a|=0)?q[a+432>>2]:(q[4+Qi>>2]=1740,q[Qi>>2]=2716,Y(4,1294,Qi),0),L=16+Qi|0,0|a},D:function(a){var Pi;return L=Pi=L-16|0,a=(a|=0)?q[q[a>>2]+884>>2]:(q[4+Pi>>2]=1740,q[Pi>>2]=2743,Y(4,1294,Pi),0),L=16+Pi|0,0|a},E:function(a){var Oi;return L=Oi=L-16|0,a=(a|=0)?q[a+440>>2]:(q[4+Oi>>2]=1740,q[Oi>>2]=2772,Y(4,1294,Oi),0),L=16+Oi|0,0|a},F:function(a){var Ni;return L=Ni=L-16|0,a=(a|=0)?q[a+436>>2]:(q[4+Ni>>2]=1740,q[Ni>>2]=2797,Y(4,1294,Ni),0),L=16+Ni|0,0|a},G:function(a){var Mi;return L=Mi=L-16|0,a=(a|=0)?q[a+448>>2]:(q[4+Mi>>2]=1740,q[Mi>>2]=2824,Y(4,1294,Mi),0),L=16+Mi|0,0|a},H:function(a){var Li;return L=Li=L-16|0,a=(a|=0)?q[q[a>>2]+912>>2]:(q[4+Li>>2]=1740,q[Li>>2]=2848,Y(4,1294,Li),0),L=16+Li|0,0|a},I:function(a){var Ki;return L=Ki=L-16|0,a=(a|=0)?q[q[a>>2]+844>>2]:(q[4+Ki>>2]=1740,q[Ki>>2]=2873,Y(4,1294,Ki),0),L=16+Ki|0,0|a},J:function(a){var Ji;return L=Ji=L-16|0,a=(a|=0)?q[q[a>>2]+892>>2]:(q[4+Ji>>2]=1740,q[Ji>>2]=2893,Y(4,1294,Ji),0),L=16+Ji|0,0|a},K:function(a){var Ii;return L=Ii=L-16|0,a=(a|=0)?q[a+444>>2]:(q[4+Ii>>2]=1740,q[Ii>>2]=2920,Y(4,1294,Ii),0),L=16+Ii|0,0|a},L:function(a){var Hi;return L=Hi=L-16|0,a=(a|=0)?q[q[a>>2]+836>>2]:(q[4+Hi>>2]=1740,q[Hi>>2]=2950,Y(4,1294,Hi),0),L=16+Hi|0,0|a},M:function(a){var ri;return L=ri=L-16|0,a=(a|=0)?q[q[a>>2]+904>>2]:(q[4+ri>>2]=1740,q[ri>>2]=2974,Y(4,1294,ri),0),L=16+ri|0,0|a},N:function(a){var qi;return L=qi=L-16|0,a=(a|=0)?q[q[a>>2]+840>>2]:(q[4+qi>>2]=1740,q[qi>>2]=3e3,Y(4,1294,qi),0),L=16+qi|0,0|a},O:function(a){var pi;return L=pi=L-16|0,a=(a|=0)?q[a+452>>2]:(q[4+pi>>2]=1740,q[pi>>2]=3022,Y(4,1294,pi),0),L=16+pi|0,0|a},P:function(a){var oi;return L=oi=L-16|0,a=(a|=0)?q[a+456>>2]:(q[4+oi>>2]=1740,q[oi>>2]=3051,Y(4,1294,oi),0),L=16+oi|0,0|a},Q:function(a){var ni;return L=ni=L-16|0,a=(a|=0)?q[q[a>>2]+876>>2]:(q[4+ni>>2]=1740,q[ni>>2]=3078,Y(4,1294,ni),0),L=16+ni|0,0|a},R:function(a){var mi;L=mi=L-16|0,(a|=0)?q[a+428>>2]=1:(q[4+mi>>2]=1740,q[mi>>2]=3110,Y(4,1294,mi)),L=16+mi|0},S:function(a){var li;return L=li=L-16|0,a=(a|=0)?q[a+640>>2]:(q[4+li>>2]=1740,q[li>>2]=3139,Y(4,1294,li),0),L=16+li|0,0|a},T:function(a){var ji;return L=ji=L-16|0,a=(a|=0)?q[a+636>>2]:(q[4+ji>>2]=1740,q[ji>>2]=3164,Y(4,1294,ji),0),L=16+ji|0,0|a},U:function(a){var Fc;return oa(12+(L=Fc=L-16|0)|0,64,a|=0),L=16+Fc|0,q[12+Fc>>2]},V:function(a){var Ec,Cc,Dc=0;return L=Cc=L-16|0,!(a|=0)||oa(12+Cc|0,16,Ec=xa(a))||(Dc=wa(a,q[12+Cc>>2],Ec))||(pa(q[12+Cc>>2]),Dc=0),L=16+Cc|0,0|Dc},W:function(a){return 0|qa(a|=0)},X:function(a){pa(a|=0)},Y:function(a){var Sm;oa(12+(L=Sm=L-16|0)|0,64,a|=0),pa(q[12+Sm>>2]),L=16+Sm|0},Z:function(){return 0|L},_:function(a){return 0|(L=a=L-(a|=0)&-16)},$:function(a){L=a|=0},aa:function(a){return 0|function(pagesToAdd){pagesToAdd|=0;var P=0|N(),pagesToAdd=P+pagesToAdd|0;{var S;P>>0<(d=(e=a+b|0)-1|0)>>>0)for(;;)if(f=r[0|a],o[0|a]=r[0|d],o[0|d]=f,!((a=a+1|0)>>>0<(d=d+-1|0)>>>0))break;if(a=e,!c)break}}function Y(a,b,c){var g;L=g=L-272|0,t[1804]>a>>>0||(a=q[1805])&&(Ka(16+g|0,b,q[12+g>>2]=c),n[a](16+g|0)),L=272+g|0}function Z(a,b,c){32&r[0|a]||!function(a,Rm,Sm){var Tm=0,Um=0,tn=0;a:{if(!(Tm=q[Sm+16>>2])){if(function(a){var Rm=0;if(Rm=r[a+74|0],o[a+74|0]=Rm+-1|Rm,8&(Rm=q[a>>2]))return q[a>>2]=32|Rm,1;return q[a+4>>2]=0,q[a+8>>2]=0,Rm=q[a+44>>2],q[a+28>>2]=Rm,q[a+20>>2]=Rm,q[a+16>>2]=Rm+q[a+48>>2],0}(Sm))break a;Tm=q[Sm+16>>2]}if(tn=q[Sm+20>>2],Tm-tn>>>0>>0)return n[q[Sm+36>>2]](Sm,a,Rm);b:if(!(o[Sm+75|0]<0)){for(Tm=Rm;;){if(!(Um=Tm))break b;if(10==r[(Tm=Um+-1|0)+a|0])break}if(n[q[Sm+36>>2]](Sm,a,Um)>>>0>>0)break a;Rm=Rm-Um|0,a=a+Um|0,tn=q[Sm+20>>2]}$(tn,a,Rm),q[Sm+20>>2]=q[Sm+20>>2]+Rm}}(b,c,a)}function _(a,b,c,h,i){var k,l,j;if(L=j=L-256|0,!(73728&i|(0|c)<=(0|h))){if(ca(j,b,(k=(i=c-h|0)>>>0<256)?i:256),b=a,l=j,!k){for(c=c-h|0;;)if(Z(a,j,256),!(255<(i=i+-256|0)>>>0))break;i=255&c}Z(b,l,i)}L=256+j|0}function $(a,b,c){var h,i=0;if(8192<=c>>>0)I(0|a,0|b,0|c);else{if(h=a+c|0,3&(a^b)){if(h>>>0<4)c=a;else if((i=h-4|0)>>>0>>0)c=a;else for(c=a;;)if(o[0|c]=r[0|b],o[c+1|0]=r[b+1|0],o[c+2|0]=r[b+2|0],o[c+3|0]=r[b+3|0],b=b+4|0,!((c=c+4|0)>>>0<=i>>>0))break}else{b:if((0|c)<1)c=a;else if(3&a)for(c=a;;){if(o[0|c]=r[0|b],b=b+1|0,h>>>0<=(c=c+1|0)>>>0)break b;if(!(3&c))break}else c=a;if(!((a=-4&h)>>>0<64||(i=a+-64|0)>>>0>>0))for(;;)if(q[c>>2]=q[b>>2],q[c+4>>2]=q[b+4>>2],q[c+8>>2]=q[b+8>>2],q[c+12>>2]=q[b+12>>2],q[c+16>>2]=q[b+16>>2],q[c+20>>2]=q[b+20>>2],q[c+24>>2]=q[b+24>>2],q[c+28>>2]=q[b+28>>2],q[c+32>>2]=q[b+32>>2],q[c+36>>2]=q[b+36>>2],q[c+40>>2]=q[b+40>>2],q[c+44>>2]=q[b+44>>2],q[c+48>>2]=q[b+48>>2],q[c+52>>2]=q[b+52>>2],q[c+56>>2]=q[b+56>>2],q[c+60>>2]=q[b+60>>2],b=b- -64|0,!((c=c- -64|0)>>>0<=i>>>0))break;if(!(a>>>0<=c>>>0))for(;;)if(q[c>>2]=q[b>>2],b=b+4|0,!((c=c+4|0)>>>0>>0))break}if(c>>>0>>0)for(;;)if(o[0|c]=r[0|b],b=b+1|0,(0|h)==(0|(c=c+1|0)))break}}function aa(a){var b,c;return x((b=a*a)*b*(c=b*a)*(2718311493989822e-21*b-.00019839334836096632)+(c*(.008333329385889463*b-.16666666641626524)+a))}function ba(a){var m;return x(-.499999997251031*(a*=a)+1+.04166662332373906*(m=a*a)+a*m*(2439044879627741e-20*a-.001388676377460993))}function ca(a,n,p){var r,s,t,u;if(p&&(o[(r=a+p|0)-1|0]=n,o[0|a]=n,!(p>>>0<3||(o[r-2|0]=n,o[a+1|0]=n,o[r-3|0]=n,o[a+2|0]=n,p>>>0<7)||(o[r-4|0]=n,o[a+3|0]=n,p>>>0<9)||(s=(r=0-a&3)+a|0,n=w(255&n,16843009),q[s>>2]=n,q[(r=(p=p-r&-4)+s|0)-4>>2]=n,p>>>0<9)||(q[8+s>>2]=n,q[4+s>>2]=n,q[r-8>>2]=n,q[r-12>>2]=n,p>>>0<25)||(q[24+s>>2]=n,q[20+s>>2]=n,q[16+s>>2]=n,q[12+s>>2]=n,q[r-16>>2]=n,q[r-20>>2]=n,q[r-24>>2]=n,q[r-28>>2]=n,(p=p-(u=4&s|24)|0)>>>0<32))))for(t=r=n,n=s+u|0;;)if(q[n+24>>2]=t,q[n+28>>2]=r,q[n+16>>2]=t,q[n+20>>2]=r,q[n+8>>2]=t,q[n+12>>2]=r,q[n>>2]=t,q[n+4>>2]=r,n=n+32|0,!(31<(p=p+-32|0)>>>0))break;return a}function da(a,n){var p;if(a>>>0<(n=(a+n|0)-1|0)>>>0)for(;;)if(p=r[0|a],o[0|a]=r[0|n],o[0|n]=p,!((a=a+1|0)>>>0<(n=n+-1|0)>>>0))break}function ea(a){var n=0,o=N();return(a=(n=q[2216])+a|0)>>>0<=o<<16>>>0||J(0|a)?(q[2216]=a,n):(q[2086]=48,-1)}function fa(a,v,y,z,B,C,D){var H,I,K,N,Q,R,S,O,P,J,E=0,F=x(0),G=x(0),M=x(0);x(0),x(0),x(0),x(0);if(L=J=L-16|0,1<=(0|a))for(R=w(a,12)+v|0;;){if(1<=(0|(I=q[v+4>>2])))for(S=(a=q[v+8>>2])+w(I,48)|0,I=(H=q[v>>2]<<4)+D|0,K=(8|H)+D|0,H=(4|H)+D|0;;)if((E=q[a+8>>2])&&((O=E+-1|0)>>>0<=1?(P=(q[a+4>>2]<<2)+y|0,E=q[P+(q[a+12>>2]<<2)>>2]<<2,F=u[E+C>>2],Q=u[B+E>>2],G=u[z+E>>2],O-1?(M=G,G=u[a+20>>2],u[I>>2]=u[I>>2]+x(u[a+44>>2]*x(M*G)),u[H>>2]=u[H>>2]+x(x(Q*G)*u[a+44>>2]),u[K>>2]=u[K>>2]+x(x(F*G)*u[a+44>>2])):(E=q[(q[a+16>>2]<<2)+P>>2]<<2,O=u[E+C>>2],P=u[B+E>>2],M=G,G=u[a+20>>2],N=u[a+24>>2],u[I>>2]=u[I>>2]+x(u[a+44>>2]*x(x(M*G)+x(u[z+E>>2]*N))),u[H>>2]=u[H>>2]+x(x(x(Q*G)+x(P*N))*u[a+44>>2]),u[K>>2]=u[K>>2]+x(x(x(F*G)+x(O*N))*u[a+44>>2]))):(q[J>>2]=E,Y(4,1024,J))),!((a=a+48|0)>>>0>>0))break;if(a=(q[v>>2]<<4)+D|0,F=u[a>>2],u[a>>2]=F>2],u[a+4>>2]=F>2],u[a+8>>2]=F>>0>>0))break}L=16+J|0}function ga(a,q,v){var y,x=0,z=0;if(1==(0|q)&a>>>0<0|q>>>0<1)x=a;else for(;;)if(y=ad(x=bd(a,q,10),z=M,10),o[0|(v=v+-1|0)]=a-y|48,y=9==(0|q)&4294967295>>0|9>>0,a=x,q=z,!y)break;if(x)for(;;)if(o[0|(v=v+-1|0)]=x-w(a=(x>>>0)/10|0,10)|48,q=9>>0,x=a,!q)break;return v}function ha(a){return a+-48>>>0<10}function ia(a){var q;return(q=La(a,64))?q-a|0:64}function ja(a,v){var w=0;return 1024<=(0|v)?(a*=898846567431158e293,v=(0|(w=v+-1023|0))<1024?w:(a*=898846567431158e293,((0|v)<3069?v:3069)+-2046|0)):-1023<(0|v)||(a*=22250738585072014e-324,v=-1023<(0|(w=v+1022|0))?w:(a*=22250738585072014e-324,(-3066<(0|v)?v:-3066)+2044|0)),f(0,0),f(1,v+1023<<20),a*+g()}function ka(a,v){var A=0,B=0,C=a,B=v>>>0<=31?(A=q[a+4>>2],q[a>>2]):(A=q[a>>2],q[a+4>>2]=A,v=v+-32|(q[a>>2]=0),0);q[C>>2]=B<>2]=A<>>32-v}function la(a,v,D,V,W){var X,Y=0,Z=0,_=0;L=X=L-240|0,Y=q[v>>2],q[232+X>>2]=Y,v=q[v+4>>2],q[X>>2]=a,q[236+X>>2]=v,Z=1;a:{b:{c:{if((v||1!=(0|Y))&&(Y=a-q[(D<<2)+W>>2]|0,!((0|n[5](Y,a))<1))){for(_=!V;;){e:{if(v=Y,!(!_|(0|D)<2)){if(V=q[((D<<2)+W|0)-8>>2],-1<(0|n[5](Y=a+-4|0,v)))break e;if(-1<(0|n[5](Y-V|0,v)))break e}if(q[(Z<<2)+X>>2]=v,Z=Z+1|0,ma(232+X|0,a=Oa(232+X|0)),D=a+D|0,!q[236+X>>2]&&1==q[232+X>>2])break b;if(_=1,Y=(a=v)-q[(D<<2)+W>>2]|(V=0),0<(0|n[5](Y,q[X>>2])))continue;break c}break}v=a;break b}v=a}if(V)break a}Na(X,Z),ta(v,D,W)}L=240+X|0}function ma(a,v){var D=0,L=0,V=a,L=v>>>0<=31?(D=q[a>>2],q[a+4>>2]):(D=q[a+4>>2],q[a+4>>2]=0,q[a>>2]=D,v=v+-32|0,0);q[V+4>>2]=L>>>v,q[a>>2]=L<<32-v|D>>>v}function na(a,v){var W=r[a+4|0];q[v>>2]=q[a+64>>2]+a,q[v+4>>2]=q[a+68>>2]+a,q[v+8>>2]=q[a+72>>2]+a,q[v+12>>2]=q[a+76>>2]+a,q[v+16>>2]=q[a+80>>2]+a,q[v+20>>2]=q[a+84>>2]+a,q[v+24>>2]=q[a+88>>2]+a,q[v+28>>2]=q[a+92>>2]+a,q[v+32>>2]=q[a+96>>2]+a,q[v+36>>2]=q[a+100>>2]+a,q[v+40>>2]=q[a+104>>2]+a,q[v+44>>2]=q[a+108>>2]+a,q[v+48>>2]=q[a+112>>2]+a,q[v+52>>2]=q[a+116>>2]+a,q[v+56>>2]=q[a+120>>2]+a,q[v+60>>2]=q[a+124>>2]+a,q[v- -64>>2]=q[a+128>>2]+a,q[v+68>>2]=q[a+132>>2]+a,q[v+72>>2]=q[a+136>>2]+a,q[v+76>>2]=q[a+140>>2]+a,q[v+80>>2]=q[a+144>>2]+a,q[v+84>>2]=q[a+148>>2]+a,q[v+92>>2]=q[a+152>>2]+a,q[v+96>>2]=q[a+156>>2]+a,q[v+100>>2]=q[a+160>>2]+a,q[v+108>>2]=q[a+164>>2]+a,q[v+112>>2]=q[a+168>>2]+a,q[v+116>>2]=q[a+172>>2]+a,q[v+124>>2]=q[a+176>>2]+a,q[v+128>>2]=q[a+180>>2]+a,q[v+132>>2]=q[a+184>>2]+a,q[v+136>>2]=q[a+188>>2]+a,q[v+140>>2]=q[a+192>>2]+a,q[v+144>>2]=q[a+196>>2]+a,q[v+148>>2]=q[a+200>>2]+a,q[v+152>>2]=q[a+204>>2]+a,q[v+156>>2]=q[a+208>>2]+a,q[v+164>>2]=q[a+212>>2]+a,q[v+168>>2]=q[a+216>>2]+a,q[v+172>>2]=q[a+220>>2]+a,q[v+176>>2]=q[a+224>>2]+a,q[v+180>>2]=q[a+228>>2]+a,q[v+184>>2]=q[a+232>>2]+a,q[v+188>>2]=q[a+236>>2]+a,q[v+192>>2]=q[a+240>>2]+a,q[v+196>>2]=q[a+244>>2]+a,q[v+200>>2]=q[a+248>>2]+a,q[v+204>>2]=q[a+252>>2]+a,q[v+208>>2]=q[a+256>>2]+a,q[v+212>>2]=q[a+260>>2]+a,q[v+216>>2]=q[a+264>>2]+a,q[v+220>>2]=q[a+268>>2]+a,q[v+224>>2]=q[a+272>>2]+a,q[v+228>>2]=q[a+276>>2]+a,q[v+232>>2]=q[a+280>>2]+a,q[v+236>>2]=q[a+284>>2]+a,q[v+244>>2]=q[a+288>>2]+a,q[v+248>>2]=q[a+292>>2]+a,q[v+272>>2]=q[a+296>>2]+a,q[v+276>>2]=q[a+300>>2]+a,q[v+280>>2]=q[a+304>>2]+a,q[v+292>>2]=q[a+308>>2]+a,q[v+296>>2]=q[a+312>>2]+a,q[v+300>>2]=q[a+316>>2]+a,q[v+304>>2]=q[a+320>>2]+a,q[v+308>>2]=q[a+324>>2]+a,q[v+312>>2]=q[a+328>>2]+a,q[v+316>>2]=q[a+332>>2]+a,q[v+328>>2]=q[a+336>>2]+a,q[v+332>>2]=q[a+340>>2]+a,q[v+336>>2]=q[a+344>>2]+a,q[v+348>>2]=q[a+348>>2]+a,q[v+360>>2]=q[a+352>>2]+a,q[v+364>>2]=q[a+356>>2]+a,q[v+368>>2]=q[a+360>>2]+a,q[v+352>>2]=q[a+364>>2]+a,q[v+356>>2]=q[a+368>>2]+a,q[v+488>>2]=q[a+372>>2]+a,q[v+492>>2]=q[a+376>>2]+a,q[v+496>>2]=q[a+380>>2]+a,q[v+500>>2]=q[a+384>>2]+a,q[v+504>>2]=q[a+388>>2]+a,q[v+508>>2]=q[a+392>>2]+a,q[v+512>>2]=q[a+396>>2]+a,q[v+516>>2]=q[a+400>>2]+a,q[v+520>>2]=q[a+404>>2]+a,q[v+524>>2]=q[a+408>>2]+a,q[v+528>>2]=q[a+412>>2]+a,q[v+532>>2]=q[a+416>>2]+a,q[v+536>>2]=q[a+420>>2]+a,q[v+540>>2]=q[a+424>>2]+a,q[v+544>>2]=q[a+428>>2]+a,q[v+548>>2]=q[a+432>>2]+a,q[v+552>>2]=q[a+436>>2]+a,q[v+556>>2]=q[a+440>>2]+a,q[v+560>>2]=q[a+444>>2]+a,q[v+564>>2]=q[a+448>>2]+a,q[v+568>>2]=q[a+452>>2]+a,q[v+572>>2]=q[a+456>>2]+a,q[v+576>>2]=q[a+460>>2]+a,q[v+580>>2]=q[a+464>>2]+a,W>>>0<2||(q[v+104>>2]=q[a+468>>2]+a,W>>>0<4)||(q[v+260>>2]=q[a+472>>2]+a,q[v+264>>2]=q[a+476>>2]+a,q[v+268>>2]=q[a+480>>2]+a,q[v+88>>2]=q[a+484>>2]+a,q[v+120>>2]=q[a+488>>2]+a,q[v+160>>2]=q[a+492>>2]+a,q[v+584>>2]=q[a+496>>2]+a,q[v+588>>2]=q[a+500>>2]+a,q[v+592>>2]=q[a+504>>2]+a,q[v+596>>2]=q[a+508>>2]+a,q[v+600>>2]=q[a+512>>2]+a,q[v+604>>2]=q[a+516>>2]+a,q[v+240>>2]=q[a+520>>2]+a,q[v+252>>2]=q[a+524>>2]+a,q[v+256>>2]=q[a+528>>2]+a,q[v+372>>2]=q[a+532>>2]+a,q[v+376>>2]=q[a+536>>2]+a,q[v+380>>2]=q[a+540>>2]+a,q[v+384>>2]=q[a+544>>2]+a,q[v+388>>2]=q[a+548>>2]+a,q[v+392>>2]=q[a+552>>2]+a,q[v+396>>2]=q[a+556>>2]+a,q[v+400>>2]=q[a+560>>2]+a,q[v+416>>2]=q[a+564>>2]+a,q[v+420>>2]=q[a+568>>2]+a,q[v+424>>2]=q[a+572>>2]+a,q[v+440>>2]=q[a+576>>2]+a,q[v+444>>2]=q[a+580>>2]+a,q[v+448>>2]=q[a+584>>2]+a,q[v+464>>2]=q[a+588>>2]+a,q[v+468>>2]=q[a+592>>2]+a,q[v+472>>2]=q[a+596>>2]+a,q[v+476>>2]=q[a+600>>2]+a,q[v+480>>2]=q[a+604>>2]+a,q[v+484>>2]=q[a+608>>2]+a,4!=(0|W)&&(q[v+284>>2]=q[a+612>>2]+a,q[v+288>>2]=q[a+616>>2]+a,q[v+320>>2]=q[a+620>>2]+a,q[v+324>>2]=q[a+624>>2]+a,q[v+340>>2]=q[a+628>>2]+a,q[v+344>>2]=q[a+632>>2]+a,q[v+404>>2]=q[a+636>>2]+a,q[v+408>>2]=q[a+640>>2]+a,q[v+412>>2]=q[a+644>>2]+a,q[v+428>>2]=q[a+648>>2]+a,q[v+432>>2]=q[a+652>>2]+a,q[v+436>>2]=q[a+656>>2]+a,q[v+452>>2]=q[a+660>>2]+a,q[v+456>>2]=q[a+664>>2]+a,q[v+460>>2]=q[a+668>>2]+a))}function oa(a,v,$){var aa=0;a:{if(8==(0|v))v=qa($);else{if(aa=28,3&v|1!=(0|function(a){var $o=0,ap=0;for(;;){if(ap=$o,!a)break;a&=a-1,$o=$o+1|0}return ap}(v>>>2)))break a;if(aa=48,-64-v>>>0<$>>>0)break a;v=function(a,Vk){var ql=0,tl=0,ul=0,vl=0,wl=0;if((tl=a>>>0>(ql=16)?a:16)+-1&tl){for(;;)if(ql=(a=ql)<<1,!(a>>>0>>0))break}else a=tl;if(-64-a>>>0<=Vk>>>0)return q[2086]=48,0;if(!(ql=qa(12+((tl=Vk>>>0<11?16:Vk+11&-8)+a|0)|0)))return 0;Vk=ql+-8|0;ql&a+-1?(wl=q[(vl=ql+-4|0)>>2],ul=(-8&wl)-(ql=(a=15<(ql=((a+ql|0)-1&0-a)-8|0)-Vk>>>0?ql:a+ql|0)-Vk|0)|0,3&wl?(q[a+4>>2]=ul|1&q[a+4>>2]|2,q[4+(ul=a+ul|0)>>2]=1|q[4+ul>>2],q[vl>>2]=ql|1&q[vl>>2]|2,q[a+4>>2]=1|q[a+4>>2],za(Vk,ql)):(Vk=q[Vk>>2],q[a+4>>2]=ul,q[a>>2]=Vk+ql)):a=Vk;3&(Vk=q[a+4>>2])&&((ql=-8&Vk)>>>0<=tl+16>>>0||(q[a+4>>2]=tl|1&Vk|2,Vk=a+tl|0,tl=ql-tl|0,q[Vk+4>>2]=3|tl,q[(ql=a+ql|0)+4>>2]=1|q[ql+4>>2],za(Vk,tl)));return a+8|0}(16>>0?v:16,$)}if(!v)return 1;q[a>>2]=v,aa=0}return aa}function pa(a){var da,v=0,$=0,ba=0,ca=0,ea=0,fa=0,ha=0;a:if(a){da=(ba=a+-8|0)+(a=-8&($=q[a+-4>>2]))|0;b:if(!(1&$)){if(!(3&$))break a;if((ba=ba-($=q[ba>>2])|0)>>>0>>0<=255)ca=q[ba+8>>2],$>>>=3,(0|(v=q[ba+12>>2]))==(0|ca)?(ha=q[2087]&dd($),q[8348>>2]=ha):(q[ca+12>>2]=v,q[v+8>>2]=ca);else{if(fa=q[ba+24>>2],(0|ba)!=(0|($=q[ba+12>>2])))v=q[ba+8>>2],q[v+12>>2]=$,q[$+8>>2]=v;else if((v=q[(ca=ba+20|0)>>2])||(v=q[(ca=ba+16|0)>>2])){for(;;)if(ea=ca,!((v=q[(ca=($=v)+20|0)>>2])||(ca=$+16|0,v=q[$+16>>2])))break;q[ea>>2]=0}else $=0;if(fa){ca=q[ba+28>>2];e:{if(q[(v=8652+(ca<<2)|0)>>2]==(0|ba)){if(q[v>>2]=$)break e;ha=q[2088]&dd(ca),q[8352>>2]=ha;break b}if(!(q[fa+(q[fa+16>>2]==(0|ba)?16:20)>>2]=$))break b}q[$+24>>2]=fa,(v=q[ba+16>>2])&&(q[$+16>>2]=v,q[v+24>>2]=$),(v=q[ba+20>>2])&&(q[$+20>>2]=v,q[v+24>>2]=$)}}else if(3==(3&($=q[4+da>>2])))return q[2089]=a,q[4+da>>2]=-2&$,q[ba+4>>2]=1|a,void(q[a+ba>>2]=a)}if(!(da>>>0<=ba>>>0)&&1&($=q[4+da>>2])){f:{if(!(2&$)){if(q[2093]==(0|da)){if(q[2093]=ba,a=q[2090]+a|0,q[2090]=a,q[ba+4>>2]=1|a,q[2092]!=(0|ba))break a;return q[2089]=0,void(q[2092]=0)}if(q[2092]==(0|da))return q[2092]=ba,a=q[2089]+a|0,q[2089]=a,q[ba+4>>2]=1|a,void(q[a+ba>>2]=a);a=(-8&$)+a|0;g:if($>>>0<=255)$>>>=3,(0|(v=q[8+da>>2]))==(0|(ca=q[12+da>>2]))?(ha=q[2087]&dd($),q[8348>>2]=ha):(q[v+12>>2]=ca,q[ca+8>>2]=v);else{if(fa=q[24+da>>2],(0|da)!=(0|($=q[12+da>>2])))v=q[8+da>>2],q[v+12>>2]=$,q[$+8>>2]=v;else if((v=q[(ca=20+da|0)>>2])||(v=q[(ca=16+da|0)>>2])){for(;;)if(ea=ca,!((v=q[(ca=($=v)+20|0)>>2])||(ca=$+16|0,v=q[$+16>>2])))break;q[ea>>2]=0}else $=0;if(fa){ca=q[28+da>>2];j:{if(q[(v=8652+(ca<<2)|0)>>2]==(0|da)){if(q[v>>2]=$)break j;ha=q[2088]&dd(ca),q[8352>>2]=ha;break g}if(!(q[fa+(q[fa+16>>2]==(0|da)?16:20)>>2]=$))break g}q[$+24>>2]=fa,(v=q[16+da>>2])&&(q[$+16>>2]=v,q[v+24>>2]=$),(v=q[20+da>>2])&&(q[$+20>>2]=v,q[v+24>>2]=$)}}if(q[ba+4>>2]=1|a,q[a+ba>>2]=a,q[2092]!=(0|ba))break f;return void(q[2089]=a)}q[4+da>>2]=-2&$,q[ba+4>>2]=1|a,q[a+ba>>2]=a}if(a>>>0<=255)return $=8388+((a>>>=3)<<3)|0,a=(v=q[2087])&(a=1<>2]:(q[2087]=a|v,$),q[$+8>>2]=ba,q[a+12>>2]=ba,q[ba+12>>2]=$,void(q[ba+8>>2]=a);q[ba+16>>2]=0,v=q[ba+20>>2]=0,(ca=a>>>8)&&(v=31,16777215>>0||(v=ca,v=28+((v=((v=(v<<=ca=ca+1048320>>>16&8)<<(fa=v+520192>>>16&4))<<(ea=v+245760>>>16&2)>>>15)-(ea|ca|fa)|0)<<1|a>>>v+21&1)|0)),ea=8652+((q[($=ba)+28>>2]=v)<<2)|0;m:if((ca=q[2088])&($=1<>>1)|0),$=q[ea>>2];n:{for(;;){if((-8&q[(v=$)+4>>2])==(0|a))break n;if($=ca>>>29,ca<<=1,!($=q[(ea=v+(4&$)|0)+16>>2]))break}q[ea+16>>2]=ba,q[ba+12>>2]=ba,q[ba+24>>2]=v,q[ba+8>>2]=ba;break m}a=q[v+8>>2],q[a+12>>2]=ba,q[v+8>>2]=ba,q[ba+24>>2]=0,q[ba+12>>2]=v,q[ba+8>>2]=a}else q[2088]=$|ca,q[ea>>2]=ba,q[ba+12>>2]=ba,q[ba+24>>2]=ea,q[ba+8>>2]=ba;if(a=q[2095]+-1|0,!(q[2095]=a)){for(ba=8804;;)if(ba=(a=q[ba>>2])+8|0,!a)break;q[2095]=-1}}}}function qa(a){var sa,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,ua=0;L=sa=L-16|0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(a>>>0<=244){if(3&(ia=(ma=q[2087])>>>(a=(na=a>>>0<11?16:a+11&-8)>>>3))){a=(ia=q[(la=(ja=a+(1&(-1^ia))|0)<<3)+8396>>2])+8|0,(0|(ka=q[ia+8>>2]))==(0|(la=la+8388|0))?(ua=dd(ja)&ma,q[8348>>2]=ua):(q[ka+12>>2]=la,q[la+8>>2]=ka),q[ia+4>>2]=3|(ja<<=3),q[(ia=ia+ja|0)+4>>2]=1|q[ia+4>>2];break a}if(na>>>0<=(pa=q[2089])>>>0)break k;if(ia){ja=ia=(a=(0-(a=(0-(ja=2<>>12&16,ia=q[(ka=(ja=((ja=(ja|=ia=(a>>>=ia)>>>5&8)|(ia=(a>>>=ia)>>>2&4)|(ia=(a>>>=ia)>>>1&2))|(ia=(a>>>=ia)>>>1&1))+(a>>>ia)|0)<<3)+8396>>2],(0|(a=q[ia+8>>2]))==(0|(ka=ka+8388|0))?(ma=dd(ja)&ma,q[2087]=ma):(q[a+12>>2]=ka,q[ka+8>>2]=a),a=ia+8|0,q[ia+4>>2]=3|na,q[(oa=ia+na|0)+4>>2]=1|(la=(ja<<=3)-na|0),q[ia+ja>>2]=la,pa&&(ia=8388+((ja=pa>>>3)<<3)|0,ka=q[2092],ja=(ja=1<>2]:(q[2087]=ja|ma,ia),q[ia+8>>2]=ka,q[ja+12>>2]=ka,q[ka+12>>2]=ia,q[ka+8>>2]=ja),q[2092]=oa,q[2089]=la;break a}if(!(ra=q[2088]))break k;for(ja=ia=(a=(ra&0-ra)-1|0)>>>12&16,ia=q[8652+(((ja=(ja|=ia=(a>>>=ia)>>>5&8)|(ia=(a>>>=ia)>>>2&4)|(ia=(a>>>=ia)>>>1&2))|(ia=(a>>>=ia)>>>1&1))+(a>>>ia)<<2)>>2],ka=(-8&q[ia+4>>2])-na|0,ja=ia;;){if(!(a=(a=q[ja+16>>2])||q[ja+20>>2]))break;ka=(ja=(la=(-8&q[a+4>>2])-na|0)>>>0>>0)?la:ka,ia=ja?a:ia,ja=a}if(qa=q[ia+24>>2],(0|(la=q[ia+12>>2]))!=(0|ia)){a=q[ia+8>>2],q[a+12>>2]=la,q[la+8>>2]=a;break b}if(!(a=q[(ja=ia+20|0)>>2])){if(!(a=q[ia+16>>2]))break j;ja=ia+16|0}for(;;)if(oa=ja,!((a=q[(ja=(la=a)+20|0)>>2])||(ja=la+16|0,a=q[la+16>>2])))break;q[oa>>2]=0;break b}if(na=-1,!(4294967231>>0)&&(na=-8&(ia=a+11|0),pa=q[2088])){ja=0-na|0,ma=0,(ia>>>=8)&&(ma=31,16777215>>0||(ma=28+((a=((ma=(ia<<=ka=ia+1048320>>>16&8)<<(a=ia+520192>>>16&4))<<(ia=ma+245760>>>16&2)>>>15)-(ia|a|ka)|0)<<1|na>>>a+21&1)|0));q:{r:{if(ka=q[8652+(ma<<2)>>2])for(ia=na<<(31==(0|ma)?0:25-(ma>>>1)|0),a=0;;){if(!(ja>>>0<=(oa=(-8&q[ka+4>>2])-na|0)>>>0||(la=ka,ja=oa))){ja=0,a=ka;break r}if(oa=q[ka+20>>2],ka=q[16+((ia>>>29&4)+ka|0)>>2],a=!oa||(0|oa)==(0|ka)?a:oa,ia<<=0!=(0|ka),!ka)break}else a=0;if(!(a|la)){if(!(a=(0-(a=2<>>12&16,a=q[8652+(((ka=(ka|=ia=(a>>>=ia)>>>5&8)|(ia=(a>>>=ia)>>>2&4)|(ia=(a>>>=ia)>>>1&2))|(ia=(a>>>=ia)>>>1&1))+(a>>>ia)<<2)>>2]}if(!a)break q}for(;;)if(ja=(ia=(ka=(-8&q[a+4>>2])-na|0)>>>0>>0)?ka:ja,la=ia?a:la,!(a=(ia=q[a+16>>2])||q[a+20>>2]))break}if(!(!la|ja>>>0>=q[2089]-na>>>0)){if(oa=q[la+24>>2],(0|la)!=(0|(ia=q[la+12>>2]))){a=q[la+8>>2],q[a+12>>2]=ia,q[ia+8>>2]=a;break c}if(!(a=q[(ka=la+20|0)>>2])){if(!(a=q[la+16>>2]))break i;ka=la+16|0}for(;;)if(ma=ka,!((a=q[(ka=(ia=a)+20|0)>>2])||(ka=ia+16|0,a=q[ia+16>>2])))break;q[ma>>2]=0;break c}}}if(na>>>0<=(ia=q[2089])>>>0){a=q[2092],16<=(ja=ia-na|0)>>>0?(q[2089]=ja,q[2092]=ka=a+na|0,q[ka+4>>2]=1|ja,q[a+ia>>2]=ja,q[a+4>>2]=3|na):(q[2092]=0,q[2089]=0,q[a+4>>2]=3|ia,q[(ia=a+ia|0)+4>>2]=1|q[ia+4>>2]),a=a+8|0;break a}if(na>>>0<(ka=q[2090])>>>0){q[2090]=ia=ka-na|0,a=q[2093],q[2093]=ja=a+na|0,q[ja+4>>2]=1|ia,q[a+4>>2]=3|na,a=a+8|0;break a}if((ja=(ma=(ja=la=na+47|(a=0))+(ia=q[2205]?q[2207]:(q[2208]=-1,q[2209]=-1,q[2206]=4096,q[2207]=4096,q[2205]=12+sa&-16^1431655768,q[2210]=0,q[2198]=0,4096))|0)&(oa=0-ia|0))>>>0<=na>>>0)break a;if((ia=q[2197])&&(qa=(pa=q[2195])+ja|0)>>>0<=pa>>>0|ia>>>0>>0)break a;if(4&r[8792])break f;v:{w:{if(ia=q[2093])for(a=8796;;){if((pa=q[a>>2])+q[a+4>>2]>>>0>ia>>>0&&pa>>>0<=ia>>>0)break w;if(!(a=q[a+8>>2]))break}if(-1==(0|(ia=ea(0))))break g;if(ma=ja,(ma=(ka=(a=q[2206])+-1|0)&ia?(ja-ia|0)+(ia+ka&0-a)|0:ma)>>>0<=na>>>0|2147483646>>0)break g;if((a=q[2197])&&(oa=(ka=q[2195])+ma|0)>>>0<=ka>>>0|a>>>0>>0)break g;if((0|ia)!=(0|(a=ea(ma))))break v;break e}if(2147483646<(ma=oa&ma-ka)>>>0)break g;if((0|(ia=ea(ma)))==(q[a>>2]+q[a+4>>2]|0))break h;a=ia}if(!(na+48>>>0<=ma>>>0|2147483646>>0|-1==(0|(ia=a)))){if(2147483646<(a=(a=q[2207])+(la-ma|0)&0-a)>>>0)break e;if(-1!=(0|ea(a))){ma=a+ma|0;break e}ea(0-ma|0);break g}if(-1!=(0|ia))break e;break g}la=0;break b}ia=0;break c}if(-1!=(0|ia))break e}q[2198]=4|q[2198]}if(2147483646>>0)break d;if(ia=ea(ja),(a=ea(0))>>>0<=ia>>>0|-1==(0|ia)|-1==(0|a))break d;if((ma=a-ia|0)>>>0<=na+40>>>0)break d}a=q[2195]+ma|0,(q[2195]=a)>>>0>t[2196]&&(q[2196]=a);x:{y:{z:{if(ja=q[2093]){for(a=8796;;){if(((ka=q[a>>2])+(la=q[a+4>>2])|0)==(0|ia))break z;if(!(a=q[a+8>>2]))break}break y}for((a=q[2091])>>>0<=ia>>>0&&a||(q[2091]=ia),a=0,q[2200]=ma,q[2199]=ia,q[2095]=-1,q[2096]=q[2205],q[2202]=0;;)if(q[(ja=a<<3)+8396>>2]=ka=ja+8388|0,q[ja+8400>>2]=ka,32==(0|(a=a+1|0)))break;q[2090]=ka=(a=ma+-40|0)-(ja=ia+8&7?-8-ia&7:0)|0,q[2093]=ja=ia+ja|0,q[ja+4>>2]=1|ka,q[4+(a+ia|0)>>2]=40,q[2094]=q[2209];break x}if(!(8&r[a+12|0]|ia>>>0<=ja>>>0|ja>>>0>>0)){q[a+4>>2]=la+ma,q[2093]=ia=(a=ja+8&7?-8-ja&7:0)+ja|0,ka=q[2090]+ma|0,q[2090]=a=ka-a|0,q[ia+4>>2]=1|a,q[4+(ja+ka|0)>>2]=40,q[2094]=q[2209];break x}}ia>>>0<(la=q[2091])>>>0&&(q[2091]=ia,la=0),ka=ia+ma|0,a=8796;A:{B:{C:{D:{E:{F:{for(;;){if((0|ka)==q[a>>2])break;if(!(a=q[a+8>>2]))break F}if(!(8&r[a+12|0]))break E}for(a=8796;;){if((ka=q[a>>2])>>>0<=ja>>>0&&ja>>>0<(la=ka+q[a+4>>2]|0)>>>0)break D;a=q[a+8>>2]}}if(q[a>>2]=ia,q[a+4>>2]=q[a+4>>2]+ma,q[(qa=(ia+8&7?-8-ia&7:0)+ia|0)+4>>2]=3|na,a=((ia=ka+(ka+8&7?-8-ka&7:0)|0)-qa|0)-na|0,oa=na+qa|0,(0|ia)==(0|ja)){q[2093]=oa,a=q[2090]+a|0,q[2090]=a,q[oa+4>>2]=1|a;break B}if(q[2092]==(0|ia)){q[2092]=oa,a=q[2089]+a|0,q[2089]=a,q[oa+4>>2]=1|a,q[a+oa>>2]=a;break B}if(1==(3&(ja=q[ia+4>>2]))){ra=-8&ja;G:if(ja>>>0<=255)la=ja>>>3,ja=q[ia+8>>2],(0|(ka=q[ia+12>>2]))==(0|ja)?(ua=q[2087]&dd(la),q[8348>>2]=ua):(q[ja+12>>2]=ka,q[ka+8>>2]=ja);else{if(pa=q[ia+24>>2],(0|(ma=q[ia+12>>2]))!=(0|ia))ja=q[ia+8>>2],q[ja+12>>2]=ma,q[ma+8>>2]=ja;else if((na=q[(ka=ia+20|0)>>2])||(na=q[(ka=ia+16|0)>>2])){for(;;)if(ja=ka,!((na=q[(ka=(ma=na)+20|0)>>2])||(ka=ma+16|0,na=q[ma+16>>2])))break;q[ja>>2]=0}else ma=0;if(pa){ja=q[ia+28>>2];J:{if(q[(ka=8652+(ja<<2)|0)>>2]==(0|ia)){if(q[ka>>2]=ma)break J;ua=q[2088]&dd(ja),q[8352>>2]=ua;break G}if(!(q[pa+(q[pa+16>>2]==(0|ia)?16:20)>>2]=ma))break G}q[ma+24>>2]=pa,(ja=q[ia+16>>2])&&(q[ma+16>>2]=ja,q[ja+24>>2]=ma),(ja=q[ia+20>>2])&&(q[ma+20>>2]=ja,q[ja+24>>2]=ma)}}ia=ia+ra|0,a=a+ra|0}if(q[ia+4>>2]=-2&q[ia+4>>2],q[oa+4>>2]=1|a,(q[a+oa>>2]=a)>>>0<=255){a=8388+((ia=a>>>3)<<3)|0,ia=(ja=q[2087])&(ia=1<>2]:(q[2087]=ia|ja,a),q[a+8>>2]=oa,q[ia+12>>2]=oa,q[oa+12>>2]=a,q[oa+8>>2]=ia;break B}if(ia=0,(ka=a>>>8)&&(ia=31,16777215>>0||(ia=28+((ia=((na=(ka<<=la=ka+1048320>>>16&8)<<(ia=ka+520192>>>16&4))<<(ka=na+245760>>>16&2)>>>15)-(ka|ia|la)|0)<<1|a>>>ia+21&1)|0)),q[(ja=oa)+28>>2]=ia,q[oa+16>>2]=0,ja=8652+(ia<<2)|(q[oa+20>>2]=0),(ka=q[2088])&(la=1<>>1)|0),ia=q[ja>>2];;){if((-8&q[(ja=ia)+4>>2])==(0|a))break C;if(ia=ka>>>29,ka<<=1,!(ia=q[(la=(4&ia)+ja|0)+16>>2]))break}q[la+16>>2]=oa}else q[2088]=ka|la,q[ja>>2]=oa;q[oa+24>>2]=ja,q[oa+12>>2]=oa,q[oa+8>>2]=oa;break B}for(q[2090]=oa=(a=ma+-40|0)-(ka=ia+8&7?-8-ia&7:0)|0,q[2093]=ka=ia+ka|0,q[ka+4>>2]=1|oa,q[4+(a+ia|0)>>2]=40,q[2094]=q[2209],q[(ka=(a=(la+(la+-39&7?39-la&7:0)|0)-47|0)>>>0>>0?ja:a)+4>>2]=27,a=q[2202],q[ka+16>>2]=q[2201],q[ka+20>>2]=a,a=q[2200],q[ka+8>>2]=q[2199],q[ka+12>>2]=a,q[2201]=ka+8,q[2200]=ma,q[2199]=ia,a=ka+24|(q[2202]=0);;)if(q[a+4>>2]=7,ia=a+8|0,a=a+4|0,!(ia>>>0>>0))break;if((0|ja)==(0|ka))break x;if(q[ka+4>>2]=-2&q[ka+4>>2],q[ja+4>>2]=1|(la=ka-ja|0),(q[ka>>2]=la)>>>0<=255){a=8388+((ia=la>>>3)<<3)|0,ia=(ka=q[2087])&(ia=1<>2]:(q[2087]=ia|ka,a),q[a+8>>2]=ja,q[ia+12>>2]=ja,q[ja+12>>2]=a,q[ja+8>>2]=ia;break x}if(q[ja+16>>2]=0,a=q[ja+20>>2]=0,(ka=la>>>8)&&(a=31,16777215>>0||(a=28+((a=((oa=(ka<<=ma=ka+1048320>>>16&8)<<(a=ka+520192>>>16&4))<<(ka=oa+245760>>>16&2)>>>15)-(ka|a|ma)|0)<<1|la>>>a+21&1)|0)),ia=8652+((q[(ia=ja)+28>>2]=a)<<2)|0,(ka=q[2088])&(ma=1<>>1)|0),ia=q[ia>>2];;){if((0|la)==(-8&q[(ka=ia)+4>>2]))break A;if(ia=a>>>29,a<<=1,!(ia=q[(ma=ka+(4&ia)|0)+16>>2]))break}q[ma+16>>2]=ja,q[ja+24>>2]=ka}else q[2088]=ka|ma,q[ia>>2]=ja,q[ja+24>>2]=ia;q[ja+12>>2]=ja,q[ja+8>>2]=ja;break x}a=q[ja+8>>2],q[a+12>>2]=oa,q[ja+8>>2]=oa,q[oa+24>>2]=0,q[oa+12>>2]=ja,q[oa+8>>2]=a}a=qa+8|0;break a}a=q[ka+8>>2],q[a+12>>2]=ja,q[ka+8>>2]=ja,q[ja+24>>2]=0,q[ja+12>>2]=ka,q[ja+8>>2]=a}if(!((a=q[2090])>>>0<=na>>>0)){q[2090]=ia=a-na|0,a=q[2093],q[2093]=ja=a+na|0,q[ja+4>>2]=1|ia,q[a+4>>2]=3|na,a=a+8|0;break a}}q[2086]=48,a=0;break a}Q:if(oa){a=q[la+28>>2];R:{if(q[(ka=8652+(a<<2)|0)>>2]==(0|la)){if(q[ka>>2]=ia)break R;pa=dd(a)&pa,q[2088]=pa;break Q}if(!(q[oa+(q[oa+16>>2]==(0|la)?16:20)>>2]=ia))break Q}q[ia+24>>2]=oa,(a=q[la+16>>2])&&(q[ia+16>>2]=a,q[a+24>>2]=ia),(a=q[la+20>>2])&&(q[ia+20>>2]=a,q[a+24>>2]=ia)}S:if(ja>>>0<=15)q[la+4>>2]=3|(a=ja+na|0),q[(a=a+la|0)+4>>2]=1|q[a+4>>2];else if(q[la+4>>2]=3|na,q[(ka=la+na|0)+4>>2]=1|ja,(q[ja+ka>>2]=ja)>>>0<=255)a=8388+((ia=ja>>>3)<<3)|0,ia=(ja=q[2087])&(ia=1<>2]:(q[2087]=ia|ja,a),q[a+8>>2]=ka,q[ia+12>>2]=ka,q[ka+12>>2]=a,q[ka+8>>2]=ia;else{a=0,(na=ja>>>8)&&(a=31,16777215>>0||(a=28+((a=((oa=(na<<=ma=na+1048320>>>16&8)<<(a=na+520192>>>16&4))<<(na=oa+245760>>>16&2)>>>15)-(na|a|ma)|0)<<1|ja>>>a+21&1)|0)),q[(ia=ka)+28>>2]=a,q[ka+16>>2]=0,ia=8652+(a<<2)|(q[ka+20>>2]=0);V:{if((na=1<>>1)|0),na=q[ia>>2];;){if((-8&q[(ia=na)+4>>2])==(0|ja))break V;if(na=a>>>29,a<<=1,!(na=q[(ma=(4&na)+ia|0)+16>>2]))break}q[ma+16>>2]=ka}else q[2088]=na|pa,q[ia>>2]=ka;q[ka+24>>2]=ia,q[ka+12>>2]=ka,q[ka+8>>2]=ka;break S}a=q[ia+8>>2],q[a+12>>2]=ka,q[ia+8>>2]=ka,q[ka+24>>2]=0,q[ka+12>>2]=ia,q[ka+8>>2]=a}a=la+8|0;break a}X:if(qa){a=q[ia+28>>2];Y:{if(q[(ja=8652+(a<<2)|0)>>2]==(0|ia)){if(q[ja>>2]=la)break Y;ua=dd(a)&ra,q[8352>>2]=ua;break X}if(!(q[qa+(q[qa+16>>2]==(0|ia)?16:20)>>2]=la))break X}q[la+24>>2]=qa,(a=q[ia+16>>2])&&(q[la+16>>2]=a,q[a+24>>2]=la),(a=q[ia+20>>2])&&(q[la+20>>2]=a,q[a+24>>2]=la)}ka>>>0<=15?(q[ia+4>>2]=3|(a=ka+na|0),q[(a=a+ia|0)+4>>2]=1|q[a+4>>2]):(q[ia+4>>2]=3|na,q[(na=ia+na|0)+4>>2]=1|ka,q[ka+na>>2]=ka,pa&&(a=8388+((ja=pa>>>3)<<3)|0,la=q[2092],ja=(ja=1<>2]:(q[2087]=ja|ma,a),q[a+8>>2]=la,q[ja+12>>2]=la,q[la+12>>2]=a,q[la+8>>2]=ja),q[2092]=na,q[2089]=ka),a=ia+8|0}return L=16+sa|0,a}function ra(a,va,wa,xa,ya,za,Aa){var Qa,Ta,Ba,Ca=0,Da=0,Fa=0,Ia=0,Ja=0,Ka=0,Ma=0,Na=0,Oa=0,Pa=0,Ra=0,Sa=0;q[76+(L=Ba=L-80|0)>>2]=va,Ta=55+Ba|0,Qa=56+Ba|0,va=0;a:{b:{c:for(;;){(0|Oa)<0||(Oa=(2147483647-Oa|0)<(0|va)?(q[2086]=61,-1):va+Oa|0);e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{if(Ia=q[76+Ba>>2],Fa=r[0|(va=Ia)]){for(;;){r:{s:{t:if(Ca=255&Fa){if(37!=(0|Ca))break s;for(Fa=va;;){if(37!=r[va+1|0])break t;if(q[76+Ba>>2]=Ca=va+2|0,Fa=Fa+1|0,Da=r[va+2|0],va=Ca,37!=(0|Da))break}}else Fa=va;if(va=Fa-Ia|0,a&&Z(a,Ia,va),va)continue c;Pa=-1,Ja=!ha(o[q[76+(Ca=Ba)>>2]+(Fa=1)|0]),va=q[76+Ba>>2],Ja|36!=r[va+2|0]||(Pa=o[va+1|0]+-48|0,Ra=1,Fa=3),q[Ca+76>>2]=va=Fa+va|0;u:if(31<(Da=(Ma=o[(Fa=0)|va])+-32|0)>>>0)Ca=va;else if(Ca=va,75913&(Da=1<>2]=Ca=va+1|0,Fa|=Da,31<(Da=(Ma=o[va+1|0])+-32|0)>>>0)break u;if(va=Ca,!(75913&(Da=1<>2],36==r[va+2|0]))q[((o[va+1|0]<<2)+ya|0)-192>>2]=10,Na=q[((o[va+1|0]<<3)+xa|0)-384>>2],Ra=1,va=va+3|0;else{if(Ra)break b;Na=Ra=0,a&&(va=q[wa>>2],q[wa>>2]=va+4,Na=q[va>>2]),va=q[76+Ba>>2]+1|0}q[Ja+76>>2]=va,-1<(0|Na)||(Na=0-Na|0,Fa|=8192)}else{if((0|(Na=Ha(76+Ba|0)))<0)break b;va=q[76+Ba>>2]}if(Da=-1,46==r[0|va])if(42==r[va+1|0])if(ha(o[va+2|0])&&(va=q[76+Ba>>2],36==r[va+3|0]))q[((o[va+2|0]<<2)+ya|0)-192>>2]=10,Da=q[((o[va+2|0]<<3)+xa|0)-384>>2],q[76+Ba>>2]=va=va+4|0;else{if(Ra)break b;Da=a?(va=q[wa>>2],q[wa>>2]=va+4,q[va>>2]):0,va=q[76+Ba>>2]+2|0,q[76+Ba>>2]=va}else q[76+Ba>>2]=va+1,Da=Ha(76+Ba|0),va=q[76+Ba>>2];for(Ca=0;;){if(Sa=Ca,Ka=-1,57>>0)break a;if(q[76+Ba>>2]=Ma=va+1|0,Ca=o[0|va],va=Ma,!((Ca=r[3295+(Ca+w(Sa,58)|0)|0])+-1>>>0<8))break}if(!Ca)break a;A:{B:{C:{if(19==(0|Ca)){if((0|Pa)<=-1)break C;break a}if((0|Pa)<0)break B;q[(Pa<<2)+ya>>2]=Ca,Ca=q[(va=(Pa<<3)+xa|0)+4>>2],q[64+Ba>>2]=q[va>>2],q[68+Ba>>2]=Ca}if(va=0,a)break A;continue c}if(!a)break e;Ga(Ba+64|0,Ca,wa,Aa),Ma=q[76+Ba>>2]}if(Ja=-65537&Fa,Fa=8192&Fa?Ja:Fa,Pa=3336,Ca=Qa,va=o[Ma+-1|(Ka=0)],(Ma=(va=Sa&&3==(15&va)?-33&va:va)+-88|0)>>>0<=32)break r;D:{E:{F:{G:{if(6<(Ja=va+-65|0)>>>0){if(83!=(0|va))break f;if(!Da)break G;Ca=q[64+Ba>>2];break E}switch(Ja-1|0){case 1:break F;case 0:case 2:break f;default:break q}}_(a,32,Na,va=0,Fa);break D}q[12+Ba>>2]=0,q[8+Ba>>2]=q[64+Ba>>2],q[64+Ba>>2]=8+Ba,Da=-1,Ca=8+Ba|0}va=0;H:{for(;;){if(!(Ia=q[Ca>>2]))break H;if((Ja=(0|(Ia=Ea(4+Ba|0,Ia)))<0)|Da-va>>>0>>0)break;if(Ca=Ca+4|0,!((va=va+Ia|0)>>>0>>0))break H}if(Ka=-1,Ja)break a}if(_(a,32,Na,va,Fa),va)for(Da=0,Ca=q[64+Ba>>2];;){if(!(Ia=q[Ca>>2]))break D;if((0|va)<(0|(Da=(Ia=Ea(4+Ba|0,Ia))+Da|0)))break D;if(Z(a,4+Ba|0,Ia),Ca=Ca+4|0,!(Da>>>0>>0))break}else va=0}_(a,32,Na,va,8192^Fa),va=(0|va)<(0|Na)?Na:va;continue c}q[76+Ba>>2]=Ca=va+1|0,Fa=r[va+1|0],va=Ca;continue}break}switch(Ma-1|0){case 28:break i;case 21:break j;case 23:break l;case 22:break m;case 11:case 16:break n;case 10:break o;case 26:break p;case 8:case 12:case 13:case 14:break q;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 9:case 15:case 17:case 18:case 19:case 20:case 24:case 25:case 27:case 29:case 30:break f;default:break k}}if(Ka=Oa,a)break a;if(!Ra)break e;for(va=1;;){if(a=q[(va<<2)+ya>>2]){if(Ga((va<<3)+xa|0,a,wa,Aa),10!=(0|(va=va+(Ka=1)|0)))continue;break a}break}if(Ka=1,9>>0)break a;if(Ka=-1,q[(va<<2)+ya>>2])break a;for(;;)if(q[((va=va+1|0)<<2)+ya>>2]||10==(0|va))break;Ka=va>>>0<10?-1:1;break a}va=0|n[za](a,v[64+Ba>>3],Na,Da,Fa,va);continue}Ca=(va=La(Ia=(va=q[64+Ba>>2])||3346,Da))||Da+Ia|0,Fa=Ja,Da=va?va-Ia|0:Da;break f}o[55+Ba|0]=q[64+Ba>>2],Da=1,Ia=Ta,Fa=Ja;break f}if(va=Ja=q[68+Ba>>2],Ia=q[64+Ba>>2],(0|va)<-1||(0|va)<=-1&&!(4294967295>>0)){va=0-(va+(0>>0)|0)|0,q[64+Ba>>2]=Ia=0-Ia|0,q[68+Ba>>2]=va,Ka=1,Pa=3336;break h}if(2048&Fa){Ka=1,Pa=3337;break h}Pa=(Ka=1&Fa)?3338:3336;break h}if(Ia=function(a,Il,Rm){if(a|Il)for(;;)if(o[0|(Rm=Rm+-1|0)]=7&a|48,!((a=(7&Il)<<29|a>>>3)|(Il>>>=3)))break;return Rm}(q[64+Ba>>2],q[68+Ba>>2],Qa),!(8&Fa))break g;Da=(0|(va=Qa-Ia|0))<(0|Da)?Da:va+1|0;break g}Da=8>>0?Da:8,Fa|=8,va=120}if(Ia=function(a,Il,Rm,Sm){if(a|Il)for(;;)if(o[0|(Rm=Rm+-1|0)]=r[3824+(15&a)|0]|Sm,!((a=(15&Il)<<28|a>>>4)|(Il>>>=4)))break;return Rm}(q[64+Ba>>2],q[68+Ba>>2],Qa,32&va),!(8&Fa)|!(q[64+Ba>>2]|q[68+Ba>>2]))break g;Pa=3336+(va>>>4)|0,Ka=2;break g}if(7<(Ca=255&Sa)>>>(va=0))continue;I:switch(Ca-1|0){default:case 0:q[q[64+Ba>>2]>>2]=Oa;continue;case 1:Ca=q[64+Ba>>2],q[Ca>>2]=Oa,q[Ca+4>>2]=Oa>>31;continue;case 2:p[q[64+Ba>>2]>>1]=Oa;continue;case 3:o[q[64+Ba>>2]]=Oa;continue;case 5:q[q[64+Ba>>2]>>2]=Oa;continue;case 4:continue;case 6:break I}Ca=q[64+Ba>>2],q[Ca>>2]=Oa,q[Ca+4>>2]=Oa>>31;continue}Ia=q[64+Ba>>2],va=q[68+Ba>>2],Pa=3336}Ia=ga(Ia,va,Qa)}Fa=-1<(0|Da)?-65537&Fa:Fa,Da=!!((Ja=va=q[68+Ba>>2])|(Ma=q[64+Ba>>2]))|Da?(0|(va=!(Ja|Ma)+(Qa-Ia|0)|0))<(0|Da)?Da:va:(Ia=Qa,0)}_(a,32,va=(0|Na)<(0|(Ca=(Da=(0|Da)<(0|(Ja=Ca-Ia|0))?Ja:Da)+Ka|0))?Ca:Na,Ca,Fa),Z(a,Pa,Ka),_(a,48,va,Ca,65536^Fa),_(a,48,Da,Ja,0),Z(a,Ia,Ja),_(a,32,va,Ca,8192^Fa);continue}break}Ka=0;break a}Ka=-1}return L=80+Ba|0,Ka}function sa(a){var ya,va=0,wa=0,xa=0,za=0,xa=4,wa=1439;a:if(va=r[0|a]){for(;;){if((0|(ya=r[0|wa]))!=(0|va)||!(xa=xa+-1|0)|!ya)break;if(wa=wa+1|0,va=r[a+1|0],a=a+1|0,!va)break a}za=va}return(255&za)-r[0|wa]|0}function ta(a,Aa,Ea){var La,Ga,Ha=0,Ua=0,Va=0;q[(L=Ga=L-240|0)>>2]=a,Ua=1;a:if(!((0|Aa)<2))for(Ha=a;;){if(Ha=(La=Ha+-4|0)-q[((Va=Aa+-2|0)<<2)+Ea>>2]|0,0<=(0|n[5](a,Ha))&&-1<(0|n[5](a,La)))break a;if(a=(Ua<<2)+Ga|0,0<=(0|n[5](Ha,La))?(q[a>>2]=Ha,Va=Aa+-1|0):Ha=q[a>>2]=La,Ua=Ua+1|0,(0|Va)<2)break a;a=q[Ga>>2],Aa=Va}Na(Ga,Ua),L=240+Ga|0}function ua(a){var Ea,ab,Aa=0;x(0);if(!function(a){var Vg=0,Wg=0;q[a+428>>2]&&(Wg=q[a+332>>2],Vg=Wg<<2,$(q[a+460>>2],q[a+436>>2],Vg),$(q[a+464>>2],q[a+440>>2],Vg),$(q[a+468>>2],q[a+448>>2],Vg),r[q[a>>2]+4|0]<4||(Vg=Wg<<4,$(q[a+472>>2],q[a+452>>2],Vg),$(q[a+476>>2],q[a+456>>2],Vg)))}(a),!function(a){var fe=0,ge=x(0),he=x(0),ie=0,je=x(0),ke=0,le=x(0),me=0,ne=x(0);if(1<=(0|(ie=q[a>>2])))for(fe=q[a+4>>2],me=fe+w(ie,52)|0,a=q[a+12>>2];;)if(ge=u[a>>2],ne=u[fe+44>>2],ke=q[fe+16>>2],ge=ke?(he=ge,ge=u[fe+4>>2],je=u[fe+12>>2],he=x(x(he-ge)/je),le=x(C(he)),ie=x(y(le))>2],he=u[fe+8>>2],ge>2]=ge,q[fe+48>>2]=1):q[fe+48>>2]=0,ke||(u[a>>2]=ge),a=a+4|0,!((fe=fe+52|0)>>>0>>0))break}(a+540|0),!function(a){var Rd=0,Sd=0,Td=x(0),Ud=0,Vd=x(0),Wd=x(0),Xd=x(0),Yd=0,Zd=x(0),_d=0,$d=0,ae=0,be=0,ce=x(0),de=0,ee=0;if(1<=(0|(Ud=q[a+540>>2])))for(Yd=q[a+544>>2],de=Yd+w(Ud,52)|0,ee=q[a+644>>2];;){a:if(!(q[Yd>>2]||(0|(Ud=q[Yd+32>>2]))<1))if(a=q[Yd+28>>2],ae=a+w(Ud,28)|0,ce=u[Yd+24>>2],Xd=u[Yd+20>>2],Wd=u[Yd+44>>2],ee)for(;;){Zd=x($d=0);h:{i:{j:{if((0|(Sd=q[a>>2]))<1)Rd=Ud=0;else if(_d=q[a+4>>2],Vd=u[_d>>2],Td=x(Vd-Xd),1==(0|Sd))Ud=Wd>2],!(Wd>2],Wd>2])break h;break i}Rd=Sd+-1|0,Ud=1}Vd=u[a+12>>2],_d=(Sd=Vd!=Zd)&(Zd==x(0)|Vd==x(0))|q[a+8>>2]!=(0|Rd),$d=Ud}if(q[a+20>>2]=_d,q[a+24>>2]=Sd,u[a+12>>2]=Zd,q[a+16>>2]=$d,q[a+8>>2]=Rd,!((a=a+28|0)>>>0>>0))break}else{if(!q[Yd+48>>2])for(;;)if(q[a+20>>2]=0,q[a+24>>2]=0,!((a=a+28|0)>>>0>>0))break a;for(;;){Zd=x($d=0),Rd=q[(_d=a)>>2],Sd=0;b:{c:{d:{e:if(!((0|Rd)<1)){if(Ud=q[a+4>>2],Vd=u[Ud>>2],Td=x(Vd-Xd),1!=(0|Rd)){if(!(Wd>2],!(Wd>2],Wd>2]))break b}$d=Ud,Vd=u[a+12>>2],be=(Sd=Vd!=Zd)&(Zd==x(0)|Vd==x(0))|q[a+8>>2]!=(0|Rd)}if(q[_d+20>>2]=be,q[a+24>>2]=Sd,u[a+12>>2]=Zd,q[a+16>>2]=$d,q[a+8>>2]=Rd,!((a=a+28|0)>>>0>>0))break}}if(!((Yd=Yd+52|0)>>>0>>0))break}}(a),!function(a){var kd=0,ld=x(0),md=0,nd=0,od=x(0),pd=0,qd=x(0),rd=x(0),sd=0,td=0,ud=0,vd=0;if(!(r[q[a>>2]+4|0]<4||(0|(kd=q[a+540>>2]))<1))for(pd=q[a+544>>2],ud=pd+w(kd,52)|0,vd=q[a+644>>2];;){b:if(1==q[pd>>2]&&!((0|(kd=q[pd+40>>2]))<1))if(a=q[pd+36>>2],sd=a+w(kd,28)|0,rd=u[pd+44>>2],vd)for(;;){qd=x(kd=0),nd=q[a>>2];d:if(!((0|nd)<2||(md=q[a+4>>2],ld=u[md>>2],rd<=ld))){kd=1;e:if(od=u[md+4>>2],!(rd>2],rd>2],u[a+16>>2]=qd,nd=q[a+12>>2],q[a+12>>2]=kd,md=ld!=qd,q[a+24>>2]=md,q[a+20>>2]=md&(qd==x(0)|ld==x(0))|(0|kd)!=(0|nd),!((a=a+28|0)>>>0>>0))break}else{if(!q[pd+48>>2])for(;;)if(q[a+20>>2]=0,q[a+24>>2]=0,!((a=a+28|0)>>>0>>0))break b;for(;;){qd=x(nd=0),td=q[a>>2];c:if(!((0|td)<2||(md=q[a+4>>2],ld=u[md>>2],rd<=ld))){if(kd=1,od=u[md+4>>2],!(rd>2],rd>2],u[a+16>>2]=qd,kd=q[a+12>>2],q[a+12>>2]=nd,md=ld!=qd,q[a+24>>2]=md,q[a+20>>2]=md&(qd==x(0)|ld==x(0))|(0|kd)!=(0|nd),!((a=a+28|0)>>>0>>0))break}}if(!((pd=pd+52|0)>>>0>>0))break}}(a),!function(a){var wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=x(0),Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0;if(1<=(0|(xd=q[a+564>>2])))for(Ad=q[a+568>>2],Pd=Ad+w(xd,36)|0,Nd=q[a+644>>2];;){yd=zd=xd=0,Jd=q[Ad+4>>2];a:{if(!(Bd=(0|Jd)<1))for(Ed=q[Ad>>2],a=Kd=0;;){if(wd=q[Ed+(a<<2)>>2],q[wd+16>>2]){wd=1,Ld=0;break a}if(yd=yd||q[wd+24>>2],xd=xd||q[wd+20>>2],zd=(u[wd+12>>2]!=x(0))+zd|0,(0|Jd)==(0|(a=a+1|0)))break}if(wd=0,(Kd=Nd?1:yd)|(Ld=Nd?1:xd)&&(Ed=1<>2]=Ed,31!=(0|zd))){for(xd=q[Ad+20>>2],Od=q[Ad>>2],a=q[Ad+16>>2],yd=a+(Cd=Ed<<2)|0,yd=ca(Fd=a,0,4+((Md=-1^a)+((a=a+4|0)>>>0>>0?yd:a)|0)&-4),Cd=xd+Cd|0,a=xd;;)if(q[a>>2]=1065353216,!((a=a+4|0)>>>0>>0))break;if(!Bd){if(Bd=0,Cd=wd=1,zd)for(;;){if(zd=q[(Bd<<2)+Od>>2],Gd=q[zd+8>>2],Hd=w(Gd,wd),a=0,(Dd=u[zd+12>>2])!=x(0)){for(q[yd>>2]=Hd+q[yd>>2],u[xd>>2]=x(x(1)-Dd)*u[xd>>2],Gd=w(Gd+(a=1)|0,wd);;)if(Dd=u[zd+12>>2],Qd=q[(Md=Fd=(Id=a<<2)+yd|0)>>2],Fd=a&Cd,q[Md>>2]=Qd+(Fd?Gd:Hd),u[(Id=xd+Id|0)>>2]=(Fd?Dd:x(x(1)-Dd))*u[Id>>2],(0|Ed)==(0|(a=a+1|0)))break;Cd<<=1}else for(;;)if(q[(Gd=yd+(a<<2)|0)>>2]=Hd+q[Gd>>2],(0|Ed)==(0|(a=a+1|0)))break;if(wd=w(q[zd>>2],wd),(0|Jd)==(0|(Bd=Bd+1|0)))break}else for(;;){if(zd=q[(Bd<<2)+Od>>2],Cd=w(q[zd+8>>2],wd),a=0,(Dd=u[zd+12>>2])!=x(0))q[yd>>2]=Cd+q[yd>>2],u[xd>>2]=x(x(1)-Dd)*u[xd>>2];else for(;;)if(q[(Hd=yd+(a<<2)|0)>>2]=Cd+q[Hd>>2],(0|Ed)==(0|(a=a+1|0)))break;if(wd=w(q[zd>>2],wd),(0|Jd)==(0|(Bd=Bd+1|0)))break}wd=0}}}if(q[Ad+32>>2]=wd,q[Ad+24>>2]=Ld,q[Ad+28>>2]=Kd,!((Ad=Ad+36|0)>>>0>>0))break}}(a),!function(a){var Wc=x(0),Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=x(0),bd=x(0),cd=x(0),dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0;if(!(r[q[a>>2]+4|0]<4||(0|(Xc=q[a+588>>2]))<1))for(Zc=q[a+592>>2],jd=Zc+w(Xc,48)|0,gd=q[a+644>>2];;){if(a=q[Zc>>2],ed=gd?1:q[a+20>>2],fd=gd?1:q[a+24>>2],ed|fd){c:{d:{$c=Zc,_c=q[a+8>>2],Xc=q[a+12>>2],Wc=u[a+16>>2],a=(0|_c)!=(0|Xc);e:{if(Wc!=x(0)){if(a=Xc+1|0,(0|Xc)==(0|_c)){ed=1,q[Zc+8>>2]=1,Wc=x(x(1)-Wc),fd=1;break e}a=(0|a)==(0|_c)?1:2}if(q[$c+8>>2]=a,!fd)break d;a=Xc}u[Zc+24>>2]=Wc,u[Zc+20>>2]=x(1)-Wc;break c}fd=0,a=Xc}ed?(q[Zc+12>>2]=a,q[Zc+16>>2]=a+1):ed=0}else ed=fd=0;g:if((0|(hd=q[Zc+36>>2]))<1)cd=x(1);else{if(id=q[Zc+40>>2],a=0,cd=x(1),!gd)for(;;){h:{i:{if(Xc=q[(a<<2)+id>>2],Yc=q[Xc>>2]){if(!q[Yc+48>>2]){Wc=u[Xc+16>>2];break h}if((0|(_c=q[Xc+12>>2]))<1){Wc=x(1),u[Xc+16>>2]=1;break h}if(dd=q[Xc+8>>2],1!=(0|_c)&&(ad=u[Yc+44>>2],$c=q[Xc+4>>2],bd=u[$c>>2],!(ad<=bd)))break i;Wc=u[dd>>2],u[Xc+16>>2]=Wc;break h}q[Xc+16>>2]=1065353216,Wc=x(1);break h}Yc=1;j:if(Wc=u[$c+4>>2],!(ad>2],ad>2],u[Xc+16>>2]=Wc;break h}$c=Xc,Wc=x(x(ad-bd)/x(Wc-bd)),Wc=x(x(Wc*u[(Xc=dd+(Yc<<2)|0)>>2])+x(u[Xc+-4>>2]*x(x(1)-Wc))),u[$c+16>>2]=Wc}if(cd=cd>2],Yc=q[Xc>>2],Wc=x(1);l:if(Yc&&(dd=q[Xc+12>>2],Wc=x(1),!((0|dd)<1))&&(_c=q[Xc+8>>2],Wc=u[_c>>2],1!=(0|dd))){m:{if(ad=u[Yc+44>>2],$c=q[Xc+4>>2],bd=u[$c>>2],ad<=bd){Wc=u[_c>>2];break l}if(Yc=1,Wc=u[$c+4>>2],!(ad>2],ad>2];break l}}Wc=x(x(ad-bd)/x(Wc-bd)),Wc=x(x(Wc*u[(Yc=_c+(Yc<<2)|0)>>2])+x(u[Yc+-4>>2]*x(x(1)-Wc)))}if(u[Xc+16>>2]=Wc,cd=cd>2]=fd,q[Zc+28>>2]=ed,u[Zc+44>>2]=cd,!((Zc=Zc+48|0)>>>0>>0))break}}(a),1<=(0|(Ea=q[a+4>>2])))for(Ea=(Aa=q[a+52>>2])+(Ea<<2)|0;;)if(ab=u[Aa>>2],u[Aa>>2]=ab>>0>>0))break;!function(a){var De=0,Ee=0,Fe=0,Ge=0,He=0;if(1<=(0|(Ee=q[a+4>>2])))for(De=q[a+8>>2],He=De+w(Ee,12)|0,Fe=q[a+40>>2],a=Fe;;)if(Ee=0,q[De+8>>2]&&(Ge=q[De+4>>2],!q[(Ge<<2)+Fe>>2]&&-1!=(0|Ge)||(Ee=!q[q[De>>2]+32>>2])),q[a>>2]=Ee,a=a+4|0,!((De=De+12|0)>>>0>>0))break}(a),function(a){var pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0;if(1<=(0|(vg=q[a+4>>2])))for(xg=q[a+8>>2],wg=q[a>>2],yg=q[wg+724>>2];;){if(rg=q[w(tg,12)+xg>>2],(q[rg+28>>2]||q[rg+24>>2])&&(q[(pg=tg<<2)+q[a+28>>2]>>2]=q[rg+12>>2],q[rg+24>>2])&&!((0|(sg=q[rg+12>>2]))<1))for(qg=q[rg+16>>2],sg=qg+(sg<<2)|0,zg=q[pg+yg>>2],pg=q[a+36>>2]+(ug<<2)|0,Ag=q[wg+976>>2];;)if(q[pg>>2]=q[(q[qg>>2]+zg<<2)+Ag>>2],pg=pg+4|0,!((qg=qg+4|0)>>>0>>0))break;if(q[rg+28>>2]&&!((0|(pg=q[rg+12>>2]))<1))for(qg=q[rg+20>>2],sg=qg+(pg<<2)|0,pg=q[a+32>>2]+(ug<<2)|0;;)if(q[pg>>2]=q[qg>>2],pg=pg+4|0,!((qg=qg+4|0)>>>0>>0))break;if(ug=q[rg+8>>2]+ug|0,(0|vg)==(0|(tg=tg+1|0)))break}}(a),n[q[1808]](a+12|0,q[a+36>>2],q[a+44>>2],q[a+40>>2]),function(a){var ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0;if(1<=(0|(we=q[a+304>>2])))for(ue=q[a+308>>2],ze=ue+(we<<5)|0,Ae=q[a+264>>2],Be=q[a+144>>2],Ce=q[a+40>>2],ye=q[a+312>>2],we=ye;;)if(xe=we,ve=0,a=ve=!q[ue+28>>2]||-1!=(0|(a=q[ue+4>>2]))&&(ve=0,!q[(a<<2)+Ce>>2])||-1!=(0|(a=q[ue+8>>2]))&&(ve=0,!q[(a<<2)+ye>>2])?ve:!q[q[ue>>2]+32>>2],q[xe>>2]=a,(xe=q[ue+12>>2])>>>0<=1?xe-1?q[(q[ue+16>>2]<<2)+Be>>2]=a:q[(q[ue+16>>2]<<2)+Ae>>2]=a:Y(4,1372,0),we=we+4|0,!((ue=ue+32|0)>>>0>>0))break}(a),function(a){var Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0;if(Yf=q[a>>2],1<=(0|($f=q[a+56>>2]))){for(ag=q[a+60>>2],bg=q[Yf+1052>>2],cg=q[Yf+784>>2];;){if(Uf=q[ag+w(Zf,24)>>2],(q[Uf+28>>2]||q[Uf+24>>2])&&(q[(Vf=Zf<<2)+q[a+80>>2]>>2]=q[Uf+12>>2],q[Uf+24>>2])&&!((0|(Xf=q[Uf+12>>2]))<1))for(Wf=q[Uf+16>>2],dg=Wf+(Xf<<2)|0,eg=q[Vf+cg>>2],Vf=(Xf=_f<<2)+q[a+92>>2]|0,Xf=Xf+q[a+88>>2]|0;;)if(fg=eg+q[Wf>>2]<<2,q[Vf>>2]=bg+(q[fg+q[Yf+984>>2]>>2]<<2),q[Xf>>2]=q[fg+q[Yf+980>>2]>>2],Xf=Xf+4|0,Vf=Vf+4|0,!((Wf=Wf+4|0)>>>0>>0))break;if(q[Uf+28>>2]&&!((0|(Vf=q[Uf+12>>2]))<1))for(Wf=q[Uf+20>>2],Xf=Wf+(Vf<<2)|0,Vf=q[a+84>>2]+(_f<<2)|0;;)if(q[Vf>>2]=q[Wf>>2],Vf=Vf+4|0,!((Wf=Wf+4|0)>>>0>>0))break;if(_f=q[Uf+8>>2]+_f|0,(0|$f)==(0|(Zf=Zf+1|0)))break}Yf=q[a>>2]}if(!(r[Yf+4|0]<4||(0|(eg=q[a+56>>2]))<1))for(fg=q[Yf+792>>2],gg=q[a+60>>2],Wf=_f=0;;){if(Zf=q[w(Wf,24)+gg>>2],q[Zf+24>>2]&&!((0|(Uf=q[Zf+12>>2]))<1))for(Vf=q[Zf+16>>2],hg=Vf+(Uf<<2)|0,ig=q[fg+(Wf<<2)>>2],Xf=(Uf=_f<<2)+q[a+96>>2]|0,$f=Uf+q[a+100>>2]|0,ag=Uf+q[a+104>>2]|0,bg=Uf+q[a+108>>2]|0,cg=Uf+q[a+112>>2]|0,dg=Uf+q[a+116>>2]|0,jg=q[Yf+1308>>2],kg=q[Yf+1304>>2],lg=q[Yf+1300>>2],mg=q[Yf+1296>>2],ng=q[Yf+1292>>2],og=q[Yf+1288>>2];;)if(Uf=q[Vf>>2]+ig<<2,q[Xf>>2]=q[Uf+og>>2],q[$f>>2]=q[Uf+ng>>2],q[ag>>2]=q[Uf+mg>>2],q[bg>>2]=q[Uf+lg>>2],q[cg>>2]=q[Uf+kg>>2],q[dg>>2]=q[Uf+jg>>2],dg=dg+4|0,cg=cg+4|0,bg=bg+4|0,ag=ag+4|0,$f=$f+4|0,Xf=Xf+4|0,!((Vf=Vf+4|0)>>>0>>0))break;if(_f=q[Zf+8>>2]+_f|0,(0|eg)==(0|(Wf=Wf+1|0)))break}}(a),function(a){var xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0;if(Tf=q[a+168>>2],zf=q[a>>2],1<=(0|(Kf=q[a+164>>2])))for(Mf=q[zf+816>>2];;){if(Af=q[w(Ef,12)+Tf>>2],(q[Af+28>>2]||q[Af+24>>2])&&(q[(Ff=Ef<<2)+q[a+188>>2]>>2]=q[Af+12>>2],q[Af+24>>2])){if(yf=q[Af+16>>2],Lf=q[Ff+Mf>>2],1<=(0|(xf=q[Af+12>>2])))for(Nf=yf+(xf<<2)|0,Bf=(xf=Df<<2)+q[a+200>>2]|0,Gf=xf+q[a+204>>2]|0,Hf=xf+q[a+208>>2]|0,If=xf+q[a+212>>2]|0,Jf=xf+q[a+196>>2]|0,Of=q[zf+996>>2],Pf=q[zf+1012>>2],Qf=q[zf+1008>>2],Rf=q[zf+1004>>2],Sf=q[zf+1e3>>2],xf=yf;;)if(Cf=Lf+q[xf>>2]<<2,q[Bf>>2]=q[Cf+Sf>>2],q[Gf>>2]=q[Cf+Rf>>2],q[Hf>>2]=q[Cf+Qf>>2],q[If>>2]=q[Cf+Pf>>2],q[Jf>>2]=q[Cf+Of>>2],Jf=Jf+4|0,If=If+4|0,Hf=Hf+4|0,Gf=Gf+4|0,Bf=Bf+4|0,!((xf=xf+4|0)>>>0>>0))break;xf=Lf+q[yf>>2]<<2,q[Ff+q[a+288>>2]>>2]=q[xf+q[zf+1016>>2]>>2],q[Ff+q[a+292>>2]>>2]=q[xf+q[zf+1020>>2]>>2]}if(q[Af+28>>2]&&!((0|(yf=q[Af+12>>2]))<1))for(xf=q[Af+20>>2],yf=xf+(yf<<2)|0,Bf=q[a+192>>2]+(Df<<2)|0;;)if(q[Bf>>2]=q[xf>>2],Bf=Bf+4|0,!((xf=xf+4|0)>>>0>>0))break;if(Df=q[Af+8>>2]+Df|0,(0|Kf)==(0|(Ef=Ef+1|0)))break}if(!(r[zf+4|0]<4||(0|(Ff=q[a+164>>2]))<1))for(Lf=q[zf+824>>2],Df=Af=0;;){if(Cf=q[w(Df,12)+Tf>>2],q[Cf+24>>2]&&!((0|(xf=q[Cf+12>>2]))<1))for(Bf=q[Cf+16>>2],Kf=Bf+(xf<<2)|0,Mf=q[Lf+(Df<<2)>>2],Gf=(yf=Af<<2)+q[a+216>>2]|0,Hf=yf+q[a+220>>2]|0,If=yf+q[a+224>>2]|0,Jf=yf+q[a+228>>2]|0,xf=yf+q[a+232>>2]|0,Ef=yf+q[a+236>>2]|0,Nf=q[zf+1308>>2],Of=q[zf+1304>>2],Pf=q[zf+1300>>2],Qf=q[zf+1296>>2],Rf=q[zf+1292>>2],Sf=q[zf+1288>>2];;)if(yf=Mf+q[Bf>>2]<<2,q[Gf>>2]=q[yf+Sf>>2],q[Hf>>2]=q[yf+Rf>>2],q[If>>2]=q[yf+Qf>>2],q[Jf>>2]=q[yf+Pf>>2],q[xf>>2]=q[yf+Of>>2],q[Ef>>2]=q[yf+Nf>>2],Ef=Ef+4|0,xf=xf+4|0,Jf=Jf+4|0,If=If+4|0,Hf=Hf+4|0,Gf=Gf+4|0,!((Bf=Bf+4|0)>>>0>>0))break;if(Af=q[Cf+8>>2]+Af|0,(0|Ff)==(0|(Df=Df+1|0)))break}}(a),function(a){var qk=0,rk=0,sk=0,tk=0,uk=0,vk=0,wk=0,xk=0,yk=0;qk=a- -64|0,n[q[1807]](qk,q[a+88>>2],q[a+148>>2],q[a+144>>2]),n[q[1809]](qk,q[a+92>>2],q[a+152>>2],q[q[a>>2]+796>>2],2,q[a+144>>2]);if(!(r[q[a>>2]+4|0]<4||(n[q[1807]](qk,q[a+96>>2],q[a+120>>2],q[a+144>>2]),n[q[1807]](qk,q[a+100>>2],q[a+124>>2],q[a+144>>2]),n[q[1807]](qk,q[a+104>>2],q[a+128>>2],q[a+144>>2]),n[q[1807]](qk,q[a+108>>2],q[a+132>>2],q[a+144>>2]),n[q[1807]](qk,q[a+112>>2],q[a+136>>2],q[a+144>>2]),n[q[1807]](qk,q[a+116>>2],q[a+140>>2],q[a+144>>2]),(0|(vk=q[a+56>>2]))<1))){for(wk=q[a+128>>2],xk=q[a+124>>2],yk=q[a+120>>2],rk=q[a+156>>2],qk=0;;)if(uk=qk<<2,q[(sk=tk<<2)+rk>>2]=q[uk+yk>>2],q[rk+(4|sk)>>2]=q[uk+xk>>2],q[rk+(8|sk)>>2]=q[uk+wk>>2],tk=tk+4|0,(0|vk)==(0|(qk=qk+1|0)))break;for(rk=q[a+160>>2],uk=q[a+140>>2],wk=q[a+136>>2],xk=q[a+132>>2],qk=a=0;;)if(sk=qk<<2,q[(tk=a<<2)+rk>>2]=q[sk+xk>>2],q[rk+(4|tk)>>2]=q[sk+wk>>2],q[rk+(8|tk)>>2]=q[sk+uk>>2],a=a+4|0,(0|vk)==(0|(qk=qk+1|0)))break}}(a),function(a){var hk=0,ik=0,jk=0,kk=0,lk=0,mk=0,nk=0,ok=0,pk=0;hk=a+172|0,n[q[1807]](hk,q[a+196>>2],q[a+268>>2],q[a+264>>2]),n[q[1807]](hk,q[a+200>>2],q[a+284>>2],q[a+264>>2]),n[q[1807]](hk,q[a+204>>2],q[a+276>>2],q[a+264>>2]),n[q[1807]](hk,q[a+208>>2],q[a+280>>2],q[a+264>>2]),n[q[1807]](hk,q[a+212>>2],q[a+272>>2],q[a+264>>2]);if(!(r[q[a>>2]+4|0]<4||(n[q[1807]](hk,q[a+216>>2],q[a+240>>2],q[a+264>>2]),n[q[1807]](hk,q[a+220>>2],q[a+244>>2],q[a+264>>2]),n[q[1807]](hk,q[a+224>>2],q[a+248>>2],q[a+264>>2]),n[q[1807]](hk,q[a+228>>2],q[a+252>>2],q[a+264>>2]),n[q[1807]](hk,q[a+232>>2],q[a+256>>2],q[a+264>>2]),n[q[1807]](hk,q[a+236>>2],q[a+260>>2],q[a+264>>2]),(0|(mk=q[a+164>>2]))<1))){for(nk=q[a+248>>2],ok=q[a+244>>2],pk=q[a+240>>2],ik=q[a+296>>2],hk=0;;)if(lk=hk<<2,q[(jk=kk<<2)+ik>>2]=q[lk+pk>>2],q[ik+(4|jk)>>2]=q[lk+ok>>2],q[ik+(8|jk)>>2]=q[lk+nk>>2],kk=kk+4|0,(0|mk)==(0|(hk=hk+1|0)))break;for(ik=q[a+300>>2],lk=q[a+260>>2],nk=q[a+256>>2],ok=q[a+252>>2],hk=a=0;;)if(jk=hk<<2,q[(kk=a<<2)+ik>>2]=q[jk+ok>>2],q[ik+(4|kk)>>2]=q[jk+nk>>2],q[ik+(8|kk)>>2]=q[jk+lk>>2],a=a+4|0,(0|mk)==(0|(hk=hk+1|0)))break}}(a),function(a){var oe=0,pe=0,qe=0,re=0,se=0,te=0;if(1<=(0|(pe=q[a+332>>2])))for(oe=q[a+336>>2],re=oe+w(pe,20)|0,se=q[a+312>>2],te=q[a+40>>2],a=q[a+424>>2];;)if(pe=0,q[oe+12>>2]&&(qe=q[oe+4>>2],q[(qe<<2)+te>>2]||-1==(0|qe))&&(qe=q[oe+8>>2],q[(qe<<2)+se>>2]||-1==(0|qe))&&(pe=!q[q[oe>>2]+32>>2]),q[a>>2]=pe,a=a+4|0,!((oe=oe+20|0)>>>0>>0))break}(a),function(a){var $e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0;if(cf=q[a>>2],1<=(0|(jf=q[a+332>>2]))){for(kf=q[a+336>>2],lf=q[cf+1052>>2],mf=q[cf+856>>2];;){if($e=q[kf+w(ff,20)>>2],(q[$e+28>>2]||q[$e+24>>2])&&(q[(af=ff<<2)+q[a+356>>2]>>2]=q[$e+12>>2],q[$e+24>>2])&&!((0|(df=q[$e+12>>2]))<1))for(bf=q[$e+16>>2],nf=bf+(df<<2)|0,of=q[af+mf>>2],af=(ef=gf<<2)+q[a+372>>2]|0,df=ef+q[a+364>>2]|0,ef=ef+q[a+368>>2]|0;;)if(hf=of+q[bf>>2]<<2,q[af>>2]=lf+(q[hf+q[cf+1040>>2]>>2]<<2),q[df>>2]=q[hf+q[cf+1032>>2]>>2],q[ef>>2]=q[hf+q[cf+1036>>2]>>2],ef=ef+4|0,df=df+4|0,af=af+4|0,!((bf=bf+4|0)>>>0>>0))break;if(q[$e+28>>2]&&!((0|(af=q[$e+12>>2]))<1))for(bf=q[$e+20>>2],df=bf+(af<<2)|0,af=q[a+360>>2]+(gf<<2)|0;;)if(q[af>>2]=q[bf>>2],af=af+4|0,!((bf=bf+4|0)>>>0>>0))break;if(gf=q[$e+8>>2]+gf|0,(0|jf)==(0|(ff=ff+1|0)))break}cf=q[a>>2]}if(!(r[cf+4|0]<4||(0|(mf=q[a+332>>2]))<1))for(nf=q[cf+864>>2],of=q[a+336>>2],bf=gf=0;;){if(ff=q[of+w(bf,20)>>2],q[ff+24>>2]&&!((0|($e=q[ff+12>>2]))<1))for(af=q[ff+16>>2],pf=af+($e<<2)|0,qf=q[nf+(bf<<2)>>2],df=($e=gf<<2)+q[a+376>>2]|0,ef=$e+q[a+380>>2]|0,hf=$e+q[a+384>>2]|0,jf=$e+q[a+388>>2]|0,kf=$e+q[a+392>>2]|0,lf=$e+q[a+396>>2]|0,rf=q[cf+1308>>2],sf=q[cf+1304>>2],tf=q[cf+1300>>2],uf=q[cf+1296>>2],vf=q[cf+1292>>2],wf=q[cf+1288>>2];;)if($e=q[af>>2]+qf<<2,q[df>>2]=q[$e+wf>>2],q[ef>>2]=q[$e+vf>>2],q[hf>>2]=q[$e+uf>>2],q[jf>>2]=q[$e+tf>>2],q[kf>>2]=q[$e+sf>>2],q[lf>>2]=q[$e+rf>>2],lf=lf+4|0,kf=kf+4|0,jf=jf+4|0,hf=hf+4|0,ef=ef+4|0,df=df+4|0,!((af=af+4|0)>>>0>>0))break;if(gf=q[ff+8>>2]+gf|0,(0|mf)==(0|(bf=bf+1|0)))break}}(a),function(a){var vj=0,xj=0,yj=0,bk=0,ck=0,dk=0,ek=0,fk=0,gk=0;vj=a+340|0,n[q[1807]](vj,q[a+364>>2],q[a+448>>2],q[a+424>>2]),n[q[1808]](vj,q[a+368>>2],q[a+440>>2],q[a+424>>2]),n[q[1809]](vj,q[a+372>>2],q[a+444>>2],q[q[a>>2]+892>>2],2,q[a+424>>2]);if(!(r[q[a>>2]+4|0]<4||(n[q[1807]](vj,q[a+376>>2],q[a+400>>2],q[a+424>>2]),n[q[1807]](vj,q[a+380>>2],q[a+404>>2],q[a+424>>2]),n[q[1807]](vj,q[a+384>>2],q[a+408>>2],q[a+424>>2]),n[q[1807]](vj,q[a+388>>2],q[a+412>>2],q[a+424>>2]),n[q[1807]](vj,q[a+392>>2],q[a+416>>2],q[a+424>>2]),n[q[1807]](vj,q[a+396>>2],q[a+420>>2],q[a+424>>2]),(0|(dk=q[a+332>>2]))<1))){for(ek=q[a+408>>2],fk=q[a+404>>2],gk=q[a+400>>2],xj=q[a+452>>2],vj=0;;)if(ck=vj<<2,q[(yj=bk<<2)+xj>>2]=q[ck+gk>>2],q[xj+(4|yj)>>2]=q[ck+fk>>2],q[xj+(8|yj)>>2]=q[ck+ek>>2],bk=bk+4|0,(0|dk)==(0|(vj=vj+1|0)))break;for(xj=q[a+456>>2],ck=q[a+420>>2],ek=q[a+416>>2],fk=q[a+412>>2],vj=a=0;;)if(yj=vj<<2,q[(bk=a<<2)+xj>>2]=q[yj+fk>>2],q[xj+(4|bk)>>2]=q[yj+ek>>2],q[xj+(8|bk)>>2]=q[yj+ck>>2],a=a+4|0,(0|dk)==(0|(vj=vj+1|0)))break}}(a),function(a){var Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0;if(1<=(0|(Ve=q[a+500>>2])))for(Xe=q[a+504>>2],We=q[a>>2],Ye=q[We+1252>>2];;){if(Re=q[w(Te,24)+Xe>>2],(q[Re+28>>2]||q[Re+24>>2])&&(q[(Pe=Te<<2)+q[a+524>>2]>>2]=q[Re+12>>2],q[Re+24>>2])&&!((0|(Se=q[Re+12>>2]))<1))for(Qe=q[Re+16>>2],Se=Qe+(Se<<2)|0,Ze=q[Pe+Ye>>2],Pe=q[a+532>>2]+(Ue<<2)|0,_e=q[We+1284>>2];;)if(q[Pe>>2]=q[(q[Qe>>2]+Ze<<2)+_e>>2],Pe=Pe+4|0,!((Qe=Qe+4|0)>>>0>>0))break;if(q[Re+28>>2]&&!((0|(Pe=q[Re+12>>2]))<1))for(Qe=q[Re+20>>2],Se=Qe+(Pe<<2)|0,Pe=q[a+528>>2]+(Ue<<2)|0;;)if(q[Pe>>2]=q[Qe>>2],Pe=Pe+4|0,!((Qe=Qe+4|0)>>>0>>0))break;if(Ue=q[Re+8>>2]+Ue|0,(0|Ve)==(0|(Te=Te+1|0)))break}}(a),n[q[1807]](a+508|0,q[a+532>>2],q[a+536>>2],0),function(a){var zk=x(0),Ak=0,Bk=0,Ck=0,Dk=0,Ek=0,Fk=0,Gk=x(0),Hk=0,Ik=0,Jk=0;L=Ek=L-16|0,Ck=q[a>>2];if(!(r[Ck+4|0]<5||(0|(Dk=q[a+596>>2]))<1))for(Bk=q[a+600>>2],Hk=Bk+w(Dk,12)|0,Ik=q[a+44>>2],Dk=q[Ck+976>>2];;){if(Ck=(q[Bk>>2]<<2)+Ik|0,zk=x(q[Ck>>2]),1<=(0|(Ak=q[Bk+4>>2])))for(a=q[Bk+8>>2],Jk=a+w(Ak,48)|0;;)if((Ak=q[a+8>>2])&&((Fk=Ak+-1|0)>>>0<=1?(Ak=q[a+4>>2],Gk=u[Dk+(Ak+q[a+12>>2]<<2)>>2],zk=x(Fk-1?zk+x(u[a+44>>2]*x(Gk*u[a+20>>2])):zk+x(u[a+44>>2]*x(x(Gk*u[a+20>>2])+x(u[Dk+(Ak+q[a+16>>2]<<2)>>2]*u[a+24>>2]))))):(q[Ek>>2]=Ak,Y(4,1024,Ek))),!((a=a+48|0)>>>0>>0))break;if(zk=(zk=x(zk+x(.0010000000474974513)))>2]=a,!((Bk=Bk+12|0)>>>0>>0))break}L=16+Ek|0}(a),function(a){var ej=0,gj=0,ij=0,jj=0,kj=0,lj=x(0),mj=0,nj=0,oj=0,pj=0,qj=0,rj=0,sj=0,tj=0,uj=0;L=mj=L-16|0,ej=q[a>>2];if(!(r[ej+4|0]<4||(va(a,q[a+604>>2],q[a+608>>2],q[ej+984>>2],q[a+152>>2],q[ej+796>>2]),gj=q[a>>2],r[gj+4|0]<5))){if(ij=q[a+608>>2],qj=q[gj+992>>2],rj=q[gj+988>>2],1<=(0|(ej=q[a+604>>2]))){for(sj=w(ej,12)+ij|0,tj=q[a+148>>2],nj=q[gj+980>>2];;){if(oj=(q[ij>>2]<<2)+tj|0,kj=q[oj>>2],1<=(0|(jj=q[ij+4>>2])))for(ej=q[ij+8>>2],uj=ej+w(jj,48)|0;;)if((jj=q[ej+8>>2])&&((pj=jj+-1|0)>>>0<=1?(jj=q[ej+4>>2],lj=u[(jj+q[ej+12>>2]<<2)+nj>>2],kj=(j(x(pj-1?x(u[ej+44>>2]*x(lj*u[ej+20>>2]))+(f(0,kj),k()):x(u[ej+44>>2]*x(x(lj*u[ej+20>>2])+x(u[(jj+q[ej+16>>2]<<2)+nj>>2]*u[ej+24>>2])))+(f(0,kj),k()))),b[0])):(q[mj>>2]=jj,Y(4,1024,mj))),!((ej=ej+48|0)>>>0>>0))break;if(f(0,kj),lj=k(),u[oj>>2]=lj>>0>>0))break}ij=q[a+608>>2],ej=q[a+604>>2]}fa(ej,ij,rj,q[gj+1288>>2],q[gj+1292>>2],q[gj+1296>>2],q[a+156>>2]),fa(q[a+604>>2],q[a+608>>2],qj,q[gj+1300>>2],q[gj+1304>>2],q[gj+1308>>2],q[a+160>>2])}L=16+mj|0}(a),function(a){var si=0,ti=0,ui=0,vi=0,wi=0,xi=x(0),yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0;L=zi=L-80|0,wi=q[a>>2];if(!(r[wi+4|0]<5)){if(Ei=q[wi+1028>>2],Fi=q[wi+1024>>2],ti=q[a+616>>2],si=q[a+612>>2],ui=ti,!((0|si)<1)){for(Ai=w(si,12)+ti|0,Bi=q[a+276>>2],yi=q[wi+1004>>2];;){if(Ci=Bi+(q[ti>>2]<<2)|0,ui=q[Ci>>2],1<=(0|(vi=q[ti+4>>2])))for(si=q[ti+8>>2],Gi=si+w(vi,48)|0;;)if((vi=q[si+8>>2])&&((Di=vi+-1|0)>>>0<=1?(vi=q[si+4>>2],xi=u[yi+(vi+q[si+12>>2]<<2)>>2],ui=(j(x(Di-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[yi+(vi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),b[0])):(q[64+zi>>2]=vi,Y(4,1024,zi+64|0))),!((si=si+48|0)>>>0>>0))break;if(q[Ci>>2]=ui,!((ti=ti+12|0)>>>0>>0))break}if(ti=q[a+616>>2],si=q[a+612>>2],ui=ti,!((0|si)<1)){for(Ai=w(si,12)+ti|0,Bi=q[a+280>>2],yi=q[q[a>>2]+1008>>2];;){if(Ci=Bi+(q[ti>>2]<<2)|0,ui=q[Ci>>2],1<=(0|(vi=q[ti+4>>2])))for(si=q[ti+8>>2],Gi=si+w(vi,48)|0;;)if((vi=q[si+8>>2])&&((Di=vi+-1|0)>>>0<=1?(vi=q[si+4>>2],xi=u[yi+(vi+q[si+12>>2]<<2)>>2],ui=(j(x(Di-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[yi+(vi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),b[0])):(q[48+zi>>2]=vi,Y(4,1024,48+zi|0))),!((si=si+48|0)>>>0>>0))break;if(q[Ci>>2]=ui,!((ti=ti+12|0)>>>0>>0))break}if(ti=q[a+616>>2],si=q[a+612>>2],ui=ti,!((0|si)<1)){for(Ai=w(si,12)+ti|0,Bi=q[a+268>>2],yi=q[q[a>>2]+996>>2];;){if(Ci=Bi+(q[ti>>2]<<2)|0,ui=q[Ci>>2],1<=(0|(vi=q[ti+4>>2])))for(si=q[ti+8>>2],Gi=si+w(vi,48)|0;;)if((vi=q[si+8>>2])&&((Di=vi+-1|0)>>>0<=1?(vi=q[si+4>>2],xi=u[yi+(vi+q[si+12>>2]<<2)>>2],ui=(j(x(Di-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[yi+(vi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),b[0])):(q[32+zi>>2]=vi,Y(4,1024,32+zi|0))),!((si=si+48|0)>>>0>>0))break;if(f(0,ui),xi=k(),u[Ci>>2]=xi>>0>>0))break}si=q[a+612>>2],ui=q[a+616>>2]}}}if(fa(si,ui,Fi,q[wi+1288>>2],q[wi+1292>>2],q[wi+1296>>2],q[a+296>>2]),fa(q[a+612>>2],q[a+616>>2],Ei,q[wi+1300>>2],q[wi+1304>>2],q[wi+1308>>2],q[a+300>>2]),!((0|(si=q[a+612>>2]))<1)){for(ti=q[a+616>>2],vi=ti+w(si,12)|0,Ei=q[a+284>>2],wi=q[q[a>>2]+1e3>>2];;){if(Fi=Ei+(q[ti>>2]<<2)|0,ui=q[Fi>>2],1<=(0|(yi=q[ti+4>>2])))for(si=q[ti+8>>2],Ai=si+w(yi,48)|0;;)if((yi=q[si+8>>2])&&((Bi=yi+-1|0)>>>0<=1?(yi=q[si+4>>2],xi=u[wi+(yi+q[si+12>>2]<<2)>>2],ui=(j(x(Bi-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[wi+(yi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),b[0])):(q[16+zi>>2]=yi,Y(4,1024,16+zi|0))),!((si=si+48|0)>>>0>>0))break;if(f(0,ui),xi=k(),u[Fi>>2]=xi>>0>>0))break}if(!((0|(si=q[a+612>>2]))<1))for(ti=q[a+616>>2],yi=ti+w(si,12)|0,vi=q[a+272>>2],a=q[q[a>>2]+1012>>2];;){if(Ei=vi+(q[ti>>2]<<2)|0,ui=q[Ei>>2],1<=(0|(wi=q[ti+4>>2])))for(si=q[ti+8>>2],Fi=si+w(wi,48)|0;;)if((wi=q[si+8>>2])&&((Ai=wi+-1|0)>>>0<=1?(wi=q[si+4>>2],xi=u[a+(wi+q[si+12>>2]<<2)>>2],ui=(j(x(Ai-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[a+(wi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),b[0])):(q[zi>>2]=wi,Y(4,1024,zi))),!((si=si+48|0)>>>0>>0))break;if(f(0,ui),xi=k(),u[Ei>>2]=xi>>0>>0))break}}}L=80+zi|0}(a),function(a){var Vh=0,Wh=0,Xh=0,Yh=0,Zh=x(0),_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=x(0),gi=0,hi=0,ii=0;L=$h=L-32|0,Xh=q[a>>2];if(!(r[Xh+4|0]<4||(va(a,q[a+620>>2],q[a+624>>2],q[Xh+1040>>2],q[a+444>>2],q[Xh+892>>2]),_h=q[a>>2],r[_h+4|0]<5))){if(hi=q[_h+1048>>2],ii=q[_h+1044>>2],Yh=q[a+624>>2],Vh=q[a+620>>2],Xh=Yh,!((0|Vh)<1)){for(di=w(Vh,12)+Yh|0,ei=q[a+440>>2],ai=q[_h+1036>>2];;){if(Xh=ei+(q[Yh>>2]<<2)|0,Zh=x(q[Xh>>2]),1<=(0|(Wh=q[Yh+4>>2])))for(Vh=q[Yh+8>>2],bi=Vh+w(Wh,48)|0;;)if((Wh=q[Vh+8>>2])&&((ci=Wh+-1|0)>>>0<=1?(Wh=q[Vh+4>>2],fi=u[ai+(Wh+q[Vh+12>>2]<<2)>>2],Zh=x(ci-1?Zh+x(u[Vh+44>>2]*x(fi*u[Vh+20>>2])):Zh+x(u[Vh+44>>2]*x(x(fi*u[Vh+20>>2])+x(u[ai+(Wh+q[Vh+16>>2]<<2)>>2]*u[Vh+24>>2]))))):(q[16+$h>>2]=Wh,Y(4,1024,16+$h|0))),!((Vh=Vh+48|0)>>>0>>0))break;if(Zh=(Zh=x(Zh+x(.0010000000474974513)))>2]=Vh,!((Yh=Yh+12|0)>>>0>>0))break}if(Yh=q[a+624>>2],Vh=q[a+620>>2],Xh=Yh,!((0|Vh)<1)){for(di=w(Vh,12)+Yh|0,ei=q[a+448>>2],ai=q[q[a>>2]+1032>>2];;){if(bi=ei+(q[Yh>>2]<<2)|0,Xh=q[bi>>2],1<=(0|(Wh=q[Yh+4>>2])))for(Vh=q[Yh+8>>2],ci=Vh+w(Wh,48)|0;;)if((Wh=q[Vh+8>>2])&&((gi=Wh+-1|0)>>>0<=1?(Wh=q[Vh+4>>2],Zh=u[ai+(Wh+q[Vh+12>>2]<<2)>>2],Xh=(j(x(gi-1?x(u[Vh+44>>2]*x(Zh*u[Vh+20>>2]))+(f(0,Xh),k()):x(u[Vh+44>>2]*x(x(Zh*u[Vh+20>>2])+x(u[ai+(Wh+q[Vh+16>>2]<<2)>>2]*u[Vh+24>>2])))+(f(0,Xh),k()))),b[0])):(q[$h>>2]=Wh,Y(4,1024,$h))),!((Vh=Vh+48|0)>>>0>>0))break;if(f(0,Xh),Zh=k(),u[bi>>2]=Zh>>0>>0))break}Vh=q[a+620>>2],Xh=q[a+624>>2]}}fa(Vh,Xh,ii,q[_h+1288>>2],q[_h+1292>>2],q[_h+1296>>2],q[a+452>>2]),fa(q[a+620>>2],q[a+624>>2],hi,q[_h+1300>>2],q[_h+1304>>2],q[_h+1308>>2],q[a+456>>2])}L=32+$h|0}(a),function(a){var Bg=0,Cg=0,Dg=0,Eg=0,Fg=x(0),Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0;L=Gg=L-16|0,Cg=q[a>>2];if(!(r[Cg+4|0]<5||(0|(Eg=q[a+628>>2]))<1))for(Dg=q[a+632>>2],Jg=Dg+w(Eg,12)|0,Kg=q[a+536>>2],Eg=q[Cg+1284>>2];;){if(Hg=(q[Dg>>2]<<2)+Kg|0,Cg=q[Hg>>2],1<=(0|(Bg=q[Dg+4>>2])))for(a=q[Dg+8>>2],Lg=a+w(Bg,48)|0;;)if((Bg=q[a+8>>2])&&((Ig=Bg+-1|0)>>>0<=1?(Bg=q[a+4>>2],Fg=u[Eg+(Bg+q[a+12>>2]<<2)>>2],Cg=(j(x(Ig-1?x(u[a+44>>2]*x(Fg*u[a+20>>2]))+(f(0,Cg),k()):x(u[a+44>>2]*x(x(Fg*u[a+20>>2])+x(u[Eg+(Bg+q[a+16>>2]<<2)>>2]*u[a+24>>2])))+(f(0,Cg),k()))),b[0])):(q[Gg>>2]=Bg,Y(4,1024,Gg))),!((a=a+48|0)>>>0>>0))break;if(f(0,Cg),Fg=k(),u[Hg>>2]=Fg>>0>>0))break}L=16+Gg|0}(a),function(a){var mh=0,Oh=0,Ph=0,Qh=0,Rh=x(0),Sh=0,Th=0;if(1<=(0|(mh=q[a+4>>2])))for(Oh=q[a+8>>2],Th=Oh+w(mh,12)|0,mh=q[a+40>>2],Ph=q[a+52>>2],Qh=q[a+48>>2],a=Qh;;)if(q[mh>>2]&&(Rh=u[Ph>>2],u[a>>2]=Rh,-1!=(0|(Sh=q[Oh+4>>2])))&&(u[a>>2]=Rh*u[(Sh<<2)+Qh>>2]),a=a+4|0,Ph=Ph+4|0,mh=mh+4|0,!((Oh=Oh+12|0)>>>0>>0))break}(a),function(a){var ih=0,jh=0,kh=0,lh=0;if(1<=(0|(lh=q[a+304>>2])))for(ih=q[a+308>>2],jh=q[a+312>>2];;)if(q[jh>>2]&&n[q[ih+20>>2]](a,kh),jh=jh+4|0,ih=ih+32|0,(0|lh)==(0|(kh=kh+1|0)))break}(a),function(a){var Xg=0,Yg=0,Zg=x(0),_g=x(0),$g=0,ah=0,bh=0,ch=x(0),dh=0,eh=0,fh=0,gh=0,hh=0;if(1<=(0|(Xg=q[a+332>>2])))for(Yg=q[a+336>>2],eh=Yg+w(Xg,20)|0,fh=q[a+308>>2],dh=q[a+316>>2],hh=q[a+48>>2],Xg=q[a+448>>2],$g=q[a+444>>2],bh=q[a+424>>2];;)if(q[bh>>2]&&(-1!=(0|(ah=q[Yg+4>>2]))&&(u[Xg>>2]=u[(ah<<2)+hh>>2]*u[Xg>>2]),-1!=(0|(ah=q[Yg+8>>2])))&&(u[Xg>>2]=u[dh+(ah<<2)>>2]*u[Xg>>2],gh=q[$g>>2],n[q[24+(fh+(ah<<5)|0)>>2]](a,ah,gh,gh,q[Yg+16>>2])),$g=$g+4|0,Xg=Xg+4|0,bh=bh+4|0,!((Yg=Yg+20|0)>>>0>>0))break;if(!(r[q[a>>2]+4|0]<4||(0|(Xg=q[a+332>>2]))<1))for($g=q[a+336>>2],ah=$g+w(Xg,20)|0,eh=q[a+328>>2],fh=q[a+324>>2],Yg=q[a+452>>2],Xg=q[a+456>>2],bh=q[a+424>>2];;)if(q[bh>>2]&&-1!=(0|(a=q[$g+8>>2]))&&(a=(dh=a<<4)+fh|0,Zg=x(u[Yg>>2]*u[a>>2]),u[Yg>>2]=Zg,_g=x(u[Yg+4>>2]*u[a+4>>2]),u[Yg+4>>2]=_g,ch=u[a+8>>2],q[Yg+12>>2]=1065353216,u[Yg+4>>2]=_g>2]=Zg>2]),u[Yg+8>>2]=Zg>2],_g=u[(a=eh+dh|0)>>2],Zg=x(x(Zg+_g)-x(Zg*_g)),u[Xg>>2]=Zg,_g=u[Xg+4>>2],ch=u[a+4>>2],_g=x(x(_g+ch)-x(_g*ch)),u[Xg+4>>2]=_g,ch=u[a+8>>2],q[Xg+12>>2]=1065353216,u[Xg+4>>2]=_g>2]=Zg>2],Zg=x(x(ch+Zg)-x(Zg*ch)),u[Xg+8>>2]=Zg>>0>>0))break}(a),function(a){var Ln=0,Mn=0,Nn=0,On=x(0),Ko=x(0),Lo=x(0),Mo=x(0),No=x(0),Oo=0,Po=0,Qo=0,Ro=0,So=0,To=0,Uo=0,Vo=x(0),Wo=0,Xo=0,Yo=x(0),Zo=0,_o=0;if(1<=(0|(Oo=q[a+500>>2])))for(Zo=q[a+536>>2],Po=q[a+444>>2],_o=q[a+504>>2];;){if(a=w(Nn,24)+_o|0,0<(0|(Qo=q[a+12>>2])))for(On=u[(Nn<<2)+Zo>>2],Ro=q[a+20>>2],So=q[a+16>>2],To=q[(q[a+4>>2]<<2)+Po>>2],Uo=q[(q[a+8>>2]<<2)+Po>>2],a=0;;)if(Vo=u[((Ln=1|a)<<2)+So>>2],Mn=s[(a<<1)+Ro>>1]<<3&262136,Ko=u[(Wo=(4|Mn)+To|0)>>2],Ln=s[(Ln<<1)+Ro>>1]<<3&262136,Lo=u[(Xo=(4|Ln)+Uo|0)>>2],Mo=u[(Mn=Mn+To|0)>>2],Yo=u[(a<<2)+So>>2],No=u[(Ln=Ln+Uo|0)>>2],u[Mn>>2]=Mo+x(On*x(Yo*x(No-Mo))),u[Wo>>2]=Ko+x(On*x(Yo*x(Lo-Ko))),u[Ln>>2]=No+x(On*x(Vo*x(Mo-No))),u[Xo>>2]=Lo+x(On*x(Vo*x(Ko-Lo))),!((0|(a=a+2|0))<(0|Qo)))break;if(!((0|(Nn=Nn+1|0))<(0|Oo)))break}}(a),n[q[1810]](a),function(a){var Gc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0;if(!((0|(Rc=q[a+480>>2]))<1)){for(Sc=q[a+484>>2],Kc=Sc+w(Rc,28)|0,Nc=q[a+424>>2],Oc=q[a+40>>2],Lc=q[a+44>>2],Tc=q[a+440>>2],Gc=Sc;;){if(1<=(0|(Mc=q[Gc+4>>2])))for(Qc=Gc+20|0,Pc=q[Gc+12>>2],Ic=0;;)if(Uc=q[(Jc=Pc+(Ic<<4)|0)+4>>2]<<2,Jc=1==q[(Vc=Jc)>>2],q[Vc+12>>2]=q[(q[(Jc?Oc:Nc)+Uc>>2]?(Jc?Lc:Tc)+Uc|0:Qc)>>2],!((0|(Ic=Ic+1|0))<(0|Mc)))break;if(!((Gc=Gc+28|0)>>>0>>0))break}if(!((0|Rc)<1))for(Tc=q[a+436>>2],Oc=0;;){if(Kc=w(Oc,28)+Sc|0,!(q[(Nc=Kc)+24>>2]<1)){for(Jc=q[a+488>>2],Ic=0;;)if(q[Jc+(Ic<<2)>>2]=-1,Ic=Ic+1|0,Gc=q[Nc+24>>2],!((0|Ic)<(0|Gc)))break;if(!((0|Gc)<1))for(Gc=q[a+496>>2],Ic=0;;)if(q[Gc+(Ic<<2)>>2]=-1,!((0|(Ic=Ic+1|0))>2]))break}if(!(q[Kc+4>>2]<1)){for(Lc=q[a+492>>2],Ic=0;;)if(q[Lc+(Ic<<2)>>2]=-1,Ic=Ic+1|0,Gc=q[Kc+4>>2],!((0|Ic)<(0|Gc)))break;if(!((0|Gc)<1))for(Mc=q[Kc+12>>2],Qc=q[a+496>>2],Ic=0;;)if(Pc=q[12+(Mc+(Ic<<4)|0)>>2]-q[Kc+20>>2]<<2,Gc=-1==(0|(Gc=q[(Jc=Pc+Qc|0)>>2]))?Pc+q[a+488>>2]|0:Lc+(Gc<<2)|0,q[Gc>>2]=Ic,!((0|(Ic=(q[Jc>>2]=Ic)+1|0))>2]))break}if(1<=(0|(Gc=q[Nc+24>>2])))for(Lc=q[Kc+8>>2],Qc=q[a+488>>2],Mc=0;;){if(-1!=(0|(Ic=q[Qc+(Mc<<2)>>2]))){for(Pc=q[a+492>>2],Jc=q[Kc+12>>2];;)if(Gc=1==q[(Gc=Jc+(Ic<<4)|0)>>2]?(Gc=w(q[Gc+8>>2],28)+Sc|0,q[Gc+8>>2]=Lc,q[Gc>>2]):(q[Tc+(q[Gc+4>>2]<<2)>>2]=Lc,1),Lc=Gc+Lc|0,Gc=q[Pc+(Ic<<2)>>2],!((0|Ic)<(0|Gc)&&-1!=(0|(Ic=Gc))))break;Gc=q[Nc+24>>2]}if(!((0|(Mc=Mc+1|0))<(0|Gc)))break}if((0|Rc)==(0|(Oc=Oc+1|0)))break}}}(a),function(a){var Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=x(0),Tg=0,Ug=0;Qg=q[a+332>>2];if(q[a+644>>2]){if(!(((q[a+428>>2]=0)|Qg)<1))for(;;)if(Mg=126,Tg=q[a+432>>2]+Og|0,!q[(Ng=Og<<2)+q[a+424>>2]>>2]|u[Ng+q[a+448>>2]>>2]==x(0)||(Mg=127),o[0|Tg]=Mg,(0|Qg)==(0|(Og=Og+1|0)))break}else if(q[a+428>>2]){if(Mg=r[q[a>>2]+4|0],!(((q[a+428>>2]=0)|Qg)<1))if(4<=Mg>>>0){for(;;)if(Sg=u[(Mg=Og<<2)+q[a+448>>2]>>2],Pg=q[Mg+q[a+424>>2]>>2],Ng=Sg!=x(0)&0!=(0|Pg),Tg=q[a+432>>2]+Og|0,Ng=(0|Ng)==(1&o[0|Tg])?Ng:2|Ng,Ng=Sg!=u[Mg+q[a+468>>2]>>2]?4|Ng:Ng,Ng=q[Mg+q[a+440>>2]>>2]==q[Mg+q[a+464>>2]>>2]?Ng:8|Ng,Mg=q[Mg+q[a+436>>2]>>2]==q[Mg+q[a+460>>2]>>2]?Ng:16|Ng,Mg=Pg?32|Mg:Mg,Pg=(Ng=Ug<<2)+q[a+452>>2]|0,Rg=Ng+q[a+472>>2]|0,(u[Pg>>2]!=u[Rg>>2]|u[Pg+4>>2]!=u[Rg+4>>2]|(u[Pg+8>>2]!=u[Rg+8>>2]|u[Pg+12>>2]!=u[Rg+12>>2])||(Pg=Ng+q[a+456>>2]|0,Ng=Ng+q[a+476>>2]|0,u[Pg>>2]!=u[Ng>>2]|u[Pg+4>>2]!=u[Ng+4>>2]|u[Pg+8>>2]!=u[Ng+8>>2])||u[Pg+12>>2]!=u[Ng+12>>2])&&(Mg|=64),o[0|Tg]=Mg,Ug=Ug+4|0,(0|Qg)==(0|(Og=Og+1|0)))break}else for(;;)if(Sg=u[(Mg=Og<<2)+q[a+448>>2]>>2],Pg=q[Mg+q[a+424>>2]>>2],Ng=Sg!=x(0)&0!=(0|Pg),Rg=q[a+432>>2]+Og|0,Ng=(0|Ng)==(1&o[0|Rg])?Ng:2|Ng,Ng=Sg!=u[Mg+q[a+468>>2]>>2]?4|Ng:Ng,Ng=q[Mg+q[a+440>>2]>>2]==q[Mg+q[a+464>>2]>>2]?Ng:8|Ng,Mg=q[Mg+q[a+436>>2]>>2]==q[Mg+q[a+460>>2]>>2]?Ng:16|Ng,o[0|Rg]=Pg?32|Mg:Mg,(0|Qg)==(0|(Og=Og+1|0)))break}else if(!((0|Qg)<1))for(;;)if(!q[(Mg=Og<<2)+q[a+424>>2]>>2]|u[Mg+q[a+448>>2]>>2]==x(0)?(Mg=q[a+432>>2]+Og|0,o[0|Mg]=254&r[0|Mg]):(Mg=q[a+432>>2]+Og|0,o[0|Mg]=1|r[0|Mg]),(0|Qg)==(0|(Og=Og+1|0)))break}(a),q[a+644>>2]=0}function va(a,Wa,Xa,Ya,Za,_a){var fb,gb,hb,jb,kb,cb,$a=0,bb=0,db=0,eb=0,ib=0;if(L=cb=L-32|0,1<=(0|Wa))for(kb=w(Wa,12)+Xa|0;;){if(!((0|($a=q[Xa+4>>2]))<1))if(fb=(Wa=q[Xa+8>>2])+w($a,48)|0,$a=q[Xa>>2]<<2,1<=(0|(db=q[$a+_a>>2])))for(db<<=1,gb=q[q[a>>2]+1052>>2],hb=q[Za+$a>>2];;){b:if($a=q[Wa+8>>2]){c:{if((bb=$a+-1|0)>>>0<=1){if($a=(q[Wa+4>>2]<<2)+Ya|0,ib=(q[$a+(q[Wa+12>>2]<<2)>>2]<<2)+gb|0,bb-1)break c;for(eb=(q[$a+(q[Wa+16>>2]<<2)>>2]<<2)+gb|0,$a=0;;)if(u[(jb=(bb=$a<<2)+hb|0)>>2]=u[jb>>2]+x(u[Wa+44>>2]*x(x(u[bb+ib>>2]*u[Wa+20>>2])+x(u[bb+eb>>2]*u[Wa+24>>2]))),(0|db)==(0|($a=$a+1|0)))break;break b}q[cb>>2]=$a,Y(4,1024,cb);break b}for($a=0;;)if(u[(eb=(bb=$a<<2)+hb|0)>>2]=u[eb>>2]+x(u[Wa+44>>2]*x(u[bb+ib>>2]*u[Wa+20>>2])),(0|db)==(0|($a=$a+1|0)))break}if(!((Wa=Wa+48|0)>>>0>>0))break}else for(;;)if(3<=($a=q[Wa+8>>2])>>>0&&(q[16+cb>>2]=$a,Y(4,1024,16+cb|0)),!((Wa=Wa+48|0)>>>0>>0))break;if(!((Xa=Xa+12|0)>>>0>>0))break}L=32+cb|0}function wa(a,Wa,Xa){Wa|=0,Xa|=0;var Ya;L=Ya=L+-64|0;a:{if(a|=0)if(Wa)if((Wa+15&-16)!=(0|Wa))q[52+Ya>>2]=1522,q[48+Ya>>2]=2361,Y(4,1294,48+Ya|0);else{if(Wa=function(a,Il,Jl){var $l=0,am=0,bm=0,cm=0,dm=0,em=0,fm=0,gm=0,hm=0,im=0,jm=0,km=0,lm=0,mm=0,nm=x(0),om=0,pm=0,qm=0,rm=0,sm=0;if(ca(16+(L=cm=L-576|0)|0,0,560),Fa(a,16+cm|0,12+cm|0),(dm=q[12+cm>>2])>>>0<=Jl>>>0){if(am=ca(Il,0,dm),$l=am+q[16+cm>>2]|0,q[$l+8>>2]=am+q[20+cm>>2],q[$l+40>>2]=am+q[24+cm>>2],q[$l+44>>2]=am+q[28+cm>>2],q[$l+48>>2]=am+q[32+cm>>2],q[$l+52>>2]=am+q[36+cm>>2],q[$l+16>>2]=am+q[40+cm>>2],q[$l+24>>2]=am+q[44+cm>>2],q[$l+28>>2]=am+q[48+cm>>2],q[$l+32>>2]=am+q[52+cm>>2],q[$l+36>>2]=am+q[56+cm>>2],Il=q[a+704>>2],q[$l+308>>2]=am+q[60+cm>>2],q[$l+312>>2]=am+q[64+cm>>2],q[$l+316>>2]=am+q[68+cm>>2],q[$l+320>>2]=am+q[72+cm>>2],q[$l+324>>2]=am+q[76+cm>>2],q[$l+328>>2]=am+q[80+cm>>2],q[$l+60>>2]=am+q[84+cm>>2],q[$l+144>>2]=am+q[88+cm>>2],q[$l+148>>2]=am+q[92+cm>>2],Jl=am+q[96+cm>>2]|0,q[$l+152>>2]=Jl,!((0|(dm=q[Il+8>>2]))<1)&&(Il=am+q[100+cm>>2]|0,q[Jl>>2]=Il,1!=(0|dm)))for(Jl=1;;)if(Il=(15+(q[q[a+796>>2]+(bm<<2)>>2]<<3)&-16)+Il|0,q[q[$l+152>>2]+(Jl<<2)>>2]=Il,(0|dm)==(0|(Jl=(bm=Jl)+1|0)))break;if(q[$l+156>>2]=am+q[104+cm>>2],q[$l+160>>2]=am+q[108+cm>>2],q[$l+68>>2]=am+q[112+cm>>2],q[$l+76>>2]=am+q[116+cm>>2],q[$l+80>>2]=am+q[120+cm>>2],q[$l+84>>2]=am+q[124+cm>>2],q[$l+88>>2]=am+q[128+cm>>2],q[$l+92>>2]=am+q[132+cm>>2],q[$l+96>>2]=am+q[136+cm>>2],q[$l+100>>2]=am+q[140+cm>>2],q[$l+104>>2]=am+q[144+cm>>2],q[$l+108>>2]=am+q[148+cm>>2],q[$l+112>>2]=am+q[152+cm>>2],q[$l+116>>2]=am+q[156+cm>>2],q[$l+120>>2]=am+q[160+cm>>2],q[$l+124>>2]=am+q[164+cm>>2],q[$l+128>>2]=am+q[168+cm>>2],q[$l+132>>2]=am+q[172+cm>>2],q[$l+136>>2]=am+q[176+cm>>2],q[$l+140>>2]=am+q[180+cm>>2],q[$l+168>>2]=am+q[184+cm>>2],q[$l+264>>2]=am+q[188+cm>>2],q[$l+268>>2]=am+q[192+cm>>2],q[$l+272>>2]=am+q[196+cm>>2],q[$l+276>>2]=am+q[200+cm>>2],q[$l+280>>2]=am+q[204+cm>>2],q[$l+284>>2]=am+q[208+cm>>2],q[$l+288>>2]=am+q[212+cm>>2],q[$l+292>>2]=am+q[216+cm>>2],q[$l+296>>2]=am+q[220+cm>>2],q[$l+300>>2]=am+q[224+cm>>2],q[$l+176>>2]=am+q[228+cm>>2],q[$l+184>>2]=am+q[232+cm>>2],q[$l+188>>2]=am+q[236+cm>>2],q[$l+192>>2]=am+q[240+cm>>2],q[$l+196>>2]=am+q[244+cm>>2],q[$l+200>>2]=am+q[248+cm>>2],q[$l+204>>2]=am+q[252+cm>>2],q[$l+208>>2]=am+q[256+cm>>2],q[$l+212>>2]=am+q[260+cm>>2],q[$l+216>>2]=am+q[264+cm>>2],q[$l+220>>2]=am+q[268+cm>>2],q[$l+224>>2]=am+q[272+cm>>2],q[$l+228>>2]=am+q[276+cm>>2],q[$l+232>>2]=am+q[280+cm>>2],q[$l+236>>2]=am+q[284+cm>>2],q[$l+240>>2]=am+q[288+cm>>2],q[$l+244>>2]=am+q[292+cm>>2],q[$l+248>>2]=am+q[296+cm>>2],q[$l+252>>2]=am+q[300+cm>>2],q[$l+256>>2]=am+q[304+cm>>2],q[$l+260>>2]=am+q[308+cm>>2],Il=q[a+704>>2],q[$l+336>>2]=am+q[312+cm>>2],q[$l+424>>2]=am+q[316+cm>>2],q[$l+432>>2]=am+q[320+cm>>2],q[$l+436>>2]=am+q[324+cm>>2],q[$l+440>>2]=am+q[328+cm>>2],Jl=am+q[332+cm>>2]|0,q[$l+444>>2]=Jl,!((0|(dm=q[Il+16>>2]))<1)&&(bm=am+q[336+cm>>2]|0,q[Jl>>2]=bm,(Jl=1)!=(0|dm)))for(Il=0;;)if(bm=(15+(q[q[a+892>>2]+(Il<<2)>>2]<<3)&-16)+bm|0,q[q[$l+444>>2]+(Jl<<2)>>2]=bm,(0|dm)==(0|(Jl=(Il=Jl)+1|0)))break;if(q[$l+448>>2]=am+q[340+cm>>2],q[$l+452>>2]=am+q[344+cm>>2],q[$l+456>>2]=am+q[348+cm>>2],q[$l+460>>2]=am+q[352+cm>>2],q[$l+464>>2]=am+q[356+cm>>2],q[$l+468>>2]=am+q[360+cm>>2],q[$l+472>>2]=am+q[364+cm>>2],q[$l+476>>2]=am+q[368+cm>>2],q[$l+344>>2]=am+q[372+cm>>2],q[$l+352>>2]=am+q[376+cm>>2],q[$l+356>>2]=am+q[380+cm>>2],q[$l+360>>2]=am+q[384+cm>>2],q[$l+364>>2]=am+q[388+cm>>2],q[$l+368>>2]=am+q[392+cm>>2],q[$l+372>>2]=am+q[396+cm>>2],q[$l+376>>2]=am+q[400+cm>>2],q[$l+380>>2]=am+q[404+cm>>2],q[$l+384>>2]=am+q[408+cm>>2],q[$l+388>>2]=am+q[412+cm>>2],q[$l+392>>2]=am+q[416+cm>>2],q[$l+396>>2]=am+q[420+cm>>2],q[$l+400>>2]=am+q[424+cm>>2],q[$l+404>>2]=am+q[428+cm>>2],q[$l+408>>2]=am+q[432+cm>>2],q[$l+412>>2]=am+q[436+cm>>2],q[$l+416>>2]=am+q[440+cm>>2],q[$l+420>>2]=am+q[444+cm>>2],Il=q[448+cm>>2],Jl=q[452+cm>>2],q[$l+552>>2]=am+q[456+cm>>2],q[$l+548>>2]=Jl+am,q[$l+544>>2]=Il+am,q[$l+560>>2]=am+q[460+cm>>2],Il=q[a+704>>2],gm=am+q[464+cm>>2]|0,q[$l+568>>2]=gm,1<=(0|(fm=q[Il+48>>2])))for(bm=am+q[468+cm>>2]|0,Il=am+q[472+cm>>2]|0,em=am+q[476+cm>>2]|0,hm=q[a+1072>>2],Jl=0;;)if(dm=gm+w(Jl,36)|0,q[dm+20>>2]=em,q[dm+16>>2]=Il,q[dm>>2]=bm,dm=q[hm+(Jl<<2)>>2],bm=(dm<<2)+bm|0,em=(dm=1<>2],dm=am+q[516+cm>>2]|0,q[$l+484>>2]=dm,1<=(0|(Il=q[Il+72>>2])))for(bm=am+q[520+cm>>2]|0,em=q[a+1212>>2],Jl=0;;)if(q[12+(dm+w(Jl,28)|0)>>2]=bm,bm=(q[em+(Jl<<2)>>2]<<4)+bm|0,(0|Il)==(0|(Jl=Jl+1|0)))break;q[$l+488>>2]=am+q[524+cm>>2],q[$l+492>>2]=am+q[528+cm>>2],q[$l+496>>2]=am+q[532+cm>>2],q[$l+504>>2]=am+q[536+cm>>2],q[$l+536>>2]=am+q[540+cm>>2],q[$l+512>>2]=am+q[544+cm>>2],q[$l+520>>2]=am+q[548+cm>>2],q[$l+524>>2]=am+q[552+cm>>2],q[$l+528>>2]=am+q[556+cm>>2],q[$l+532>>2]=am+q[560+cm>>2];c:{if(4<=(fm=r[a+4|0])>>>0){if(q[$l+576>>2]=am+q[480+cm>>2],q[$l+584>>2]=am+q[484+cm>>2],Il=q[a+704>>2],Jl=q[492+cm>>2],dm=am+q[488+cm>>2]|0,q[$l+592>>2]=dm,1<=(0|(Il=q[Il+104>>2])))for(bm=Jl+am|0,em=q[a+1104>>2],Jl=0;;)if(q[40+(dm+w(Jl,48)|0)>>2]=bm,bm=(q[em+(Jl<<2)>>2]<<2)+bm|0,(0|Il)==(0|(Jl=Jl+1|0)))break;q[$l+608>>2]=am+q[500+cm>>2],q[$l+624>>2]=am+q[508+cm>>2]}else{if(Il=q[572+cm>>2],Jl=q[568+cm>>2],q[$l+636>>2]=am+q[564+cm>>2],q[$l+640>>2]=Jl+am,q[q[a+704>>2]+20>>2]<1)break c;for(dm=Il+am|0,gm=0;;){e:{if((0|(bm=q[(Il=gm<<2)+q[a+952>>2]>>2]))<=0)Il=Il+q[$l+636>>2]|0;else{for(Jl=q[Il+q[a+948>>2]>>2],em=bm+Jl|0,hm=q[a+1060>>2],bm=0;;)if(bm=q[hm+(Jl<<2)>>2]+bm|0,!((0|(Jl=Jl+1|0))<(0|em)))break;if(Il=Il+q[$l+636>>2]|0,Jl=dm,bm)break e}Jl=bm=0}if(q[Il>>2]=Jl,dm=(bm<<2)+dm|0,!((0|(gm=gm+1|0))>2]+20>>2]))break}}fm>>>0<5||(q[$l+600>>2]=am+q[496+cm>>2],q[$l+616>>2]=am+q[504+cm>>2],q[$l+632>>2]=am+q[512+cm>>2])}q[$l+644>>2]=1,q[$l>>2]=a,q[$l+648>>2]=1&o[q[a+708>>2]+20|0],am=q[a+704>>2],gm=q[am+20>>2],q[$l+540>>2]=gm;g:if(!((0|gm)<1)){if(Il=gm+-1|0,hm=q[a+952>>2],im=q[a+940>>2],jm=q[a+932>>2],km=q[a+936>>2],lm=q[a+924>>2],mm=q[a+928>>2],om=q[$l+552>>2],qm=q[$l+544>>2],fm>>>0<4)for(;;)if(Jl=qm+w(Il,52)|0,q[Jl>>2]=0,bm=(dm=Il<<2)+mm|0,q[Jl+4>>2]=q[bm>>2],em=dm+lm|0,q[Jl+8>>2]=q[em>>2],u[Jl+12>>2]=u[em>>2]-u[bm>>2],q[Jl+16>>2]=q[dm+km>>2],bm=dm+jm|0,q[Jl+44>>2]=q[bm>>2],nm=Aa(x(q[dm+im>>2])),u[Jl+20>>2]=nm,u[Jl+24>>2]=nm*x(1.5),pm=q[dm+hm>>2],q[Jl+32>>2]=pm,em=0,em=pm?q[$l+560>>2]+w(q[dm+q[a+948>>2]>>2],28)|0:em,q[Jl+48>>2]=1,q[Jl+28>>2]=em,q[dm+om>>2]=q[bm>>2],Jl=0<(0|Il),Il=Il+-1|0,!Jl)break g;for(pm=q[a+960>>2],sm=q[a+944>>2];;)if(Jl=qm+w(Il,52)|0,bm=Il<<2,q[Jl>>2]=q[bm+sm>>2],dm=bm+mm|0,q[Jl+4>>2]=q[dm>>2],em=bm+lm|0,q[Jl+8>>2]=q[em>>2],u[Jl+12>>2]=u[em>>2]-u[dm>>2],q[Jl+16>>2]=q[bm+km>>2],rm=bm+jm|0,q[Jl+44>>2]=q[rm>>2],nm=Aa(x(q[bm+im>>2])),u[Jl+20>>2]=nm,u[Jl+24>>2]=nm*x(1.5),em=q[bm+hm>>2],q[Jl+32>>2]=em,q[Jl+28>>2]=em?q[$l+560>>2]+w(q[bm+q[a+948>>2]>>2],28)|0:0,dm=q[bm+pm>>2],dm=(q[Jl+40>>2]=dm)?q[$l+584>>2]+w(q[bm+q[a+956>>2]>>2],28)|0:0,q[Jl+48>>2]=1,q[Jl+36>>2]=dm,q[bm+om>>2]=q[rm>>2],Jl=0<(0|Il),Il=Il+-1|0,!Jl)break}if(4<=fm>>>0?(q[$l+548>>2]=q[a+944>>2],dm=a):(ca(q[$l+548>>2],0,gm<<2),dm=q[$l>>2],am=q[dm+704>>2]),bm=q[am+52>>2],1<=(0|(q[$l+556>>2]=bm)))for(Jl=q[dm+1056>>2],em=q[dm+1192>>2],gm=q[dm+1060>>2],fm=q[$l+560>>2];;)if(Il=fm+w(bm=bm+-1|0,28)|0,hm=bm<<2,q[Il>>2]=q[hm+gm>>2],hm=q[Jl+hm>>2],q[Il+24>>2]=1,q[Il+16>>2]=0,q[Il+20>>2]=1,q[Il+8>>2]=0,q[Il+12>>2]=0,q[Il+4>>2]=em+(hm<<2),!(0<(0|bm)))break;if(bm=q[am+48>>2],1<=(0|(q[$l+564>>2]=bm))){for(;;){if(bm=bm+-1|0,Il=q[$l+568>>2]+w(bm,36)|0,em=q[(am=bm<<2)+q[dm+1072>>2]>>2],1<=(0|(q[Il+4>>2]=em)))for(Jl=0;;)if(q[q[Il>>2]+(Jl<<2)>>2]=q[$l+560>>2]+w(q[q[dm+1064>>2]+(q[am+q[dm+1068>>2]>>2]+Jl<<2)>>2],28),(0|em)==(0|(Jl=Jl+1|0)))break;if(q[Il+24>>2]=1,q[Il+28>>2]=1,q[Il+8>>2]=1<>2],am=q[dm+704>>2]}if(Il=q[am>>2],(0|(q[$l+4>>2]=Il))<1)Jl=0;else{for(hm=q[dm+732>>2],im=q[dm+736>>2],jm=q[dm+740>>2],em=q[dm+720>>2],km=q[$l+52>>2],gm=q[$l+568>>2],lm=q[$l+8>>2],bm=Il;;)if(fm=lm+w(bm=bm+-1|0,12)|0,Jl=bm<<2,q[fm>>2]=gm+w(q[Jl+em>>2],36),q[fm+4>>2]=q[Jl+jm>>2],q[fm+8>>2]=q[Jl+im>>2],u[Jl+km>>2]=q[Jl+hm>>2]?x(1):x(0),!(0<(0|bm)))break;for(fm=q[$l+16>>2],Jl=0;;)if(bm=q[8+(gm+w(q[(hm=(Il=Il+-1|0)<<2)+em>>2],36)|0)>>2],q[fm+hm>>2]=bm,Jl=Jl+bm|0,!(0<(0|Il)))break;Il=q[$l+4>>2]}if(q[$l+12>>2]=Il,q[$l+20>>2]=Jl,Il=q[am+4>>2],1<=(0|(q[$l+304>>2]=Il))){for(;;)if(Il=Il+-1|0,Jl=q[$l+308>>2]+(Il<<5)|0,bm=Il<<2,q[Jl>>2]=q[$l+568>>2]+w(q[bm+q[dm+752>>2]>>2],36),q[Jl+4>>2]=q[bm+q[dm+764>>2]>>2],q[Jl+8>>2]=q[bm+q[dm+768>>2]>>2],em=q[bm+q[dm+772>>2]>>2],q[Jl+12>>2]=em,am=q[bm+q[dm+776>>2]>>2],q[Jl+16>>2]=am,q[Jl+28>>2]=q[bm+q[dm+760>>2]>>2],em>>>0<=1?em-1?(q[20+(q[$l+60>>2]+w(am,24)|0)>>2]=Il,q[Jl+24>>2]=1,q[Jl+20>>2]=2):(q[8+(q[$l+168>>2]+w(am,12)|0)>>2]=Il,q[Jl+24>>2]=3,q[Jl+20>>2]=4):Y(4,1179,0),!(0<(0|Il)))break;dm=q[$l>>2],am=q[dm+704>>2]}bm=q[am+8>>2],q[$l+56>>2]=bm;k:if(!((0|bm)<1)){if(Jl=bm+-1|0,gm=q[dm+796>>2],fm=q[dm+804>>2],hm=q[dm+800>>2],im=q[dm+780>>2],jm=q[$l+568>>2],km=q[$l+60>>2],r[dm+4|0]<2)for(;;)if(Il=km+w(Jl,24)|0,em=Jl<<2,q[Il>>2]=jm+w(q[em+im>>2],36),q[Il+4>>2]=q[em+hm>>2],q[Il+8>>2]=q[em+fm>>2],em=q[em+gm>>2],q[Il+12>>2]=0,q[Il+16>>2]=em,Il=0<(0|Jl),Jl=Jl+-1|0,!Il)break k;for(lm=q[dm+808>>2];;)if(Il=km+w(Jl,24)|0,em=Jl<<2,q[Il>>2]=jm+w(q[em+im>>2],36),q[Il+4>>2]=q[em+hm>>2],q[Il+8>>2]=q[em+fm>>2],q[Il+16>>2]=q[em+gm>>2],q[Il+12>>2]=q[em+lm>>2],Il=0<(0|Jl),Jl=Jl+-1|0,!Il)break}if(Jl=q[am+12>>2],1<=(0|(q[$l+164>>2]=Jl)))for(em=q[dm+828>>2],gm=q[dm+812>>2],fm=q[$l+568>>2],hm=q[$l+168>>2],Il=Jl;;)if(im=hm+w(Il=Il+-1|0,12)|0,jm=Il<<2,q[im>>2]=fm+w(q[jm+gm>>2],36),q[im+4>>2]=q[em+jm>>2],!(0<(0|Il)))break;if(((Il=0)|bm)<1)em=0;else{for(gm=q[$l+68>>2],fm=q[$l+60>>2],em=0;;)if(Jl=q[q[fm+w(bm=bm+-1|0,24)>>2]+8>>2],q[gm+(bm<<2)>>2]=Jl,em=Jl+em|0,!(0<(0|bm)))break;Jl=q[$l+164>>2],bm=q[$l+56>>2]}if(q[$l+64>>2]=bm,q[$l+72>>2]=em,bm=$l,1<=(0|Jl)){for(gm=q[$l+176>>2],fm=q[$l+168>>2];;)if(em=q[q[fm+w(Jl=Jl+-1|0,12)>>2]+8>>2],q[gm+(Jl<<2)>>2]=em,Il=Il+em|0,!(0<(0|Jl)))break;Jl=q[$l+164>>2]}if(q[bm+172>>2]=Jl,q[$l+180>>2]=Il,em=q[am+16>>2],1<=(0|(q[$l+332>>2]=em))){for(hm=q[dm+872>>2],im=q[dm+892>>2],jm=q[dm+880>>2],km=q[dm+876>>2],gm=q[dm+852>>2],fm=q[$l+568>>2],lm=q[$l+336>>2],Il=em;;)if(Jl=lm+w(Il=Il+-1|0,20)|0,bm=Il<<2,q[Jl>>2]=fm+w(q[bm+gm>>2],36),q[Jl+4>>2]=q[bm+km>>2],q[Jl+8>>2]=q[bm+jm>>2],q[Jl+16>>2]=q[bm+im>>2],q[Jl+12>>2]=q[bm+hm>>2],!(0<(0|Il)))break;for(bm=q[$l+344>>2],Jl=0;;)if(Il=q[8+(fm+w(q[(hm=(em=em+-1|0)<<2)+gm>>2],36)|0)>>2],q[bm+hm>>2]=Il,Jl=Il+Jl|0,!(0<(0|em)))break;if(q[$l+348>>2]=Jl,em=q[$l+332>>2],!((0|(q[$l+340>>2]=em))<1))for(Jl=em<<2,bm=q[$l+456>>2],gm=q[$l+452>>2];;)if(q[(fm=(Il=Jl+-4|0)<<2)+gm>>2]=1065353216,q[(hm=(Jl<<=2)+-4|0)+gm>>2]=1065353216,q[(im=(Jl=Jl+-12|0)+gm|0)>>2]=1065353216,q[im+4>>2]=1065353216,q[bm+fm>>2]=0,q[bm+hm>>2]=1065353216,q[(Jl=Jl+bm|0)>>2]=0,q[Jl+4>>2]=0,Jl=Il,!(0<(0|(em=em+-1|0))))break}else q[$l+340>>2]=em,q[$l+348>>2]=0;if(em=q[am+72>>2],1<=(0|(q[$l+480>>2]=em)))for(hm=q[dm+1208>>2],im=q[dm+1224>>2],jm=q[dm+1220>>2],km=q[dm+1216>>2],lm=q[dm+1212>>2],mm=q[$l+484>>2],bm=0;;){if(Il=mm+w(bm,28)|0,gm=q[(Jl=bm<<2)+lm>>2],q[Il+4>>2]=gm,q[Il>>2]=q[Jl+km>>2],fm=q[Jl+jm>>2],q[Il+16>>2]=fm,om=q[Jl+im>>2],q[Il+20>>2]=om,q[Il+8>>2]=0,q[Il+24>>2]=1+(fm-om|0),1<=(0|gm))for(om=q[Jl+hm>>2],qm=q[Il+12>>2],pm=q[dm+1236>>2],sm=q[dm+1228>>2],rm=q[dm+1232>>2],Jl=0;;)if(fm=Jl+om<<2,q[(Il=qm+(Jl<<4)|0)+4>>2]=q[fm+rm>>2],q[Il>>2]=q[fm+sm>>2],fm=q[fm+pm>>2],q[Il+12>>2]=0,q[Il+8>>2]=fm,(0|gm)==(0|(Jl=Jl+1|0)))break;if((0|em)==(0|(bm=bm+1|0)))break}if(Jl=q[am+80>>2],(0|(q[$l+500>>2]=Jl))<1)bm=0;else{for(fm=q[dm+1280>>2],hm=q[dm+1268>>2],im=q[dm+1276>>2],jm=q[dm+1272>>2],km=q[dm+1264>>2],lm=q[dm+1260>>2],em=q[dm+1248>>2],gm=q[$l+568>>2],mm=q[$l+504>>2];;)if(Il=mm+w(Jl=Jl+-1|0,24)|0,bm=Jl<<2,q[Il>>2]=gm+w(q[bm+em>>2],36),q[Il+4>>2]=q[bm+lm>>2],q[Il+8>>2]=q[bm+km>>2],q[Il+12>>2]=q[bm+jm>>2],bm=q[bm+hm>>2],q[Il+20>>2]=fm+(bm<<1),q[Il+16>>2]=im+(bm<<2),!(0<(0|Jl)))break;if((0|(Jl=q[$l+500>>2]))<1)bm=0;else{for(fm=q[$l+512>>2],bm=0;;)if(Il=q[8+(gm+w(q[(hm=(Jl=Jl+-1|0)<<2)+em>>2],36)|0)>>2],q[fm+hm>>2]=Il,bm=Il+bm|0,!(0<(0|Jl)))break;Jl=q[$l+500>>2]}}q[$l+508>>2]=Jl,q[$l+516>>2]=bm;o:if(4<=r[a+4|0]){if(!((em=r[dm+4|0])>>>0<4)){if(Jl=q[am+120>>2],1<=(0|(q[$l+572>>2]=Jl))){for(fm=q[dm+1172>>2],hm=q[$l+576>>2];;)if(am=q[(Il=(Jl=Jl+-1|0)<<2)+fm>>2],em=(0|am)<0?am=gm=bm=0:(em=q[Il+q[dm+1176>>2]>>2]<<2,bm=em+q[dm+1188>>2]|0,gm=q[Il+q[dm+1180>>2]>>2],am=q[$l+544>>2]+w(am,52)|0,em+q[dm+1184>>2]|0),Il=hm+w(Jl,20)|0,q[Il+12>>2]=gm,q[Il+8>>2]=bm,q[Il+4>>2]=em,q[Il>>2]=am,!(0<(0|Jl)))break;if(dm=q[$l>>2],(em=r[dm+4|0])>>>0<4)break o}if(am=q[dm+704>>2],bm=q[am+100>>2],1<=(0|(q[$l+580>>2]=bm)))for(gm=q[dm+1084>>2],fm=q[dm+1076>>2],hm=q[dm+1192>>2],im=q[dm+1080>>2],jm=q[$l+584>>2];;)if(Il=jm+w(bm=bm+-1|0,28)|0,Jl=bm<<2,q[Il>>2]=q[Jl+im>>2],q[Il+4>>2]=hm+(q[Jl+fm>>2]<<2),Jl=q[Jl+gm>>2],q[Il+20>>2]=1,q[Il+24>>2]=1,q[Il+12>>2]=0,q[Il+16>>2]=0,q[Il+8>>2]=Jl,!(0<(0|bm)))break;if(bm=q[am+104>>2],1<=(0|(q[$l+588>>2]=bm))){for(;;){if(bm=bm+-1|0,Il=q[$l+592>>2]+w(bm,48)|0,em=bm<<2,q[Il>>2]=q[$l+584>>2]+w(q[em+q[dm+1088>>2]>>2],28),Jl=q[em+q[dm+1092>>2]>>2],q[Il+28>>2]=1,q[Il+32>>2]=1,q[Il+8>>2]=0,q[Il+4>>2]=Jl,am=q[em+q[dm+1104>>2]>>2],1<=(0|(q[Il+36>>2]=am)))for(Jl=0;;)if(q[q[Il+40>>2]+(Jl<<2)>>2]=q[$l+576>>2]+w(q[q[dm+1168>>2]+(q[em+q[dm+1100>>2]>>2]+Jl<<2)>>2],20),(0|am)==(0|(Jl=Jl+1|0)))break;if(!(1<=(0|bm)))break}dm=q[$l>>2],em=r[dm+4|0]}if(!(em>>>0<4)){if(em=q[a+704>>2],Jl=q[em+108>>2],1<=(0|(q[$l+604>>2]=Jl)))for(am=q[a+1124>>2],gm=q[a+1128>>2],fm=q[a+1120>>2],hm=q[$l+592>>2],im=q[$l+608>>2];;)if(Il=im+w(Jl=Jl+-1|0,12)|0,bm=Jl<<2,q[Il>>2]=q[bm+fm>>2],q[Il+4>>2]=q[bm+gm>>2],q[Il+8>>2]=hm+w(q[am+bm>>2],48),!(0<(0|Jl)))break;if(Jl=q[em+112>>2],1<=(0|(q[$l+620>>2]=Jl)))for(em=q[a+1148>>2],am=q[a+1152>>2],gm=q[a+1144>>2],fm=q[$l+592>>2],hm=q[$l+624>>2];;)if(Il=hm+w(Jl=Jl+-1|0,12)|0,bm=Jl<<2,q[Il>>2]=q[bm+gm>>2],q[Il+4>>2]=q[am+bm>>2],q[Il+8>>2]=fm+w(q[bm+em>>2],48),!(0<(0|Jl)))break;if(bm=q[dm+1192>>2],Il=q[q[dm+704>>2]+20>>2],q[$l+640>>2]=q[dm+972>>2],em=q[dm+964>>2],q[$l+636>>2]=em,!((0|Il)<(Jl=1))&&(q[em>>2]=bm+(q[q[dm+968>>2]>>2]<<2),1!=(0|Il)))for(;;)if(q[(em=Jl<<2)+q[$l+636>>2]>>2]=bm+(q[em+q[dm+968>>2]>>2]<<2),(0|Il)==(0|(Jl=Jl+1|0)))break}}}else if(!(q[am+20>>2]<1))for(am=0;;){if(bm=q[(gm=am<<2)+q[$l+636>>2]>>2],1<=((Il=0)|(Jl=q[gm+q[dm+952>>2]>>2])))for(fm=q[gm+q[dm+948>>2]>>2],im=Jl+fm|0,jm=q[dm+1060>>2],km=q[dm+1056>>2];;){if(1<=(0|(hm=q[(Jl=fm<<2)+jm>>2])))for(em=q[Jl+km>>2],lm=hm+em|0,mm=q[dm+1192>>2];;){hm=bm+(Il<<2)|0,nm=u[mm+(em<<2)>>2],Jl=bm;q:{if(0<(0|Il))for(;;){if(u[Jl>>2]==nm)break q;if(!((Jl=Jl+4|0)>>>0>>0))break}u[hm>>2]=nm,Il=Il+1|0}if(!((0|(em=em+1|0))<(0|lm)))break}if(!((0|(fm=fm+1|0))<(0|im)))break}if(!function(a,Sm){var un=0,xn=0,yn=0,Jn=0,Kn=0;q[8+(L=un=L-208|0)>>2]=1,q[12+un>>2]=0;a:if(Kn=Sm<<2){for(q[16+un>>2]=4,q[20+un>>2]=4,Jn=Sm=4,xn=2;;)if(Sm=(Jn+4|0)+(yn=Sm)|0,q[(16+un|0)+(xn<<2)>>2]=Sm,xn=xn+1|0,Jn=yn,!(Sm>>>0>>0))break;if((yn=(a+Kn|0)-4|0)>>>0<=a>>>0)Sm=xn=1;else for(Sm=xn=1;;)if(Sm=3==(3&xn)?(ta(a,Sm,16+un|0),ma(8+un|0,2),Sm+2|0):(t[(16+un|0)+((Jn=Sm+-1|0)<<2)>>2]>=yn-a>>>0?la(a,8+un|0,Sm,0,16+un|0):ta(a,Sm,16+un|0),1==(0|Sm)?(ka(8+un|0,1),0):(ka(8+un|0,Jn),1)),xn=1|q[8+un>>2],q[8+un>>2]=xn,!((a=a+4|0)>>>0>>0))break;for(la(a,8+un|0,Sm,0,16+un|0);;){e:{f:{g:{if(!(1!=(0|Sm)|1!=(0|xn))){if(q[12+un>>2])break g;break a}if(1<(0|Sm))break f}yn=Oa(8+un|0),ma(8+un|0,yn),xn=q[8+un>>2],Sm=Sm+yn|0;break e}ka(8+un|0,2),q[8+un>>2]=7^q[8+un>>2],ma(8+un|0,1),la((Jn=a+-4|0)-q[(16+un|0)+((yn=Sm+-2|0)<<2)>>2]|0,8+un|0,Sm+-1|0,1,16+un|0),ka(8+un|0,1),xn=1|q[8+un>>2],q[8+un>>2]=xn,la(Jn,8+un|0,yn,1,16+un|0),Sm=yn}a=a+-4|0}}L=208+un|0}(bm,Il),q[gm+q[$l+640>>2]>>2]=Il,!((0|(am=am+1|0))>2]+20>>2]))break}if(!(r[a+4|0]<5|r[q[$l>>2]+4|0]<4)){if(Il=q[a+704>>2],Jl=q[Il+128>>2],1<=(0|(q[$l+596>>2]=Jl)))for(em=q[a+1112>>2],am=q[a+1116>>2],gm=q[a+1108>>2],fm=q[$l+592>>2],hm=q[$l+600>>2];;)if(dm=hm+w(Jl=Jl+-1|0,12)|0,bm=Jl<<2,q[dm>>2]=q[bm+gm>>2],q[dm+4>>2]=q[am+bm>>2],q[dm+8>>2]=fm+w(q[bm+em>>2],48),!(0<(0|Jl)))break;if(Jl=q[Il+132>>2],1<=(0|(q[$l+612>>2]=Jl)))for(em=q[a+1136>>2],am=q[a+1140>>2],gm=q[a+1132>>2],fm=q[$l+592>>2],hm=q[$l+616>>2];;)if(dm=hm+w(Jl=Jl+-1|0,12)|0,bm=Jl<<2,q[dm>>2]=q[bm+gm>>2],q[dm+4>>2]=q[am+bm>>2],q[dm+8>>2]=fm+w(q[bm+em>>2],48),!(0<(0|Jl)))break;if(Jl=q[Il+136>>2],!((0|(q[$l+628>>2]=Jl))<1))for(dm=q[a+1160>>2],bm=q[a+1164>>2],em=q[a+1156>>2],am=q[$l+592>>2],gm=q[$l+632>>2];;)if(a=gm+w(Jl=Jl+-1|0,12)|0,Il=Jl<<2,q[a>>2]=q[Il+em>>2],q[a+4>>2]=q[Il+bm>>2],q[a+8>>2]=am+w(q[Il+dm>>2],48),!(0<(0|Jl)))break}ua($l)}return L=576+cm|0,$l}(a,Wa,Xa))break a;q[36+Ya>>2]=2209,q[32+Ya>>2]=2361,Y(4,1294,32+Ya|0)}else q[20+Ya>>2]=1444,q[16+Ya>>2]=2361,Y(4,1294,16+Ya|0);else q[4+Ya>>2]=2132,q[Ya>>2]=2361,Y(4,1294,Ya);Wa=0}return L=Ya+64|0,0|Wa}function xa(a){var Wa;return L=Wa=L-16|0,a=(a|=0)?function(a){var Il=0;return ca(16+(L=Il=L-576|0)|0,0,560),Fa(a,16+Il|0,12+Il|0),L=576+Il|0,q[12+Il>>2]}(a):(q[4+Wa>>2]=2132,q[Wa>>2]=2343,Y(4,1294,Wa),0),L=16+Wa|0,0|a}function ya(a){var Xa=r[a+4|0];X(q[a+704>>2],4,64),da(q[a+708>>2],4),da(q[a+708>>2]+4|0,4),da(q[a+708>>2]+8|0,4),da(q[a+708>>2]+12|0,4),da(q[a+708>>2]+16|0,4),da(q[a+708>>2]+20|0,1),X(q[a+720>>2],4,q[q[a+704>>2]>>2]),X(q[a+724>>2],4,q[q[a+704>>2]>>2]),X(q[a+728>>2],4,q[q[a+704>>2]>>2]),X(q[a+732>>2],4,q[q[a+704>>2]>>2]),X(q[a+736>>2],4,q[q[a+704>>2]>>2]),X(q[a+740>>2],4,q[q[a+704>>2]>>2]),X(q[a+752>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+756>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+760>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+764>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+768>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+772>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+776>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+780>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+784>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+788>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+796>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+800>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+804>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+812>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+816>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+820>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+828>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+852>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+856>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+860>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+868>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+872>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+876>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+880>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+884>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+888>>2],1,q[q[a+704>>2]+16>>2]),X(q[a+892>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+896>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+900>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+904>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+908>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+912>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+924>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+928>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+932>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+936>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+940>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+948>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+952>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+976>>2],4,q[q[a+704>>2]+24>>2]),X(q[a+980>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+984>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+996>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1e3>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1004>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1008>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1012>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1016>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1020>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1032>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1036>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1040>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1052>>2],4,q[q[a+704>>2]+40>>2]),X(q[a+1064>>2],4,q[q[a+704>>2]+44>>2]),X(q[a+1068>>2],4,q[q[a+704>>2]+48>>2]),X(q[a+1072>>2],4,q[q[a+704>>2]+48>>2]),X(q[a+1056>>2],4,q[q[a+704>>2]+52>>2]),X(q[a+1060>>2],4,q[q[a+704>>2]+52>>2]),X(q[a+1192>>2],4,q[q[a+704>>2]+56>>2]),X(q[a+1196>>2],4,q[q[a+704>>2]+60>>2]),X(q[a+1200>>2],2,q[q[a+704>>2]+64>>2]),X(q[a+1204>>2],4,q[q[a+704>>2]+68>>2]),X(q[a+1208>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1212>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1216>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1220>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1224>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1228>>2],4,q[q[a+704>>2]+76>>2]),X(q[a+1232>>2],4,q[q[a+704>>2]+76>>2]),X(q[a+1236>>2],4,q[q[a+704>>2]+76>>2]),X(q[a+1248>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1252>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1256>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1260>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1264>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1268>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1272>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1276>>2],4,q[q[a+704>>2]+84>>2]),X(q[a+1280>>2],2,q[q[a+704>>2]+84>>2]),X(q[a+1284>>2],4,q[q[a+704>>2]+88>>2]),Xa>>>0<2||(X(q[a+808>>2],4,q[q[a+704>>2]+8>>2]),Xa>>>0<4)||(X(q[a+968>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+972>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+792>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+824>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+864>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+1288>>2],4,q[q[a+704>>2]+92>>2]),X(q[a+1292>>2],4,q[q[a+704>>2]+92>>2]),X(q[a+1296>>2],4,q[q[a+704>>2]+92>>2]),X(q[a+1300>>2],4,q[q[a+704>>2]+96>>2]),X(q[a+1304>>2],4,q[q[a+704>>2]+96>>2]),X(q[a+1308>>2],4,q[q[a+704>>2]+96>>2]),X(q[a+944>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+956>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+960>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+1076>>2],4,q[q[a+704>>2]+100>>2]),X(q[a+1080>>2],4,q[q[a+704>>2]+100>>2]),X(q[a+1084>>2],4,q[q[a+704>>2]+100>>2]),X(q[a+1088>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1092>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1096>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1100>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1104>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1120>>2],4,q[q[a+704>>2]+108>>2]),X(q[a+1124>>2],4,q[q[a+704>>2]+108>>2]),X(q[a+1128>>2],4,q[q[a+704>>2]+108>>2]),X(q[a+1144>>2],4,q[q[a+704>>2]+112>>2]),X(q[a+1148>>2],4,q[q[a+704>>2]+112>>2]),X(q[a+1152>>2],4,q[q[a+704>>2]+112>>2]),X(q[a+1168>>2],4,q[q[a+704>>2]+116>>2]),X(q[a+1172>>2],4,q[q[a+704>>2]+120>>2]),X(q[a+1176>>2],4,q[q[a+704>>2]+120>>2]),X(q[a+1180>>2],4,q[q[a+704>>2]+120>>2]),X(q[a+1184>>2],4,q[q[a+704>>2]+124>>2]),X(q[a+1188>>2],4,q[q[a+704>>2]+124>>2]),4!=(0|Xa)&&(X(q[a+988>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+992>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+1024>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1028>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1044>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1048>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1108>>2],4,q[q[a+704>>2]+128>>2]),X(q[a+1112>>2],4,q[q[a+704>>2]+128>>2]),X(q[a+1116>>2],4,q[q[a+704>>2]+128>>2]),X(q[a+1132>>2],4,q[q[a+704>>2]+132>>2]),X(q[a+1136>>2],4,q[q[a+704>>2]+132>>2]),X(q[a+1140>>2],4,q[q[a+704>>2]+132>>2]),X(q[a+1156>>2],4,q[q[a+704>>2]+136>>2]),X(q[a+1160>>2],4,q[q[a+704>>2]+136>>2]),X(q[a+1164>>2],4,q[q[a+704>>2]+136>>2])))}function za(a,Za){var _a=0,lb=0,mb=0,ob=0,pb=0,rb=0,nb=a+Za|0;a:{b:if(!(1&(_a=q[a+4>>2]))){if(!(3&_a))break a;if(Za=(_a=q[a>>2])+Za|0,(0|(a=a-_a|0))!=q[2092])if(_a>>>0<=255)mb=_a>>>3,_a=q[a+8>>2],(0|(lb=q[a+12>>2]))==(0|_a)?(rb=q[2087]&dd(mb),q[8348>>2]=rb):(q[_a+12>>2]=lb,q[lb+8>>2]=_a);else{if(pb=q[a+24>>2],(0|(_a=q[a+12>>2]))!=(0|a))lb=q[a+8>>2],q[lb+12>>2]=_a,q[_a+8>>2]=lb;else if((mb=q[(lb=a+20|0)>>2])||(mb=q[(lb=a+16|0)>>2])){for(;;)if(ob=lb,!((mb=q[(lb=(_a=mb)+20|0)>>2])||(lb=_a+16|0,mb=q[_a+16>>2])))break;q[ob>>2]=0}else _a=0;if(pb){lb=q[a+28>>2];e:{if(q[(mb=8652+(lb<<2)|0)>>2]==(0|a)){if(q[mb>>2]=_a)break e;rb=q[2088]&dd(lb),q[8352>>2]=rb;break b}if(!(q[pb+(q[pb+16>>2]==(0|a)?16:20)>>2]=_a))break b}q[_a+24>>2]=pb,(lb=q[a+16>>2])&&(q[_a+16>>2]=lb,q[lb+24>>2]=_a),(lb=q[a+20>>2])&&(q[_a+20>>2]=lb,q[lb+24>>2]=_a)}}else if(3==(3&(_a=q[4+nb>>2])))return q[2089]=Za,q[4+nb>>2]=-2&_a,q[a+4>>2]=1|Za,void(q[nb>>2]=Za)}f:{if(!(2&(_a=q[4+nb>>2]))){if(q[2093]==(0|nb)){if(q[2093]=a,Za=q[2090]+Za|0,q[2090]=Za,q[a+4>>2]=1|Za,q[2092]!=(0|a))break a;return q[2089]=0,void(q[2092]=0)}if(q[2092]==(0|nb))return q[2092]=a,Za=q[2089]+Za|0,q[2089]=Za,q[a+4>>2]=1|Za,void(q[a+Za>>2]=Za);Za=(-8&_a)+Za|0;g:if(_a>>>0<=255)mb=_a>>>3,_a=q[8+nb>>2],(0|(lb=q[12+nb>>2]))==(0|_a)?(rb=q[2087]&dd(mb),q[8348>>2]=rb):(q[_a+12>>2]=lb,q[lb+8>>2]=_a);else{if(pb=q[24+nb>>2],(0|nb)!=(0|(_a=q[12+nb>>2])))lb=q[8+nb>>2],q[lb+12>>2]=_a,q[_a+8>>2]=lb;else if((mb=q[(lb=20+nb|0)>>2])||(mb=q[(lb=16+nb|0)>>2])){for(;;)if(ob=lb,!((mb=q[(lb=(_a=mb)+20|0)>>2])||(lb=_a+16|0,mb=q[_a+16>>2])))break;q[ob>>2]=0}else _a=0;if(pb){lb=q[28+nb>>2];j:{if(q[(mb=8652+(lb<<2)|0)>>2]==(0|nb)){if(q[mb>>2]=_a)break j;rb=q[2088]&dd(lb),q[8352>>2]=rb;break g}if(!(q[pb+(q[pb+16>>2]==(0|nb)?16:20)>>2]=_a))break g}q[_a+24>>2]=pb,(lb=q[16+nb>>2])&&(q[_a+16>>2]=lb,q[lb+24>>2]=_a),(lb=q[20+nb>>2])&&(q[_a+20>>2]=lb,q[lb+24>>2]=_a)}}if(q[a+4>>2]=1|Za,q[a+Za>>2]=Za,q[2092]!=(0|a))break f;return void(q[2089]=Za)}q[4+nb>>2]=-2&_a,q[a+4>>2]=1|Za,q[a+Za>>2]=Za}if(Za>>>0<=255)return Za=8388+((_a=Za>>>3)<<3)|0,_a=(lb=q[2087])&(_a=1<<_a)?q[Za+8>>2]:(q[2087]=_a|lb,Za),q[Za+8>>2]=a,q[_a+12>>2]=a,q[a+12>>2]=Za,void(q[a+8>>2]=_a);q[a+16>>2]=0,_a=q[a+20>>2]=0,(mb=Za>>>8)&&(_a=31,16777215>>0||(_a=28+((_a=((nb=(mb<<=ob=mb+1048320>>>16&8)<<(_a=mb+520192>>>16&4))<<(mb=245760+nb>>>16&2)>>>15)-(mb|_a|ob)|0)<<1|Za>>>_a+21&1)|0)),mb=8652+((q[(lb=a)+28>>2]=_a)<<2)|0;m:{if((lb=q[2088])&(ob=1<<_a)){for(lb=Za<<(31==(0|_a)?0:25-(_a>>>1)|0),_a=q[mb>>2];;){if((-8&q[(mb=_a)+4>>2])==(0|Za))break m;if(_a=lb>>>29,lb<<=1,!(_a=q[(ob=mb+(4&_a)|0)+16>>2]))break}q[ob+16>>2]=a}else q[2088]=lb|ob,q[mb>>2]=a;return q[a+24>>2]=mb,q[a+12>>2]=a,void(q[a+8>>2]=a)}Za=q[mb+8>>2],q[Za+12>>2]=a,q[mb+8>>2]=a,q[a+24>>2]=0,q[a+12>>2]=mb,q[a+8>>2]=Za}}function Aa(a){var vb,xb,yb,Ab,Bb,Cb,Za=x(0),sb=x(0),tb=0,ub=0,wb=(x(0),x(0)),zb=(x(0),x(0),0);x(0),x(0);a:{b:{if(j(a),ub=2147483647&(tb=b[0])){if(!(ub>>>0<2139095041))return x(x(.10000000149011612)+a);if(1065353216==(0|ub))return x(-1<(0|tb)?.10000000149011612:10);if(2139095040==(0|ub))return x(-1<(0|tb)?0:-a);if(1073741824==(0|tb))return x(.010000000707805157);if(1056964608==(0|tb))return x(.3162277638912201);if(1291845633<=ub>>>0)return x((0|tb)<0?H:0);if(vb=u[1701],wb=x(x(1.600000023841858)-vb),xb=x(x(1)/x(vb+x(1.600000023841858))),f(0,-4096&(j(sb=x(wb*xb)),b[0])),Za=k(),yb=x(Za*Za),Bb=u[1705],vb=x(xb*x(x(wb-x((Ab=Za)*x(3.099609375)))-x(Za*x(x(1.600000023841858)-x(x(3.099609375)-vb))))),xb=x(x(sb+Za)*vb),Za=x(sb*sb),wb=x(xb+x(x(Za*Za)*x(x(Za*x(x(Za*x(x(Za*x(x(Za*x(x(Za*x(.20697501301765442))+x(.23066075146198273)))+x(.2727281153202057)))+x(.3333333432674408)))+x(.4285714328289032)))+x(.6000000238418579)))),f(0,-4096&(j(x(x(yb+x(3))+wb)),b[0])),Za=k(),xb=x(Ab*Za),sb=x(x(vb*Za)+x(sb*x(wb-x(x(Za+x(-3))-yb)))),f(0,-4096&(j(x(xb+sb)),b[0])),Za=k(),vb=x(Za*x(.9619140625)),yb=x(u[1703]+x(x(x(sb-x(Za-xb))*x(.9617967009544373))+x(Za*x(-.00011736857413779944)))),f(0,-4096&(j(x(x(Bb+x(vb+yb))+x(-4))),b[0])),sb=k(),f(0,-4096&tb),wb=k(),Za=x(sb*wb),a=x(x(x(yb-x(x(x(sb-x(-4))-Bb)-vb))*a)+x(x(a-wb)*sb)),j(sb=x(Za+a)),1124073473<=(0|(tb=b[0])))break b;d:{if((ub=1124073472)==(0|tb)){if(x(a+x(4.299566569443414e-8))>x(sb-Za))break b}else{if(ub=2147483647&tb,!(a<=x(sb-Za)^1|-1021968384!=(0|tb))|1125515265<=ub>>>0)break a;if(ub>>>0<1056964609)break d}zb=(8388607&(ub=(8388608>>>(ub>>>23)-126)+tb|0)|8388608)>>>150-(Cb=ub>>>23&255),zb=(0|tb)<0?0-zb|0:zb,Za=x(Za-(f(0,ub&-8388608>>Cb-127),k())),j(x(a+Za)),tb=b[0]}f(0,-32768&tb),sb=k(),vb=x(sb*x(.693145751953125)),sb=x(x(sb*x(14286065379565116e-22))+x(x(a-x(sb-Za))*x(.6931471824645996))),a=x(vb+sb),Za=x(a*a),Za=x(a-x(Za*x(x(Za*x(x(Za*x(x(Za*x(x(Za*x(4.138136944220605e-8))+x(-16533901998627698e-22)))+x(661375597701408e-19)))+x(-.0027777778450399637)))+x(.1666666716337204)))),Ab=x(x(a*Za)/x(Za+x(-2))),Za=x(sb-x(a-vb)),a=(0|(tb=0|(j(a=x(x(a-x(Ab-x(Za+x(a*Za))))+x(1))),b[0]+(zb<<23))))<=8388607?function(a,Vk){var zl=0;128<=(0|Vk)?(a=x(a*x(17014118346046923e22)),Vk=(0|(zl=Vk+-127|0))<128?zl:(a=x(a*x(17014118346046923e22)),((0|Vk)<381?Vk:381)+-254|0)):-127<(0|Vk)||(a=x(a*x(11754943508222875e-54)),Vk=-127<(0|(zl=Vk+126|0))?zl:(a=x(a*x(11754943508222875e-54)),(-378<(0|Vk)?Vk:-378)+252|0));return x(a*(f(0,1065353216+(Vk<<23)|0),k()))}(a,zb):(f(0,tb),k()),a=x(x(1)*a)}else a=x(1);return a}return x(H)}return x(0)}function Ba(a,Db){var Jb,Eb=0,Fb=0,Gb=0,Hb=0,Ib=x(0);if(j(Db),!((Gb=2147483647&(Eb=b[0]))>>>0<=2139095040&&(j(a),(Fb=2147483647&(Hb=b[0]))>>>0<2139095041)))return x(a+Db);if(1065353216==(0|Eb))return Ca(a);Eb=(Jb=Eb>>>30&2)|Hb>>>31;b:{c:{d:{e:{if(!Fb){f:switch(Eb-2|0){case 0:break e;case 1:break f;default:break d}return x(-3.1415927410125732)}if(2139095040!=(0|Gb)){if(!Gb|!(Fb>>>0<=Gb+218103808>>>0&&2139095040!=(0|Fb)))break b;if(a=Ib=Fb+218103808>>>0>>0&&(Ib=x(0),Jb)?Ib:Ca(x(y(x(a/Db)))),Eb>>>0<=2){h:switch(Eb-1|0){case 0:return x(-a);case 1:break h;default:break d}return x(x(3.1415927410125732)-x(a+x(8.742277657347586e-8)))}return x(x(a+x(8.742277657347586e-8))+x(-3.1415927410125732))}if(2139095040==(0|Fb))break c;return u[6784+(Eb<<2)>>2]}a=x(3.1415927410125732)}return a}return u[6768+(Eb<<2)>>2]}return x((0|Hb)<0?-1.5707963705062866:1.5707963705062866)}function Ca(a){var Kb,Nb,Ob,Db=0,Lb=(x(0),0),Mb=0;x(0),x(0);j(a);a:{if(1283457024<=(Db=2147483647&(Mb=b[0]))>>>0){if(2139095040>>0)break a;return x((0|Mb)<0?-1.570796251296997:1.570796251296997)}b:{if(Db>>>0<=1054867455){if(Lb=-1,964689920<=Db>>>0)break b;break a}a=x(y(a)),Db>>>0<=1066926079?Lb=Db>>>0<=1060110335?(a=x(x(x(a+a)+x(-1))/x(a+x(2))),0):(a=x(x(a+x(-1))/x(a+x(1))),1):Lb=Db>>>0<=1075576831?(a=x(x(a+x(-1.5))/x(x(a*x(1.5))+x(1))),2):(a=x(x(-1)/a),3)}if(Db=Lb,Nb=x(a*a),Kb=x(Nb*Nb),Ob=x(Kb*x(x(Kb*x(-.106480173766613))+x(-.19999158382415771))),Kb=x(Nb*x(x(Kb*x(x(Kb*x(.06168760731816292))+x(.14253635704517365)))+x(.333333283662796))),(0|Db)<=-1)return x(a-x(a*x(Ob+Kb)));a=x(u[6736+(Db<<=2)>>2]-x(x(x(a*x(Ob+Kb))-u[6752+Db>>2])-a)),a=(0|Mb)<0?x(-a):a}return a}function Da(a,Pb){var Ub,Sb,Qb=0,Rb=0,Tb=0;return L=Sb=L-16|0,j(a),(Qb=2147483647&(Tb=b[0]))>>>0<=1305022426?(v[Pb>>3]=(Ub=+a)+-1.5707963109016418*(Rb=.6366197723675814*Ub+6755399441055744-6755399441055744)+-1.5893254773528196e-8*Rb,Qb=y(Rb)<2147483648?~~Rb:-2147483648):2139095040<=Qb>>>0?(v[Pb>>3]=x(a-a),Qb=0):(Ub=Qb,v[8+Sb>>3]=(f(0,Ub-((Qb=(Qb>>>23)-150|0)<<23)|0),k()),Qb=function(a,Il,Jl){var Kl=0,Ll=0,Ml=0,Nl=0,Ol=0,Pl=0,Ql=0,Rl=0,Sl=0,Tl=0,Ul=0,Vl=0,Wl=0,Xl=0,Yl=0,Zl=0,_l=0;if(L=Nl=L-560|0,Rl=(Ll=Jl)+w(Wl=0<(0|(Jl=(Jl+-3|0)/24|0))?Jl:0,-24)|0,0<=(0|(Sl=q[972])))for(Ll=Sl+1|0,Jl=Wl;;)if(v[(320+Nl|0)+(Ml<<3)>>3]=(0|Jl)<0?0:+q[3904+(Jl<<2)>>2],Jl=Jl+1|0,(0|Ll)==(0|(Ml=Ml+1|0)))break;Pl=Rl+-24|0,Ll=0;for(;;){for(Kl=Jl=0;;)if(Kl+=v[(Jl<<3)+a>>3]*v[(320+Nl|0)+(Ll-Jl<<3)>>3],1==(0|(Jl=Jl+1|0)))break;if(v[(Ll<<3)+Nl>>3]=Kl,Jl=(0|Ll)<(0|Sl),Ll=Ll+1|0,!Jl)break}_l=23-Pl|0,Xl=24-Pl|0,Ll=Sl;a:{for(;;){if(Kl=v[(Ll<<3)+Nl>>3],!(Ul=((Jl=0)|(Ml=Ll))<1))for(;;)if(Ql=(480+Nl|0)+(Jl<<2)|0,Tl=Kl,Ol=y(Kl*=5.960464477539063e-8)<2147483648?~~Kl:-2147483648,Ol=y(Tl+=-16777216*(Kl=0|Ol))<2147483648?~~Tl:-2147483648,q[Ql>>2]=Ol,Kl=v[((Ml=Ml+-1|0)<<3)+Nl>>3]+Kl,(0|Ll)==(0|(Jl=Jl+1|0)))break;Kl=ja(Kl,Pl),Kl+=-8*C(.125*Kl),Ql=y(Kl)<2147483648?~~Kl:-2147483648,Kl-=0|Ql;e:{f:{g:{if(Yl=(0|Pl)<1){if(Pl)break g;Ol=q[476+((Ll<<2)+Nl|0)>>2]>>23}else Ol=q[(Ml=(Ll<<2)+Nl|0)+476>>2],Vl=Ml,Ml=Ol-((Jl=Ol>>Xl)<>2]=Ml,Ql=Jl+Ql|0,Ol=Ml>>_l;if((0|Ol)<1)break e;break f}if(Ol=2,!(.5<=Kl)){Ol=0;break e}}if(Ml=Jl=0,!Ul)for(;;){Ul=q[(Zl=(480+Nl|0)+(Jl<<2)|0)>>2],Vl=16777215;i:{j:{if(!Ml){if(!Ul)break j;Vl=16777216,Ml=1}q[Zl>>2]=Vl-Ul;break i}Ml=0}if((0|Ll)==(0|(Jl=Jl+1|0)))break}Yl||1<(Jl=Pl+-1|0)>>>0||(q[(Jl=(Ll<<2)+Nl|0)+476>>2]=Jl-1?8388607&q[Jl+476>>2]:4194303&q[Jl+476>>2]),Ql=Ql+1|0,2==(0|Ol)&&(Kl=1-Kl,Ol=2,Ml)&&(Kl-=ja(1,Pl))}if(0!=Kl)break;if(!(((Ml=0)|(Jl=Ll))<=(0|Sl))){for(;;)if(Ml=q[(480+Nl|0)+((Jl=Jl+-1|0)<<2)>>2]|Ml,!((0|Sl)<(0|Jl)))break;if(Ml){for(Rl=Pl;;)if(Rl=Rl+-24|0,q[(480+Nl|0)+((Ll=Ll+-1|0)<<2)>>2])break;break a}}for(Jl=1;;)if(Jl=(Ml=Jl)+1|0,q[(480+Nl|0)+(Sl-Ml<<2)>>2])break;for(Ml=Ll+Ml|0;;){for(Ll=Ql=Ll+1|0,v[(320+Nl|0)+(Ql<<3)>>3]=q[3904+(Wl+Ll<<2)>>2],Kl=Jl=0;;)if(Kl+=v[(Jl<<3)+a>>3]*v[(320+Nl|0)+(Ql-Jl<<3)>>3],1==(0|(Jl=Jl+1|0)))break;if(v[(Ll<<3)+Nl>>3]=Kl,!((0|Ll)<(0|Ml)))break}Ll=Ml}16777216<=(Kl=ja(Kl,0-Pl|0))?(a=(480+Nl|0)+(Ll<<2)|0,Tl=Kl,Jl=y(Kl*=5.960464477539063e-8)<2147483648?~~Kl:-2147483648,Ml=y(Kl=Tl+-16777216*(0|Jl))<2147483648?~~Kl:-2147483648,q[a>>2]=Ml,Ll=Ll+1|0):(Jl=y(Kl)<2147483648?~~Kl:-2147483648,Rl=Pl),q[(480+Nl|0)+(Ll<<2)>>2]=Jl}Kl=ja(1,Rl);if(!((0|Ll)<=-1)){for(Jl=Ll;;)if(v[(Jl<<3)+Nl>>3]=Kl*+q[(480+Nl|0)+(Jl<<2)>>2],Kl*=5.960464477539063e-8,a=0<(0|Jl),Jl=Jl+-1|0,!a)break;if(!((0|Ll)<=-1))for(Jl=Ll;;){for(Pl=Ll-(a=Jl)|0,Jl=Kl=0;;)if(Kl+=v[6672+(Jl<<3)>>3]*v[(a+Jl<<3)+Nl>>3],(0|Sl)<=(0|Jl)||(Rl=Jl>>>0>>0,Jl=Jl+1|0,!Rl))break;if(v[(160+Nl|0)+(Pl<<3)>>3]=Kl,Jl=a+-1|0,!(0<(0|a)))break}}if(0<=(Ll|(Kl=0)))for(;;)if(Kl+=v[(160+Nl|0)+(Ll<<3)>>3],a=0<(0|Ll),Ll=Ll+-1|0,!a)break;return v[Il>>3]=Ol?-Kl:Kl,L=560+Nl|0,7&Ql}(8+Sb|0,Sb,Qb),Rb=v[Sb>>3],(0|Tb)<=-1?(v[Pb>>3]=-Rb,Qb=0-Qb|0):v[Pb>>3]=Rb),L=16+Sb|0,Qb}function Ea(a,Pb){return a?function(a,Il){a:{if(a){if(Il>>>0<=127)break a;if(q[q[1789]>>2]){if(Il>>>0<=2047)return o[a+1|0]=63&Il|128,o[0|a]=Il>>>6|192,2;if(!(57344!=(-8192&Il)&&55296<=Il>>>0))return o[a+2|0]=63&Il|128,o[0|a]=Il>>>12|224,o[a+1|0]=Il>>>6&63|128,3;if(Il+-65536>>>0<=1048575)return o[a+3|0]=63&Il|128,o[0|a]=Il>>>18|240,o[a+2|0]=Il>>>6&63|128,o[a+1|0]=Il>>>12&63|128,4}else if(57216==(-128&Il))break a;q[2086]=25,a=-1}else a=1;return a}return o[0|a]=Il,1}(a,Pb):0}function Fa(a,Pb,Wb){var fc,gc,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=r[a+4|0];if(q[Pb>>2]=652,Yb=q[a+704>>2],1<=(0|(_b=q[Yb>>2]))){for($b=q[a+720>>2],bc=q[a+1072>>2];;)if(Zb=(1<>2]<<2)>>2])+Zb|0,(0|_b)==(0|(Xb=Xb+1|0)))break;Xb=Zb<<2}if(q[Pb+4>>2]=w(_b,12),q[Pb+8>>2]=q[Yb>>2]<<2,q[Pb+12>>2]=q[Yb>>2]<<2,q[Pb+16>>2]=q[Yb>>2]<<2,q[Pb+20>>2]=q[Yb>>2]<<2,Zb=q[Yb>>2],q[Pb+28>>2]=Xb,q[Pb+24>>2]=Zb<<2,Zb=q[Yb>>2],q[Pb+40>>2]=Xb,q[Pb+36>>2]=Xb,q[Pb+32>>2]=Zb<<2,q[Pb+44>>2]=q[Yb+4>>2]<<5,q[Pb+48>>2]=q[Yb+4>>2]<<2,q[Pb+52>>2]=q[Yb+4>>2]<<2,q[Pb+56>>2]=q[Yb+4>>2]<<2,q[Pb+60>>2]=q[Yb+4>>2]<<4,q[Pb+64>>2]=q[Yb+4>>2]<<4,1<=((Xb=0)|(_b=q[Yb+8>>2]))){for($b=q[a+780>>2],bc=q[a+1072>>2],dc=q[a+796>>2],Zb=0;;)if(ac=(15+(q[(cc=Xb<<2)+dc>>2]<<3)&-16)+ac|0,Zb=(1<>2]<<2)>>2])+Zb|0,(0|_b)==(0|(Xb=Xb+1|0)))break;Xb=Zb<<2}if(q[Pb+68>>2]=w(_b,24),q[Pb+72>>2]=q[Yb+8>>2]<<2,q[Pb+76>>2]=q[Yb+8>>2]<<2,Zb=q[Yb+8>>2],q[Pb+84>>2]=ac,q[Pb+80>>2]=Zb<<2,q[Pb+88>>2]=q[Yb+8>>2]<<4,q[Pb+92>>2]=q[Yb+8>>2]<<4,Zb=q[Yb+8>>2],q[Pb+100>>2]=Xb,q[Pb+96>>2]=Zb<<2,Zb=q[Yb+8>>2],q[Pb+140>>2]=Xb,q[Pb+136>>2]=Xb,q[Pb+132>>2]=Xb,q[Pb+128>>2]=Xb,q[Pb+124>>2]=Xb,q[Pb+120>>2]=Xb,q[Pb+116>>2]=Xb,q[Pb+112>>2]=Xb,q[Pb+108>>2]=Xb,q[Pb+104>>2]=Zb<<2,q[Pb+144>>2]=q[Yb+8>>2]<<2,q[Pb+148>>2]=q[Yb+8>>2]<<2,q[Pb+152>>2]=q[Yb+8>>2]<<2,q[Pb+156>>2]=q[Yb+8>>2]<<2,q[Pb+160>>2]=q[Yb+8>>2]<<2,q[Pb+164>>2]=q[Yb+8>>2]<<2,1<=((Xb=ac=0)|(_b=q[Yb+12>>2]))){for($b=q[a+812>>2],bc=q[a+1072>>2],Zb=0;;)if(Zb=(1<>2]<<2)>>2])+Zb|0,(0|_b)==(0|(Xb=Xb+1|0)))break;Xb=Zb<<2}if(q[Pb+168>>2]=w(_b,12),q[Pb+172>>2]=q[Yb+12>>2]<<2,q[Pb+176>>2]=q[Yb+12>>2]<<2,q[Pb+180>>2]=q[Yb+12>>2]<<2,q[Pb+184>>2]=q[Yb+12>>2]<<2,q[Pb+188>>2]=q[Yb+12>>2]<<2,q[Pb+192>>2]=q[Yb+12>>2]<<2,q[Pb+196>>2]=q[Yb+12>>2]<<2,q[Pb+200>>2]=q[Yb+12>>2]<<2,q[Pb+204>>2]=q[Yb+12>>2]<<4,q[Pb+208>>2]=q[Yb+12>>2]<<4,Zb=q[Yb+12>>2],q[Pb+216>>2]=Xb,q[Pb+212>>2]=Zb<<2,Zb=q[Yb+12>>2],q[Pb+268>>2]=Xb,q[Pb+264>>2]=Xb,q[Pb+260>>2]=Xb,q[Pb+256>>2]=Xb,q[Pb+252>>2]=Xb,q[Pb+248>>2]=Xb,q[Pb+244>>2]=Xb,q[Pb+240>>2]=Xb,q[Pb+236>>2]=Xb,q[Pb+232>>2]=Xb,q[Pb+228>>2]=Xb,q[Pb+224>>2]=Xb,q[Pb+220>>2]=Zb<<2,q[Pb+272>>2]=q[Yb+12>>2]<<2,q[Pb+276>>2]=q[Yb+12>>2]<<2,q[Pb+280>>2]=q[Yb+12>>2]<<2,q[Pb+284>>2]=q[Yb+12>>2]<<2,q[Pb+288>>2]=q[Yb+12>>2]<<2,q[Pb+292>>2]=q[Yb+12>>2]<<2,1<=((Xb=0)|(Zb=q[Yb+16>>2]))){for($b=q[a+852>>2],bc=q[a+1072>>2],dc=q[a+892>>2],_b=0;;)if(ac=(15+(q[(cc=Xb<<2)+dc>>2]<<3)&-16)+ac|0,_b=(1<>2]<<2)>>2])+_b|0,(0|Zb)==(0|(Xb=Xb+1|0)))break;Xb=_b<<2}if(q[Pb+296>>2]=w(Zb,20),q[Pb+300>>2]=q[Yb+16>>2]<<2,q[Pb+304>>2]=q[Yb+16>>2],q[Pb+308>>2]=q[Yb+16>>2]<<2,q[Pb+312>>2]=q[Yb+16>>2]<<2,Zb=q[Yb+16>>2],q[Pb+320>>2]=ac,q[Pb+316>>2]=Zb<<2,q[Pb+324>>2]=q[Yb+16>>2]<<2,q[Pb+328>>2]=q[Yb+16>>2]<<4,q[Pb+332>>2]=q[Yb+16>>2]<<4,q[Pb+336>>2]=q[Yb+16>>2]<<2,q[Pb+340>>2]=q[Yb+16>>2]<<2,q[Pb+344>>2]=q[Yb+16>>2]<<2,q[Pb+348>>2]=q[Yb+16>>2]<<4,q[Pb+352>>2]=q[Yb+16>>2]<<4,Zb=q[Yb+16>>2],q[Pb+360>>2]=Xb,q[Pb+356>>2]=Zb<<2,Zb=q[Yb+16>>2],q[Pb+404>>2]=Xb,q[Pb+400>>2]=Xb,q[Pb+396>>2]=Xb,q[Pb+392>>2]=Xb,q[Pb+388>>2]=Xb,q[Pb+384>>2]=Xb,q[Pb+380>>2]=Xb,q[Pb+376>>2]=Xb,q[Pb+372>>2]=Xb,q[Pb+368>>2]=Xb,q[Pb+364>>2]=Zb<<2,q[Pb+408>>2]=q[Yb+16>>2]<<2,q[Pb+412>>2]=q[Yb+16>>2]<<2,q[Pb+416>>2]=q[Yb+16>>2]<<2,q[Pb+420>>2]=q[Yb+16>>2]<<2,q[Pb+424>>2]=q[Yb+16>>2]<<2,q[Pb+428>>2]=q[Yb+16>>2]<<2,$b=q[a+704>>2],q[Pb+432>>2]=w(q[$b+20>>2],52),q[Pb+436>>2]=ec>>>(Xb=_b=0)<=3?q[$b+20>>2]<<2:0,q[Pb+440>>2]=q[$b+20>>2]<<2,q[Pb+444>>2]=w(q[$b+52>>2],28),1<=(0|(Yb=q[$b+48>>2]))){for(Zb=q[a+1072>>2],ac=0;;)if(ac=(bc=q[Zb+(Xb<<2)>>2])+ac|0,_b=(1<>2]=Xb,q[Pb+456>>2]=Xb,q[Pb+452>>2]=_b,q[Pb+448>>2]=w(Yb,36),q[Pb+500>>2]=w(q[$b+72>>2],28),1<=((ac=Xb=Zb=0)|(bc=q[$b+72>>2]))){for(dc=q[a+1224>>2],cc=q[a+1220>>2],gc=q[a+1212>>2],_b=0;;)if(_b=(0|(fc=q[(Yb=ac<<2)+cc>>2]-q[Yb+dc>>2]|0))<(0|_b)?_b:1+fc|0,Xb=(0|Xb)<(0|(Yb=q[Yb+gc>>2]))?Yb:Xb,(0|bc)==(0|(ac=ac+1|0)))break;ac=Xb<<2,Xb=_b<<2}if(Yb=q[$b+76>>2],q[Pb+516>>2]=Xb,q[Pb+512>>2]=ac,q[Pb+508>>2]=Xb,q[Pb+504>>2]=Yb<<4,1<=(0|(Yb=q[$b+80>>2]))){for(Zb=q[a+1248>>2],ac=q[a+1072>>2],_b=Xb=0;;)if(_b=(1<>2]<<2)>>2])+_b|0,(0|Yb)==(0|(Xb=Xb+1|0)))break;Zb=_b<<2}if(q[Pb+520>>2]=w(Yb,24),q[Pb+524>>2]=q[$b+80>>2]<<2,Yb=q[$b+80>>2],q[Pb+532>>2]=Zb,q[Pb+528>>2]=Yb<<2,Yb=q[$b+80>>2],q[Pb+544>>2]=Zb,q[Pb+540>>2]=Zb,q[Pb+536>>2]=Yb<<2,Yb=Pb,4<=ec>>>0){if(q[Pb+464>>2]=w(q[$b+120>>2],20),q[Pb+468>>2]=w(q[$b+100>>2],28),Zb=Pb,1<=((Xb=ac=0)|(bc=q[$b+104>>2]))){for(a=q[a+1104>>2],_b=0;;)if(_b=q[a+(Xb<<2)>>2]+_b|0,(0|bc)==(0|(Xb=Xb+1|0)))break;a=_b<<2}else a=0;q[Zb+476>>2]=a,q[Pb+472>>2]=w(bc,48),q[Pb+484>>2]=w(q[$b+108>>2],12),a=q[$b+112>>2],q[Pb+552>>2]=0,q[Pb+492>>2]=w(a,12),a=0}else{if((0|(ac=q[$b+20>>2]))<1)_b=0;else for(bc=q[a+1060>>2],dc=q[a+952>>2],a=q[a+948>>2],Zb=_b=0;;){if(1<=(0|(cc=q[(Xb=Zb<<2)+dc>>2])))for(cc=(Xb=bc+(q[a+Xb>>2]<<2)|0)+(cc<<2)|0;;)if(_b=q[Xb>>2]+_b|0,!((Xb=Xb+4|0)>>>0>>0))break;if((0|ac)==(0|(Zb=Zb+1|0)))break}q[Pb+552>>2]=ac<<2,ac=q[$b+20>>2]<<2,a=_b<<2}for(q[Yb+556>>2]=a,q[Pb+548>>2]=ac,4>>0&&(q[Pb+480>>2]=w(q[$b+128>>2],12),q[Pb+488>>2]=w(q[$b+132>>2],12),q[Pb+496>>2]=w(q[$b+136>>2],12)),Xb=_b=0;;)if(Xb=((Yb=q[(a=(_b<<2)+Pb|0)>>2])+15&-16)+(q[a>>2]=Xb)|0,140==(0|(_b=_b+1|0)))break;q[Wb>>2]=Xb}function Ga(a,Pb,Wb,hc){a:{if(!(20>>0||9<(Pb=Pb+-9|0)>>>0)){c:switch(Pb-1|0){default:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,void(q[a>>2]=q[Pb>>2]);case 0:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,Pb=q[Pb>>2],q[a>>2]=Pb,void(q[a+4>>2]=Pb>>31);case 1:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=q[Pb>>2],void(q[a+4>>2]=0);case 3:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,Pb=p[Pb>>1],q[a>>2]=Pb,void(q[a+4>>2]=Pb>>31);case 4:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=s[Pb>>1],void(q[a+4>>2]=0);case 5:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,Pb=o[0|Pb],q[a>>2]=Pb,void(q[a+4>>2]=Pb>>31);case 6:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=r[0|Pb],void(q[a+4>>2]=0);case 2:case 7:break a;case 8:break c}n[hc](a,Wb)}return}Pb=q[Wb>>2]+7&-8,q[Wb>>2]=Pb+8,Wb=q[Pb+4>>2],q[a>>2]=q[Pb>>2],q[a+4>>2]=Wb}function Ha(a){var Pb,hc,Wb=0;if(ha(o[q[a>>2]]))for(;;)if(Pb=q[a>>2],hc=o[0|Pb],q[a>>2]=Pb+1,Wb=(w(Wb,10)+hc|0)-48|0,!ha(o[Pb+1|0]))break;return Wb}function Ia(a,ic,jc,kc,lc){var oc,mc;q[204+(L=mc=L-208|0)>>2]=jc,ca(160+mc|(jc=0),0,40),q[200+mc>>2]=q[204+mc>>2],(0|ra(0,ic,200+mc|0,80+mc|0,160+mc|0,kc,lc))<0||(jc=0<=q[a+76>>2]?1:jc,jc=q[a>>2],o[a+74|0]<=0&&(q[a>>2]=-33&jc),oc=32&jc,q[a+48>>2]?ra(a,ic,200+mc|0,80+mc|0,160+mc|0,kc,lc):(q[a+48>>2]=80,q[a+16>>2]=80+mc,q[a+28>>2]=mc,q[a+20>>2]=mc,jc=q[a+44>>2],ra(a,ic,200+(q[a+44>>2]=mc)|0,80+mc|0,160+mc|0,kc,lc),jc&&(n[q[a+36>>2]](a,0,0),q[a+48>>2]=0,q[a+44>>2]=jc,q[a+28>>2]=0,q[a+16>>2]=0,q[a+20>>2]=0)),q[a>>2]=q[a>>2]|oc),L=208+mc|0}function Ka(a,ic,pc){var rc,qc;$(8+(L=qc=L-160|0)|0,3192,144),q[52+qc>>2]=a,q[28+qc>>2]=a,q[56+qc>>2]=rc=(rc=-2-a|0)>>>0<256?rc:256,q[36+qc>>2]=a=a+rc|0,q[24+qc>>2]=a,Ia(8+qc|0,ic,pc,11,12),rc&&(a=q[28+qc>>2],o[a-((0|a)==q[24+qc>>2])|0]=0),L=160+qc|0}function La(a,ic){var sc,tc,pc=0,pc=0!=(0|ic);a:{b:{c:{d:if(!(!ic|!(3&a)))for(;;){if(!r[0|a])break c;if(a=a+1|0,pc=0!=(0|(ic=ic+-1|0)),!ic)break d;if(!(3&a))break}if(!pc)break b}if(!r[0|a])break a;e:{if(4<=ic>>>0){for(pc=(pc=ic+-4|0)-(sc=-4&pc)|0,sc=4+(a+sc|0)|0;;){if((-1^(tc=q[a>>2]))&tc+-16843009&-2139062144)break e;if(a=a+4|0,!(3<(ic=ic+-4|0)>>>0))break}ic=pc,a=sc}if(!ic)break b}for(;;){if(!r[0|a])break a;if(a=a+1|0,!(ic=ic+-1|0))break}}return 0}return a}function Ma(a){var uc,ic=0;if(!a)return 32;if(!(1&a))for(;;)if(ic=ic+1|0,uc=2&a,a>>>=1,uc)break;return ic}function Na(a,vc){var zc,Ac,Bc,yc,wc=0,xc=0,xc=4;L=yc=L-256|0;a:if(!((0|vc)<2))for(wc=q[(Bc=(vc<<2)+a|0)>>2]=yc;;){for($(wc,q[a>>2],zc=xc>>>0<256?xc:256),wc=0;;)if($(q[(Ac=(wc<<2)+a|0)>>2],q[((wc=wc+1|0)<<2)+a>>2],zc),q[Ac>>2]=q[Ac>>2]+zc,(0|vc)==(0|wc))break;if(!(xc=xc-zc|0))break a;wc=q[Bc>>2]}L=256+yc|0}function Oa(a){var vc;return(vc=Ma(q[a>>2]+-1|0))||((a=Ma(q[a+4>>2]))?a+32|0:0)}function Sa(a){var Hc;q[(L=Hc=L-16|0)>>2]=a,function(a,Il){var Jl=0;q[12+(L=Jl=L-16|0)>>2]=Il,Ia(a,1432,Il,0,0),L=16+Jl|0}(q[970],Hc),L=16+Hc|0}function Cc(a,Il,Jl,tm){var zm,wm,um=0,vm=0,xm=0,ym=0;return L=wm=L-32|0,um=(ym=um=2147483647&tm)+-1006698496|0,vm=um=(zm=vm=xm=Jl)>>>0<0?um+1|0:um,um=ym+-1140785152|0,(0|(um=xm>>>0<0?um+1|0:um))==(0|vm)&zm>>>0>>0|vm>>>0>>0?(um=tm<<4|Jl>>>28,Jl=Jl<<4|Il>>>28,134217728==(0|(xm=Il&=268435455))&1<=a>>>0|134217728>>0?(um=um+1073741824|0,(a=Jl+1|0)>>>0<1&&(um=um+1|0),vm=a):(um=um-(((vm=Jl)>>>0<0)+-1073741824|0)|0,a|134217728^xm||((a=vm+(1&vm)|0)>>>0>>0&&(um=um+1|0),vm=a))):(!xm&2147418112==(0|ym)?!(a|Il):2147418112==(0|ym)&xm>>>0<0|ym>>>0<2147418112)?(um=2146435072,1140785151==((vm=0)|ym)&4294967295>>0|1140785151>>0||(xm=ym>>>16)>>>(um=0)<15249||(function(a,Il,Jl,tm,Bm,Cm){var Hm=0,Im=0,Jm=0,Km=0;a:if(64&Cm)Il=31&(Jl=Cm+-64|0),Il=32<=(63&Jl)>>>0?(Jl=0,Bm>>>Il):(Jl=Bm>>>Il,((1<>>Il),Bm=tm=0;else{if(!Cm)break a;Im=Bm,Jm=tm,Hm=31&(Km=64-Cm|0),Km=32<=(63&Km)>>>0?(Im=Jm<>>32-Hm|Im<>>0?(Hm=0,Jl>>>Il):(Hm=Jl>>>Il,((1<>>Il),Il|=Km,Jl=Hm|Im,Hm=tm,tm=31&Cm,tm=32<=(63&Cm)>>>0?(Im=0,Bm>>>tm):(Im=Bm>>>tm,((1<>>tm),Bm=Im}q[a>>2]=Il,q[a+4>>2]=Jl,q[a+8>>2]=tm,q[a+12>>2]=Bm}(wm,a,Il,Jl,um=65535&tm|65536,15361-xm|0),function(a,Il,Jl,tm,Bm,Cm){var Dm=0,Em=0,Fm=0,Gm=0;64&Cm?(tm=Il,Il=31&(Bm=Cm+-64|0),32<=(63&Bm)>>>0?(Bm=tm<>>32-Il|Jl<>>0?(Em=Dm<>>32-tm|Bm<>>0?(Cm=0,tm>>>=Bm):(Cm=tm>>>Bm,tm=((1<>>Bm),tm|=Gm,Bm=Cm|Em,Cm=Il,Il=31&Fm,Il=32<=(63&Fm)>>>0?(Em=Cm<>>32-Il|Jl<>2]=Il,q[a+4>>2]=Jl,q[a+8>>2]=tm,q[a+12>>2]=Bm}(16+wm|0,a,Il,Jl,um,xm+-15233|0),Jl=q[4+wm>>2],a=q[8+wm>>2],um=q[12+wm>>2]<<4|a>>>28,vm=a<<4|Jl>>>28,134217728==(0|(Jl=a=268435455&Jl))&1<=(Il=q[wm>>2]|(0!=(q[16+wm>>2]|q[24+wm>>2])|0!=(q[20+wm>>2]|q[28+wm>>2])))>>>0|134217728>>0?((a=vm+1|0)>>>0<1&&(um=um+1|0),vm=a):Il|134217728^Jl||((a=vm+(1&vm)|0)>>>0>>0&&(um=um+1|0),vm=a))):(vm=Jl<<4|Il>>>28,um=524287&(um=tm<<4|Jl>>>28)|2146959360),L=32+wm|0,f(0,0|vm),f(1,-2147483648&tm|um),+g()}function Zc(a,$o){a=0|a,$o=0|$o,b[0]=a,b[1]=$o}function ad(a,$o,ap){return function(a,$o,ap){var ep,cp,bp,dp,fp=w(cp=ap>>>16,bp=a>>>16);return a=(65535&(bp=((ep=w(dp=65535&ap,a&=65535))>>>16)+w(bp,dp)|0))+w(a,cp)|0,M=((fp+w($o,ap)|0)+(bp>>>16)|0)+(a>>>16)|0,65535&ep|a<<16}(a,$o,ap)}function bd(a,$o,ap){return function(a,$o,ap){var np,gp=0,hp=0,ip=0,jp=0,kp=0,lp=0,mp=0,op=0;a:{b:{c:{d:{e:{if(!(hp=$o))return Zc(($o=a)-w(a=(a>>>0)/(ap>>>0)|0,ap)|0,0),M=0,a;if(gp=ap){if(!((jp=gp+-1|0)&gp))break e;kp=0-(jp=(z(gp)+33|0)-z(hp)|0)|0;break c}if(!a)return Zc(0,hp-w(a=(hp>>>0)/0|0,0)|0),M=0,a;if((gp=32-z(hp)|0)>>>0<31)break d;break b}if(Zc(a&jp,0),1==(0|gp))break a;return ap=31&(gp=gp?31-z(gp+-1^gp)|0:32),a=32<=(63&gp)>>>0?(hp=0,$o>>>ap):(hp=$o>>>ap,((1<>>ap),M=hp,a}jp=gp+1|0,kp=63-gp|0}if(gp=$o,ip=31&(hp=63&jp),ip=32<=hp>>>0?(hp=0,gp>>>ip):(hp=gp>>>ip,((1<>>ip),gp=31&(kp&=63),32<=kp>>>0?($o=a<>>32-gp|$o<>>0<4294967295&&(gp=0);;)if(ip=(mp=lp=ip<<1|$o>>>31)-(np=ap&(lp=gp-((hp=hp<<1|ip>>>31)+(kp>>>0>>0)|0)>>31))|0,hp=hp-(mp>>>0>>0)|0,$o=$o<<1|a>>>31,a=op|a<<1,op=lp&=1,!(jp=jp+-1|0))break;return Zc(ip,hp),M=$o<<1|a>>>31,lp|a<<1}Zc(a,$o),$o=a=0}return M=$o,a}(a,$o,ap)}function dd(a){var pp;return(-1>>>(pp=31&a)&-2)<>>a}function N(){return buffer.byteLength/65536|0}}(H,I,J)}}l=null,b.wasmBinary&&(F=b.wasmBinary);var WebAssembly={},F=[];"object"!=typeof WebAssembly&&E("no native wasm support detected");var I,J=new function(a){var c=Array(16);return c.grow=function(){17<=c.length&&B("Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH."),c.push(null)},c.set=function(a,e){c[a]=e},c.get=function(a){return c[a]},c},K=!1;function assert(a,c){a||B("Assertion failed: "+c)}var buffer,M,L,N,ha="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function ia(a,c,d){var e=c+d;for(d=c;a[d]&&!(e<=d);)++d;if(16>10,56320|1023&f)))):e+=String.fromCharCode(f)}return e}function ja(a,c){return a?ia(L,a,c):""}function ka(a){return 0>>16)*e+d*(c>>>16)<<16)|0}),Math.fround||(ra=new Float32Array(1),Math.fround=function(a){return ra[0]=a,ra[0]}),Math.clz32||(Math.clz32=function(a){var c=32,d=a>>16;return d&&(c-=16,a=d),(d=a>>8)&&(c-=8,a=d),(d=a>>4)&&(c-=4,a=d),(d=a>>2)&&(c-=2,a=d),a>>1?c-2:c-a}),Math.trunc||(Math.trunc=function(a){return a<0?Math.ceil(a):Math.floor(a)});var P=0,Q=null,U=null;function B(a){throw b.onAbort&&b.onAbort(a),D(a),E(a),K=!0,"abort("+a+"). Build with -s ASSERTIONS=1 for more info."}b.preloadedImages={},b.preloadedAudios={};var V="data:application/octet-stream;base64,";function W(a){return String.prototype.startsWith?a.startsWith(V):0===a.indexOf(V)}var X="_em_module.wasm";function ta(){try{if(F)return new Uint8Array(F);var a=z(X);if(a)return a;if(w)return w(X);throw"both async and sync fetching of the wasm failed"}catch(c){B(c)}}W(X)||(t=X,X=b.locateFile?b.locateFile(t,u):u+t),na.push({ea:function(){va()}});var wa=[null,[],[]],xa=!1;function C(a){for(var c=[],d=0;d>4,f=(15&f)<<4|g>>2,h=(3&g)<<6|m}while(c+=String.fromCharCode(e),64!==g&&(c+=String.fromCharCode(f)),64!==m&&(c+=String.fromCharCode(h)),d>16),la(I.buffer);var d=1;break a}catch(e){}d=void 0}return!!d},c:function(a,c,d,e){try{for(var f=0,g=0;g>2],h=N[c+(8*g+4)>>2],A=0;A>2]=f,0}catch(T){return"undefined"!=typeof FS&&T instanceof FS.fa||B(T),T.ga}},memory:I,table:J},u=function(){function a(a){b.asm=a.exports,P--,b.monitorRunDependencies&&b.monitorRunDependencies(P),0==P&&(null!==Q&&(clearInterval(Q),Q=null),U)&&(a=U,U=null,a())}function c(c){a(c.instance)}function d(a){return(F||!p&&!q||"function"!=typeof fetch?new Promise(function(a){a(ta())}):fetch(X,{credentials:"same-origin"}).then(function(a){if(a.ok)return a.arrayBuffer();throw"failed to load wasm binary file at '"+X+"'"}).catch(ta)).then(function(){return{then:function(a){a({instance:new da})}}}).then(a,function(a){E("failed to asynchronously prepare wasm: "+a),B(a)})}var e={env:H,wasi_unstable:H};if(P++,b.monitorRunDependencies&&b.monitorRunDependencies(P),b.instantiateWasm)try{return b.instantiateWasm(e,a)}catch(f){return E("Module.instantiateWasm callback failed with error: "+f),!1}return F||"function"!=typeof WebAssembly.instantiateStreaming||W(X)||"function"!=typeof fetch?d(c):fetch(X,{credentials:"same-origin"}).then(function(a){return WebAssembly.instantiateStreaming(a,e).then(c,function(a){E("wasm streaming compile failed: "+a),E("falling back to ArrayBuffer instantiation"),d(c)})}),{}}(),va=(b.asm=u,b.___wasm_call_ctors=function(){return b.asm.d.apply(null,arguments)}),Aa=(b._csmGetVersion=function(){return b.asm.e.apply(null,arguments)},b._csmGetLatestMocVersion=function(){return b.asm.f.apply(null,arguments)},b._csmGetMocVersion=function(){return b.asm.g.apply(null,arguments)},b._csmHasMocConsistency=function(){return b.asm.h.apply(null,arguments)},b._csmSetLogFunction=function(){return b.asm.i.apply(null,arguments)},b._csmReviveMocInPlace=function(){return b.asm.j.apply(null,arguments)},b._csmReadCanvasInfo=function(){return b.asm.k.apply(null,arguments)},b._csmGetSizeofModel=function(){return b.asm.l.apply(null,arguments)},b._csmInitializeModelInPlace=function(){return b.asm.m.apply(null,arguments)},b._csmUpdateModel=function(){return b.asm.n.apply(null,arguments)},b._csmGetParameterCount=function(){return b.asm.o.apply(null,arguments)},b._csmGetParameterIds=function(){return b.asm.p.apply(null,arguments)},b._csmGetParameterTypes=function(){return b.asm.q.apply(null,arguments)},b._csmGetParameterMinimumValues=function(){return b.asm.r.apply(null,arguments)},b._csmGetParameterMaximumValues=function(){return b.asm.s.apply(null,arguments)},b._csmGetParameterDefaultValues=function(){return b.asm.t.apply(null,arguments)},b._csmGetParameterValues=function(){return b.asm.u.apply(null,arguments)},b._csmGetPartCount=function(){return b.asm.v.apply(null,arguments)},b._csmGetPartIds=function(){return b.asm.w.apply(null,arguments)},b._csmGetPartOpacities=function(){return b.asm.x.apply(null,arguments)},b._csmGetPartParentPartIndices=function(){return b.asm.y.apply(null,arguments)},b._csmGetDrawableCount=function(){return b.asm.z.apply(null,arguments)},b._csmGetDrawableIds=function(){return b.asm.A.apply(null,arguments)},b._csmGetDrawableConstantFlags=function(){return b.asm.B.apply(null,arguments)},b._csmGetDrawableDynamicFlags=function(){return b.asm.C.apply(null,arguments)},b._csmGetDrawableTextureIndices=function(){return b.asm.D.apply(null,arguments)},b._csmGetDrawableDrawOrders=function(){return b.asm.E.apply(null,arguments)},b._csmGetDrawableRenderOrders=function(){return b.asm.F.apply(null,arguments)},b._csmGetDrawableOpacities=function(){return b.asm.G.apply(null,arguments)},b._csmGetDrawableMaskCounts=function(){return b.asm.H.apply(null,arguments)},b._csmGetDrawableMasks=function(){return b.asm.I.apply(null,arguments)},b._csmGetDrawableVertexCounts=function(){return b.asm.J.apply(null,arguments)},b._csmGetDrawableVertexPositions=function(){return b.asm.K.apply(null,arguments)},b._csmGetDrawableVertexUvs=function(){return b.asm.L.apply(null,arguments)},b._csmGetDrawableIndexCounts=function(){return b.asm.M.apply(null,arguments)},b._csmGetDrawableIndices=function(){return b.asm.N.apply(null,arguments)},b._csmGetDrawableMultiplyColors=function(){return b.asm.O.apply(null,arguments)},b._csmGetDrawableScreenColors=function(){return b.asm.P.apply(null,arguments)},b._csmGetDrawableParentPartIndices=function(){return b.asm.Q.apply(null,arguments)},b._csmResetDrawableDynamicFlags=function(){return b.asm.R.apply(null,arguments)},b._csmGetParameterKeyCounts=function(){return b.asm.S.apply(null,arguments)},b._csmGetParameterKeyValues=function(){return b.asm.T.apply(null,arguments)},b._csmMallocMoc=function(){return b.asm.U.apply(null,arguments)},b._csmMallocModelAndInitialize=function(){return b.asm.V.apply(null,arguments)},b._csmMalloc=function(){return b.asm.W.apply(null,arguments)},b._csmFree=function(){return b.asm.X.apply(null,arguments)},b._csmInitializeAmountOfMemory=function(){return b.asm.Y.apply(null,arguments)},b.stackSave=function(){return b.asm.Z.apply(null,arguments)}),Ba=b.stackAlloc=function(){return b.asm._.apply(null,arguments)},Ca=b.stackRestore=function(){return b.asm.$.apply(null,arguments)},ca=b.__growWasmMemory=function(){return b.asm.aa.apply(null,arguments)};function Z(){function a(){if(!Y&&(Y=!0,!K)){if(O(na),O(oa),b.onRuntimeInitialized&&b.onRuntimeInitialized(),b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var a=b.postRun.shift();pa.unshift(a)}O(pa)}}if(!(0>6}else{if(k<=65535){if(d<=e+2)break;f[e++]=224|k>>12}else{if(d<=e+3)break;f[e++]=240|k>>18,f[e++]=128|k>>12&63}f[e++]=128|k>>6&63}f[e++]=128|63&k}}f[e]=0}}return c},array:function(a){var c=Ba(a.length);return M.set(a,c),c}},g=function(a){var c=b["_"+a];return assert(c,"Cannot call unknown function "+a+", make sure it is exported"),c}(a),m=[];if(a=0,e)for(var h=0;h>2]+(Ln<<5)|0)>>2],Pn=q[a+60>>2]+w(Wn,24)|0,Ln=(ko=q[Pn+8>>2])+-1|0,xo=(qo=q[Pn+4>>2])+-1|0,yo=uo=(Wn=q[q[a+152>>2]+(Wn<<2)>>2])+(ko<<3)|0,zo=vo=Wn+((to=w(qo,lo=ko+1|0))<<3)|0,Ao=wo=Wn+(ko+to<<3)|0,Io=q[Pn+12>>2],ro=x(0|qo),so=x(0|ko),a=0;Vn=u[4+(Pn=(oo=a<<3)+Mn|0)>>2],Rn=x(Vn*ro),Xn=u[Pn>>2],Qn=x(Xn*so),Pn=Vn>=x(1),Rn=!(Vn=x(1)|Xn>2],Bo=u[Wn+4>>2],Yn=x(ao-Bo),Co=u[4+yo>>2],Do=u[4+zo>>2],Zn=x(Co-Do),bo=x(x(Yn-Zn)*x(.5)),Eo=u[wo>>2],Fo=u[Wn>>2],_n=x(Eo-Fo),Go=u[uo>>2],Ho=u[vo>>2],$n=x(Go-Ho),co=x(x(_n-$n)*x(.5)),Zn=x(x(Zn+Yn)*x(.5)),$n=x(x($n+_n)*x(.5)),Jo=1,Yn=x(x(x(x(x(Bo+Co)+Do)+ao)*x(.25))-x(Yn*x(.5))),_n=x(x(x(x(x(Fo+Go)+Ho)+Eo)*x(.25))-x(_n*x(.5)))),Vnx(-2)^1|(Xnx(-2)^1)?(u[Nn+oo>>2]=x(Vn*co)+x(x(Xn*$n)+_n),Qn=x(Vn*bo),x(x(Xn*Zn)+Yn)):(Xn<=x(0)?Vn<=x(0)?(Un=x(x(Vn+x(2))*x(.5)),Tn=x(x(Xn+x(2))*x(.5)),Qn=x(bo+bo),mo=x(Yn-Qn),Rn=x(co+co),no=x(_n-Rn),io=x(Yn-x(Zn+Zn)),eo=x(io-Qn),jo=x(_n-x($n+$n)),fo=x(jo-Rn),go=u[Wn+4>>2],ho=u[Wn>>2]):Pn?(Qn=x(bo*x(3)),Rn=x(Yn-x(Zn+Zn)),io=x(Qn+Rn),eo=x(co*x(3)),fo=x(_n-x($n+$n)),jo=x(eo+fo),Un=x(x(Vn+x(-1))*x(.5)),Tn=x(x(Xn+x(2))*x(.5)),go=x(Qn+Yn),ho=x(eo+_n),eo=x(bo+Rn),fo=x(co+fo),mo=u[4+zo>>2],no=u[vo>>2]):(Qn=x(Yn-x(Zn+Zn)),Pn=xo,Sn=x(y(Rn))>2],no=u[Pn>>2],Pn=Wn+(w(Sn,lo)<<3)|0,go=u[Pn+4>>2],ho=u[Pn>>2]):Xn>=x(1)?Vn<=x(0)?(Un=x(x(Vn+x(2))*x(.5)),Tn=x(x(Xn+x(-1))*x(.5)),Qn=x(bo+bo),eo=x(x(Zn+Yn)-Qn),Rn=x(co+co),fo=x(x($n+_n)-Rn),go=x(x(Zn*x(3))+Yn),mo=x(go-Qn),ho=x(x($n*x(3))+_n),no=x(ho-Rn),io=u[4+yo>>2],jo=u[uo>>2]):Pn?(Qn=x(bo*x(3)),io=x(Qn+x(Zn+Yn)),Rn=x(co*x(3)),jo=x(Rn+x($n+_n)),ao=Qn,Qn=x(x(Zn*x(3))+Yn),go=x(ao+Qn),ao=Rn,Rn=x(x($n*x(3))+_n),ho=x(ao+Rn),Un=x(x(Vn+x(-1))*x(.5)),Tn=x(x(Xn+x(-1))*x(.5)),mo=x(bo+Qn),no=x(co+Rn),eo=u[4+Ao>>2],fo=u[wo>>2]):(Qn=x(x(Zn*x(3))+Yn),Pn=xo,Sn=x(y(Rn))>2],fo=u[Pn>>2],Pn=Wn+(w(Sn,lo)+ko<<3)|0,io=u[Pn+4>>2],jo=u[Pn>>2]):Vn<=x(0)?(Un=x(x(Vn+x(2))*x(.5)),Pn=Ln,Sn=x(y(Rn=Qn))>2],jo=u[Pn>>2],go=u[4+(Pn=Wn+(Sn<<3)|0)>>2],ho=u[Pn>>2]):Pn?(ao=Rn=x(bo*x(3)),Pn=Ln,Sn=x(y(Qn))>2],fo=u[Pn>>2],mo=u[4+(Pn=Wn+(Sn+to<<3)|0)>>2],no=u[Pn>>2]):(v[16+po>>3]=Vn,q[po>>2]=a,v[8+po>>3]=Xn,Y(4,1107,po)),x(Tn+Un)<=x(1)?(u[Nn+oo>>2]=x(fo+x(x(no-fo)*Tn))+x(x(jo-fo)*Un),Qn=x(eo+x(x(mo-eo)*Tn)),x(x(io-eo)*Un)):(Qn=x(x(1)-Tn),Rn=x(x(1)-Un),u[Nn+oo>>2]=x(ho+x(x(jo-ho)*Qn))+x(x(no-ho)*Rn),Qn=x(go+x(x(io-go)*Qn)),x(x(mo-go)*Rn)))):(Pn=x(y(ao=Rn))>2]=x(x(x(Qn*x(Rn*u[Sn>>2]))+x(Qn*x(Tn*u[Sn+8>>2])))+x(Un*x(Rn*u[Pn>>2])))+x(Un*x(Tn*u[Pn+8>>2])),Qn=x(x(x(Qn*x(Rn*u[Sn+4>>2]))+x(Qn*x(Tn*u[Sn+12>>2])))+x(Un*x(Rn*u[Pn+4>>2]))),x(Un*x(Tn*u[Pn+12>>2]))):x(Tn+Un)<=x(1)?(Qn=x(x(x(1)-Tn)-Un),Sn=Wn+(Pn<<3)|0,Pn=Wn+(Pn+lo<<3)|0,u[Nn+oo>>2]=x(x(Qn*u[Sn>>2])+x(Tn*u[Sn+8>>2]))+x(Un*u[Pn>>2]),Qn=x(x(Qn*u[Sn+4>>2])+x(Tn*u[Sn+12>>2])),x(Un*u[Pn+4>>2])):(Qn=x(x(Tn+x(-1))+Un),Sn=Wn+(Pn+lo<<3)|0,Rn=x(x(1)-Tn),Vn=x(x(1)-Un),Pn=Wn+(Pn<<3)|0,u[Nn+oo>>2]=x(x(Qn*u[Sn+8>>2])+x(Rn*u[Sn>>2]))+x(Vn*u[Pn+8>>2]),Qn=x(x(Qn*u[Sn+12>>2])+x(Rn*u[Sn+4>>2])),x(Vn*u[Pn+12>>2]))),u[4+(Nn+oo|0)>>2]=Qn+Rn,(0|On)!=(0|(a=a+1|0)););L=32+po|0},n[2]=function(a,mh){a|=0,mh|=0;var Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=x(0),Jh=0,Kh=0,Mh=(x(0),0),Nh=0,Gh=q[a+320>>2],Dh=q[a+316>>2],Hh=q[a+308>>2];-1==(0|(Eh=q[8+(Fh=Hh+(mh<<5)|0)>>2]))?(q[(Nh=Dh)+(Dh=mh<<2)>>2]=q[q[a+148>>2]+(q[Fh+16>>2]<<2)>>2],q[Dh+Gh>>2]=1065353216):(Jh=q[Fh+16>>2],Kh=q[q[a+152>>2]+(Jh<<2)>>2],n[q[24+(Hh+(Eh<<5)|0)>>2]](a,Eh,Kh,Kh,q[16+(q[a+60>>2]+w(Jh,24)|0)>>2]),Ih=u[q[a+148>>2]+(q[Fh+16>>2]<<2)>>2],Fh=q[Fh+8>>2]<<2,u[(Eh=mh<<2)+Dh>>2]=Ih*u[Fh+Dh>>2],q[Eh+Gh>>2]=q[Fh+Gh>>2]),4<=r[q[a>>2]+4|0]&&(Gh=mh<<2,Dh=q[a+308>>2]+(mh<<5)|0,Eh=q[Dh+16>>2]<<2,Fh=q[a+328>>2],mh=q[a+324>>2],-1==(0|(Hh=q[Dh+8>>2]))?(Hh=q[a+156>>2],q[(Dh=Gh<<2)+mh>>2]=q[Hh+(Eh<<=2)>>2],q[(Jh=4|Dh)+mh>>2]=q[(Kh=4|Eh)+Hh>>2],q[(Mh=8|Dh)+mh>>2]=q[Hh+(Nh=8|Eh)>>2],q[mh+((Gh|=3)<<2)>>2]=1065353216,a=q[a+160>>2],q[Dh+Fh>>2]=q[a+Eh>>2],q[Fh+Jh>>2]=q[a+Kh>>2],q[Fh+Mh>>2]=q[a+Nh>>2]):(Eh=(Kh=Eh<<2)+q[a+156>>2]|0,u[(Dh=(Jh=Gh<<2)+mh|0)>>2]=u[Eh>>2]*u[(Hh=(Mh=Hh<<4)+mh|0)>>2],u[Dh+4>>2]=u[Eh+4>>2]*u[Hh+4>>2],u[Dh+8>>2]=u[Eh+8>>2]*u[Hh+8>>2],q[mh+((Gh|=3)<<2)>>2]=1065353216,a=Kh+q[a+160>>2]|0,Nh=u[a>>2],Ih=u[(Dh=Fh+Mh|0)>>2],u[(mh=Fh+Jh|0)>>2]=x(Nh+Ih)-x(Nh*Ih),Nh=u[a+4>>2],Ih=u[Dh+4>>2],u[mh+4>>2]=x(Nh+Ih)-x(Nh*Ih),Nh=u[a+8>>2],Ih=u[Dh+8>>2],u[mh+8>>2]=x(Nh+Ih)-x(Nh*Ih)),q[Fh+(Gh<<2)>>2]=1065353216)},n[3]=function(a,Sm,un,xn,yn){a|=0,Sm|=0,un|=0,xn|=0,yn|=0;var Dn,En,Fn,Hn,In,zn=0,zn=(x(0),x(0),x(0),x(0),x(0),x(0),x(0),x(0),(Sm=q[16+(q[a+308>>2]+(Sm<<5)|0)>>2])<<2),Bn=function(a){var El,Hl,Fl,Gl,Dl=x(0);L=Fl=L-16|0,j(a);a:if((El=2147483647&(Gl=b[0]))>>>0<=1061752794)Dl=x(1),El>>>0<964689920||(Dl=ba(+a));else if(El>>>0<=1081824209)Hl=+a,Dl=1075235812<=El>>>0?x(-ba(((0|Gl)<0?3.141592653589793:-3.141592653589793)+Hl)):aa((0|Gl)<=-1?1.5707963267948966+Hl:1.5707963267948966-Hl);else if(El>>>0<=1088565717)Dl=1085271520<=El>>>0?ba(+a+((0|Gl)<0?6.283185307179586:-6.283185307179586)):aa((0|Gl)<=-1?-4.71238898038469-+a:+a-4.71238898038469);else if(Dl=x(a-a),!(2139095040<=El>>>0))if((El=3&Da(a,8+Fl|0))>>>0<=2){switch(El-1|0){default:Dl=ba(v[8+Fl>>3]);break a;case 0:Dl=aa(-v[8+Fl>>3]);break a;case 1:}Dl=x(-ba(v[8+Fl>>3]))}else Dl=aa(v[8+Fl>>3]);return L=16+Fl|0,Dl}(An=x(x(x(u[4+(q[a+168>>2]+w(Sm,12)|0)>>2]+u[zn+q[a+284>>2]>>2])*x(3.1415927410125732))/x(180))),Cn=u[zn+q[a+272>>2]>>2],Gn=q[zn+q[a+292>>2]>>2],An=function(a){var Vk,Al,Cl,Bl=0;L=Al=L-16|0,j(a);a:if((Vk=2147483647&(Cl=b[0]))>>>0<=1061752794)Vk>>>0<964689920||(a=aa(+a));else if(Vk>>>0<=1081824209)Bl=+a,a=Vk>>>0<=1075235811?(0|Cl)<=-1?x(-ba(Bl+1.5707963267948966)):ba(Bl+-1.5707963267948966):aa(-(((0|Cl)<0?3.141592653589793:-3.141592653589793)+Bl));else if(Vk>>>0<=1088565717)Bl=+a,a=Vk>>>0<=1085271519?(0|Cl)<=-1?ba(Bl+4.71238898038469):x(-ba(Bl+-4.71238898038469)):aa(((0|Cl)<0?6.283185307179586:-6.283185307179586)+Bl);else if(2139095040<=Vk>>>0)a=x(a-a);else if((Vk=3&Da(a,8+Al|0))>>>0<=2){switch(Vk-1|0){default:a=aa(v[8+Al>>3]);break a;case 0:a=ba(v[8+Al>>3]);break a;case 1:}a=aa(-v[8+Al>>3])}else a=x(-ba(v[8+Al>>3]));return L=16+Al|0,a}(An);if((Sm=0)<(0|yn))for(Bn=x(Cn*Bn),En=x(Gn?-1:1),Hn=x(Bn*En),Dn=q[zn+q[a+288>>2]>>2]?x(-1):x(1),In=x(x(Cn*An)*Dn),Bn=x(Bn*Dn),Cn=x(x(Cn*x(-An))*En),An=u[zn+q[a+280>>2]>>2],En=u[zn+q[a+276>>2]>>2];zn=(a=Sm<<3)+xn|0,Dn=u[(a=a+un|0)>>2],Fn=u[a+4>>2],u[zn+4>>2]=An+x(x(In*Dn)+x(Hn*Fn)),u[zn>>2]=En+x(x(Bn*Dn)+x(Cn*Fn)),(0|yn)!=(0|(Sm=Sm+1|0)););},n[4]=function(a,mh){a|=0,mh|=0;var yh,zh,Ah,Bh,Ch,nh,oh=0,ph=0,qh=0,rh=x(0),sh=0,th=0,uh=x(0),vh=0,wh=0,xh=0;if(x(0),x(0),x(0),x(0),L=nh=L+-64|0,vh=q[a+320>>2],wh=q[a+316>>2],ph=q[a+308>>2],-1==(0|(sh=q[8+(qh=ph+(mh<<5)|0)>>2])))oh=q[qh+16>>2]<<2,q[(ph=mh<<2)+wh>>2]=q[oh+q[a+268>>2]>>2],q[ph+vh>>2]=q[oh+q[a+272>>2]>>2];else{oh=q[qh+16>>2]<<2,xh=q[oh+q[a+276>>2]>>2],q[24+nh>>2]=xh,oh=q[oh+q[a+280>>2]>>2],q[28+nh>>2]=oh,q[16+nh>>2]=0,zh=1==q[12+(th=ph+(sh<<5)|0)>>2]?x(-10):x(-.10000000149011612),u[20+nh>>2]=zh,q[60+nh>>2]=oh,q[56+nh>>2]=xh,n[q[th+24>>2]](a,sh,56+nh|0,48+nh|0,1),rh=x(1),ph=9;b:{for(;;){if(oh=ph,uh=x(rh*x(0)),u[32+nh>>2]=uh+u[56+nh>>2],yh=x(zh*rh),u[36+nh>>2]=yh+u[60+nh>>2],n[q[th+24>>2]](a,sh,32+nh|0,40+nh|0,1),Ah=x(u[44+nh>>2]-u[52+nh>>2]),u[44+nh>>2]=Ah,Bh=x(u[40+nh>>2]-u[48+nh>>2]),u[40+nh>>2]=Bh,Ah!=x(0)||Bh!=x(0)){ph=q[44+nh>>2],q[8+nh>>2]=q[40+nh>>2],q[12+nh>>2]=ph;break b}if(u[32+nh>>2]=u[56+nh>>2]-uh,u[36+nh>>2]=u[60+nh>>2]-yh,n[q[th+24>>2]](a,sh,32+nh|0,40+nh|0,1),uh=x(u[40+nh>>2]-u[48+nh>>2]),u[40+nh>>2]=uh,yh=x(u[44+nh>>2]-u[52+nh>>2]),(u[44+nh>>2]=yh)!=x(0)||uh!=x(0)){u[12+nh>>2]=-yh,u[8+nh>>2]=-uh;break b}if(ph=oh+-1|0,rh=x(rh*x(.10000000149011612)),!oh)break}Y(3,1311,0)}rh=function(a,ji){var ki=x(0);if((ki=x(Ba(u[4+a>>2],u[a>>2])-Ba(u[4+ji>>2],u[ji>>2])))x(3.1415927410125732))for(;(ki=x(ki+x(-6.2831854820251465)))>x(3.1415927410125732););return ki}(16+nh|0,8+nh|0),n[q[th+24>>2]](a,q[qh+8>>2],24+nh|0,24+nh|0,1),ph=q[qh+16>>2]<<2,q[ph+q[a+276>>2]>>2]=q[24+nh>>2],q[ph+q[a+280>>2]>>2]=q[28+nh>>2],oh=ph+q[a+284>>2]|0,u[oh>>2]=u[oh>>2]+x(x(rh*x(-180))/x(3.1415927410125732)),qh=q[qh+8>>2]<<2,u[(oh=mh<<2)+wh>>2]=u[ph+q[a+268>>2]>>2]*u[qh+wh>>2],ph=ph+q[a+272>>2]|0,rh=x(u[ph>>2]*u[qh+vh>>2]),u[oh+vh>>2]=rh,u[ph>>2]=rh}4<=r[q[a>>2]+4|0]&&(oh=mh<<2,qh=q[a+308>>2]+(mh<<5)|0,sh=q[qh+16>>2]<<2,ph=q[a+328>>2],mh=q[a+324>>2],-1==(0|(th=q[qh+8>>2]))?(th=q[a+296>>2],q[(qh=oh<<2)+mh>>2]=q[th+(sh<<=2)>>2],q[(vh=4|qh)+mh>>2]=q[(wh=4|sh)+th>>2],q[(xh=8|qh)+mh>>2]=q[th+(Ch=8|sh)>>2],q[mh+((oh|=3)<<2)>>2]=1065353216,a=q[a+300>>2],q[ph+qh>>2]=q[a+sh>>2],q[ph+vh>>2]=q[a+wh>>2],q[ph+xh>>2]=q[a+Ch>>2]):(sh=(wh=sh<<2)+q[a+296>>2]|0,u[(qh=(vh=oh<<2)+mh|0)>>2]=u[sh>>2]*u[(th=(xh=th<<4)+mh|0)>>2],u[qh+4>>2]=u[sh+4>>2]*u[th+4>>2],u[qh+8>>2]=u[sh+8>>2]*u[th+8>>2],q[mh+((oh|=3)<<2)>>2]=1065353216,a=wh+q[a+300>>2]|0,rh=u[a>>2],uh=u[(qh=ph+xh|0)>>2],u[(mh=ph+vh|0)>>2]=x(rh+uh)-x(rh*uh),rh=u[a+4>>2],uh=u[qh+4>>2],u[mh+4>>2]=x(rh+uh)-x(rh*uh),rh=u[a+8>>2],uh=u[qh+8>>2],u[mh+8>>2]=x(rh+uh)-x(rh*uh)),q[ph+(oh<<2)>>2]=1065353216),L=64+nh|0},n[5]=function(a,Vk){return a|=0,Vk|=0,x(0),x(0),0|((a=u[a>>2])<(Vk=u[Vk>>2])?-1:Vk>2])))for(_j=q[a+12>>2],Zj=q[a+20>>2];u[(Wj=Vj<<2)+_j>>2]=u[vj+Wj>>2]*u[Wj+Zj>>2],(0|(Vj=Vj+1|0))<(0|Yj););if(!((0|(Yj=q[a>>2]))<1))if(_j=q[a+4>>2],yj)for(Wj=vj=0;;){if(q[yj>>2]){if((0|(Vj=q[(Zj=vj<<2)+q[a+16>>2]>>2]))<1)Xj=x(0);else for($j=Vj+Wj|0,ak=q[a+12>>2],Xj=x(0),Vj=Wj;Xj=x(Xj+u[ak+(Vj<<2)>>2]),(0|(Vj=Vj+1|0))<(0|$j););u[xj+Zj>>2]=Xj}if(yj=yj+4|0,Wj=q[_j+(vj<<2)>>2]+Wj|0,!((0|(vj=vj+1|0))<(0|Yj)))break}else for(Zj=q[a+16>>2],vj=yj=0;;){if((0|(Vj=q[(Wj=yj<<2)+Zj>>2]))<=0)Xj=x(0);else for($j=vj+Vj|0,ak=q[a+12>>2],Xj=x(0),Vj=vj;Xj=x(Xj+u[ak+(Vj<<2)>>2]),(0|(Vj=Vj+1|0))<(0|$j););if(u[xj+Wj>>2]=Xj,vj=q[Wj+_j>>2]+vj|0,!((0|(yj=yj+1|0))<(0|Yj)))break}},n[7]=function(a,vj,xj,yj){a|=0,vj|=0,xj|=0,yj|=0;var zj=0,Aj=x(0),Qj=0,Rj=0,Sj=0,Tj=0,Uj=0;if(1<=(0|(Tj=q[a+8>>2])))for(Rj=q[a+12>>2],Sj=q[a+20>>2];u[(Qj=zj<<2)+Rj>>2]=u[vj+Qj>>2]*u[Qj+Sj>>2],(0|(zj=zj+1|0))<(0|Tj););if(!((0|(zj=q[a>>2]))<1))if(Tj=q[a+4>>2],yj)for(Qj=vj=0;;){if(q[yj>>2]){if((0|(zj=q[(Rj=vj<<2)+q[a+16>>2]>>2]))<1)Aj=x(0);else for(Sj=zj+Qj|0,Uj=q[a+12>>2],Aj=x(0),zj=Qj;Aj=x(Aj+u[Uj+(zj<<2)>>2]),(0|(zj=zj+1|0))<(0|Sj););zj=xj+Rj|0,Aj=x(Aj+x(.0010000000474974513)),Rj=x(y(Aj))>2]=Rj,zj=q[a>>2]}if(yj=yj+4|0,Qj=q[Tj+(vj<<2)>>2]+Qj|0,!((0|(vj=vj+1|0))<(0|zj)))break}else for(Rj=q[a+16>>2],vj=yj=0;;){if((0|(zj=q[(Qj=yj<<2)+Rj>>2]))<=0)Aj=x(0);else for(Sj=vj+zj|0,Uj=q[a+12>>2],Aj=x(0),zj=vj;Aj=x(Aj+u[Uj+(zj<<2)>>2]),(0|(zj=zj+1|0))<(0|Sj););if(zj=xj+Qj|0,Aj=x(Aj+x(.0010000000474974513)),Sj=x(y(Aj))>2]=Sj,vj=q[Qj+Tj>>2]+vj|0,!((0|(yj=yj+1|0))>2]))break}},n[8]=function(a,vj,xj,yj,zj,Aj){a|=0,vj|=0,xj|=0,yj|=0,zj|=0,Aj|=0;var Oj,Pj,Bj=0,Cj=0,Dj=0,Ej=0,Fj=0,Gj=0,Hj=0,Ij=0,Kj=0,Lj=0,Mj=x(0),Nj=0,Jj=q[a>>2];if(!((0|Jj)<1))if(Oj=zj<<2,Pj=q[a+4>>2],Aj)for(;;){if(q[Aj>>2]&&(Dj=q[(Bj=Ej<<2)+q[a+16>>2]>>2],Hj=q[xj+Bj>>2],Cj=q[yj+Bj>>2],(Bj=(0|(Ij=w(Cj,zj)))<1)||ca(Hj,0,w(Cj,Oj)),!(Bj|(0|Dj)<1)))for(Kj=Dj+Gj|0,Lj=q[a+20>>2],Bj=Gj;;){for(Mj=u[(Cj=Bj<<2)+Lj>>2],Nj=q[vj+Cj>>2],Fj=0;u[(Cj=(Dj=Fj<<2)+Hj|0)>>2]=u[Cj>>2]+x(Mj*u[Dj+Nj>>2]),(0|Ij)!=(0|(Fj=Fj+1|0)););if(!((0|(Bj=Bj+1|0))<(0|Kj)))break}if(Aj=Aj+4|0,Gj=q[(Ej<<2)+Pj>>2]+Gj|0,!((0|(Ej=Ej+1|0))<(0|Jj)))break}else for(Aj=0;;){if(Dj=q[(Ej=Aj<<2)+q[a+16>>2]>>2],Hj=q[xj+Ej>>2],Cj=q[yj+Ej>>2],(Bj=(0|(Ij=w(Cj,zj)))<1)||ca(Hj,0,w(Cj,Oj)),!(Bj|(0|Dj)<=0))for(Kj=Dj+Gj|0,Lj=q[a+20>>2],Bj=Gj;;){for(Mj=u[(Cj=Bj<<2)+Lj>>2],Nj=q[vj+Cj>>2],Fj=0;u[(Cj=(Dj=Fj<<2)+Hj|0)>>2]=u[Cj>>2]+x(Mj*u[Dj+Nj>>2]),(0|Ij)!=(0|(Fj=Fj+1|0)););if(!((0|(Bj=Bj+1|0))<(0|Kj)))break}if(Gj=q[Ej+Pj>>2]+Gj|0,!((0|(Aj=Aj+1|0))<(0|Jj)))break}},n[9]=function(a){var Me,Ne,Oe,Ie=0,Je=0,Ke=0,Le=0;if(!(q[(a|=0)+648>>2]||(0|(Ie=q[a+332>>2]))<1))for(Ne=(Je=q[a+336>>2])+w(Ie,20)|0,Ie=q[a+424>>2],Le=q[a+444>>2];;){if(q[Ie>>2]&&!((0|(Ke=q[Je+16>>2]))<(a=1)))for(Ke<<=1,Oe=q[Le>>2];u[(Me=(a<<2)+Oe|0)>>2]=-u[Me>>2],(0|(a=a+2|0))<(0|Ke););if(Le=Le+4|0,Ie=Ie+4|0,!((Je=Je+20|0)>>>0>>0))break}},n[10]=function(a,Sm,un){var wn;return $(wn=q[20+(a|=0)>>2],Sm|=0,Sm=(un|=0)>>>0<(Sm=q[a+16>>2]-wn|0)>>>0?un:Sm),q[a+20>>2]=Sm+q[a+20>>2],0|un},n[11]=function(a,Il,Rm,Sm,Tm,Um){a|=0,Il=+Il,Rm|=0,Sm|=0,Tm|=0,Um|=0;var fn,qn,Zm,kn,Vm=0,Wm=0,Xm=0,Ym=0,_m=0,$m=0,an=0,bn=0,cn=0,dn=0,en=0,gn=0,hn=0,jn=0,mn=0;if(q[44+(L=Zm=L-560|0)>>2]=0,h(+Il),Vm=0|b[1],qn=4294967295>>0?0:1,kn=(0|Vm)<-1||(0|Vm)<=-1&&qn?(h(Il=-Il),Vm=0|b[1],b[0],jn=1,3840):2048&Tm?(jn=1,3843):(jn=1&Tm)?3846:3841,2146435072==(2146435072&Vm))_(a,32,Rm,$m=jn+3|0,-65537&Tm),Z(a,kn,jn),Sm=Um>>>5&1,Z(a,Il!=Il?Sm?3867:3871:Sm?3859:3863,3);else if(Il=function Ja(a,ic){var kc,lc,jc=0;if(h(+a),jc=0|b[1],kc=0|b[0],2047!=(0|(jc=(lc=jc)>>>20&2047))){if(!jc)return jc=ic,ic=0==a?0:(a=Ja(0x10000000000000000*a,ic),q[ic>>2]+-64|0),q[jc>>2]=ic,a;q[ic>>2]=jc+-1022,f(0,0|kc),f(1,-2146435073&lc|1071644672),a=+g()}return a}(Il,44+Zm|0),0!=(Il+=Il)&&(q[44+Zm>>2]=q[44+Zm>>2]+-1),fn=16+Zm|0,97==(0|(qn=32|Um))){if(en=(dn=32&Um)?9+kn|0:kn,!(11>>0)&&(Vm=12-Sm|0)){for(gn=8;gn*=16,Vm=Vm+-1|0;);Il=45==r[0|en]?-(gn+(-Il-gn)):Il+gn-gn}for((0|fn)==(0|(Vm=ga((Xm=(Vm=q[44+Zm>>2])>>31)^Vm+Xm,0,fn)))&&(o[15+Zm|0]=48,Vm=15+Zm|0),_m=2|jn,Xm=q[44+Zm>>2],o[0|(cn=Vm+-2|0)]=Um+15,o[Vm+-1|0]=(0|Xm)<0?45:43,Vm=8&Tm,Wm=16+Zm|0;Um=Wm,bn=dn,Xm=y(Il)<2147483648?~~Il:-2147483648,o[0|Wm]=bn|r[Xm+3824|0],1!=((Wm=Um+1|0)-(16+Zm|0)|0)|(0==(Il=16*(Il-(0|Xm)))?!(Vm|0<(0|Sm)):0)||(o[Um+1|0]=46,Wm=Um+2|0),0!=Il;);_(a,32,Rm,$m=(Um=!Sm|(0|Sm)<=((Wm-Zm|0)-18|0)?((fn-(16+Zm|0)|0)-cn|0)+Wm|0:2+((Sm+fn|0)-cn|0)|0)+_m|0,Tm),Z(a,en,_m),_(a,48,Rm,$m,65536^Tm),Z(a,16+Zm|0,Sm=Wm-(16+Zm|0)|0),_(a,48,Um-((Vm=Sm)+(Sm=fn-cn|0)|0)|0,0,0),Z(a,cn,Sm)}else{for(Vm=(0|Sm)<0,0==Il?Ym=q[44+Zm>>2]:(Ym=q[44+Zm>>2]+-28|0,q[44+Zm>>2]=Ym,Il*=268435456),an=Vm?6:Sm,Xm=dn=(0|Ym)<0?48+Zm|0:336+Zm|0;Xm=(Sm=Xm)+4|0,0!=(Il=1e9*(Il-((q[Sm>>2]=Vm=Il<4294967296&0<=Il?~~Il>>>0:0)>>>0))););if((0|Ym)<1)Vm=Xm,Wm=dn;else for(Wm=dn;;){if(cn=(0|Ym)<29?Ym:29,!((Vm=Xm+-4|0)>>>0>>0)){for(Sm=cn,bn=0;mn=bn,bn=q[(en=Vm)>>2],_m=31&Sm,_m=32<=(63&Sm)>>>($m=0)?(Ym=bn<<_m,0):(Ym=(1<<_m)-1&bn>>>32-_m,bn<<_m),$m=Ym+$m|0,$m=(bn=mn+_m|0)>>>0<_m>>>0?$m+1|0:$m,mn=en,en=ad(bn=bd(_m=bn,$m,1e9),M,1e9),q[mn>>2]=_m-en,Wm>>>0<=(Vm=Vm+-4|0)>>>0;);(Sm=bn)&&(q[(Wm=Wm+-4|0)>>2]=Sm)}for(;Wm>>>0<(Vm=Xm)>>>0&&!q[(Xm=Vm+-4|0)>>2];);if(Ym=q[44+Zm>>2]-cn|0,Xm=Vm,!(0<(0|(q[44+Zm>>2]=Ym))))break}if((0|Ym)<=-1)for(hn=1+((an+25|0)/9|0)|0,cn=102==(0|qn);;){if(bn=(0|Ym)<-9?9:0-Ym|0,Vm>>>0<=Wm>>>0)Wm=q[Wm>>2]?Wm:Wm+4|0;else{for(en=1e9>>>bn,_m=-1<>2],q[Xm>>2]=(Sm>>>bn)+Ym,Ym=w(en,Sm&_m),(Xm=Xm+4|0)>>>0>>0;);Wm=q[Wm>>2]?Wm:Wm+4|0,Ym&&(q[Vm>>2]=Ym,Vm=Vm+4|0)}if(Ym=bn+q[44+Zm>>2]|0,Vm=(0|hn)>2?Sm+(hn<<2)|0:Vm,!((0|(q[44+Zm>>2]=Ym))<0))break}if(!(Vm>>>(Xm=0)<=Wm>>>0||(Xm=w(dn-Wm>>2,9),(Sm=q[Wm>>2])>>>0<(Ym=10))))for(;Xm=Xm+1|0,(Ym=w(Ym,10))>>>0<=Sm>>>0;);if((0|(Sm=(an-(102==(0|qn)?0:Xm)|0)-(103==(0|qn)&0!=(0|an))|0))<(w(Vm-dn>>2,9)+-9|0)){if($m=(dn+((Sm=(0|(_m=Sm+9216|0))/9|0)<<2)|0)-4092|0,Ym=10,(0|(Sm=1+(_m-w(Sm,9)|0)|0))<=8)for(;Ym=w(Ym,10),9!=(0|(Sm=Sm+1|0)););if(hn=$m+4|0,((cn=(en=q[$m>>2])-w(Ym,_m=(en>>>0)/(Ym>>>0)|0)|0)||(0|hn)!=(0|Vm))&&(gn=cn>>>0<(Sm=Ym>>>1)>>>0?.5:(0|Vm)==(0|hn)&&(0|Sm)==(0|cn)?1:1.5,Il=1&_m?9007199254740994:9007199254740992,!jn|45!=r[0|kn]||(gn=-gn,Il=-Il),q[$m>>2]=Sm=en-cn|0,Il+gn!=Il)){if(1e9<=(q[$m>>2]=Sm=Sm+Ym|0)>>>0)for(;($m=$m+-4|(q[$m>>2]=0))>>>0>>0&&(q[(Wm=Wm+-4|0)>>2]=0),Sm=q[$m>>2]+1|0,999999999<(q[$m>>2]=Sm)>>>0;);if(Xm=w(dn-Wm>>2,9),!((Sm=q[Wm>>2])>>>0<(Ym=10)))for(;Xm=Xm+1|0,(Ym=w(Ym,10))>>>0<=Sm>>>0;);}Vm=(Sm=$m+4|0)>>>0>>0?Sm:Vm}j:{for(;;){if((cn=Vm)>>>(en=0)<=Wm>>>0)break j;if(q[(Vm=cn+-4|0)>>2])break}en=1}if(103!=(0|qn))_m=8&Tm;else if(an=((Sm=(0|Xm)<(0|(Vm=an||1))&-5<(0|Xm))?-1^Xm:-1)+Vm|0,Um=(Sm?-1:-2)+Um|0,!(_m=8&Tm)){if(Vm=9,en&&(_m=q[cn+-4>>2])&&!((_m>>>(Vm=0))%(Sm=10)))for(;Vm=Vm+1|0,!((_m>>>0)%((Sm=w(Sm,10))>>>0)););Sm=w(cn-dn>>2,9)+-9|0,an=102==(32|Um)?((_m=0)|an)<(0|(Sm=0<(0|(Sm=Sm-Vm|0))?Sm:0))?an:Sm:((_m=0)|an)<(0|(Sm=0<(0|(Sm=(Sm+Xm|0)-Vm|0))?Sm:0))?an:Sm}if($m=0!=(0|(Ym=an|_m)),Sm=a,mn=Rm,Vm=0<(0|Xm)?Xm:0,102!=(0|(bn=32|Um))){if((fn-(Vm=ga((Vm=Xm>>31)+Xm^Vm,0,fn))|0)<=1)for(;o[0|(Vm=Vm+-1|0)]=48,(fn-Vm|0)<2;);o[0|(hn=Vm+-2|0)]=Um,o[Vm+-1|0]=(0|Xm)<0?45:43,Vm=fn-hn|0}if(_(Sm,32,mn,$m=1+(Vm+($m+(an+jn|0)|0)|0)|0,Tm),Z(a,kn,jn),_(a,48,Rm,$m,65536^Tm),102==(0|bn)){for(Sm=16+Zm|8,Xm=16+Zm|9,Wm=Um=dn>>>0>>0?dn:Wm;;){if(Vm=ga(q[Wm>>2],0,Xm),(0|Um)!=(0|Wm)){if(!(Vm>>>0<=16+Zm>>>0))for(;o[0|(Vm=Vm+-1|0)]=48,16+Zm>>>0>>0;);}else(0|Vm)==(0|Xm)&&(o[24+Zm|0]=48,Vm=Sm);if(Z(a,Vm,Xm-Vm|0),!((Wm=Wm+4|0)>>>0<=dn>>>0))break}Ym&&Z(a,3875,1);p:if(!((0|an)<1|cn>>>0<=Wm>>>0))for(;;){if(16+Zm>>>0<(Vm=ga(q[Wm>>2],0,Xm))>>>0)for(;o[0|(Vm=Vm+-1|0)]=48,16+Zm>>>0>>0;);if(Z(a,Vm,(0|an)<9?an:9),an=an+-9|0,cn>>>0<=(Wm=Wm+4|0)>>>0)break p;if(!(0<(0|an)))break}_(a,48,an+9|0,9,0)}else{q:if(!((0|an)<0))for(Um=en?cn:Wm+4|0,Sm=16+Zm|8,dn=16+Zm|9,Xm=Wm;;){if((0|dn)==(0|(Vm=ga(q[Xm>>2],0,dn)))&&(o[24+Zm|0]=48,Vm=Sm),(0|Wm)!=(0|Xm)){if(!(Vm>>>0<=16+Zm>>>0))for(;o[0|(Vm=Vm+-1|0)]=48,16+Zm>>>0>>0;);}else Z(a,Vm,1),Vm=Vm+1|0,(0|an)<1&&!_m||Z(a,3875,1);if(Z(a,bn=Vm,(0|(Vm=dn-Vm|0))<(0|an)?Vm:an),an=an-Vm|0,Um>>>0<=(Xm=Xm+4|0)>>>0)break q;if(!(-1<(0|an)))break}_(a,48,an+18|0,18,0),Z(a,hn,fn-hn|0)}}return _(a,32,Rm,$m,8192^Tm),L=560+Zm|0,0|((0|$m)<(0|Rm)?Rm:$m)},n[12]=function(a,Il){a|=0;var tm=Il|=0;Il=q[Il>>2]+15&-16,q[tm>>2]=Il+16,tm=a,a=function(a,Il,Jl,tm){var zm,wm,um=0,vm=0,xm=0,ym=0;return L=wm=L-32|0,um=(ym=um=2147483647&tm)-1006698496|0,vm=um=(zm=vm=xm=Jl)>>>0<0?um+1|0:um,um=ym-1140785152|0,(0|(um=xm>>>0<0?um+1|0:um))==(0|vm)&zm>>>0>>0|vm>>>0>>0?(um=tm<<4|Jl>>>28,Jl=Jl<<4|Il>>>28,134217728==(0|(xm=Il&=268435455))&1<=a>>>0|134217728>>0?(um=um+1073741824|0,(a=Jl+1|0)>>>0<1&&(um=um+1|0),vm=a):(um=um-(((vm=Jl)>>>0<0)+-1073741824|0)|0,a|134217728^xm||((a=vm+(1&vm)|0)>>>0>>0&&(um=um+1|0),vm=a))):(!xm&2147418112==(0|ym)?!(a|Il):2147418112==(0|ym)&xm>>>0<0|ym>>>0<2147418112)?(um=2146435072,1140785151==((vm=0)|ym)&4294967295>>0|1140785151>>0||(xm=ym>>>16)>>>(um=0)<15249||(function(a,Il,Jl,tm,Bm,Cm){var Jm,Km,Hm=0,Im=0;64&Cm?(Il=31&(Jl=Cm-64|0),Il=32<=(63&Jl)>>>0?(Jl=0,Bm>>>Il):(Jl=Bm>>>Il,((1<>>Il),Bm=tm=0):Cm&&(Im=Bm,Hm=31&(Km=64-Cm|0),Km=32<=(63&Km)>>>0?(Im=tm<>>32-Hm|Im<>>0?(Hm=0,Jl>>>Il):(Hm=Jl>>>Il,((1<>>Il),Il|=Km,Jl=Hm|Im,Hm=tm,tm=31&Cm,tm=32<=(63&Cm)>>>0?(Im=0,Bm>>>tm):(Im=Bm>>>tm,((1<>>tm),Bm=Im),q[a>>2]=Il,q[4+a>>2]=Jl,q[8+a>>2]=tm,q[12+a>>2]=Bm}(wm,a,Il,Jl,um=65535&tm|65536,15361-xm|0),function(a,Il,Jl,tm,Bm,Cm){var Fm,Dm,Em=0;64&Cm?(tm=Il,Il=31&(Bm=Cm+-64|0),32<=(63&Bm)>>>0?(Bm=tm<>>32-Il|Jl<>>0?(Em=Dm<>>32-tm|Bm<>>0?(Cm=0,tm>>>=Bm):(Cm=tm>>>Bm,tm=((1<>>Bm),tm|=Dm,Bm=Cm|Em,Cm=Il,Il=31&Fm,Il=32<=(63&Fm)>>>0?(Em=Cm<>>32-Il|Jl<>2]=Il,q[4+a>>2]=Jl,q[8+a>>2]=tm,q[12+a>>2]=Bm}(16+wm|0,a,Il,Jl,um,xm+-15233|0),Jl=q[4+wm>>2],a=q[8+wm>>2],um=q[12+wm>>2]<<4|a>>>28,vm=a<<4|Jl>>>28,134217728==(0|(Jl=a=268435455&Jl))&1<=(Il=q[wm>>2]|(0!=(q[16+wm>>2]|q[24+wm>>2])|0!=(q[20+wm>>2]|q[28+wm>>2])))>>>0|134217728>>0?((a=vm+1|0)>>>0<1&&(um=um+1|0),vm=a):Il|134217728^Jl||((a=vm+(1&vm)|0)>>>0>>0&&(um=um+1|0),vm=a))):(vm=Jl<<4|Il>>>28,um=524287&(um=tm<<4|Jl>>>28)|2146959360),L=32+wm|0,f(0,0|vm),f(1,-2147483648&tm|um),+g()}(q[Il>>2],q[Il+4>>2],q[Il+8>>2],q[Il+12>>2]),v[tm>>3]=a},n[13]=function(a){return 0},n[14]=function(a,Il,tm){Il|=0,tm|=0;var Om,Cm,Bm=0,Lm=0,Mm=0,Nm=0;for(L=Cm=L-32|0,Bm=q[28+(a|=0)>>2],q[16+Cm>>2]=Bm,Mm=q[a+20>>2],q[28+Cm>>2]=tm,q[24+Cm>>2]=Il,Mm=(q[20+Cm>>2]=Il=Mm-Bm|0)+tm|0,Nm=2,Il=16+Cm|0;;){a:{if((Lm=(Bm=0)|K(q[a+60>>2],0|Il,0|Nm,12+Cm|0))&&(q[2086]=Lm,Bm=-1),(0|(Bm=Bm?q[12+Cm>>2]=-1:q[12+Cm>>2]))==(0|Mm))Il=q[a+44>>2],q[a+28>>2]=Il,q[a+20>>2]=Il,q[a+16>>2]=Il+q[a+48>>2],a=tm;else{if(-1<(0|Bm))break a;q[a+28>>2]=0,q[a+16>>2]=0,q[a+20>>2]=0,q[a>>2]=32|q[a>>2],2!=((a=0)|Nm)&&(a=tm-q[Il+4>>2]|0)}return L=32+Cm|0,0|a}Lm=q[Il+4>>2],q[(Il=(Om=Lm>>>0>>0)?Il+8|0:Il)>>2]=(Lm=Bm-(Om?Lm:0)|0)+q[Il>>2],q[Il+4>>2]=q[Il+4>>2]-Lm,Mm=Mm-Bm|0,Nm=Nm-Om|0}},n[15]=function(a,Il,tm,Bm){return M=0},{d:function(){},e:function(){return 83886080},f:function(){return 5},g:function(a,vj){return vj|=0,L=vj=L-16|0,a=(a|=0)?sa(a)?(Y(4,2150,0),0):r[a+4|0]:(q[vj+4>>2]=1444,q[vj>>2]=2267,Y(4,1294,vj),0),L=vj+16|0,0|a},h:function(a,vj){var wj;return vj|=0,L=wj=L-48|0,a=(a|=0)?(a+63&-64)!=(0|a)?(q[36+wj>>2]=1522,q[32+wj>>2]=2284,Y(4,1294,32+wj|0),0):(vj+63&-64)==(0|vj)&&vj?function(a,Vk){var pl,Wk=0,Xk=0,Yk=0,Zk=0,_k=0,$k=0,al=0,bl=0,cl=0,dl=0,el=0,fl=0,gl=0,hl=0,il=0,jl=0,kl=0,ll=0,ml=0,nl=0,ol=0;L=_k=(pl=Xk=L)-704&-64;a:if(Vk>>>0<=1343)Y(4,1235,0);else if(sa(a))Y(4,1469,0);else if(Xk=r[0|(nl=a+4|0)]){if(!(6<=Xk>>>0)){(jl=1==(0|!r[a+5|0]))||(da(nl,1),X(a- -64|0,4,160)),ca(_k- -64|0,0,640),na(a,_k- -64|0),Xk=a+Vk|0,Vk=q[_k+64>>2];b:{c:{d:{if(5<=(il=r[a+4|0])>>>0){if(Vk>>>0>>0|Xk>>>0>>0)break c;if((Zk=Vk+256|0)>>>0>>0)break c;if(Zk>>>0<=Xk>>>0)break d;break c}if(Vk>>>0>>0|Xk>>>0>>0)break c;if((Zk=Vk+128|0)>>>0>>0|Xk>>>0>>0)break c}if(!((Yk=q[_k+68>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Yk=Yk- -64|0)>>>0>>0|Xk>>>0>>0||(0|(dl=q[Vk>>2]))<0||(Zk=q[_k+72>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=(Wk=Zk)+(Zk=dl<<2)|0)>>>0>>0|Xk>>>0>>0||(al=q[_k+76>>2])>>>0>>0|Xk>>>0>>0|al>>>0>>0||(Wk=(dl<<6)+al|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+80>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+84>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+88>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+92>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+96>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+100>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+4>>2]))<0||(Zk=q[_k+104>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||($k=(Yk=Zk)+(Zk=Wk<<2)|0)>>>0>>0|Xk>>>0<$k>>>0||(Yk=q[_k+108>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0<$k>>>0||(Wk=Yk+(Wk<<6)|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+112>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+116>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+120>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+124>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+128>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+132>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+136>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+8>>2]))<0||(Zk=q[_k+140>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=(el=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+144>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+148>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+156>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+160>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+164>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+el|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+12>>2]))<0||(Zk=q[_k+172>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=(fl=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+176>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+fl|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+180>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+fl|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+188>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=Zk+fl|0)>>>0>>0|Xk>>>0>>0||(0|(Yk=q[Vk+16>>2]))<0||(Zk=q[_k+192>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||($k=(Wk=Zk)+(Zk=Yk<<2)|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+196>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+200>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+204>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+208>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+(Yk<<6)|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+212>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+216>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+220>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+228>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+232>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+236>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+240>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+244>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Zk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+248>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||(Wk=Wk+Yk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+252>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+256>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+260>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+264>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+268>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Yk=q[_k+272>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|($k=q[Vk+20>>2]))<0||(Yk=q[_k+276>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0||(gl=(Wk=Yk)+(Yk=$k<<2)|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+280>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||($k=Wk+($k<<6)|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+284>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+288>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+292>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+296>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+300>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+308>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+312>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+Yk|0)>>>0>>0|Xk>>>0<$k>>>0||(0|(gl=q[Vk+24>>2]))<0||(Wk=q[_k+336>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+(gl<<2)|0)>>>0>>0|Xk>>>0<$k>>>0||(0|(gl=q[Vk+28>>2]))<0||(Wk=q[_k+340>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=(ll=gl<<2)+Wk|0)>>>0>>0|Xk>>>0<$k>>>0||(Wk=q[_k+344>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||($k=Wk+ll|0)>>>0>>0|Xk>>>0<$k>>>0||(0|(gl=q[Vk+32>>2]))<0||(Wk=q[_k+356>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0<$k>>>0||(gl=($k=gl<<2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+360>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+364>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+368>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+372>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+376>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+380>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(gl=Wk+$k|0)>>>0>>0|Xk>>>0>>0||(0|(bl=q[Vk+36>>2]))<0||(Wk=q[_k+392>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=(gl=bl<<2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+396>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+gl|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+400>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+gl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+40>>2]))<0||(Wk=q[_k+412>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+44>>2]))<0||(Wk=q[_k+424>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+48>>2]))<0||(Wk=q[_k+428>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=(cl<<=2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+432>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+cl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+52>>2]))<0||(Wk=q[_k+416>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=(cl<<=2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+420>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+cl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+56>>2]))<0||(Wk=q[_k+552>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+60>>2]))<0||(Wk=q[_k+556>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+64>>2]))<0||(Wk=q[_k+560>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<1)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+68>>2]))<0||(Wk=q[_k+564>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+72>>2]))<0||(Wk=q[_k+568>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(cl=(bl=Wk)+(Wk=cl<<2)|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+572>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+576>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+580>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+584>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(bl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+76>>2]))<0||(Wk=q[_k+588>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(cl=(bl=cl<<2)+Wk|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+592>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+596>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+80>>2]))<0||(Wk=q[_k+600>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(hl=(bl=Wk)+(Wk=cl<<2)|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+604>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=bl+(cl<<6)|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+608>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+612>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+616>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+620>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+624>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+628>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(cl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(bl=q[_k+632>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0||(bl=Wk+bl|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+84>>2]))<0||(Wk=q[_k+636>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0||(Wk=q[_k+640>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(bl=Wk+(cl<<1)|0)>>>0>>0|Xk>>>0>>0||(0|(cl=q[Vk+88>>2]))<0||(Wk=q[_k+644>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0||(Wk=Wk+(cl<<2)|0)>>>0>>0|Xk>>>0>>0)){if(!(il>>>0<2)){if((bl=q[_k+168>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0)break c;if((Wk=bl+el|0)>>>0>>0|Xk>>>0>>0)break c;if(!(il>>>0<4)){if((bl=q[_k+324>>2])>>>0>>0|Xk>>>0>>0|bl>>>0>>0)break c;if((bl=Yk+bl|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+328>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((bl=Wk+Yk|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+332>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((bl=Wk+Yk|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+152>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((el=Wk+el|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+184>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((el=Wk+fl|0)>>>0>>0|Xk>>>0>>0)break c;if((Wk=q[_k+224>>2])>>>0>>0|Xk>>>0>>0|Wk>>>0>>0)break c;if((Wk=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(el=q[Vk+92>>2]))<0)break c;if((Zk=q[_k+648>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((el=(Wk=el<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+652>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((el=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+656>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(el=q[Vk+96>>2]))<0)break c;if((Zk=q[_k+660>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((el=(Wk=el<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+664>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((el=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+668>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+304>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+316>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+320>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+100>>2]))<0)break c;if((Zk=q[_k+436>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+440>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+444>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+104>>2]))<0)break c;if((Zk=q[_k+448>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Zk)+(Zk=Wk<<2)|0)>>>0>>0|Xk>>>0>>0)break c;if((Yk=q[_k+452>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Yk=q[_k+456>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Yk=q[_k+460>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Yk=q[_k+464>>2])>>>0>>0|Xk>>>0>>0|Yk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+108>>2]))<0)break c;if((Zk=q[_k+480>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+484>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+488>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+112>>2]))<0)break c;if((Zk=q[_k+504>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+508>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+512>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+116>>2]))<0)break c;if((Zk=q[_k+528>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Zk+(Wk<<2)|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+120>>2]))<0)break c;if((Zk=q[_k+532>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+536>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+540>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((0|(Wk=q[Vk+124>>2]))<0)break c;if((Zk=q[_k+544>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Yk=(Wk<<=2)+Zk|0)>>>0>>0|Xk>>>0>>0)break c;if((Zk=q[_k+548>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0)break c;if((Wk=Wk+Zk|0)>>>0>>0|Xk>>>0>>0)break c}}if(il>>>0<5)break b;if(!((Zk=q[_k+348>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+ll|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+352>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+ll|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+384>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+$k|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+388>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+$k|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+404>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+gl|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+408>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Zk+gl|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+128>>2]))<0||(Zk=q[_k+468>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+472>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+476>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+132>>2]))<0||(Zk=q[_k+492>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+496>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+500>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Yk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(0|(Wk=q[Vk+136>>2]))<0||(Zk=q[_k+516>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=(Yk=Wk<<2)+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+520>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Wk=Yk+Zk|0)>>>0>>0|Xk>>>0>>0||(Zk=q[_k+524>>2])>>>0>>0|Xk>>>0>>0|Zk>>>0>>0||(Zk=Yk+Zk|0)>>>0>>0)&&Zk>>>0<=Xk>>>0)break b}}Y(4,1760,0),da(nl,1),X(a- -64|0,4,160);break a}jl||(ya(a),o[a+5|0]=0,Vk=q[_k+64>>2],dl=q[Vk>>2],al=q[_k+76>>2],il=r[a+4|0]);f:{if((a=0)<(0|dl)){for(;;){if(63>>0)break f;if((0|dl)==(0|(a=a+1|0)))break}if(Wk=Vk+48|0,(Xk=0)<(0|(a=q[Vk>>2]))){for(Zk=q[Vk+48>>2],Yk=q[_k+80>>2];;){if((0|(al=q[Yk+(Xk<<2)>>2]))<0|(0|Zk)<=(0|al))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(gl=Vk+24|0,Zk=q[Vk+24>>2],$k=q[_k+88>>2],dl=q[_k+84>>2],Xk=0;;){if(Yk=q[(al=Xk<<2)+$k>>2]){if((0|Yk)<0|(0|Zk)<(0|Yk))break f;if((0|(al=q[al+dl>>2]))<0|(0|Zk)<=(0|al))break f;if((Yk=Yk+al|0)>>>31|(0|Zk)<(0|Yk))break f}if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+92>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+96>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+100>>2];;){if((0|(Yk=q[Zk+(Xk<<2)>>2]))<-1|(0|a)<=(0|Yk))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}}else gl=Vk+24|0}else gl=Vk+24|0,Wk=Vk+48|0;if((a=0)<(0|(Xk=q[Vk+4>>2]))){for(Zk=q[_k+108>>2];;){if(63>>0)break f;if((0|Xk)==(0|(a=a+1|0)))break}if($k=(Zk=q[Vk+48>>2])+-1|0,!(((Xk=0)|(a=q[Vk+4>>2]))<=0)){for(Yk=q[_k+112>>2];;){if((0|(al=q[Yk+(Xk<<2)>>2]))<0|(0|Zk)<=(0|al))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+116>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+120>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Zk=q[Vk>>2],Xk=0,Yk=q[_k+124>>2];;){if((0|(al=q[Yk+(Xk<<2)>>2]))<-1|(0|Zk)<=(0|al))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+128>>2];;){if((0|(Yk=q[Zk+(Xk<<2)>>2]))<-1|(0|a)<=(0|Yk))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Zk=q[_k+132>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=Vk+8|0,al=Vk+12|0,dl=q[_k+136>>2],Xk=0;;){if(1<(fl=q[(el=Xk<<2)+Zk>>2])>>>0)break f;if((0|(el=q[dl+el>>2]))<0|(0|el)>=q[(fl-1|0?Yk:al)>>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}}}else $k=q[Wk>>2]+-1|0;if((a=0)<(0|(Xk=q[Vk+8>>2]))){for(Zk=q[_k+140>>2];;){if((0|(Yk=q[Zk+(a<<2)>>2]))<0|(0|$k)<(0|Yk))break f;if((0|Xk)==(0|(a=a+1|0)))break}for(ll=Vk+28|0,Zk=q[Vk+28>>2],dl=q[_k+148>>2],el=q[_k+144>>2],a=0;;){if(Yk=q[(al=a<<2)+dl>>2]){if((0|Yk)<0|(0|Zk)<(0|Yk))break f;if((0|(al=q[al+el>>2]))<0|(0|Zk)<=(0|al))break f;if((Yk=Yk+al|0)>>>31|(0|Zk)<(0|Yk))break f}if((0|Xk)==(0|(a=a+1|0)))break}for(a=0,Yk=q[_k+156>>2],al=q[_k+164>>2],dl=q[_k+160>>2];;){if((0|(el=q[(Zk=a<<2)+dl>>2]))<1)break f;if((0|(fl=q[Zk+al>>2]))<1)break f;if((0|(Zk=q[Yk+Zk>>2]))<1|(0|Zk)!=(0|w(fl+1|0,el+1|0)))break f;if((0|Xk)==(0|(a=a+1|0)))break}}else ll=Vk+28|0;if((a=0)<(0|(Yk=q[Vk+12>>2]))){for(Xk=q[_k+172>>2];;){if((0|(Zk=q[Xk+(a<<2)>>2]))<0|(0|$k)<(0|Zk))break f;if((0|Yk)==(0|(a=a+1|0)))break}for(bl=Vk+32|0,Xk=q[Vk+32>>2],$k=q[_k+180>>2],dl=q[_k+176>>2],a=0;;){if(Zk=q[(al=a<<2)+$k>>2]){if((0|Zk)<0|(0|Xk)<(0|Zk))break f;if((0|(al=q[al+dl>>2]))<0|(0|Xk)<=(0|al))break f;if((Zk=Zk+al|0)>>>31|(0|Xk)<(0|Zk))break f}if((0|Yk)==(0|(a=a+1|0)))break}}else bl=Vk+32|0;Zk=Vk+16|0;m:{n:{if(!(((a=0)|(Xk=q[Vk+16>>2]))<=0)){for(Yk=q[_k+208>>2];;){if(63>>0)break f;if((0|Xk)==(0|(a=a+1|0)))break}if(!(((Xk=0)|(a=q[Zk>>2]))<=0)){for(Yk=q[Wk>>2],al=q[_k+212>>2];;){if((0|($k=q[al+(Xk<<2)>>2]))<0|(0|Yk)<=(0|$k))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(nl=Vk+36|0,Yk=q[Vk+36>>2],dl=q[_k+220>>2],el=q[_k+216>>2],Xk=0;;){if(al=q[($k=Xk<<2)+dl>>2]){if((0|al)<0|(0|Yk)<(0|al))break f;if((0|($k=q[$k+el>>2]))<0|(0|Yk)<=(0|$k))break f;if((al=al+$k|0)>>>31|(0|Yk)<(0|al))break f}if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Yk=q[_k+228>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Yk=q[_k+232>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=q[Vk>>2],Xk=0,al=q[_k+236>>2];;){if((0|($k=q[al+(Xk<<2)>>2]))<-1|(0|Yk)<=(0|$k))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=q[Vk+4>>2],Xk=0,al=q[_k+240>>2];;){if((0|($k=q[al+(Xk<<2)>>2]))<-1|(0|Yk)<=(0|$k))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=q[_k+244>>2],Xk=0;;){if(q[Yk+(Xk<<2)>>2]<0)break f;if((0|a)==(0|(Xk=Xk+1|0)))break}break n}}al=Vk+68|0,nl=Vk+36|0;break m}for(Yk=q[_k+252>>2],Xk=0;;){if(q[Yk+(Xk<<2)>>2]<0)break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(al=q[Vk+60>>2],Xk=0,$k=q[_k+256>>2];;){if((dl=q[(dl=Xk<<2)+$k>>2]+(q[Yk+dl>>2]<<1)|0)>>>31|(0|al)<(0|dl))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Yk=q[Vk+64>>2],dl=q[_k+264>>2],el=q[_k+260>>2],Xk=0;;){if(al=q[($k=Xk<<2)+dl>>2]){if((0|al)<0|(0|Yk)<(0|al))break f;if((0|($k=q[$k+el>>2]))<0|(0|Yk)<=(0|$k))break f;if((al=al+$k|0)>>>31|(0|Yk)<(0|al))break f}if((0|a)==(0|(Xk=Xk+1|0)))break}for(al=Vk+68|0,Yk=q[Vk+68>>2],el=q[_k+272>>2],fl=q[_k+268>>2],Xk=0;;){if($k=q[(dl=Xk<<2)+el>>2]){if((0|$k)<0|(0|Yk)<(0|$k))break f;if((0|(dl=q[dl+fl>>2]))<0|(0|Yk)<=(0|dl))break f;if(($k=$k+dl|0)>>>31|(0|Yk)<(0|$k))break f}if((0|a)==(0|(Xk=Xk+1|0)))break}}p:{q:{if(!(((a=0)|(Xk=q[Vk+20>>2]))<=0)){for(Yk=q[_k+280>>2];;){if(63>>0)break f;if((0|Xk)==(0|(a=a+1|0)))break}if(!(((a=0)|(Xk=q[Vk+20>>2]))<=0)){for(Yk=q[_k+296>>2];;){if(1>2])break f;if((0|Xk)==(0|(a=a+1|0)))break}for(Yk=q[_k+300>>2],a=0;;){if(q[Yk+(a<<2)>>2]<0)break f;if((0|Xk)==(0|(a=a+1|0)))break}break q}}a=q[Vk+52>>2];break p}for(a=q[Vk+52>>2],el=q[_k+312>>2],fl=q[_k+308>>2],$k=0;;){if(Yk=q[(dl=$k<<2)+el>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(dl=q[dl+fl>>2]))<0|(0|a)<=(0|dl))break f;if((Yk=Yk+dl|0)>>>31|(0|a)<(0|Yk))break f}if((0|Xk)==(0|($k=$k+1|0)))break}}if(Yk=q[Vk+40>>2],(Xk=0)<(0|($k=q[Vk+8>>2])))for(dl=q[_k+344>>2],el=q[_k+156>>2];;){if((fl=q[(fl=Xk<<2)+dl>>2]+(q[el+fl>>2]<<1)|0)>>>31|(0|Yk)<(0|fl))break f;if((0|$k)==(0|(Xk=Xk+1|0)))break}if((Xk=0)<(0|($k=q[bl>>2]))){for(dl=q[_k+376>>2];;){if(1>2])break f;if((0|$k)==(0|(Xk=Xk+1|0)))break}for(Xk=0,dl=q[_k+380>>2];;){if(1>2])break f;if((0|$k)==(0|(Xk=Xk+1|0)))break}}if((Xk=0)<(0|($k=q[Zk>>2])))for(dl=q[_k+400>>2],el=q[_k+252>>2];;){if((fl=q[(fl=Xk<<2)+dl>>2]+(q[el+fl>>2]<<1)|0)>>>31|(0|Yk)<(0|fl))break f;if((0|$k)==(0|(Xk=Xk+1|0)))break}if((Xk=0)<(0|(Yk=q[Vk+44>>2])))for(dl=q[_k+424>>2];;){if((0|(el=q[dl+(Xk<<2)>>2]))<0|(0|a)<=(0|el))break f;if((0|Yk)==(0|(Xk=Xk+1|0)))break}if(1<=(0|(el=q[Wk>>2])))for(Xk=0,fl=q[_k+432>>2],cl=q[_k+428>>2];;){if(Wk=q[(dl=Xk<<2)+fl>>2]){if((0|Wk)<0|(0|Yk)<(0|Wk))break f;if((0|(dl=q[cl+dl>>2]))<0|(0|Yk)<=(0|dl))break f;if((Wk=Wk+dl|0)>>>31|(0|Yk)<(0|Wk))break f}if((0|el)==(0|(Xk=Xk+1|0)))break}if(1<=(0|a))for(Yk=q[Vk+56>>2],Xk=0,el=q[_k+420>>2],fl=q[_k+416>>2];;){if(Wk=q[(dl=Xk<<2)+el>>2]){if((0|Wk)<0|(0|Yk)<(0|Wk))break f;if((0|(dl=q[dl+fl>>2]))<0|(0|Yk)<=(0|dl))break f;if((Wk=Wk+dl|0)>>>31|(0|Yk)<(0|Wk))break f}if((0|(Xk=Xk+1|0))==(0|a))break}if((a=0)<(0|(Xk=q[al>>2])))for(Yk=q[_k+564>>2];;){if((0|(al=q[Yk+(a<<2)>>2]))<-1|(0|$k)<=(0|al))break f;if((0|Xk)==(0|(a=a+1|0)))break}if(a=q[Vk+76>>2],1<=(0|(al=q[Vk+72>>2])))for(Xk=0,$k=q[_k+572>>2],dl=q[_k+568>>2];;){if(Yk=q[(Wk=Xk<<2)+$k>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(Wk=q[Wk+dl>>2]))<0|(0|a)<=(0|Wk))break f;if((Yk=Wk+Yk|0)>>>31|(0|a)<(0|Yk))break f}if((0|al)==(0|(Xk=Xk+1|0)))break}if((Xk=0)<(0|a)){for(Yk=q[_k+588>>2];;){if(1>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Wk=q[_k+592>>2],Xk=0;;){if(1<(dl=q[($k=Xk<<2)+Yk>>2])>>>0)break f;if((0|($k=q[Wk+$k>>2]))<0|(0|$k)>=q[(dl-1|0?Zk:Vk)>>2])break f;if((0|a)==(0|(Xk=Xk+1|0)))break}for(Xk=0,Yk=q[_k+596>>2];;){if((0|(Wk=q[Yk+(Xk<<2)>>2]))<-1|(0|al)<=(0|Wk))break f;if((0|a)==(0|(Xk=Xk+1|0)))break}}s:{if(!(((a=0)|($k=q[Vk+80>>2]))<=0)){for(Xk=q[_k+604>>2];;){if(63>>0)break f;if((0|$k)==(0|(a=a+1|0)))break}if(!(((a=0)|($k=q[Vk+80>>2]))<=0)){for(Xk=q[Vk+48>>2],Yk=q[_k+608>>2];;){if((0|(al=q[Yk+(a<<2)>>2]))<0|(0|Xk)<=(0|al))break f;if((0|$k)==(0|(a=a+1|0)))break}for(el=q[Vk+88>>2],al=q[_k+616>>2],Wk=q[_k+612>>2],a=0;;){if(Xk=q[(Yk=a<<2)+al>>2]){if((0|Xk)<0|(0|el)<(0|Xk))break f;if((0|(Yk=q[Wk+Yk>>2]))<0|(0|el)<=(0|Yk))break f;if((Xk=Xk+Yk|0)>>>31|(0|el)<(0|Xk))break f}if((0|$k)==(0|(a=a+1|0)))break}for(Zk=q[Zk>>2],al=q[_k+620>>2],a=0;;){if((0|(Xk=q[al+(a<<2)>>2]))<0|(0|Zk)<=(0|Xk))break f;if((0|$k)==(0|(a=a+1|0)))break}for(Wk=q[_k+624>>2],a=0;;){if((0|(Xk=q[Wk+(a<<2)>>2]))<0|(0|Zk)<=(0|Xk))break f;if((0|$k)==(0|(a=a+1|0)))break}for(Xk=q[Vk+84>>2],dl=q[_k+632>>2],fl=q[_k+628>>2],a=0;;){if(Yk=q[(cl=a<<2)+dl>>2]){if((0|Yk)<0|(0|Xk)<(0|Yk))break f;if((0|(cl=q[cl+fl>>2]))<0|(0|Xk)<=(0|cl))break f;if((Yk=Yk+cl|0)>>>31|(0|Xk)<(0|Yk))break f}if((0|$k)==(0|(a=a+1|0)))break}for(hl=q[_k+640>>2],Xk=q[_k+252>>2],Yk=0;;){if(0<(0|(jl=q[(a=Yk<<2)+dl>>2])))for(cl=hl+(q[a+fl>>2]<<1)|0,ol=q[Xk+(q[a+Wk>>2]<<2)>>2],kl=q[Xk+(q[a+al>>2]<<2)>>2],a=0;;){if((0|ol)<=s[cl+(2|(ml=a<<1))>>1]|(0|kl)<=s[cl+ml>>1])break f;if(!((0|(a=a+2|0))<(0|jl)))break}if((0|$k)==(0|(Yk=Yk+1|0)))break}break s}}Zk=q[Vk+16>>2],el=q[Vk+88>>2]}if(!((255&il)>>>0<2)){if((a=0)<(0|(dl=q[Vk+8>>2])))for(Xk=q[_k+168>>2];;){if(1>2])break f;if((0|dl)==(0|(a=a+1|0)))break}if(!((255&il)>>>0<4)){if(al=q[Vk+56>>2],1<=(0|(fl=q[Vk+20>>2])))for(Wk=q[_k+332>>2],cl=q[_k+328>>2],a=0;;){if(Xk=q[(Yk=a<<2)+Wk>>2]){if((0|Xk)<0|(0|al)<(0|Xk))break f;if((0|(Yk=q[Yk+cl>>2]))<0|(0|al)<=(0|Yk))break f;if((Xk=Xk+Yk|0)>>>31|(0|al)<(0|Xk))break f}if((0|fl)==(0|(a=a+1|0)))break}if((0|(a=q[Vk+92>>2]))!=q[Vk+96>>2])break f;if(1<=(0|dl))for(cl=q[_k+152>>2],Xk=0,hl=q[_k+148>>2];;){if(Yk=q[(Wk=Xk<<2)+hl>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(Wk=q[Wk+cl>>2]))<0|(0|a)<=(0|Wk))break f;if((Yk=Wk+Yk|0)>>>31|(0|a)<(0|Yk))break f}if((0|dl)==(0|(Xk=Xk+1|0)))break}if(1<=(0|(ol=q[Vk+12>>2])))for(cl=q[_k+184>>2],Xk=0,hl=q[_k+180>>2];;){if(Yk=q[(Wk=Xk<<2)+hl>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(Wk=q[Wk+cl>>2]))<0|(0|a)<=(0|Wk))break f;if((Yk=Wk+Yk|0)>>>31|(0|a)<(0|Yk))break f}if((0|ol)==(0|(Xk=Xk+1|0)))break}if(1<=(0|Zk))for(cl=q[_k+224>>2],Xk=0,hl=q[_k+220>>2];;){if(Yk=q[(Wk=Xk<<2)+hl>>2]){if((0|Yk)<0|(0|a)<(0|Yk))break f;if((0|(Wk=q[Wk+cl>>2]))<0|(0|a)<=(0|Wk))break f;if((Yk=Wk+Yk|0)>>>31|(0|a)<(0|Yk))break f}if((0|Zk)==(0|(Xk=Xk+1|0)))break}if((Xk=0)<(0|fl)){for(Yk=q[_k+304>>2];;){if(1>2])break f;if((0|fl)==(0|(Xk=Xk+1|0)))break}for(Yk=q[Vk+100>>2],hl=q[_k+320>>2],jl=q[_k+316>>2],Xk=0;;){if(Wk=q[(cl=Xk<<2)+hl>>2]){if((0|Wk)<0|(0|Yk)<(0|Wk))break f;if((0|(cl=q[cl+jl>>2]))<0|(0|Yk)<=(0|cl))break f;if((Wk=Wk+cl|0)>>>31|(0|Yk)<(0|Wk))break f}if((0|fl)==(0|(Xk=Xk+1|0)))break}}else Yk=q[Vk+100>>2];if(1<=(0|Yk)){for(cl=q[_k+440>>2],Xk=0,jl=q[_k+436>>2];;){if(Wk=q[(hl=Xk<<2)+cl>>2]){if((0|Wk)<0|(0|al)<(0|Wk))break f;if((0|(hl=q[hl+jl>>2]))<0|(0|al)<=(0|hl))break f;if((Wk=Wk+hl|0)>>>31|(0|al)<(0|Wk))break f}if((0|Yk)==(0|(Xk=Xk+1|0)))break}for(al=q[_k+444>>2],Xk=0;;){if((0|(hl=q[(Wk=Xk<<2)+al>>2]))<0|(0|hl)>=q[Wk+cl>>2])break f;if((0|Yk)==(0|(Xk=Xk+1|0)))break}}if((al=0)<(0|(Xk=q[Vk+104>>2]))){for(Wk=q[_k+448>>2];;){if((0|(cl=q[Wk+(al<<2)>>2]))<0|(0|Yk)<=(0|cl))break f;if((0|Xk)==(0|(al=al+1|0)))break}for(Wk=q[Vk+116>>2],hl=q[_k+464>>2],jl=q[_k+460>>2],Yk=0;;){if(al=q[(cl=Yk<<2)+hl>>2]){if((0|al)<0|(0|Wk)<(0|al))break f;if((0|(cl=q[cl+jl>>2]))<0|(0|Wk)<=(0|cl))break f;if((al=al+cl|0)>>>31|(0|Wk)<(0|al))break f}if((0|Xk)==(0|(Yk=Yk+1|0)))break}}else Wk=q[Vk+116>>2];if((Yk=0)<(0|(cl=q[Vk+108>>2]))){for(al=q[_k+480>>2];;){if((0|(hl=q[al+(Yk<<2)>>2]))<0|(0|dl)<=(0|hl))break f;if((0|cl)==(0|(Yk=Yk+1|0)))break}for(hl=q[_k+488>>2],kl=q[_k+484>>2],Yk=0;;){if(al=q[(dl=Yk<<2)+hl>>2]){if((0|al)<0|(0|Xk)<(0|al))break f;if((0|(dl=q[dl+kl>>2]))<0|(0|Xk)<=(0|dl))break f;if((al=al+dl|0)>>>31|(0|Xk)<(0|al))break f}if((0|cl)==(0|(Yk=Yk+1|0)))break}for(hl=q[ll>>2],Yk=q[_k+456>>2],dl=q[_k+452>>2],al=0;;){if(ml=q[kl+(al<<2)>>2]<<2,jl=q[ml+Yk>>2]){if((0|jl)<0|(0|hl)<(0|jl))break f;if((0|(ml=q[dl+ml>>2]))<0|(0|hl)<=(0|ml))break f;if((0|(jl=jl+ml|0))<0|(0|hl)<(0|jl))break f}if((0|cl)==(0|(al=al+1|0)))break}}else Yk=q[_k+456>>2],dl=q[_k+452>>2];if((al=0)<(0|(cl=q[Vk+112>>2]))){for(hl=q[_k+504>>2];;){if((0|(jl=q[hl+(al<<2)>>2]))<0|(0|Zk)<=(0|jl))break f;if((0|cl)==(0|(al=al+1|0)))break}for(kl=q[_k+512>>2],jl=q[_k+508>>2],Zk=0;;){if(al=q[(hl=Zk<<2)+kl>>2]){if((0|al)<0|(0|Xk)<(0|al))break f;if((0|(hl=q[hl+jl>>2]))<0|(0|Xk)<=(0|hl))break f;if((al=al+hl|0)>>>31|(0|Xk)<(0|al))break f}if((0|cl)==(0|(Zk=Zk+1|0)))break}for(al=q[nl>>2],Zk=0;;){if(kl=q[jl+(Zk<<2)>>2]<<2,hl=q[kl+Yk>>2]){if((0|hl)<0|(0|al)<(0|hl))break f;if((0|(kl=q[dl+kl>>2]))<0|(0|al)<=(0|kl))break f;if((0|(hl=hl+kl|0))<0|(0|al)<(0|hl))break f}if((0|cl)==(0|(Zk=Zk+1|0)))break}}if(al=q[Vk+120>>2],(Zk=0)<(0|Wk))for(cl=q[_k+528>>2];;){if((0|(hl=q[cl+(Zk<<2)>>2]))<0|(0|al)<=(0|hl))break f;if((0|(Zk=Zk+1|0))==(0|Wk))break}if((Zk=0)<(0|al)){for(Wk=q[_k+532>>2];;){if((0|(cl=q[Wk+(Zk<<2)>>2]))<-1|(0|fl)<=(0|cl))break f;if((0|al)==(0|(Zk=Zk+1|0)))break}for(Wk=q[Vk+124>>2],hl=q[_k+540>>2],jl=q[_k+536>>2],Zk=0;;){if(fl=q[(cl=Zk<<2)+hl>>2]){if((0|fl)<0|(0|Wk)<(0|fl))break f;if((0|(cl=q[cl+jl>>2]))<0|(0|Wk)<=(0|cl))break f;if((fl=cl+fl|0)>>>31|(0|Wk)<(0|fl))break f}if((0|al)==(0|(Zk=Zk+1|0)))break}}if(!((255&il)>>>0<5)){if((Zk=0)<(0|(il=q[ll>>2]))){for(al=q[_k+348>>2];;){if((0|(Wk=q[al+(Zk<<2)>>2]))<0|(0|a)<(0|Wk))break f;if((0|il)==(0|(Zk=Zk+1|0)))break}for(al=q[_k+352>>2],Zk=0;;){if((0|(Wk=q[al+(Zk<<2)>>2]))<0|(0|a)<(0|Wk))break f;if((0|il)==(0|(Zk=Zk+1|0)))break}}if((il=0)<(0|(Zk=q[bl>>2]))){for(al=q[_k+384>>2];;){if((0|(Wk=q[al+(il<<2)>>2]))<0|(0|a)<(0|Wk))break f;if((0|Zk)==(0|(il=il+1|0)))break}for(al=q[_k+388>>2],il=0;;){if((0|(Wk=q[al+(il<<2)>>2]))<0|(0|a)<(0|Wk))break f;if((0|Zk)==(0|(il=il+1|0)))break}}if((il=0)<(0|(al=q[nl>>2]))){for(Wk=q[_k+404>>2];;){if((0|(fl=q[Wk+(il<<2)>>2]))<0|(0|a)<(0|fl))break f;if((0|al)==(0|(il=il+1|0)))break}for(Wk=q[_k+408>>2],il=0;;){if((0|(fl=q[Wk+(il<<2)>>2]))<0|(0|a)<(0|fl))break f;if((0|al)==(0|(il=il+1|0)))break}}if((a=0)<(0|(il=q[Vk+128>>2]))){for(al=q[Vk>>2],Wk=q[_k+468>>2];;){if((0|(fl=q[Wk+(a<<2)>>2]))<0|(0|al)<=(0|fl))break f;if((0|il)==(0|(a=a+1|0)))break}for(ll=q[_k+476>>2],fl=q[_k+472>>2],a=0;;){if(al=q[(Wk=a<<2)+ll>>2]){if((0|al)<0|(0|Xk)<(0|al))break f;if((0|(Wk=q[Wk+fl>>2]))<0|(0|Xk)<=(0|Wk))break f;if((al=Wk+al|0)>>>31|(0|Xk)<(0|al))break f}if((0|il)==(0|(a=a+1|0)))break}for(al=q[gl>>2],a=0;;){if(gl=q[fl+(a<<2)>>2]<<2,Wk=q[gl+Yk>>2]){if((0|Wk)<0|(0|al)<(0|Wk))break f;if((0|(gl=q[dl+gl>>2]))<0|(0|al)<=(0|gl))break f;if((0|(Wk=Wk+gl|0))<0|(0|al)<(0|Wk))break f}if((0|il)==(0|(a=a+1|0)))break}}if((a=0)<(0|(il=q[Vk+132>>2]))){for(al=q[_k+492>>2];;){if((0|(Wk=q[al+(a<<2)>>2]))<0|(0|ol)<=(0|Wk))break f;if((0|il)==(0|(a=a+1|0)))break}for(gl=q[_k+500>>2],Wk=q[_k+496>>2],a=0;;){if(al=q[(fl=a<<2)+gl>>2]){if((0|al)<0|(0|Xk)<(0|al))break f;if((0|(fl=q[Wk+fl>>2]))<0|(0|Xk)<=(0|fl))break f;if((al=al+fl|0)>>>31|(0|Xk)<(0|al))break f}if((0|il)==(0|(a=a+1|0)))break}for(a=0;;){if(fl=q[Wk+(a<<2)>>2]<<2,al=q[fl+Yk>>2]){if((0|al)<0|(0|Zk)<(0|al))break f;if((0|(fl=q[dl+fl>>2]))<0|(0|Zk)<=(0|fl))break f;if((0|(al=al+fl|0))<0|(0|Zk)<(0|al))break f}if((0|il)==(0|(a=a+1|0)))break}}if(!(((a=0)|(Vk=q[Vk+136>>2]))<=0)){for(Zk=q[_k+516>>2];;){if((0|(il=q[Zk+(a<<2)>>2]))<0|(0|$k)<=(0|il))break f;if((0|Vk)==(0|(a=a+1|0)))break}for(al=q[_k+524>>2],Zk=q[_k+520>>2],a=0;;){if(_k=q[(il=a<<2)+al>>2]){if((0|_k)<0|(0|Xk)<(0|_k))break f;if((0|(il=q[Zk+il>>2]))<0|(0|Xk)<=(0|il))break f;if((_k=_k+il|0)>>>31|(0|Xk)<(0|_k))break f}if((0|Vk)==(0|(a=a+1|0)))break}for(a=0;;){if(_k=q[Zk+(a<<2)>>2]<<2,Xk=q[_k+Yk>>2]){if((0|Xk)<0|(0|el)<(0|Xk))break f;if((0|(_k=q[_k+dl>>2]))<0|(0|el)<=(0|_k))break f;if((0|(Xk=Xk+_k|0))<0|(0|el)<(0|Xk))break f}if((0|Vk)==(0|(a=a+1|0)))break}}}}}return L=pl,1}return Y(4,1846,0),L=pl,0}q[_k+52>>2]=Xk,q[_k+48>>2]=5,Y(4,1640,_k+48|0)}else q[_k+32>>2]=Xk,Y(4,1554,_k+32|0);return L=pl,0}(a,vj):(q[20+wj>>2]=1621,q[16+wj>>2]=2284,Y(4,1294,16+wj|0),0):(q[4+wj>>2]=1444,q[wj>>2]=2284,Y(4,1294,wj),0),L=48+wj|0,0|a},i:function(a){q[1805]=a|=0},j:function(a,ej){var fj;return ej|=0,L=fj=L-48|0,a=(a|=0)?(a+63&-64)!=(0|a)?(q[36+fj>>2]=1522,q[32+fj>>2]=2305,Y(4,1294,32+fj|0),0):(ej+63&-64)==(0|ej)&&ej?function(a){var Qk,Tk,Uk,Uh,Kk=0,Lk=0,Mk=0,Nk=0,Ok=0,Pk=0,Rk=0,Sk=0;q[24+(L=Qk=L-32|0)>>2]=0,q[16+Qk>>2]=5,q[20+Qk>>2]=0,Ka(16+(L=Uh=L-272|0)|0,2227,q[12+Uh>>2]=16+Qk|0),function(a){var Hc;q[(L=Hc=L-16|0)>>2]=a,function(a,Il){var Jl;q[12+(L=Jl=L-16|0)>>2]=Il,Ia(a,1432,Il,0,0),L=16+Jl|0}(q[970],Hc),L=16+Hc|0}(16+Uh|0),L=272+Uh|0;a:{if(sa(a))Y(4,1932,0);else{if(!(6<=(Mk=r[a+4|0])>>>0)){if(1!=(0|!r[a+5|0])?(da(a+4|0,1),X(a- -64|0,4,160),na(a,a+704|(o[a+5|0]=0)),ya(a)):na(a,a+704|0),r[7224]||(q[1807]=6,o[7224]=1,q[1808]=7,q[1809]=8,q[1810]=9),Lk=q[a+704>>2],1<=(0|(Mk=q[Lk+16>>2]))){for(Sk=(Nk=q[a+912>>2])+(Mk<<2)|0,Ok=q[a+908>>2];;){Rk=q[a+1204>>2]+(q[Ok>>2]<<2)|0;d:if(!(((Lk=0)|(Kk=(Mk=q[Nk>>2])+-1|0))<1))e:for(;;){for(;;){if(q[(Pk=Rk+(Lk<<2)|0)>>2]<=-1){if(function(a,Vk,ql){var rl=0,sl=0;a:if((0|a)!=(0|Vk)){if(!(a>>>0>>0&&Vk>>>0<(sl=a+ql|0)>>>0))return $(a,Vk,ql);if(rl=3&(a^Vk),a>>>0>>0){if(!rl){if(3&a)for(;;){if(!ql)break a;if(o[0|a]=r[0|Vk],Vk=Vk+1|0,ql=ql+-1|0,!(3&(a=a+1|0)))break}if(!(ql>>>0<=3)){for(rl=ql;q[a>>2]=q[Vk>>2],Vk=Vk+4|0,a=a+4|0,3<(rl=rl+-4|0)>>>0;);ql&=3}}if(ql)for(;o[0|a]=r[0|Vk],a=a+1|0,Vk=Vk+1|0,ql=ql+-1|0;);}else{if(!rl){if(3&sl)for(;;){if(!ql)break a;if(o[0|(rl=(ql=ql+-1|0)+a|0)]=r[Vk+ql|0],!(3&rl))break}if(!(ql>>>0<=3))for(;q[(ql=ql+-4|0)+a>>2]=q[Vk+ql>>2],3>>0;);}if(ql)for(;o[(ql=ql+-1|0)+a|0]=r[Vk+ql|0],ql;);}}}(Pk,Pk+4|0,(-1^Lk)+Mk<<2),(0|Lk)<(0|(Kk=(Mk=Kk)+-1|0)))continue e;break d}if(!((0|(Lk=Lk+1|0))<(0|Kk)))break}break}if(Lk=Nk,0<(0|Mk)&&(Mk=q[Rk+(Kk<<2)>>2]<0?Kk:Mk),q[Lk>>2]=Mk,Ok=Ok+4|0,!((Nk=Nk+4|0)>>>0>>0))break}Lk=q[a+704>>2]}if(1<=q[Lk>>2])for(Kk=0;q[q[a+712>>2]+(Kk<<2)>>2]=q[a+716>>2]+(Kk<<6),Lk=q[a+704>>2],(0|(Kk=Kk+1|0))>2];);if(1<=q[Lk+4>>2])for(Kk=0;q[q[a+744>>2]+(Kk<<2)>>2]=q[a+748>>2]+(Kk<<6),Lk=q[a+704>>2],(0|(Kk=Kk+1|0))>2];);if(1<=q[Lk+16>>2])for(Kk=0;q[(Mk=Kk<<2)+q[a+832>>2]>>2]=q[a+848>>2]+(Kk<<6),q[Mk+q[a+836>>2]>>2]=q[a+1196>>2]+(q[Mk+q[a+896>>2]>>2]<<2),q[Mk+q[a+840>>2]>>2]=q[a+1200>>2]+(q[Mk+q[a+900>>2]>>2]<<1),q[Mk+q[a+844>>2]>>2]=q[a+1204>>2]+(q[Mk+q[a+908>>2]>>2]<<2),Lk=q[a+704>>2],(0|(Kk=Kk+1|0))>2];);if(1<=q[Lk+20>>2])for(Kk=0;q[q[a+916>>2]+(Kk<<2)>>2]=q[a+920>>2]+(Kk<<6),Lk=q[a+704>>2],(0|(Kk=Kk+1|0))>2];);if(1<=q[Lk+80>>2])for(Kk=0;q[q[a+1240>>2]+(Kk<<2)>>2]=q[a+1244>>2]+(Kk<<6),Lk=q[a+704>>2],(0|(Kk=Kk+1|0))>2];);if(1&o[q[a+708>>2]+20|0])break a;if((0|(Nk=q[Lk+16>>2]))<1)break a;for(Kk=q[a+904>>2],Rk=q[a+900>>2],Pk=q[a+1200>>2],Ok=0;;){if(0<(0|(Sk=q[(Mk=Ok<<2)+Kk>>2]+-1|0)))for(Tk=Pk+(q[Mk+Rk>>2]<<1)|0,Lk=0;Uk=s[(Mk=Tk+(Lk<<1)|0)>>1],p[Mk>>1]=s[Mk+4>>1],p[Mk+4>>1]=Uk,(0|(Lk=Lk+3|0))<(0|Sk););if((0|Nk)==(0|(Ok=Ok+1|0)))break}for(Mk=q[a+892>>2],Ok=q[a+896>>2],Rk=q[a+1196>>2],Kk=0;;){if(1<=(0|(Pk=q[(Lk=Kk<<2)+Mk>>2])))for(Pk=(Lk=Rk+(q[Lk+Ok>>2]<<2)|0)+(Pk<<3)|0,Lk=Lk+4|0;u[Lk>>2]=x(1)-u[Lk>>2],(Lk=Lk+8|0)>>>0>>0;);if((0|Nk)==(0|(Kk=Kk+1|0)))break}break a}q[4+Qk>>2]=Mk,q[Qk>>2]=5,Y(4,2023,Qk)}a=0}return L=32+Qk|0,a}(a):(q[20+fj>>2]=1621,q[16+fj>>2]=2305,Y(4,1294,16+fj|0),0):(q[4+fj>>2]=1444,q[fj>>2]=2305,Y(4,1294,fj),0),L=48+fj|0,0|a},k:function(a,ej,fj,gj){var hj;ej|=0,fj|=0,gj|=0,L=hj=L+-64|0,(a|=0)?ej?fj?gj?(a=q[q[a>>2]+708>>2],q[ej>>2]=q[a+12>>2],q[ej+4>>2]=q[a+16>>2],q[fj>>2]=q[a+4>>2],q[fj+4>>2]=q[a+8>>2],q[gj>>2]=q[a>>2]):(q[52+hj>>2]=1995,q[48+hj>>2]=2325,Y(4,1294,48+hj|0)):(q[36+hj>>2]=1903,q[32+hj>>2]=2325,Y(4,1294,32+hj|0)):(q[20+hj>>2]=1819,q[16+hj>>2]=2325,Y(4,1294,16+hj|0)):(q[4+hj>>2]=1740,q[hj>>2]=2325,Y(4,1294,hj)),L=64+hj|0},l:xa,m:wa,n:function(a){var dj;L=dj=L-16|0,(a|=0)?ua(a):(q[4+dj>>2]=1740,q[dj>>2]=2387,Y(4,1294,dj)),L=16+dj|0},o:function(a){var cj;return L=cj=L-16|0,a=(a|=0)?q[a+540>>2]:(q[4+cj>>2]=1740,q[cj>>2]=2402,Y(4,1294,cj),-1),L=16+cj|0,0|a},p:function(a){var bj;return L=bj=L-16|0,a=(a|=0)?q[q[a>>2]+916>>2]:(q[4+bj>>2]=1740,q[bj>>2]=2423,Y(4,1294,bj),0),L=16+bj|0,0|a},q:function(a){var aj;return L=aj=L-16|0,a=(a|=0)?q[a+548>>2]:(q[4+aj>>2]=1740,q[aj>>2]=2442,Y(4,1294,aj),0),L=16+aj|0,0|a},r:function(a){var $i;return L=$i=L-16|0,a=(a|=0)?q[q[a>>2]+928>>2]:(q[4+$i>>2]=1740,q[$i>>2]=2463,Y(4,1294,$i),0),L=16+$i|0,0|a},s:function(a){var _i;return L=_i=L-16|0,a=(a|=0)?q[q[a>>2]+924>>2]:(q[4+_i>>2]=1740,q[_i>>2]=2492,Y(4,1294,_i),0),L=16+_i|0,0|a},t:function(a){var Zi;return L=Zi=L-16|0,a=(a|=0)?q[q[a>>2]+932>>2]:(q[4+Zi>>2]=1740,q[Zi>>2]=2521,Y(4,1294,Zi),0),L=16+Zi|0,0|a},u:function(a){var Yi;return L=Yi=L-16|0,a=(a|=0)?q[a+552>>2]:(q[4+Yi>>2]=1740,q[Yi>>2]=2550,Y(4,1294,Yi),0),L=16+Yi|0,0|a},v:function(a){var Xi;return L=Xi=L-16|0,a=(a|=0)?q[a+4>>2]:(q[4+Xi>>2]=1740,q[Xi>>2]=2572,Y(4,1294,Xi),-1),L=16+Xi|0,0|a},w:function(a){var Wi;return L=Wi=L-16|0,a=(a|=0)?q[q[a>>2]+712>>2]:(q[4+Wi>>2]=1740,q[Wi>>2]=2588,Y(4,1294,Wi),0),L=16+Wi|0,0|a},x:function(a){var Vi;return L=Vi=L-16|0,a=(a|=0)?q[a+52>>2]:(q[4+Vi>>2]=1740,q[Vi>>2]=2602,Y(4,1294,Vi),0),L=16+Vi|0,0|a},y:function(a){var Ui;return L=Ui=L-16|0,a=(a|=0)?q[q[a>>2]+740>>2]:(q[4+Ui>>2]=1740,q[Ui>>2]=2622,Y(4,1294,Ui),0),L=16+Ui|0,0|a},z:function(a){var Ti;return L=Ti=L-16|0,a=(a|=0)?q[a+332>>2]:(q[4+Ti>>2]=1740,q[Ti>>2]=2650,Y(4,1294,Ti),-1),L=16+Ti|0,0|a},A:function(a){var Si;return L=Si=L-16|0,a=(a|=0)?q[q[a>>2]+832>>2]:(q[4+Si>>2]=1740,q[Si>>2]=2670,Y(4,1294,Si),0),L=16+Si|0,0|a},B:function(a){var Ri;return L=Ri=L-16|0,a=(a|=0)?q[q[a>>2]+888>>2]:(q[4+Ri>>2]=1740,q[Ri>>2]=2688,Y(4,1294,Ri),0),L=16+Ri|0,0|a},C:function(a){var Qi;return L=Qi=L-16|0,a=(a|=0)?q[a+432>>2]:(q[4+Qi>>2]=1740,q[Qi>>2]=2716,Y(4,1294,Qi),0),L=16+Qi|0,0|a},D:function(a){var Pi;return L=Pi=L-16|0,a=(a|=0)?q[q[a>>2]+884>>2]:(q[4+Pi>>2]=1740,q[Pi>>2]=2743,Y(4,1294,Pi),0),L=16+Pi|0,0|a},E:function(a){var Oi;return L=Oi=L-16|0,a=(a|=0)?q[a+440>>2]:(q[4+Oi>>2]=1740,q[Oi>>2]=2772,Y(4,1294,Oi),0),L=16+Oi|0,0|a},F:function(a){var Ni;return L=Ni=L-16|0,a=(a|=0)?q[a+436>>2]:(q[4+Ni>>2]=1740,q[Ni>>2]=2797,Y(4,1294,Ni),0),L=16+Ni|0,0|a},G:function(a){var Mi;return L=Mi=L-16|0,a=(a|=0)?q[a+448>>2]:(q[4+Mi>>2]=1740,q[Mi>>2]=2824,Y(4,1294,Mi),0),L=16+Mi|0,0|a},H:function(a){var Li;return L=Li=L-16|0,a=(a|=0)?q[q[a>>2]+912>>2]:(q[4+Li>>2]=1740,q[Li>>2]=2848,Y(4,1294,Li),0),L=16+Li|0,0|a},I:function(a){var Ki;return L=Ki=L-16|0,a=(a|=0)?q[q[a>>2]+844>>2]:(q[4+Ki>>2]=1740,q[Ki>>2]=2873,Y(4,1294,Ki),0),L=16+Ki|0,0|a},J:function(a){var Ji;return L=Ji=L-16|0,a=(a|=0)?q[q[a>>2]+892>>2]:(q[4+Ji>>2]=1740,q[Ji>>2]=2893,Y(4,1294,Ji),0),L=16+Ji|0,0|a},K:function(a){var Ii;return L=Ii=L-16|0,a=(a|=0)?q[a+444>>2]:(q[4+Ii>>2]=1740,q[Ii>>2]=2920,Y(4,1294,Ii),0),L=16+Ii|0,0|a},L:function(a){var Hi;return L=Hi=L-16|0,a=(a|=0)?q[q[a>>2]+836>>2]:(q[4+Hi>>2]=1740,q[Hi>>2]=2950,Y(4,1294,Hi),0),L=16+Hi|0,0|a},M:function(a){var ri;return L=ri=L-16|0,a=(a|=0)?q[q[a>>2]+904>>2]:(q[4+ri>>2]=1740,q[ri>>2]=2974,Y(4,1294,ri),0),L=16+ri|0,0|a},N:function(a){var qi;return L=qi=L-16|0,a=(a|=0)?q[q[a>>2]+840>>2]:(q[4+qi>>2]=1740,q[qi>>2]=3e3,Y(4,1294,qi),0),L=16+qi|0,0|a},O:function(a){var pi;return L=pi=L-16|0,a=(a|=0)?q[a+452>>2]:(q[4+pi>>2]=1740,q[pi>>2]=3022,Y(4,1294,pi),0),L=16+pi|0,0|a},P:function(a){var oi;return L=oi=L-16|0,a=(a|=0)?q[a+456>>2]:(q[4+oi>>2]=1740,q[oi>>2]=3051,Y(4,1294,oi),0),L=16+oi|0,0|a},Q:function(a){var ni;return L=ni=L-16|0,a=(a|=0)?q[q[a>>2]+876>>2]:(q[4+ni>>2]=1740,q[ni>>2]=3078,Y(4,1294,ni),0),L=16+ni|0,0|a},R:function(a){var mi;L=mi=L-16|0,(a|=0)?q[a+428>>2]=1:(q[4+mi>>2]=1740,q[mi>>2]=3110,Y(4,1294,mi)),L=16+mi|0},S:function(a){var li;return L=li=L-16|0,a=(a|=0)?q[a+640>>2]:(q[4+li>>2]=1740,q[li>>2]=3139,Y(4,1294,li),0),L=16+li|0,0|a},T:function(a){var ji;return L=ji=L-16|0,a=(a|=0)?q[a+636>>2]:(q[4+ji>>2]=1740,q[ji>>2]=3164,Y(4,1294,ji),0),L=16+ji|0,0|a},U:function(a){var Fc;return oa(12+(L=Fc=L-16|0)|0,64,a|=0),L=16+Fc|0,q[12+Fc>>2]},V:function(a){var Ec,Cc,Dc=0;return L=Cc=L-16|0,!(a|=0)||oa(12+Cc|0,16,Ec=xa(a))||(Dc=wa(a,q[12+Cc>>2],Ec))||(pa(q[12+Cc>>2]),Dc=0),L=16+Cc|0,0|Dc},W:function(a){return 0|qa(a|=0)},X:function(a){pa(a|=0)},Y:function(a){var Sm;oa(12+(L=Sm=L-16|0)|0,64,a|=0),pa(q[12+Sm>>2]),L=16+Sm|0},Z:function(){return 0|L},_:function(a){return 0|(L=L-(0|a)&-16)},$:function(a){L=0|a},aa:function(a){return 0|(a=0|(a|=0),(P=0|N())<(a=P+(a|=0)|0)&&a<65536&&(a=new ArrayBuffer(w(a,65536)),(S=new global.Int8Array(a)).set(o),o=S,o=new global.Int8Array(a),p=new global.Int16Array(a),q=new global.Int32Array(a),r=new global.Uint8Array(a),s=new global.Uint16Array(a),t=new global.Uint32Array(a),u=new global.Float32Array(a),v=new global.Float64Array(a),buffer=a,m.buffer=a),P);var S,P},ba:function(a,Vk){n[a|=0](Vk|=0)}};function X(a,b,c){var e,f,d=0;if(c)for(;;){if(c=c+-1|0,a>>>0<(d=(e=a+b|0)-1|0)>>>0)for(;f=r[0|a],o[0|a]=r[0|d],o[0|d]=f,(a=a+1|0)>>>0<(d=d+-1|0)>>>0;);if(a=e,!c)break}}function Y(a,b,c){var g;L=g=L-272|0,t[1804]>a>>>0||(a=q[1805])&&(Ka(16+g|0,b,q[12+g>>2]=c),n[a](16+g|0)),L=272+g|0}function Z(a,b,c){32&r[0|a]||!function(a,Rm,Sm){var Tm=0,Um=0,tn=0;a:{if(!(Tm=q[Sm+16>>2])){if(function(a){var Rm;return Rm=r[a+74|0],o[a+74|0]=Rm+-1|Rm,8&(Rm=q[a>>2])?(q[a>>2]=32|Rm,1):(q[a+4>>2]=0,q[a+8>>2]=0,Rm=q[a+44>>2],q[a+28>>2]=Rm,q[a+20>>2]=Rm,q[a+16>>2]=Rm+q[a+48>>2],0)}(Sm))break a;Tm=q[Sm+16>>2]}if(Tm-(tn=q[Sm+20>>2])>>>0>>0)return n[q[Sm+36>>2]](Sm,a,Rm);b:if(!(o[Sm+75|0]<0)){for(Tm=Rm;;){if(!(Um=Tm))break b;if(10==r[(Tm=Um+-1|0)+a|0])break}if(n[q[Sm+36>>2]](Sm,a,Um)>>>0>>0)break a;Rm=Rm-Um|0,a=a+Um|0,tn=q[Sm+20>>2]}$(tn,a,Rm),q[Sm+20>>2]=q[Sm+20>>2]+Rm}}(b,c,a)}function _(a,b,c,h,i){var k,l,j;if(L=j=L-256|0,!(73728&i|(0|c)<=(0|h))){if(ca(j,b,(k=(i=c-h|0)>>>0<256)?i:256),b=a,l=j,!k){for(c=c-h|0;Z(a,j,256),255<(i=i+-256|0)>>>0;);i=255&c}Z(b,l,i)}L=256+j|0}function $(a,b,c){var h,i=0;if(8192<=c>>>0)I(0|a,0|b,0|c);else{if(h=a+c|0,3&(a^b))if(h>>>0<4)c=a;else if((i=h-4|0)>>>0>>0)c=a;else for(c=a;o[0|c]=r[0|b],o[c+1|0]=r[b+1|0],o[c+2|0]=r[b+2|0],o[c+3|0]=r[b+3|0],b=b+4|0,(c=c+4|0)>>>0<=i>>>0;);else{b:if((0|c)<1)c=a;else if(3&a)for(c=a;;){if(o[0|c]=r[0|b],b=b+1|0,h>>>0<=(c=c+1|0)>>>0)break b;if(!(3&c))break}else c=a;if(!((a=-4&h)>>>0<64||(i=a+-64|0)>>>0>>0))for(;q[c>>2]=q[b>>2],q[c+4>>2]=q[b+4>>2],q[c+8>>2]=q[b+8>>2],q[c+12>>2]=q[b+12>>2],q[c+16>>2]=q[b+16>>2],q[c+20>>2]=q[b+20>>2],q[c+24>>2]=q[b+24>>2],q[c+28>>2]=q[b+28>>2],q[c+32>>2]=q[b+32>>2],q[c+36>>2]=q[b+36>>2],q[c+40>>2]=q[b+40>>2],q[c+44>>2]=q[b+44>>2],q[c+48>>2]=q[b+48>>2],q[c+52>>2]=q[b+52>>2],q[c+56>>2]=q[b+56>>2],q[c+60>>2]=q[b+60>>2],b=b- -64|0,(c=c- -64|0)>>>0<=i>>>0;);if(!(a>>>0<=c>>>0))for(;q[c>>2]=q[b>>2],b=b+4|0,(c=c+4|0)>>>0>>0;);}if(c>>>0>>0)for(;o[0|c]=r[0|b],b=b+1|0,(0|h)!=(0|(c=c+1|0)););}}function aa(a){var b,c;return x((b=a*a)*b*(c=b*a)*(2718311493989822e-21*b-.00019839334836096632)+(c*(.008333329385889463*b-.16666666641626524)+a))}function ba(a){var m;return x(-.499999997251031*(a*=a)+1+.04166662332373906*(m=a*a)+a*m*(2439044879627741e-20*a-.001388676377460993))}function ca(a,n,p){var r,s,t,u;if(p&&(o[(r=a+p|0)-1|0]=n,o[0|a]=n,!(p>>>0<3||(o[r-2|0]=n,o[a+1|0]=n,o[r-3|0]=n,o[a+2|0]=n,p>>>0<7)||(o[r-4|0]=n,o[a+3|0]=n,p>>>0<9)||(s=(r=0-a&3)+a|0,n=w(255&n,16843009),q[s>>2]=n,q[(r=(p=p-r&-4)+s|0)-4>>2]=n,p>>>0<9)||(q[8+s>>2]=n,q[4+s>>2]=n,q[r-8>>2]=n,q[r-12>>2]=n,p>>>0<25)||(q[24+s>>2]=n,q[20+s>>2]=n,q[16+s>>2]=n,q[12+s>>2]=n,q[r-16>>2]=n,q[r-20>>2]=n,q[r-24>>2]=n,q[r-28>>2]=n,(p=p-(u=4&s|24)|0)>>>0<32))))for(t=r=n,n=s+u|0;q[n+24>>2]=t,q[n+28>>2]=r,q[n+16>>2]=t,q[n+20>>2]=r,q[n+8>>2]=t,q[n+12>>2]=r,q[n>>2]=t,q[n+4>>2]=r,n=n+32|0,31<(p=p+-32|0)>>>0;);return a}function da(a,n){var p;if(a>>>0<(n=(a+n|0)-1|0)>>>0)for(;p=r[0|a],o[0|a]=r[0|n],o[0|n]=p,(a=a+1|0)>>>0<(n=n+-1|0)>>>0;);}function ea(a){var n,o=N();return(a=(n=q[2216])+a|0)>>>0<=o<<16>>>0||J(0|a)?(q[2216]=a,n):(q[2086]=48,-1)}function fa(a,v,y,z,B,C,D){var H,I,K,N,Q,R,S,O,P,J,E=0,F=x(0),G=x(0),M=x(0);if(x(0),x(0),x(0),x(0),L=J=L-16|0,1<=(0|a))for(R=w(a,12)+v|0;;){if(1<=(0|(I=q[v+4>>2])))for(S=(a=q[v+8>>2])+w(I,48)|0,I=(H=q[v>>2]<<4)+D|0,K=(8|H)+D|0,H=(4|H)+D|0;(E=q[a+8>>2])&&((O=E+-1|0)>>>0<=1?(P=(q[a+4>>2]<<2)+y|0,E=q[P+(q[a+12>>2]<<2)>>2]<<2,F=u[E+C>>2],Q=u[B+E>>2],G=u[z+E>>2],O-1?(M=G,G=u[a+20>>2],u[I>>2]=u[I>>2]+x(u[a+44>>2]*x(M*G)),u[H>>2]=u[H>>2]+x(x(Q*G)*u[a+44>>2]),u[K>>2]=u[K>>2]+x(x(F*G)*u[a+44>>2])):(E=q[(q[a+16>>2]<<2)+P>>2]<<2,O=u[E+C>>2],P=u[B+E>>2],M=G,G=u[a+20>>2],N=u[a+24>>2],u[I>>2]=u[I>>2]+x(u[a+44>>2]*x(x(M*G)+x(u[z+E>>2]*N))),u[H>>2]=u[H>>2]+x(x(x(Q*G)+x(P*N))*u[a+44>>2]),u[K>>2]=u[K>>2]+x(x(x(F*G)+x(O*N))*u[a+44>>2]))):(q[J>>2]=E,Y(4,1024,J))),(a=a+48|0)>>>0>>0;);if(a=(q[v>>2]<<4)+D|0,F=u[a>>2],u[a>>2]=F>2],u[a+4>>2]=F>2],u[a+8>>2]=F>>0>>0))break}L=16+J|0}function ga(a,q,v){var y,z,x=0;if(1==(0|q)&a>>>0<0|q>>>0<1)x=a;else for(;y=ad(x=bd(a,q,10),z=M,10),o[0|(v=v+-1|0)]=a-y|48,y=9==(0|q)&4294967295>>0|9>>0,a=x,q=z,y;);if(x)for(;o[0|(v=v+-1|0)]=x-w(a=(x>>>0)/10|0,10)|48,q=9>>0,x=a,q;);return v}function ha(a){return a+-48>>>0<10}function ia(a){var q;return(q=La(a,64))?q-a|0:64}function ja(a,v){var w=0;return 1024<=(0|v)?(a*=898846567431158e293,v=(0|(w=v+-1023|0))<1024?w:(a*=898846567431158e293,((0|v)<3069?v:3069)+-2046|0)):-1023<(0|v)||(a*=22250738585072014e-324,v=-1023<(0|(w=v+1022|0))?w:(a*=22250738585072014e-324,(-3066<(0|v)?v:-3066)+2044|0)),f(0,0),f(1,v+1023<<20),a*+g()}function ka(a,v){var A=0,C=a,B=v>>>0<=31?(A=q[a+4>>2],q[a>>2]):(A=q[a>>2],q[a+4>>2]=A,v=v+-32|(q[a>>2]=0),0);q[C>>2]=B<>2]=A<>>32-v}function la(a,v,D,V,W){var X,Y=0,Z=0,_=0;L=X=L-240|0,Y=q[v>>2],q[232+X>>2]=Y,v=q[v+4>>2],q[X>>2]=a,Z=1;a:{b:{c:{if(((q[236+X>>2]=v)||1!=(0|Y))&&(Y=a-q[(D<<2)+W>>2]|0,!((0|n[5](Y,a))<1))){for(_=!V;;){e:{if(v=Y,!(!_|(0|D)<2)){if(V=q[((D<<2)+W|0)-8>>2],-1<(0|n[5](Y=a+-4|0,v)))break e;if(-1<(0|n[5](Y-V|0,v)))break e}if(q[(Z<<2)+X>>2]=v,Z=Z+1|0,ma(232+X|0,a=Oa(232+X|0)),D=a+D|0,!q[236+X>>2]&&1==q[232+X>>2])break b;if(_=1,Y=(a=v)-q[(D<<2)+W>>2]|(V=0),0<(0|n[5](Y,q[X>>2])))continue;break c}break}v=a;break b}v=a}if(V)break a}Na(X,Z),ta(v,D,W)}L=240+X|0}function ma(a,v){var D=0,V=a,L=v>>>0<=31?(D=q[a>>2],q[a+4>>2]):(D=q[a+4>>2],q[a+4>>2]=0,q[a>>2]=D,v=v+-32|0,0);q[V+4>>2]=L>>>v,q[a>>2]=L<<32-v|D>>>v}function na(a,v){var W=r[a+4|0];q[v>>2]=q[a+64>>2]+a,q[v+4>>2]=q[a+68>>2]+a,q[v+8>>2]=q[a+72>>2]+a,q[v+12>>2]=q[a+76>>2]+a,q[v+16>>2]=q[a+80>>2]+a,q[v+20>>2]=q[a+84>>2]+a,q[v+24>>2]=q[a+88>>2]+a,q[v+28>>2]=q[a+92>>2]+a,q[v+32>>2]=q[a+96>>2]+a,q[v+36>>2]=q[a+100>>2]+a,q[v+40>>2]=q[a+104>>2]+a,q[v+44>>2]=q[a+108>>2]+a,q[v+48>>2]=q[a+112>>2]+a,q[v+52>>2]=q[a+116>>2]+a,q[v+56>>2]=q[a+120>>2]+a,q[v+60>>2]=q[a+124>>2]+a,q[v- -64>>2]=q[a+128>>2]+a,q[v+68>>2]=q[a+132>>2]+a,q[v+72>>2]=q[a+136>>2]+a,q[v+76>>2]=q[a+140>>2]+a,q[v+80>>2]=q[a+144>>2]+a,q[v+84>>2]=q[a+148>>2]+a,q[v+92>>2]=q[a+152>>2]+a,q[v+96>>2]=q[a+156>>2]+a,q[v+100>>2]=q[a+160>>2]+a,q[v+108>>2]=q[a+164>>2]+a,q[v+112>>2]=q[a+168>>2]+a,q[v+116>>2]=q[a+172>>2]+a,q[v+124>>2]=q[a+176>>2]+a,q[v+128>>2]=q[a+180>>2]+a,q[v+132>>2]=q[a+184>>2]+a,q[v+136>>2]=q[a+188>>2]+a,q[v+140>>2]=q[a+192>>2]+a,q[v+144>>2]=q[a+196>>2]+a,q[v+148>>2]=q[a+200>>2]+a,q[v+152>>2]=q[a+204>>2]+a,q[v+156>>2]=q[a+208>>2]+a,q[v+164>>2]=q[a+212>>2]+a,q[v+168>>2]=q[a+216>>2]+a,q[v+172>>2]=q[a+220>>2]+a,q[v+176>>2]=q[a+224>>2]+a,q[v+180>>2]=q[a+228>>2]+a,q[v+184>>2]=q[a+232>>2]+a,q[v+188>>2]=q[a+236>>2]+a,q[v+192>>2]=q[a+240>>2]+a,q[v+196>>2]=q[a+244>>2]+a,q[v+200>>2]=q[a+248>>2]+a,q[v+204>>2]=q[a+252>>2]+a,q[v+208>>2]=q[a+256>>2]+a,q[v+212>>2]=q[a+260>>2]+a,q[v+216>>2]=q[a+264>>2]+a,q[v+220>>2]=q[a+268>>2]+a,q[v+224>>2]=q[a+272>>2]+a,q[v+228>>2]=q[a+276>>2]+a,q[v+232>>2]=q[a+280>>2]+a,q[v+236>>2]=q[a+284>>2]+a,q[v+244>>2]=q[a+288>>2]+a,q[v+248>>2]=q[a+292>>2]+a,q[v+272>>2]=q[a+296>>2]+a,q[v+276>>2]=q[a+300>>2]+a,q[v+280>>2]=q[a+304>>2]+a,q[v+292>>2]=q[a+308>>2]+a,q[v+296>>2]=q[a+312>>2]+a,q[v+300>>2]=q[a+316>>2]+a,q[v+304>>2]=q[a+320>>2]+a,q[v+308>>2]=q[a+324>>2]+a,q[v+312>>2]=q[a+328>>2]+a,q[v+316>>2]=q[a+332>>2]+a,q[v+328>>2]=q[a+336>>2]+a,q[v+332>>2]=q[a+340>>2]+a,q[v+336>>2]=q[a+344>>2]+a,q[v+348>>2]=q[a+348>>2]+a,q[v+360>>2]=q[a+352>>2]+a,q[v+364>>2]=q[a+356>>2]+a,q[v+368>>2]=q[a+360>>2]+a,q[v+352>>2]=q[a+364>>2]+a,q[v+356>>2]=q[a+368>>2]+a,q[v+488>>2]=q[a+372>>2]+a,q[v+492>>2]=q[a+376>>2]+a,q[v+496>>2]=q[a+380>>2]+a,q[v+500>>2]=q[a+384>>2]+a,q[v+504>>2]=q[a+388>>2]+a,q[v+508>>2]=q[a+392>>2]+a,q[v+512>>2]=q[a+396>>2]+a,q[v+516>>2]=q[a+400>>2]+a,q[v+520>>2]=q[a+404>>2]+a,q[v+524>>2]=q[a+408>>2]+a,q[v+528>>2]=q[a+412>>2]+a,q[v+532>>2]=q[a+416>>2]+a,q[v+536>>2]=q[a+420>>2]+a,q[v+540>>2]=q[a+424>>2]+a,q[v+544>>2]=q[a+428>>2]+a,q[v+548>>2]=q[a+432>>2]+a,q[v+552>>2]=q[a+436>>2]+a,q[v+556>>2]=q[a+440>>2]+a,q[v+560>>2]=q[a+444>>2]+a,q[v+564>>2]=q[a+448>>2]+a,q[v+568>>2]=q[a+452>>2]+a,q[v+572>>2]=q[a+456>>2]+a,q[v+576>>2]=q[a+460>>2]+a,q[v+580>>2]=q[a+464>>2]+a,W>>>0<2||(q[v+104>>2]=q[a+468>>2]+a,W>>>0<4)||(q[v+260>>2]=q[a+472>>2]+a,q[v+264>>2]=q[a+476>>2]+a,q[v+268>>2]=q[a+480>>2]+a,q[v+88>>2]=q[a+484>>2]+a,q[v+120>>2]=q[a+488>>2]+a,q[v+160>>2]=q[a+492>>2]+a,q[v+584>>2]=q[a+496>>2]+a,q[v+588>>2]=q[a+500>>2]+a,q[v+592>>2]=q[a+504>>2]+a,q[v+596>>2]=q[a+508>>2]+a,q[v+600>>2]=q[a+512>>2]+a,q[v+604>>2]=q[a+516>>2]+a,q[v+240>>2]=q[a+520>>2]+a,q[v+252>>2]=q[a+524>>2]+a,q[v+256>>2]=q[a+528>>2]+a,q[v+372>>2]=q[a+532>>2]+a,q[v+376>>2]=q[a+536>>2]+a,q[v+380>>2]=q[a+540>>2]+a,q[v+384>>2]=q[a+544>>2]+a,q[v+388>>2]=q[a+548>>2]+a,q[v+392>>2]=q[a+552>>2]+a,q[v+396>>2]=q[a+556>>2]+a,q[v+400>>2]=q[a+560>>2]+a,q[v+416>>2]=q[a+564>>2]+a,q[v+420>>2]=q[a+568>>2]+a,q[v+424>>2]=q[a+572>>2]+a,q[v+440>>2]=q[a+576>>2]+a,q[v+444>>2]=q[a+580>>2]+a,q[v+448>>2]=q[a+584>>2]+a,q[v+464>>2]=q[a+588>>2]+a,q[v+468>>2]=q[a+592>>2]+a,q[v+472>>2]=q[a+596>>2]+a,q[v+476>>2]=q[a+600>>2]+a,q[v+480>>2]=q[a+604>>2]+a,q[v+484>>2]=q[a+608>>2]+a,4!=(0|W)&&(q[v+284>>2]=q[a+612>>2]+a,q[v+288>>2]=q[a+616>>2]+a,q[v+320>>2]=q[a+620>>2]+a,q[v+324>>2]=q[a+624>>2]+a,q[v+340>>2]=q[a+628>>2]+a,q[v+344>>2]=q[a+632>>2]+a,q[v+404>>2]=q[a+636>>2]+a,q[v+408>>2]=q[a+640>>2]+a,q[v+412>>2]=q[a+644>>2]+a,q[v+428>>2]=q[a+648>>2]+a,q[v+432>>2]=q[a+652>>2]+a,q[v+436>>2]=q[a+656>>2]+a,q[v+452>>2]=q[a+660>>2]+a,q[v+456>>2]=q[a+664>>2]+a,q[v+460>>2]=q[a+668>>2]+a))}function oa(a,v,$){var aa=0;a:{if(8==(0|v))v=qa($);else{if(aa=28,3&v|1!=(0|function(a){for(var $o=0,ap=0;ap=$o,a;)a&=a-1,$o=$o+1|0;return ap}(v>>>2)))break a;if(aa=48,-64-v>>>0<$>>>0)break a;v=function(a,Vk){var vl,wl,ql=0,tl=0,ul=0;if((tl=a>>>0>(ql=16)?a:16)+-1&tl)for(;ql=(a=ql)<<1,a>>>0>>0;);else a=tl;return-64-a>>>0<=Vk>>>0?(q[2086]=48,0):(ql=qa(12+((tl=Vk>>>0<11?16:Vk+11&-8)+a|0)|0))?(Vk=ql+-8|0,ql&a+-1?(ul=(-8&(wl=q[(vl=ql+-4|0)>>2]))-(ql=(a=15<(ql=((a+ql|0)-1&0-a)-8|0)-Vk>>>0?ql:a+ql|0)-Vk|0)|0,3&wl?(q[a+4>>2]=ul|1&q[a+4>>2]|2,q[4+(ul=a+ul|0)>>2]=1|q[4+ul>>2],q[vl>>2]=ql|1&q[vl>>2]|2,q[a+4>>2]=1|q[a+4>>2],za(Vk,ql)):(Vk=q[Vk>>2],q[a+4>>2]=ul,q[a>>2]=Vk+ql)):a=Vk,3&(Vk=q[a+4>>2])&&((ql=-8&Vk)>>>0<=tl+16>>>0||(q[a+4>>2]=tl|1&Vk|2,q[(Vk=a+tl|0)+4>>2]=3|(tl=ql-tl|0),q[4+(ql=a+ql|0)>>2]=1|q[ql+4>>2],za(Vk,tl))),a+8|0):0}(16>>0?v:16,$)}if(!v)return 1;q[a>>2]=v,aa=0}return aa}function pa(a){var da,v=0,$=0,ba=0,ca=0,ea=0,fa=0,ha=0;a:if(a){da=(ba=a+-8|0)+(a=-8&($=q[a+-4>>2]))|0;b:if(!(1&$)){if(!(3&$))break a;if((ba=ba-($=q[ba>>2])|0)>>>0>>0<=255)ca=q[ba+8>>2],$>>>=3,(0|(v=q[ba+12>>2]))==(0|ca)?(ha=q[2087]&dd($),q[2087]=ha):(q[ca+12>>2]=v,q[v+8>>2]=ca);else{if(fa=q[ba+24>>2],(0|ba)!=(0|($=q[ba+12>>2])))v=q[ba+8>>2],q[v+12>>2]=$,q[$+8>>2]=v;else if(v=(v=q[(ca=ba+20|0)>>2])||q[(ca=ba+16|0)>>2]){for(;ea=ca,(v=q[(ca=($=v)+20|0)>>2])||(ca=$+16|0,v=q[$+16>>2]););q[ea>>2]=0}else $=0;if(fa){ca=q[ba+28>>2];e:{if(q[(v=8652+(ca<<2)|0)>>2]==(0|ba)){if(q[v>>2]=$)break e;ha=q[2088]&dd(ca),q[2088]=ha;break b}if(!(q[fa+(q[fa+16>>2]==(0|ba)?16:20)>>2]=$))break b}q[$+24>>2]=fa,(v=q[ba+16>>2])&&(q[$+16>>2]=v,q[v+24>>2]=$),(v=q[ba+20>>2])&&(q[$+20>>2]=v,q[v+24>>2]=$)}}else if(3==(3&($=q[4+da>>2])))return q[2089]=a,q[4+da>>2]=-2&$,q[ba+4>>2]=1|a,q[a+ba>>2]=a}if(!(da>>>0<=ba>>>0)&&1&($=q[4+da>>2])){f:{if(!(2&$)){if(q[2093]==(0|da)){if(q[2093]=ba,a=q[2090]+a|0,q[2090]=a,q[ba+4>>2]=1|a,q[2092]!=(0|ba))break a;return q[2089]=0,q[2092]=0}if(q[2092]==(0|da))return q[2092]=ba,a=q[2089]+a|0,q[2089]=a,q[ba+4>>2]=1|a,q[a+ba>>2]=a;a=(-8&$)+a|0;g:if($>>>0<=255)$>>>=3,(0|(v=q[8+da>>2]))==(0|(ca=q[12+da>>2]))?(ha=q[2087]&dd($),q[2087]=ha):(q[v+12>>2]=ca,q[ca+8>>2]=v);else{if(fa=q[24+da>>2],(0|da)!=(0|($=q[12+da>>2])))v=q[8+da>>2],q[v+12>>2]=$,q[$+8>>2]=v;else if(v=(v=q[(ca=20+da|0)>>2])||q[(ca=16+da|0)>>2]){for(;ea=ca,(v=q[(ca=($=v)+20|0)>>2])||(ca=$+16|0,v=q[$+16>>2]););q[ea>>2]=0}else $=0;if(fa){ca=q[28+da>>2];j:{if(q[(v=8652+(ca<<2)|0)>>2]==(0|da)){if(q[v>>2]=$)break j;ha=q[2088]&dd(ca),q[2088]=ha;break g}if(!(q[fa+(q[fa+16>>2]==(0|da)?16:20)>>2]=$))break g}q[$+24>>2]=fa,(v=q[16+da>>2])&&(q[$+16>>2]=v,q[v+24>>2]=$),(v=q[20+da>>2])&&(q[$+20>>2]=v,q[v+24>>2]=$)}}if(q[ba+4>>2]=1|a,q[a+ba>>2]=a,q[2092]!=(0|ba))break f;return q[2089]=a}q[4+da>>2]=-2&$,q[ba+4>>2]=1|a,q[a+ba>>2]=a}if(a>>>0<=255)return $=8388+((a>>>=3)<<3)|0,a=(v=q[2087])&(a=1<>2]:(q[2087]=a|v,$),q[$+8>>2]=ba,q[a+12>>2]=ba,q[ba+12>>2]=$,q[ba+8>>2]=a;q[ba+16>>2]=0,v=q[ba+20>>2]=0,(ca=a>>>8)&&(v=31,16777215>>0||(v=ca,v=28+((v=((v=(v<<=ca=ca+1048320>>>16&8)<<(fa=v+520192>>>16&4))<<(ea=v+245760>>>16&2)>>>15)-(ea|ca|fa)|0)<<1|a>>>v+21&1)|0)),ea=8652+((q[($=ba)+28>>2]=v)<<2)|0;m:if((ca=q[2088])&($=1<>>1)|0),$=q[ea>>2];n:{for(;;){if((-8&q[(v=$)+4>>2])==(0|a))break n;if($=ca>>>29,ca<<=1,!($=q[16+(ea=v+(4&$)|0)>>2]))break}q[ea+16>>2]=ba,q[ba+12>>2]=ba,q[ba+24>>2]=v,q[ba+8>>2]=ba;break m}a=q[v+8>>2],q[a+12>>2]=ba,q[v+8>>2]=ba,q[ba+24>>2]=0,q[ba+12>>2]=v,q[ba+8>>2]=a}else q[2088]=$|ca,q[ea>>2]=ba,q[ba+12>>2]=ba,q[ba+24>>2]=ea,q[ba+8>>2]=ba;if(a=q[2095]+-1|0,!(q[2095]=a)){for(ba=8804;ba=(a=q[ba>>2])+8|0,a;);q[2095]=-1}}}}function qa(a){var sa,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,ua=0;L=sa=L-16|0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(a>>>0<=244){if(3&(ia=(ma=q[2087])>>>(a=(na=a>>>0<11?16:a+11&-8)>>>3))){a=(ia=q[8396+(la=(ja=a+(1&(-1^ia))|0)<<3)>>2])+8|0,(0|(ka=q[ia+8>>2]))==(0|(la=la+8388|0))?(ua=dd(ja)&ma,q[2087]=ua):(q[ka+12>>2]=la,q[la+8>>2]=ka),q[ia+4>>2]=3|(ja<<=3),q[4+(ia=ia+ja|0)>>2]=1|q[ia+4>>2];break a}if(na>>>0<=(pa=q[2089])>>>0)break k;if(ia){ja=ia=(a=(0-(a=(0-(ja=2<>>12&16,ia=q[8396+(ka=(ja=((ja=(ja|=ia=(a>>>=ia)>>>5&8)|(ia=(a>>>=ia)>>>2&4)|(ia=(a>>>=ia)>>>1&2))|(ia=(a>>>=ia)>>>1&1))+(a>>>ia)|0)<<3)>>2],(0|(a=q[ia+8>>2]))==(0|(ka=ka+8388|0))?(ma=dd(ja)&ma,q[2087]=ma):(q[a+12>>2]=ka,q[ka+8>>2]=a),a=ia+8|0,q[ia+4>>2]=3|na,q[4+(oa=ia+na|0)>>2]=1|(la=(ja<<=3)-na|0),q[ia+ja>>2]=la,pa&&(ia=8388+((ja=pa>>>3)<<3)|0,ka=q[2092],ja=(ja=1<>2]:(q[2087]=ja|ma,ia),q[ia+8>>2]=ka,q[ja+12>>2]=ka,q[ka+12>>2]=ia,q[ka+8>>2]=ja),q[2092]=oa,q[2089]=la;break a}if(!(ra=q[2088]))break k;for(ja=ia=(a=(ra&0-ra)-1|0)>>>12&16,ia=q[8652+(((ja=(ja|=ia=(a>>>=ia)>>>5&8)|(ia=(a>>>=ia)>>>2&4)|(ia=(a>>>=ia)>>>1&2))|(ia=(a>>>=ia)>>>1&1))+(a>>>ia)<<2)>>2],ka=(-8&q[ia+4>>2])-na|0,ja=ia;a=(a=q[ja+16>>2])||q[ja+20>>2];)ka=(ja=(la=(-8&q[a+4>>2])-na|0)>>>0>>0)?la:ka,ia=ja?a:ia,ja=a;if(qa=q[ia+24>>2],(0|(la=q[ia+12>>2]))!=(0|ia)){a=q[ia+8>>2],q[a+12>>2]=la,q[la+8>>2]=a;break b}if(!(a=q[(ja=ia+20|0)>>2])){if(!(a=q[ia+16>>2]))break j;ja=ia+16|0}for(;oa=ja,(a=q[(ja=(la=a)+20|0)>>2])||(ja=la+16|0,a=q[la+16>>2]););q[oa>>2]=0;break b}if(na=-1,!(4294967231>>0)&&(na=-8&(ia=a+11|0),pa=q[2088])){ja=0-na|0,ma=0,(ia>>>=8)&&(ma=31,16777215>>0||(ma=28+((a=((ma=(ia<<=ka=ia+1048320>>>16&8)<<(a=ia+520192>>>16&4))<<(ia=ma+245760>>>16&2)>>>15)-(ia|a|ka)|0)<<1|na>>>a+21&1)|0));q:{r:{if(ka=q[8652+(ma<<2)>>2])for(ia=na<<(31==(0|ma)?0:25-(ma>>>1)|0),a=0;;){if(!(ja>>>0<=(oa=(-8&q[ka+4>>2])-na|0)>>>0||(la=ka,ja=oa))){ja=0,a=ka;break r}if(oa=q[ka+20>>2],ka=q[16+((ia>>>29&4)+ka|0)>>2],a=oa&&(0|oa)!=(0|ka)?oa:a,ia<<=0!=(0|ka),!ka)break}else a=0;if(!(a|la)){if(!(a=(0-(a=2<>>12&16,a=q[8652+(((ka=(ka|=ia=(a>>>=ia)>>>5&8)|(ia=(a>>>=ia)>>>2&4)|(ia=(a>>>=ia)>>>1&2))|(ia=(a>>>=ia)>>>1&1))+(a>>>ia)<<2)>>2]}if(!a)break q}for(;ja=(ia=(ka=(-8&q[a+4>>2])-na|0)>>>0>>0)?ka:ja,la=ia?a:la,a=(ia=q[a+16>>2])||q[a+20>>2];);}if(!(!la|ja>>>0>=q[2089]-na>>>0)){if(oa=q[la+24>>2],(0|la)!=(0|(ia=q[la+12>>2]))){a=q[la+8>>2],q[a+12>>2]=ia,q[ia+8>>2]=a;break c}if(!(a=q[(ka=la+20|0)>>2])){if(!(a=q[la+16>>2]))break i;ka=la+16|0}for(;ma=ka,(a=q[(ka=(ia=a)+20|0)>>2])||(ka=ia+16|0,a=q[ia+16>>2]););q[ma>>2]=0;break c}}}if(na>>>0<=(ia=q[2089])>>>0){a=q[2092],16<=(ja=ia-na|0)>>>0?(q[2089]=ja,q[2092]=ka=a+na|0,q[ka+4>>2]=1|ja,q[a+ia>>2]=ja,q[a+4>>2]=3|na):(q[2092]=0,q[2089]=0,q[a+4>>2]=3|ia,q[4+(ia=a+ia|0)>>2]=1|q[ia+4>>2]),a=a+8|0;break a}if(na>>>0<(ka=q[2090])>>>0){q[2090]=ia=ka-na|0,a=q[2093],q[2093]=ja=a+na|0,q[ja+4>>2]=1|ia,q[a+4>>2]=3|na,a=a+8|0;break a}if((ja=(ma=(ja=la=na+47|(a=0))+(ia=q[2205]?q[2207]:(q[2208]=-1,q[2209]=-1,q[2206]=4096,q[2207]=4096,q[2205]=12+sa&-16^1431655768,q[2210]=0,q[2198]=0,4096))|0)&(oa=0-ia|0))>>>0<=na>>>0)break a;if((ia=q[2197])&&(qa=(pa=q[2195])+ja|0)>>>0<=pa>>>0|ia>>>0>>0)break a;if(4&r[8792])break f;v:{w:{if(ia=q[2093])for(a=8796;;){if((pa=q[a>>2])+q[a+4>>2]>>>0>ia>>>0&&pa>>>0<=ia>>>0)break w;if(!(a=q[a+8>>2]))break}if(-1==(0|(ia=ea(0))))break g;if(ma=ja,(ma=(ka=(a=q[2206])+-1|0)&ia?(ja-ia|0)+(ia+ka&0-a)|0:ma)>>>0<=na>>>0|2147483646>>0)break g;if((a=q[2197])&&(oa=(ka=q[2195])+ma|0)>>>0<=ka>>>0|a>>>0>>0)break g;if((0|ia)!=(0|(a=ea(ma))))break v;break e}if(2147483646<(ma=oa&ma-ka)>>>0)break g;if((0|(ia=ea(ma)))==(q[a>>2]+q[a+4>>2]|0))break h;a=ia}if(!(na+48>>>0<=ma>>>0|2147483646>>0|-1==(0|(ia=a)))){if(2147483646<(a=(a=q[2207])+(la-ma|0)&0-a)>>>0)break e;if(-1!=(0|ea(a))){ma=a+ma|0;break e}ea(0-ma|0);break g}if(-1!=(0|ia))break e;break g}la=0;break b}ia=0;break c}if(-1!=(0|ia))break e}q[2198]=4|q[2198]}if(2147483646>>0)break d;if(ia=ea(ja),(a=ea(0))>>>0<=ia>>>0|-1==(0|ia)|-1==(0|a))break d;if((ma=a-ia|0)>>>0<=na+40>>>0)break d}a=q[2195]+ma|0,(q[2195]=a)>>>0>t[2196]&&(q[2196]=a);x:{y:{z:{if(ja=q[2093]){for(a=8796;;){if(((ka=q[a>>2])+(la=q[a+4>>2])|0)==(0|ia))break z;if(!(a=q[a+8>>2]))break}break y}for((a=q[2091])>>>0<=ia>>>0&&a||(q[2091]=ia),a=0,q[2200]=ma,q[2199]=ia,q[2095]=-1,q[2096]=q[2205],q[2202]=0;q[8396+(ja=a<<3)>>2]=ka=ja+8388|0,q[ja+8400>>2]=ka,32!=(0|(a=a+1|0)););q[2090]=ka=(a=ma+-40|0)-(ja=ia+8&7?-8-ia&7:0)|0,q[2093]=ja=ia+ja|0,q[ja+4>>2]=1|ka,q[4+(a+ia|0)>>2]=40,q[2094]=q[2209];break x}if(!(8&r[a+12|0]|ia>>>0<=ja>>>0|ja>>>0>>0)){q[a+4>>2]=la+ma,q[2093]=ia=(a=ja+8&7?-8-ja&7:0)+ja|0,ka=q[2090]+ma|0,q[2090]=a=ka-a|0,q[ia+4>>2]=1|a,q[4+(ja+ka|0)>>2]=40,q[2094]=q[2209];break x}}ia>>>0<(la=q[2091])>>>0&&(q[2091]=ia,la=0),ka=ia+ma|0,a=8796;A:{B:{C:{D:{E:{F:{for(;(0|ka)!=q[a>>2];)if(!(a=q[a+8>>2]))break F;if(!(8&r[a+12|0]))break E}for(a=8796;;){if((ka=q[a>>2])>>>0<=ja>>>0&&ja>>>0<(la=ka+q[a+4>>2]|0)>>>0)break D;a=q[a+8>>2]}}if(q[a>>2]=ia,q[a+4>>2]=q[a+4>>2]+ma,q[4+(qa=(ia+8&7?-8-ia&7:0)+ia|0)>>2]=3|na,a=((ia=ka+(ka+8&7?-8-ka&7:0)|0)-qa|0)-na|0,oa=na+qa|0,(0|ia)==(0|ja)){q[2093]=oa,a=q[2090]+a|0,q[2090]=a,q[oa+4>>2]=1|a;break B}if(q[2092]==(0|ia)){q[2092]=oa,a=q[2089]+a|0,q[2089]=a,q[oa+4>>2]=1|a,q[a+oa>>2]=a;break B}if(1==(3&(ja=q[ia+4>>2]))){ra=-8&ja;G:if(ja>>>0<=255)la=ja>>>3,ja=q[ia+8>>2],(0|(ka=q[ia+12>>2]))==(0|ja)?(ua=q[2087]&dd(la),q[2087]=ua):(q[ja+12>>2]=ka,q[ka+8>>2]=ja);else{if(pa=q[ia+24>>2],(0|(ma=q[ia+12>>2]))!=(0|ia))ja=q[ia+8>>2],q[ja+12>>2]=ma,q[ma+8>>2]=ja;else if(na=(na=q[(ka=ia+20|0)>>2])||q[(ka=ia+16|0)>>2]){for(;ja=ka,(na=q[(ka=(ma=na)+20|0)>>2])||(ka=ma+16|0,na=q[ma+16>>2]););q[ja>>2]=0}else ma=0;if(pa){ja=q[ia+28>>2];J:{if(q[(ka=8652+(ja<<2)|0)>>2]==(0|ia)){if(q[ka>>2]=ma)break J;ua=q[2088]&dd(ja),q[2088]=ua;break G}if(!(q[pa+(q[pa+16>>2]==(0|ia)?16:20)>>2]=ma))break G}q[ma+24>>2]=pa,(ja=q[ia+16>>2])&&(q[ma+16>>2]=ja,q[ja+24>>2]=ma),(ja=q[ia+20>>2])&&(q[ma+20>>2]=ja,q[ja+24>>2]=ma)}}ia=ia+ra|0,a=a+ra|0}if(q[ia+4>>2]=-2&q[ia+4>>2],q[oa+4>>2]=1|a,(q[a+oa>>2]=a)>>>0<=255){a=8388+((ia=a>>>3)<<3)|0,ia=(ja=q[2087])&(ia=1<>2]:(q[2087]=ia|ja,a),q[a+8>>2]=oa,q[ia+12>>2]=oa,q[oa+12>>2]=a,q[oa+8>>2]=ia;break B}if(ia=0,(ka=a>>>8)&&(ia=31,16777215>>0||(ia=28+((ia=((na=(ka<<=la=ka+1048320>>>16&8)<<(ia=ka+520192>>>16&4))<<(ka=na+245760>>>16&2)>>>15)-(ka|ia|la)|0)<<1|a>>>ia+21&1)|0)),q[(ja=oa)+28>>2]=ia,q[oa+16>>2]=0,ja=8652+(ia<<2)|(q[oa+20>>2]=0),(ka=q[2088])&(la=1<>>1)|0),ia=q[ja>>2];;){if((-8&q[(ja=ia)+4>>2])==(0|a))break C;if(ia=ka>>>29,ka<<=1,!(ia=q[16+(la=(4&ia)+ja|0)>>2]))break}q[la+16>>2]=oa}else q[2088]=ka|la,q[ja>>2]=oa;q[oa+24>>2]=ja,q[oa+12>>2]=oa,q[oa+8>>2]=oa;break B}for(q[2090]=oa=(a=ma+-40|0)-(ka=ia+8&7?-8-ia&7:0)|0,q[2093]=ka=ia+ka|0,q[ka+4>>2]=1|oa,q[4+(a+ia|0)>>2]=40,q[2094]=q[2209],q[(ka=(a=(la+(la+-39&7?39-la&7:0)|0)-47|0)>>>0>>0?ja:a)+4>>2]=27,a=q[2202],q[ka+16>>2]=q[2201],q[ka+20>>2]=a,a=q[2200],q[ka+8>>2]=q[2199],q[ka+12>>2]=a,q[2201]=ka+8,q[2200]=ma,q[2199]=ia,a=ka+24|(q[2202]=0);q[a+4>>2]=7,ia=a+8|0,a=a+4|0,ia>>>0>>0;);if((0|ja)==(0|ka))break x;if(q[ka+4>>2]=-2&q[ka+4>>2],q[ja+4>>2]=1|(la=ka-ja|0),(q[ka>>2]=la)>>>0<=255){a=8388+((ia=la>>>3)<<3)|0,ia=(ka=q[2087])&(ia=1<>2]:(q[2087]=ia|ka,a),q[a+8>>2]=ja,q[ia+12>>2]=ja,q[ja+12>>2]=a,q[ja+8>>2]=ia;break x}if(q[ja+16>>2]=0,a=q[ja+20>>2]=0,(ka=la>>>8)&&(a=31,16777215>>0||(a=28+((a=((oa=(ka<<=ma=ka+1048320>>>16&8)<<(a=ka+520192>>>16&4))<<(ka=oa+245760>>>16&2)>>>15)-(ka|a|ma)|0)<<1|la>>>a+21&1)|0)),ia=8652+((q[(ia=ja)+28>>2]=a)<<2)|0,(ka=q[2088])&(ma=1<>>1)|0),ia=q[ia>>2];;){if((0|la)==(-8&q[(ka=ia)+4>>2]))break A;if(ia=a>>>29,a<<=1,!(ia=q[16+(ma=ka+(4&ia)|0)>>2]))break}q[ma+16>>2]=ja,q[ja+24>>2]=ka}else q[2088]=ka|ma,q[ia>>2]=ja,q[ja+24>>2]=ia;q[ja+12>>2]=ja,q[ja+8>>2]=ja;break x}a=q[ja+8>>2],q[a+12>>2]=oa,q[ja+8>>2]=oa,q[oa+24>>2]=0,q[oa+12>>2]=ja,q[oa+8>>2]=a}a=qa+8|0;break a}a=q[ka+8>>2],q[a+12>>2]=ja,q[ka+8>>2]=ja,q[ja+24>>2]=0,q[ja+12>>2]=ka,q[ja+8>>2]=a}if(!((a=q[2090])>>>0<=na>>>0)){q[2090]=ia=a-na|0,a=q[2093],q[2093]=ja=a+na|0,q[ja+4>>2]=1|ia,q[a+4>>2]=3|na,a=a+8|0;break a}}q[2086]=48,a=0;break a}Q:if(oa){a=q[la+28>>2];R:{if(q[(ka=8652+(a<<2)|0)>>2]==(0|la)){if(q[ka>>2]=ia)break R;pa=dd(a)&pa,q[2088]=pa;break Q}if(!(q[oa+(q[oa+16>>2]==(0|la)?16:20)>>2]=ia))break Q}q[ia+24>>2]=oa,(a=q[la+16>>2])&&(q[ia+16>>2]=a,q[a+24>>2]=ia),(a=q[la+20>>2])&&(q[ia+20>>2]=a,q[a+24>>2]=ia)}S:if(ja>>>0<=15)q[la+4>>2]=3|(a=ja+na|0),q[4+(a=a+la|0)>>2]=1|q[a+4>>2];else if(q[la+4>>2]=3|na,q[4+(ka=la+na|0)>>2]=1|ja,(q[ja+ka>>2]=ja)>>>0<=255)a=8388+((ia=ja>>>3)<<3)|0,ia=(ja=q[2087])&(ia=1<>2]:(q[2087]=ia|ja,a),q[a+8>>2]=ka,q[ia+12>>2]=ka,q[ka+12>>2]=a,q[ka+8>>2]=ia;else{a=0,(na=ja>>>8)&&(a=31,16777215>>0||(a=28+((a=((oa=(na<<=ma=na+1048320>>>16&8)<<(a=na+520192>>>16&4))<<(na=oa+245760>>>16&2)>>>15)-(na|a|ma)|0)<<1|ja>>>a+21&1)|0)),q[(ia=ka)+28>>2]=a,q[ka+16>>2]=0,ia=8652+(a<<2)|(q[ka+20>>2]=0);V:{if((na=1<>>1)|0),na=q[ia>>2];;){if((-8&q[(ia=na)+4>>2])==(0|ja))break V;if(na=a>>>29,a<<=1,!(na=q[16+(ma=(4&na)+ia|0)>>2]))break}q[ma+16>>2]=ka}else q[2088]=na|pa,q[ia>>2]=ka;q[ka+24>>2]=ia,q[ka+12>>2]=ka,q[ka+8>>2]=ka;break S}a=q[ia+8>>2],q[a+12>>2]=ka,q[ia+8>>2]=ka,q[ka+24>>2]=0,q[ka+12>>2]=ia,q[ka+8>>2]=a}a=la+8|0;break a}X:if(qa){a=q[ia+28>>2];Y:{if(q[(ja=8652+(a<<2)|0)>>2]==(0|ia)){if(q[ja>>2]=la)break Y;ua=dd(a)&ra,q[2088]=ua;break X}if(!(q[qa+(q[qa+16>>2]==(0|ia)?16:20)>>2]=la))break X}q[la+24>>2]=qa,(a=q[ia+16>>2])&&(q[la+16>>2]=a,q[a+24>>2]=la),(a=q[ia+20>>2])&&(q[la+20>>2]=a,q[a+24>>2]=la)}ka>>>0<=15?(q[ia+4>>2]=3|(a=ka+na|0),q[4+(a=a+ia|0)>>2]=1|q[a+4>>2]):(q[ia+4>>2]=3|na,q[4+(na=ia+na|0)>>2]=1|ka,q[ka+na>>2]=ka,pa&&(a=8388+((ja=pa>>>3)<<3)|0,la=q[2092],ja=(ja=1<>2]:(q[2087]=ja|ma,a),q[a+8>>2]=la,q[ja+12>>2]=la,q[la+12>>2]=a,q[la+8>>2]=ja),q[2092]=na,q[2089]=ka),a=ia+8|0}return L=16+sa|0,a}function ra(a,va,wa,xa,ya,za,Aa){var Qa,Ta,Ba,Ca=0,Da=0,Fa=0,Ia=0,Ja=0,Ka=0,Ma=0,Na=0,Oa=0,Pa=0,Ra=0,Sa=0;q[76+(L=Ba=L-80|0)>>2]=va,Ta=55+Ba|0,Qa=56+Ba|0,va=0;a:{b:{c:for(;;){(0|Oa)<0||(Oa=(2147483647-Oa|0)<(0|va)?(q[2086]=61,-1):va+Oa|0);e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{if(Ia=q[76+Ba>>2],Fa=r[0|(va=Ia)]){for(;;){r:{s:{t:if(Ca=255&Fa){if(37!=(0|Ca))break s;for(Fa=va;;){if(37!=r[va+1|0])break t;if(q[76+Ba>>2]=Ca=va+2|0,Fa=Fa+1|0,Da=r[va+2|0],va=Ca,37!=(0|Da))break}}else Fa=va;if(va=Fa-Ia|0,a&&Z(a,Ia,va),va)continue c;Pa=-1,Ja=!ha(o[q[76+(Ca=Ba)>>2]+(Fa=1)|0]),va=q[76+Ba>>2],Ja|36!=r[va+2|0]||(Pa=o[va+1|0]+-48|0,Ra=1,Fa=3),q[Ca+76>>2]=va=Fa+va|0;u:if(31<(Da=(Ma=o[(Fa=0)|va])+-32|0)>>>0)Ca=va;else if(Ca=va,75913&(Da=1<>2]=Ca=va+1|0,Fa|=Da,31<(Da=(Ma=o[va+1|0])+-32|0)>>>0)break u;if(va=Ca,!(75913&(Da=1<>2],36==r[va+2|0]))q[((o[va+1|0]<<2)+ya|0)-192>>2]=10,Na=q[((o[va+1|0]<<3)+xa|0)-384>>2],Ra=1,va=va+3|0;else{if(Ra)break b;Na=Ra=0,a&&(va=q[wa>>2],q[wa>>2]=va+4,Na=q[va>>2]),va=q[76+Ba>>2]+1|0}q[Ja+76>>2]=va,-1<(0|Na)||(Na=0-Na|0,Fa|=8192)}else{if((0|(Na=Ha(76+Ba|0)))<0)break b;va=q[76+Ba>>2]}if(Da=-1,46==r[0|va])if(42==r[va+1|0])if(ha(o[va+2|0])&&(va=q[76+Ba>>2],36==r[va+3|0]))q[((o[va+2|0]<<2)+ya|0)-192>>2]=10,Da=q[((o[va+2|0]<<3)+xa|0)-384>>2],q[76+Ba>>2]=va=va+4|0;else{if(Ra)break b;Da=a?(va=q[wa>>2],q[wa>>2]=va+4,q[va>>2]):0,va=q[76+Ba>>2]+2|0,q[76+Ba>>2]=va}else q[76+Ba>>2]=va+1,Da=Ha(76+Ba|0),va=q[76+Ba>>2];for(Ca=0;;){if(Sa=Ca,Ka=-1,57>>0)break a;if(q[76+Ba>>2]=Ma=va+1|0,Ca=o[0|va],va=Ma,!((Ca=r[3295+(Ca+w(Sa,58)|0)|0])+-1>>>0<8))break}if(!Ca)break a;A:{B:{C:{if(19==(0|Ca)){if((0|Pa)<=-1)break C;break a}if((0|Pa)<0)break B;q[(Pa<<2)+ya>>2]=Ca,Ca=q[4+(va=(Pa<<3)+xa|0)>>2],q[64+Ba>>2]=q[va>>2],q[68+Ba>>2]=Ca}if(va=0,a)break A;continue c}if(!a)break e;Ga(64+Ba|0,Ca,wa,Aa),Ma=q[76+Ba>>2]}if(Ja=-65537&Fa,Fa=8192&Fa?Ja:Fa,Pa=3336,Ca=Qa,va=o[Ma+-1|(Ka=0)],(Ma=(va=Sa&&3==(15&va)?-33&va:va)+-88|0)>>>0<=32)break r;D:{E:{F:{G:{if(6<(Ja=va+-65|0)>>>0){if(83!=(0|va))break f;if(!Da)break G;Ca=q[64+Ba>>2];break E}switch(Ja-1|0){case 1:break F;case 0:case 2:break f;default:break q}}_(a,32,Na,va=0,Fa);break D}q[12+Ba>>2]=0,q[8+Ba>>2]=q[64+Ba>>2],q[64+Ba>>2]=8+Ba,Da=-1,Ca=8+Ba|0}va=0;H:{for(;;){if(!(Ia=q[Ca>>2]))break H;if((Ja=(0|(Ia=Ea(4+Ba|0,Ia)))<0)|Da-va>>>0>>0)break;if(Ca=Ca+4|0,!((va=va+Ia|0)>>>0>>0))break H}if(Ka=-1,Ja)break a}if(_(a,32,Na,va,Fa),va)for(Da=0,Ca=q[64+Ba>>2];;){if(!(Ia=q[Ca>>2]))break D;if((0|va)<(0|(Da=(Ia=Ea(4+Ba|0,Ia))+Da|0)))break D;if(Z(a,4+Ba|0,Ia),Ca=Ca+4|0,!(Da>>>0>>0))break}else va=0}_(a,32,Na,va,8192^Fa),va=(0|va)<(0|Na)?Na:va;continue c}q[76+Ba>>2]=Ca=va+1|0,Fa=r[va+1|0],va=Ca;continue}break}switch(Ma-1|0){case 28:break i;case 21:break j;case 23:break l;case 22:break m;case 11:case 16:break n;case 10:break o;case 26:break p;case 8:case 12:case 13:case 14:break q;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 9:case 15:case 17:case 18:case 19:case 20:case 24:case 25:case 27:case 29:case 30:break f;default:break k}}if(Ka=Oa,a)break a;if(!Ra)break e;for(va=1;;){if(a=q[(va<<2)+ya>>2]){if(Ga((va<<3)+xa|0,a,wa,Aa),10!=(0|(va=va+(Ka=1)|0)))continue;break a}break}if(Ka=1,9>>0)break a;if(Ka=-1,q[(va<<2)+ya>>2])break a;for(;!q[((va=va+1|0)<<2)+ya>>2]&&10!=(0|va););Ka=va>>>0<10?-1:1;break a}va=0|n[za](a,v[64+Ba>>3],Na,Da,Fa,va);continue}Ca=(va=La(Ia=(va=q[64+Ba>>2])||3346,Da))||Da+Ia|0,Fa=Ja,Da=va?va-Ia|0:Da;break f}o[55+Ba|0]=q[64+Ba>>2],Da=1,Ia=Ta,Fa=Ja;break f}if(va=Ja=q[68+Ba>>2],Ia=q[64+Ba>>2],(0|va)<-1||(0|va)<=-1&&!(4294967295>>0)){va=0-(va+(0>>0)|0)|0,q[64+Ba>>2]=Ia=0-Ia|0,q[68+Ba>>2]=va,Ka=1,Pa=3336;break h}if(2048&Fa){Ka=1,Pa=3337;break h}Pa=(Ka=1&Fa)?3338:3336;break h}if(Ia=function(a,Il,Rm){if(a|Il)for(;o[0|(Rm=Rm+-1|0)]=7&a|48,(a=(7&Il)<<29|a>>>3)|(Il>>>=3););return Rm}(q[64+Ba>>2],q[68+Ba>>2],Qa),!(8&Fa))break g;Da=(0|(va=Qa-Ia|0))<(0|Da)?Da:va+1|0;break g}Da=8>>0?Da:8,Fa|=8,va=120}if(Ia=function(a,Il,Rm,Sm){if(a|Il)for(;o[0|(Rm=Rm+-1|0)]=r[3824+(15&a)|0]|Sm,(a=(15&Il)<<28|a>>>4)|(Il>>>=4););return Rm}(q[64+Ba>>2],q[68+Ba>>2],Qa,32&va),!(8&Fa)|!(q[64+Ba>>2]|q[68+Ba>>2]))break g;Pa=3336+(va>>>4)|0,Ka=2;break g}if(7<(Ca=255&Sa)>>>(va=0))continue;switch(Ca-1|0){default:case 0:q[q[64+Ba>>2]>>2]=Oa;continue;case 1:Ca=q[64+Ba>>2],q[Ca>>2]=Oa,q[Ca+4>>2]=Oa>>31;continue;case 2:p[q[64+Ba>>2]>>1]=Oa;continue;case 3:o[q[64+Ba>>2]]=Oa;continue;case 5:q[q[64+Ba>>2]>>2]=Oa;continue;case 4:continue;case 6:}Ca=q[64+Ba>>2],q[Ca>>2]=Oa,q[Ca+4>>2]=Oa>>31;continue}Ia=q[64+Ba>>2],va=q[68+Ba>>2],Pa=3336}Ia=ga(Ia,va,Qa)}Fa=-1<(0|Da)?-65537&Fa:Fa,Da=!!((Ja=va=q[68+Ba>>2])|(Ma=q[64+Ba>>2]))|Da?(0|(va=!(Ja|Ma)+(Qa-Ia|0)|0))<(0|Da)?Da:va:(Ia=Qa,0)}_(a,32,va=(0|Na)<(0|(Ca=(Da=(0|Da)<(0|(Ja=Ca-Ia|0))?Ja:Da)+Ka|0))?Ca:Na,Ca,Fa),Z(a,Pa,Ka),_(a,48,va,Ca,65536^Fa),_(a,48,Da,Ja,0),Z(a,Ia,Ja),_(a,32,va,Ca,8192^Fa);continue}break}Ka=0;break a}Ka=-1}return L=80+Ba|0,Ka}function sa(a){var ya,va=0,wa=0,xa=0,za=0,xa=4,wa=1439;a:if(va=r[0|a]){for(;!((0|(ya=r[0|wa]))!=(0|va)||!(xa=xa+-1|0)|!ya);)if(wa=wa+1|0,va=r[a+1|0],a=a+1|0,!va)break a;za=va}return(255&za)-r[0|wa]|0}function ta(a,Aa,Ea){var La,Ga,Ha=0,Ua=0,Va=0;q[(L=Ga=L-240|0)>>2]=a,Ua=1;a:if(!((0|Aa)<2))for(Ha=a;;){if(Ha=(La=Ha+-4|0)-q[((Va=Aa+-2|0)<<2)+Ea>>2]|0,0<=(0|n[5](a,Ha))&&-1<(0|n[5](a,La)))break a;if(a=(Ua<<2)+Ga|0,0<=(0|n[5](Ha,La))?(q[a>>2]=Ha,Va=Aa+-1|0):Ha=q[a>>2]=La,Ua=Ua+1|0,(0|Va)<2)break a;a=q[Ga>>2],Aa=Va}Na(Ga,Ua),L=240+Ga|0}function ua(a){var Ea,ab,Aa=0;if(x(0),function(a){var Vg,Wg;q[a+428>>2]&&(Wg=q[a+332>>2],$(q[a+460>>2],q[a+436>>2],Vg=Wg<<2),$(q[a+464>>2],q[a+440>>2],Vg),$(q[a+468>>2],q[a+448>>2],Vg),r[q[a>>2]+4|0]<4||($(q[a+472>>2],q[a+452>>2],Vg=Wg<<4),$(q[a+476>>2],q[a+456>>2],Vg)))}(a),function(a){var ke,le,me,fe=0,ge=x(0),he=x(0),ie=0,je=x(0);x(0),x(0);if(1<=(0|(ie=q[a>>2])))for(me=(fe=q[a+4>>2])+w(ie,52)|0,a=q[a+12>>2];ge=u[a>>2],u[fe+44>>2]!=(ge=(ke=q[fe+16>>2])?(he=ge,ge=u[fe+4>>2],je=u[fe+12>>2],he=x(x(he-ge)/je),le=x(C(he)),ie=x(y(le))>2],he=u[fe+8>>2],ge>2]=ge,q[fe+48>>2]=1):q[fe+48>>2]=0,ke||(u[a>>2]=ge),a=a+4|0,(fe=fe+52|0)>>>0>>0;);}(a+540|0),function(a){var Wd,Xd,ae,ce,de,ee,Rd=0,Sd=0,Td=x(0),Ud=0,Vd=x(0),Yd=(x(0),x(0),0),Zd=x(0),_d=0,$d=0,be=0;x(0);if(1<=(0|(Ud=q[a+540>>2])))for(de=(Yd=q[a+544>>2])+w(Ud,52)|0,ee=q[a+644>>2];;){a:if(!(q[Yd>>2]||(0|(Ud=q[Yd+32>>2]))<1))if(ae=(a=q[Yd+28>>2])+w(Ud,28)|0,ce=u[Yd+24>>2],Xd=u[Yd+20>>2],Wd=u[Yd+44>>2],ee)for(;;){Zd=x($d=0);h:{i:{j:{if((0|(Sd=q[a>>2]))<1)Rd=Ud=0;else if(_d=q[a+4>>2],Vd=u[_d>>2],Td=x(Vd-Xd),1==(0|Sd))Ud=Wd>2],!(Wd>2],Wd>2])break h;break i}Rd=Sd+-1|0,Ud=1}_d=(Sd=(Vd=u[a+12>>2])!=Zd)&(Zd==x(0)|Vd==x(0))|q[a+8>>2]!=(0|Rd),$d=Ud}if(q[a+20>>2]=_d,q[a+24>>2]=Sd,u[a+12>>2]=Zd,q[a+16>>2]=$d,q[a+8>>2]=Rd,!((a=a+28|0)>>>0>>0))break}else{if(!q[Yd+48>>2])for(;;)if(q[a+20>>2]=0,!((a=a+28|(q[a+24>>2]=0))>>>0>>0))break a;for(;;){Zd=x($d=0);b:{c:{d:{e:if(!(((Sd=0)|(Rd=q[(_d=a)>>2]))<1)){if(Ud=q[a+4>>2],Vd=u[Ud>>2],Td=x(Vd-Xd),1!=(0|Rd)){if(!(Wd>2],!(Wd>2],Wd>2]))break b}$d=Ud,be=(Sd=(Vd=u[a+12>>2])!=Zd)&(Zd==x(0)|Vd==x(0))|q[a+8>>2]!=(0|Rd)}if(q[_d+20>>2]=be,q[a+24>>2]=Sd,u[a+12>>2]=Zd,q[a+16>>2]=$d,q[a+8>>2]=Rd,!((a=a+28|0)>>>0>>0))break}}if(!((Yd=Yd+52|0)>>>0>>0))break}}(a),function(a){var rd,sd,td,ud,vd,kd=0,ld=x(0),md=0,nd=0,od=x(0),pd=0,qd=x(0);x(0);if(!(r[q[a>>2]+4|0]<4||(0|(kd=q[a+540>>2]))<1))for(ud=(pd=q[a+544>>2])+w(kd,52)|0,vd=q[a+644>>2];;){b:if(1==q[pd>>2]&&!((0|(kd=q[pd+40>>2]))<1))if(sd=(a=q[pd+36>>2])+w(kd,28)|0,rd=u[pd+44>>2],vd)for(;;){qd=x(kd=0);d:if(!((0|(nd=q[a>>2]))<2||(md=q[a+4>>2],rd<=(ld=u[md>>2])))){kd=1;e:if(!(rd<(od=u[md+4>>2]))){for(;ld=od,(0|nd)!=(0|(kd=kd+1|0));)if(rd<(od=u[md+(kd<<2)>>2]))break e;kd=nd+-1|0;break d}qd=x(x(rd-ld)/x(od-ld)),kd=kd+-1|0}if(ld=u[a+16>>2],u[a+16>>2]=qd,nd=q[a+12>>2],q[a+12>>2]=kd,q[a+24>>2]=md=ld!=qd,q[a+20>>2]=md&(qd==x(0)|ld==x(0))|(0|kd)!=(0|nd),!((a=a+28|0)>>>0>>0))break}else{if(!q[pd+48>>2])for(;;)if(q[a+20>>2]=0,!((a=a+28|(q[a+24>>2]=0))>>>0>>0))break b;for(;;){qd=x(nd=0);c:if(!((0|(td=q[a>>2]))<2||(md=q[a+4>>2],rd<=(ld=u[md>>2])))){if(kd=1,!(rd<(od=u[md+4>>2])))for(nd=td+-1|0;;){if(ld=od,(0|kd)==(0|nd))break c;if(rd<(od=u[md+((kd=kd+1|0)<<2)>>2]))break}qd=x(x(rd-ld)/x(od-ld)),nd=kd+-1|0}if(ld=u[a+16>>2],u[a+16>>2]=qd,kd=q[a+12>>2],q[a+12>>2]=nd,q[a+24>>2]=md=ld!=qd,q[a+20>>2]=md&(qd==x(0)|ld==x(0))|(0|kd)!=(0|nd),!((a=a+28|0)>>>0>>0))break}}if(!((pd=pd+52|0)>>>0>>0))break}}(a),function(a){var Id,Jd,Md,Nd,Od,Pd,Qd,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=x(0),Ed=0,Gd=0,Hd=0,Kd=0,Ld=0;if(1<=(0|(xd=q[a+564>>2])))for(Pd=(Ad=q[a+568>>2])+w(xd,36)|0,Nd=q[a+644>>2];;){a:{if(!(Bd=((yd=zd=xd=0)|(Jd=q[Ad+4>>2]))<1))for(Ed=q[Ad>>2],a=Kd=0;;){if(wd=q[Ed+(a<<2)>>2],q[wd+16>>2]){wd=1,Ld=0;break a}if(yd=yd||q[wd+24>>2],xd=xd||q[wd+20>>2],zd=(u[wd+12>>2]!=x(0))+zd|0,(0|Jd)==(0|(a=a+1|0)))break}if(wd=0,(Kd=Nd?1:yd)|(Ld=Nd?1:xd)&&(q[Ad+12>>2]=Ed=1<>2],Od=q[Ad>>2],yd=(a=q[Ad+16>>2])+(Cd=Ed<<2)|0,yd=ca(a,0,4+((-1^a)+((a=a+4|0)>>>0>>0?yd:a)|0)&-4),Cd=xd+Cd|0,a=xd;q[a>>2]=1065353216,(a=a+4|0)>>>0>>0;);if(!Bd){if(Bd=0,Cd=wd=1,zd)for(;;){if(zd=q[(Bd<<2)+Od>>2],Gd=q[zd+8>>2],Hd=w(Gd,wd),(Dd=u[zd+12>>2])!=x(a=0)){for(q[yd>>2]=Hd+q[yd>>2],u[xd>>2]=x(x(1)-Dd)*u[xd>>2],Gd=w(Gd+(a=1)|0,wd);Dd=u[zd+12>>2],Qd=q[(Md=(Id=a<<2)+yd|0)>>2],q[Md>>2]=Qd+((Md=a&Cd)?Gd:Hd),u[(Id=xd+Id|0)>>2]=(Md?Dd:x(x(1)-Dd))*u[Id>>2],(0|Ed)!=(0|(a=a+1|0)););Cd<<=1}else for(;q[(Gd=yd+(a<<2)|0)>>2]=Hd+q[Gd>>2],(0|Ed)!=(0|(a=a+1|0)););if(wd=w(q[zd>>2],wd),(0|Jd)==(0|(Bd=Bd+1|0)))break}else for(;;){if(zd=q[(Bd<<2)+Od>>2],Cd=w(q[zd+8>>2],wd),(Dd=u[zd+12>>2])!=x(a=0))q[yd>>2]=Cd+q[yd>>2],u[xd>>2]=x(x(1)-Dd)*u[xd>>2];else for(;q[(Hd=yd+(a<<2)|0)>>2]=Cd+q[Hd>>2],(0|Ed)!=(0|(a=a+1|0)););if(wd=w(q[zd>>2],wd),(0|Jd)==(0|(Bd=Bd+1|0)))break}wd=0}}}if(q[Ad+32>>2]=wd,q[Ad+24>>2]=Ld,q[Ad+28>>2]=Kd,!((Ad=Ad+36|0)>>>0>>0))break}}(a),function(a){var gd,hd,id,jd,Wc=x(0),Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=x(0),bd=x(0),cd=x(0),dd=0,ed=0,fd=0;if(!(r[q[a>>2]+4|0]<4||(0|(Xc=q[a+588>>2]))<1))for(jd=(Zc=q[a+592>>2])+w(Xc,48)|0,gd=q[a+644>>2];;){if(a=q[Zc>>2],(ed=gd?1:q[a+20>>2])|(fd=gd?1:q[a+24>>2])){c:{d:{$c=Zc,_c=q[a+8>>2],Xc=q[a+12>>2],Wc=u[a+16>>2],a=(0|_c)!=(0|Xc);e:{if(Wc!=x(0)){if(a=Xc+1|0,(0|Xc)==(0|_c)){q[Zc+8>>2]=ed=1,Wc=x(x(1)-Wc),fd=1;break e}a=(0|a)==(0|_c)?1:2}if(q[$c+8>>2]=a,!fd)break d;a=Xc}u[Zc+24>>2]=Wc,u[Zc+20>>2]=x(1)-Wc;break c}fd=0,a=Xc}ed?(q[Zc+12>>2]=a,q[Zc+16>>2]=a+1):ed=0}else ed=fd=0;g:if((0|(hd=q[Zc+36>>2]))<1)cd=x(1);else{if(id=q[Zc+40>>2],a=0,cd=x(1),!gd)for(;;){h:{i:{if(Xc=q[(a<<2)+id>>2],Yc=q[Xc>>2]){if(!q[Yc+48>>2]){Wc=u[Xc+16>>2];break h}if((0|(_c=q[Xc+12>>2]))<1){Wc=x(1),u[Xc+16>>2]=1;break h}if(dd=q[Xc+8>>2],1!=(0|_c)&&(ad=u[Yc+44>>2],$c=q[Xc+4>>2],!(ad<=(bd=u[$c>>2]))))break i;Wc=u[dd>>2],u[Xc+16>>2]=Wc;break h}q[Xc+16>>2]=1065353216,Wc=x(1);break h}Yc=1;j:if(!(ad<(Wc=u[$c+4>>2]))){for(;bd=Wc,(0|_c)!=(0|(Yc=Yc+1|0));)if(ad<(Wc=u[$c+(Yc<<2)>>2]))break j;Wc=u[(dd+(_c<<2)|0)-4>>2],u[Xc+16>>2]=Wc;break h}$c=Xc,Wc=x(x(ad-bd)/x(Wc-bd)),Wc=x(x(Wc*u[(Xc=dd+(Yc<<2)|0)>>2])+x(u[Xc+-4>>2]*x(x(1)-Wc))),u[$c+16>>2]=Wc}if(cd=cd>2],Yc=q[Xc>>2],Wc=x(1);l:if(Yc&&(dd=q[Xc+12>>2],Wc=x(1),!((0|dd)<1))&&(_c=q[Xc+8>>2],Wc=u[_c>>2],1!=(0|dd))){m:{if(ad=u[Yc+44>>2],$c=q[Xc+4>>2],ad<=(bd=u[$c>>2])){Wc=u[_c>>2];break l}if(Yc=1,!(ad<(Wc=u[$c+4>>2]))){for(;bd=Wc,(0|dd)!=(0|(Yc=Yc+1|0));)if(ad<(Wc=u[$c+(Yc<<2)>>2]))break m;Wc=u[(_c+(dd<<2)|0)-4>>2];break l}}Wc=x(x(ad-bd)/x(Wc-bd)),Wc=x(x(Wc*u[(Yc=_c+(Yc<<2)|0)>>2])+x(u[Yc+-4>>2]*x(x(1)-Wc)))}if(cd=cd<(u[Xc+16>>2]=Wc)?cd:Wc,(0|hd)==(0|(a=a+1|0)))break}}if(q[Zc+32>>2]=fd,q[Zc+28>>2]=ed,u[Zc+44>>2]=cd,!((Zc=Zc+48|0)>>>0>>0))break}}(a),1<=(0|(Ea=q[a+4>>2])))for(Ea=(Aa=q[a+52>>2])+(Ea<<2)|0;ab=u[Aa>>2],u[Aa>>2]=ab>>0>>0;);!function(a){var Fe,Ge,He,De=0,Ee=0;if(1<=(0|(Ee=q[a+4>>2])))for(He=(De=q[a+8>>2])+w(Ee,12)|0,a=Fe=q[a+40>>2];Ee=0,q[De+8>>2]&&(Ge=q[De+4>>2],!q[(Ge<<2)+Fe>>2]&&-1!=(0|Ge)||(Ee=!q[q[De>>2]+32>>2])),q[a>>2]=Ee,a=a+4|0,(De=De+12|0)>>>0>>0;);}(a),function(a){var rg,vg,wg,xg,yg,zg,Ag,pg=0,qg=0,sg=0,tg=0,ug=0;if(1<=(0|(vg=q[a+4>>2])))for(xg=q[a+8>>2],wg=q[a>>2],yg=q[wg+724>>2];;){if(rg=q[w(tg,12)+xg>>2],(q[rg+28>>2]||q[rg+24>>2])&&(q[(pg=tg<<2)+q[a+28>>2]>>2]=q[rg+12>>2],q[rg+24>>2])&&!((0|(sg=q[rg+12>>2]))<1))for(sg=(qg=q[rg+16>>2])+(sg<<2)|0,zg=q[pg+yg>>2],pg=q[a+36>>2]+(ug<<2)|0,Ag=q[wg+976>>2];q[pg>>2]=q[(q[qg>>2]+zg<<2)+Ag>>2],pg=pg+4|0,(qg=qg+4|0)>>>0>>0;);if(q[rg+28>>2]&&!((0|(pg=q[rg+12>>2]))<1))for(sg=(qg=q[rg+20>>2])+(pg<<2)|0,pg=q[a+32>>2]+(ug<<2)|0;q[pg>>2]=q[qg>>2],pg=pg+4|0,(qg=qg+4|0)>>>0>>0;);if(ug=q[rg+8>>2]+ug|0,(0|vg)==(0|(tg=tg+1|0)))break}}(a),n[q[1808]](a+12|0,q[a+36>>2],q[a+44>>2],q[a+40>>2]),function(a){var xe,ye,ze,Ae,Be,Ce,ue=0,ve=0,we=0;if(1<=(0|(we=q[a+304>>2])))for(ze=(ue=q[a+308>>2])+(we<<5)|0,Ae=q[a+264>>2],Be=q[a+144>>2],Ce=q[a+40>>2],we=ye=q[a+312>>2];xe=we,ve=0,a=ve=!q[ue+28>>2]||-1!=(0|(a=q[ue+4>>2]))&&(ve=0,!q[(a<<2)+Ce>>2])||-1!=(0|(a=q[ue+8>>2]))&&(ve=0,!q[(a<<2)+ye>>2])?ve:!q[q[ue>>2]+32>>2],q[xe>>2]=a,(xe=q[ue+12>>2])>>>0<=1?xe-1?q[(q[ue+16>>2]<<2)+Be>>2]=a:q[(q[ue+16>>2]<<2)+Ae>>2]=a:Y(4,1372,0),we=we+4|0,(ue=ue+32|0)>>>0>>0;);}(a),function(a){var gg,hg,ig,jg,kg,lg,mg,ng,og,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,Yf=q[a>>2];if(1<=(0|($f=q[a+56>>2]))){for(ag=q[a+60>>2],bg=q[Yf+1052>>2],cg=q[Yf+784>>2];;){if(Uf=q[ag+w(Zf,24)>>2],(q[Uf+28>>2]||q[Uf+24>>2])&&(q[(Vf=Zf<<2)+q[a+80>>2]>>2]=q[Uf+12>>2],q[Uf+24>>2])&&!((0|(Xf=q[Uf+12>>2]))<1))for(dg=(Wf=q[Uf+16>>2])+(Xf<<2)|0,eg=q[Vf+cg>>2],Vf=(Xf=_f<<2)+q[a+92>>2]|0,Xf=Xf+q[a+88>>2]|0;fg=eg+q[Wf>>2]<<2,q[Vf>>2]=bg+(q[fg+q[Yf+984>>2]>>2]<<2),q[Xf>>2]=q[fg+q[Yf+980>>2]>>2],Xf=Xf+4|0,Vf=Vf+4|0,(Wf=Wf+4|0)>>>0>>0;);if(q[Uf+28>>2]&&!((0|(Vf=q[Uf+12>>2]))<1))for(Xf=(Wf=q[Uf+20>>2])+(Vf<<2)|0,Vf=q[a+84>>2]+(_f<<2)|0;q[Vf>>2]=q[Wf>>2],Vf=Vf+4|0,(Wf=Wf+4|0)>>>0>>0;);if(_f=q[Uf+8>>2]+_f|0,(0|$f)==(0|(Zf=Zf+1|0)))break}Yf=q[a>>2]}if(!(r[Yf+4|0]<4||(0|(eg=q[a+56>>2]))<1))for(fg=q[Yf+792>>2],gg=q[a+60>>2],Wf=_f=0;;){if(Zf=q[w(Wf,24)+gg>>2],q[Zf+24>>2]&&!((0|(Uf=q[Zf+12>>2]))<1))for(hg=(Vf=q[Zf+16>>2])+(Uf<<2)|0,ig=q[fg+(Wf<<2)>>2],Xf=(Uf=_f<<2)+q[a+96>>2]|0,$f=Uf+q[a+100>>2]|0,ag=Uf+q[a+104>>2]|0,bg=Uf+q[a+108>>2]|0,cg=Uf+q[a+112>>2]|0,dg=Uf+q[a+116>>2]|0,jg=q[Yf+1308>>2],kg=q[Yf+1304>>2],lg=q[Yf+1300>>2],mg=q[Yf+1296>>2],ng=q[Yf+1292>>2],og=q[Yf+1288>>2];Uf=q[Vf>>2]+ig<<2,q[Xf>>2]=q[Uf+og>>2],q[$f>>2]=q[Uf+ng>>2],q[ag>>2]=q[Uf+mg>>2],q[bg>>2]=q[Uf+lg>>2],q[cg>>2]=q[Uf+kg>>2],q[dg>>2]=q[Uf+jg>>2],dg=dg+4|0,cg=cg+4|0,bg=bg+4|0,ag=ag+4|0,$f=$f+4|0,Xf=Xf+4|0,(Vf=Vf+4|0)>>>0>>0;);if(_f=q[Zf+8>>2]+_f|0,(0|eg)==(0|(Wf=Wf+1|0)))break}}(a),function(a){var xf=0,yf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=q[a+168>>2],zf=q[a>>2];if(1<=(0|(Kf=q[a+164>>2])))for(Mf=q[zf+816>>2];;){if(Af=q[w(Ef,12)+Tf>>2],(q[Af+28>>2]||q[Af+24>>2])&&(q[(Ff=Ef<<2)+q[a+188>>2]>>2]=q[Af+12>>2],q[Af+24>>2])){if(yf=q[Af+16>>2],Lf=q[Ff+Mf>>2],1<=(0|(xf=q[Af+12>>2])))for(Nf=yf+(xf<<2)|0,Bf=(xf=Df<<2)+q[a+200>>2]|0,Gf=xf+q[a+204>>2]|0,Hf=xf+q[a+208>>2]|0,If=xf+q[a+212>>2]|0,Jf=xf+q[a+196>>2]|0,Of=q[zf+996>>2],Pf=q[zf+1012>>2],Qf=q[zf+1008>>2],Rf=q[zf+1004>>2],Sf=q[zf+1e3>>2],xf=yf;Cf=Lf+q[xf>>2]<<2,q[Bf>>2]=q[Cf+Sf>>2],q[Gf>>2]=q[Cf+Rf>>2],q[Hf>>2]=q[Cf+Qf>>2],q[If>>2]=q[Cf+Pf>>2],q[Jf>>2]=q[Cf+Of>>2],Jf=Jf+4|0,If=If+4|0,Hf=Hf+4|0,Gf=Gf+4|0,Bf=Bf+4|0,(xf=xf+4|0)>>>0>>0;);xf=Lf+q[yf>>2]<<2,q[Ff+q[a+288>>2]>>2]=q[xf+q[zf+1016>>2]>>2],q[Ff+q[a+292>>2]>>2]=q[xf+q[zf+1020>>2]>>2]}if(q[Af+28>>2]&&!((0|(yf=q[Af+12>>2]))<1))for(yf=(xf=q[Af+20>>2])+(yf<<2)|0,Bf=q[a+192>>2]+(Df<<2)|0;q[Bf>>2]=q[xf>>2],Bf=Bf+4|0,(xf=xf+4|0)>>>0>>0;);if(Df=q[Af+8>>2]+Df|0,(0|Kf)==(0|(Ef=Ef+1|0)))break}if(!(r[zf+4|0]<4||(0|(Ff=q[a+164>>2]))<1))for(Lf=q[zf+824>>2],Df=Af=0;;){if(Cf=q[w(Df,12)+Tf>>2],q[Cf+24>>2]&&!((0|(xf=q[Cf+12>>2]))<1))for(Kf=(Bf=q[Cf+16>>2])+(xf<<2)|0,Mf=q[Lf+(Df<<2)>>2],Gf=(yf=Af<<2)+q[a+216>>2]|0,Hf=yf+q[a+220>>2]|0,If=yf+q[a+224>>2]|0,Jf=yf+q[a+228>>2]|0,xf=yf+q[a+232>>2]|0,Ef=yf+q[a+236>>2]|0,Nf=q[zf+1308>>2],Of=q[zf+1304>>2],Pf=q[zf+1300>>2],Qf=q[zf+1296>>2],Rf=q[zf+1292>>2],Sf=q[zf+1288>>2];yf=Mf+q[Bf>>2]<<2,q[Gf>>2]=q[yf+Sf>>2],q[Hf>>2]=q[yf+Rf>>2],q[If>>2]=q[yf+Qf>>2],q[Jf>>2]=q[yf+Pf>>2],q[xf>>2]=q[yf+Of>>2],q[Ef>>2]=q[yf+Nf>>2],Ef=Ef+4|0,xf=xf+4|0,Jf=Jf+4|0,If=If+4|0,Hf=Hf+4|0,Gf=Gf+4|0,(Bf=Bf+4|0)>>>0>>0;);if(Af=q[Cf+8>>2]+Af|0,(0|Ff)==(0|(Df=Df+1|0)))break}}(a),function(a){var yk,qk=0,rk=0,sk=0,tk=0,uk=0,vk=0,wk=0,xk=0,qk=a- -64|0;if(n[q[1807]](qk,q[a+88>>2],q[a+148>>2],q[a+144>>2]),n[q[1809]](qk,q[a+92>>2],q[a+152>>2],q[q[a>>2]+796>>2],2,q[a+144>>2]),!(r[q[a>>2]+4|0]<4||(n[q[1807]](qk,q[a+96>>2],q[a+120>>2],q[a+144>>2]),n[q[1807]](qk,q[a+100>>2],q[a+124>>2],q[a+144>>2]),n[q[1807]](qk,q[a+104>>2],q[a+128>>2],q[a+144>>2]),n[q[1807]](qk,q[a+108>>2],q[a+132>>2],q[a+144>>2]),n[q[1807]](qk,q[a+112>>2],q[a+136>>2],q[a+144>>2]),n[q[1807]](qk,q[a+116>>2],q[a+140>>2],q[a+144>>2]),(0|(vk=q[a+56>>2]))<1))){for(wk=q[a+128>>2],xk=q[a+124>>2],yk=q[a+120>>2],rk=q[a+156>>2],qk=0;q[(sk=tk<<2)+rk>>2]=q[(uk=qk<<2)+yk>>2],q[rk+(4|sk)>>2]=q[uk+xk>>2],q[rk+(8|sk)>>2]=q[uk+wk>>2],tk=tk+4|0,(0|vk)!=(0|(qk=qk+1|0)););for(rk=q[a+160>>2],uk=q[a+140>>2],wk=q[a+136>>2],xk=q[a+132>>2],qk=a=0;q[(tk=a<<2)+rk>>2]=q[(sk=qk<<2)+xk>>2],q[rk+(4|tk)>>2]=q[sk+wk>>2],q[rk+(8|tk)>>2]=q[sk+uk>>2],a=a+4|0,(0|vk)!=(0|(qk=qk+1|0)););}}(a),function(a){var pk,hk=0,ik=0,jk=0,kk=0,lk=0,mk=0,nk=0,ok=0,hk=a+172|0;if(n[q[1807]](hk,q[a+196>>2],q[a+268>>2],q[a+264>>2]),n[q[1807]](hk,q[a+200>>2],q[a+284>>2],q[a+264>>2]),n[q[1807]](hk,q[a+204>>2],q[a+276>>2],q[a+264>>2]),n[q[1807]](hk,q[a+208>>2],q[a+280>>2],q[a+264>>2]),n[q[1807]](hk,q[a+212>>2],q[a+272>>2],q[a+264>>2]),!(r[q[a>>2]+4|0]<4||(n[q[1807]](hk,q[a+216>>2],q[a+240>>2],q[a+264>>2]),n[q[1807]](hk,q[a+220>>2],q[a+244>>2],q[a+264>>2]),n[q[1807]](hk,q[a+224>>2],q[a+248>>2],q[a+264>>2]),n[q[1807]](hk,q[a+228>>2],q[a+252>>2],q[a+264>>2]),n[q[1807]](hk,q[a+232>>2],q[a+256>>2],q[a+264>>2]),n[q[1807]](hk,q[a+236>>2],q[a+260>>2],q[a+264>>2]),(0|(mk=q[a+164>>2]))<1))){for(nk=q[a+248>>2],ok=q[a+244>>2],pk=q[a+240>>2],ik=q[a+296>>2],hk=0;q[(jk=kk<<2)+ik>>2]=q[(lk=hk<<2)+pk>>2],q[ik+(4|jk)>>2]=q[lk+ok>>2],q[ik+(8|jk)>>2]=q[lk+nk>>2],kk=kk+4|0,(0|mk)!=(0|(hk=hk+1|0)););for(ik=q[a+300>>2],lk=q[a+260>>2],nk=q[a+256>>2],ok=q[a+252>>2],hk=a=0;q[(kk=a<<2)+ik>>2]=q[(jk=hk<<2)+ok>>2],q[ik+(4|kk)>>2]=q[jk+nk>>2],q[ik+(8|kk)>>2]=q[jk+lk>>2],a=a+4|0,(0|mk)!=(0|(hk=hk+1|0)););}}(a),function(a){var re,se,te,oe=0,pe=0,qe=0;if(1<=(0|(pe=q[a+332>>2])))for(re=(oe=q[a+336>>2])+w(pe,20)|0,se=q[a+312>>2],te=q[a+40>>2],a=q[a+424>>2];pe=0,q[oe+12>>2]&&(qe=q[oe+4>>2],q[(qe<<2)+te>>2]||-1==(0|qe))&&(qe=q[oe+8>>2],q[(qe<<2)+se>>2]||-1==(0|qe))&&(pe=!q[q[oe>>2]+32>>2]),q[a>>2]=pe,a=a+4|0,(oe=oe+20|0)>>>0>>0;);}(a),function(a){var pf,qf,rf,sf,tf,uf,vf,wf,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,cf=q[a>>2];if(1<=(0|(jf=q[a+332>>2]))){for(kf=q[a+336>>2],lf=q[cf+1052>>2],mf=q[cf+856>>2];;){if($e=q[kf+w(ff,20)>>2],(q[$e+28>>2]||q[$e+24>>2])&&(q[(af=ff<<2)+q[a+356>>2]>>2]=q[$e+12>>2],q[$e+24>>2])&&!((0|(df=q[$e+12>>2]))<1))for(nf=(bf=q[$e+16>>2])+(df<<2)|0,of=q[af+mf>>2],af=(ef=gf<<2)+q[a+372>>2]|0,df=ef+q[a+364>>2]|0,ef=ef+q[a+368>>2]|0;hf=of+q[bf>>2]<<2,q[af>>2]=lf+(q[hf+q[cf+1040>>2]>>2]<<2),q[df>>2]=q[hf+q[cf+1032>>2]>>2],q[ef>>2]=q[hf+q[cf+1036>>2]>>2],ef=ef+4|0,df=df+4|0,af=af+4|0,(bf=bf+4|0)>>>0>>0;);if(q[$e+28>>2]&&!((0|(af=q[$e+12>>2]))<1))for(df=(bf=q[$e+20>>2])+(af<<2)|0,af=q[a+360>>2]+(gf<<2)|0;q[af>>2]=q[bf>>2],af=af+4|0,(bf=bf+4|0)>>>0>>0;);if(gf=q[$e+8>>2]+gf|0,(0|jf)==(0|(ff=ff+1|0)))break}cf=q[a>>2]}if(!(r[cf+4|0]<4||(0|(mf=q[a+332>>2]))<1))for(nf=q[cf+864>>2],of=q[a+336>>2],bf=gf=0;;){if(ff=q[of+w(bf,20)>>2],q[ff+24>>2]&&!((0|($e=q[ff+12>>2]))<1))for(pf=(af=q[ff+16>>2])+($e<<2)|0,qf=q[nf+(bf<<2)>>2],df=($e=gf<<2)+q[a+376>>2]|0,ef=$e+q[a+380>>2]|0,hf=$e+q[a+384>>2]|0,jf=$e+q[a+388>>2]|0,kf=$e+q[a+392>>2]|0,lf=$e+q[a+396>>2]|0,rf=q[cf+1308>>2],sf=q[cf+1304>>2],tf=q[cf+1300>>2],uf=q[cf+1296>>2],vf=q[cf+1292>>2],wf=q[cf+1288>>2];$e=q[af>>2]+qf<<2,q[df>>2]=q[$e+wf>>2],q[ef>>2]=q[$e+vf>>2],q[hf>>2]=q[$e+uf>>2],q[jf>>2]=q[$e+tf>>2],q[kf>>2]=q[$e+sf>>2],q[lf>>2]=q[$e+rf>>2],lf=lf+4|0,kf=kf+4|0,jf=jf+4|0,hf=hf+4|0,ef=ef+4|0,df=df+4|0,(af=af+4|0)>>>0>>0;);if(gf=q[ff+8>>2]+gf|0,(0|mf)==(0|(bf=bf+1|0)))break}}(a),function(a){var gk,vj=0,xj=0,yj=0,bk=0,ck=0,dk=0,ek=0,fk=0,vj=a+340|0;if(n[q[1807]](vj,q[a+364>>2],q[a+448>>2],q[a+424>>2]),n[q[1808]](vj,q[a+368>>2],q[a+440>>2],q[a+424>>2]),n[q[1809]](vj,q[a+372>>2],q[a+444>>2],q[q[a>>2]+892>>2],2,q[a+424>>2]),!(r[q[a>>2]+4|0]<4||(n[q[1807]](vj,q[a+376>>2],q[a+400>>2],q[a+424>>2]),n[q[1807]](vj,q[a+380>>2],q[a+404>>2],q[a+424>>2]),n[q[1807]](vj,q[a+384>>2],q[a+408>>2],q[a+424>>2]),n[q[1807]](vj,q[a+388>>2],q[a+412>>2],q[a+424>>2]),n[q[1807]](vj,q[a+392>>2],q[a+416>>2],q[a+424>>2]),n[q[1807]](vj,q[a+396>>2],q[a+420>>2],q[a+424>>2]),(0|(dk=q[a+332>>2]))<1))){for(ek=q[a+408>>2],fk=q[a+404>>2],gk=q[a+400>>2],xj=q[a+452>>2],vj=0;q[(yj=bk<<2)+xj>>2]=q[(ck=vj<<2)+gk>>2],q[xj+(4|yj)>>2]=q[ck+fk>>2],q[xj+(8|yj)>>2]=q[ck+ek>>2],bk=bk+4|0,(0|dk)!=(0|(vj=vj+1|0)););for(xj=q[a+456>>2],ck=q[a+420>>2],ek=q[a+416>>2],fk=q[a+412>>2],vj=a=0;q[(bk=a<<2)+xj>>2]=q[(yj=vj<<2)+fk>>2],q[xj+(4|bk)>>2]=q[yj+ek>>2],q[xj+(8|bk)>>2]=q[yj+ck>>2],a=a+4|0,(0|dk)!=(0|(vj=vj+1|0)););}}(a),function(a){var Re,Ve,We,Xe,Ye,Ze,_e,Pe=0,Qe=0,Se=0,Te=0,Ue=0;if(1<=(0|(Ve=q[a+500>>2])))for(Xe=q[a+504>>2],We=q[a>>2],Ye=q[We+1252>>2];;){if(Re=q[w(Te,24)+Xe>>2],(q[Re+28>>2]||q[Re+24>>2])&&(q[(Pe=Te<<2)+q[a+524>>2]>>2]=q[Re+12>>2],q[Re+24>>2])&&!((0|(Se=q[Re+12>>2]))<1))for(Se=(Qe=q[Re+16>>2])+(Se<<2)|0,Ze=q[Pe+Ye>>2],Pe=q[a+532>>2]+(Ue<<2)|0,_e=q[We+1284>>2];q[Pe>>2]=q[(q[Qe>>2]+Ze<<2)+_e>>2],Pe=Pe+4|0,(Qe=Qe+4|0)>>>0>>0;);if(q[Re+28>>2]&&!((0|(Pe=q[Re+12>>2]))<1))for(Se=(Qe=q[Re+20>>2])+(Pe<<2)|0,Pe=q[a+528>>2]+(Ue<<2)|0;q[Pe>>2]=q[Qe>>2],Pe=Pe+4|0,(Qe=Qe+4|0)>>>0>>0;);if(Ue=q[Re+8>>2]+Ue|0,(0|Ve)==(0|(Te=Te+1|0)))break}}(a),n[q[1807]](a+508|0,q[a+532>>2],q[a+536>>2],0),function(a){var Ek,Fk,Gk,Hk,Ik,Jk,zk=x(0),Ak=0,Bk=0,Ck=0,Dk=0;x(0);if(L=Ek=L-16|0,Ck=q[a>>2],!(r[Ck+4|0]<5||(0|(Dk=q[a+596>>2]))<1))for(Hk=(Bk=q[a+600>>2])+w(Dk,12)|0,Ik=q[a+44>>2],Dk=q[Ck+976>>2];;){if(Ck=(q[Bk>>2]<<2)+Ik|0,zk=x(q[Ck>>2]),1<=(0|(Ak=q[Bk+4>>2])))for(Jk=(a=q[Bk+8>>2])+w(Ak,48)|0;(Ak=q[a+8>>2])&&((Fk=Ak+-1|0)>>>0<=1?(Ak=q[a+4>>2],Gk=u[Dk+(Ak+q[a+12>>2]<<2)>>2],zk=x(Fk-1?zk+x(u[a+44>>2]*x(Gk*u[a+20>>2])):zk+x(u[a+44>>2]*x(x(Gk*u[a+20>>2])+x(u[Dk+(Ak+q[a+16>>2]<<2)>>2]*u[a+24>>2]))))):(q[Ek>>2]=Ak,Y(4,1024,Ek))),(a=a+48|0)>>>0>>0;);if(zk=(zk=x(zk+x(.0010000000474974513)))>2]=a,!((Bk=Bk+12|0)>>>0>>0))break}L=16+Ek|0}(a),function(a){var mj,nj,oj,pj,qj,rj,sj,tj,uj,ej=0,gj=0,ij=0,jj=0,kj=0,lj=x(0);if(L=mj=L-16|0,ej=q[a>>2],!(r[ej+4|0]<4||(va(a,q[a+604>>2],q[a+608>>2],q[ej+984>>2],q[a+152>>2],q[ej+796>>2]),gj=q[a>>2],r[gj+4|0]<5))){if(ij=q[a+608>>2],qj=q[gj+992>>2],rj=q[gj+988>>2],1<=(0|(ej=q[a+604>>2]))){for(sj=w(ej,12)+ij|0,tj=q[a+148>>2],nj=q[gj+980>>2];;){if(oj=(q[ij>>2]<<2)+tj|0,kj=q[oj>>2],1<=(0|(jj=q[ij+4>>2])))for(uj=(ej=q[ij+8>>2])+w(jj,48)|0;(jj=q[ej+8>>2])&&((pj=jj+-1|0)>>>0<=1?(jj=q[ej+4>>2],lj=u[(jj+q[ej+12>>2]<<2)+nj>>2],j(x(pj-1?x(u[ej+44>>2]*x(lj*u[ej+20>>2]))+(f(0,kj),k()):x(u[ej+44>>2]*x(x(lj*u[ej+20>>2])+x(u[(jj+q[ej+16>>2]<<2)+nj>>2]*u[ej+24>>2])))+(f(0,kj),k()))),kj=b[0]):(q[mj>>2]=jj,Y(4,1024,mj))),(ej=ej+48|0)>>>0>>0;);if(f(0,kj),lj=k(),u[oj>>2]=lj>>0>>0))break}ij=q[a+608>>2],ej=q[a+604>>2]}fa(ej,ij,rj,q[gj+1288>>2],q[gj+1292>>2],q[gj+1296>>2],q[a+156>>2]),fa(q[a+604>>2],q[a+608>>2],qj,q[gj+1300>>2],q[gj+1304>>2],q[gj+1308>>2],q[a+160>>2])}L=16+mj|0}(a),function(a){var zi,si=0,ti=0,ui=0,vi=0,wi=0,xi=x(0),yi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0;if(L=zi=L-80|0,wi=q[a>>2],!(r[wi+4|0]<5)){if(Ei=q[wi+1028>>2],Fi=q[wi+1024>>2],ui=ti=q[a+616>>2],!((0|(si=q[a+612>>2]))<1)){for(Ai=w(si,12)+ti|0,Bi=q[a+276>>2],yi=q[wi+1004>>2];;){if(Ci=Bi+(q[ti>>2]<<2)|0,ui=q[Ci>>2],1<=(0|(vi=q[ti+4>>2])))for(Gi=(si=q[ti+8>>2])+w(vi,48)|0;(vi=q[si+8>>2])&&((Di=vi+-1|0)>>>0<=1?(vi=q[si+4>>2],xi=u[yi+(vi+q[si+12>>2]<<2)>>2],j(x(Di-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[yi+(vi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),ui=b[0]):(q[64+zi>>2]=vi,Y(4,1024,64+zi|0))),(si=si+48|0)>>>0>>0;);if(q[Ci>>2]=ui,!((ti=ti+12|0)>>>0>>0))break}if(ui=ti=q[a+616>>2],!((0|(si=q[a+612>>2]))<1)){for(Ai=w(si,12)+ti|0,Bi=q[a+280>>2],yi=q[q[a>>2]+1008>>2];;){if(Ci=Bi+(q[ti>>2]<<2)|0,ui=q[Ci>>2],1<=(0|(vi=q[ti+4>>2])))for(Gi=(si=q[ti+8>>2])+w(vi,48)|0;(vi=q[si+8>>2])&&((Di=vi+-1|0)>>>0<=1?(vi=q[si+4>>2],xi=u[yi+(vi+q[si+12>>2]<<2)>>2],j(x(Di-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[yi+(vi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),ui=b[0]):(q[48+zi>>2]=vi,Y(4,1024,48+zi|0))),(si=si+48|0)>>>0>>0;);if(q[Ci>>2]=ui,!((ti=ti+12|0)>>>0>>0))break}if(ui=ti=q[a+616>>2],!((0|(si=q[a+612>>2]))<1)){for(Ai=w(si,12)+ti|0,Bi=q[a+268>>2],yi=q[q[a>>2]+996>>2];;){if(Ci=Bi+(q[ti>>2]<<2)|0,ui=q[Ci>>2],1<=(0|(vi=q[ti+4>>2])))for(Gi=(si=q[ti+8>>2])+w(vi,48)|0;(vi=q[si+8>>2])&&((Di=vi+-1|0)>>>0<=1?(vi=q[si+4>>2],xi=u[yi+(vi+q[si+12>>2]<<2)>>2],j(x(Di-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[yi+(vi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),ui=b[0]):(q[32+zi>>2]=vi,Y(4,1024,32+zi|0))),(si=si+48|0)>>>0>>0;);if(f(0,ui),xi=k(),u[Ci>>2]=xi>>0>>0))break}si=q[a+612>>2],ui=q[a+616>>2]}}}if(fa(si,ui,Fi,q[wi+1288>>2],q[wi+1292>>2],q[wi+1296>>2],q[a+296>>2]),fa(q[a+612>>2],q[a+616>>2],Ei,q[wi+1300>>2],q[wi+1304>>2],q[wi+1308>>2],q[a+300>>2]),!((0|(si=q[a+612>>2]))<1)){for(vi=(ti=q[a+616>>2])+w(si,12)|0,Ei=q[a+284>>2],wi=q[q[a>>2]+1e3>>2];;){if(Fi=Ei+(q[ti>>2]<<2)|0,ui=q[Fi>>2],1<=(0|(yi=q[ti+4>>2])))for(Ai=(si=q[ti+8>>2])+w(yi,48)|0;(yi=q[si+8>>2])&&((Bi=yi+-1|0)>>>0<=1?(yi=q[si+4>>2],xi=u[wi+(yi+q[si+12>>2]<<2)>>2],j(x(Bi-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[wi+(yi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),ui=b[0]):(q[16+zi>>2]=yi,Y(4,1024,16+zi|0))),(si=si+48|0)>>>0>>0;);if(f(0,ui),xi=k(),u[Fi>>2]=xi>>0>>0))break}if(!((0|(si=q[a+612>>2]))<1))for(yi=(ti=q[a+616>>2])+w(si,12)|0,vi=q[a+272>>2],a=q[q[a>>2]+1012>>2];;){if(Ei=vi+(q[ti>>2]<<2)|0,ui=q[Ei>>2],1<=(0|(wi=q[ti+4>>2])))for(Fi=(si=q[ti+8>>2])+w(wi,48)|0;(wi=q[si+8>>2])&&((Ai=wi+-1|0)>>>0<=1?(wi=q[si+4>>2],xi=u[a+(wi+q[si+12>>2]<<2)>>2],j(x(Ai-1?x(u[si+44>>2]*x(xi*u[si+20>>2]))+(f(0,ui),k()):x(u[si+44>>2]*x(x(xi*u[si+20>>2])+x(u[a+(wi+q[si+16>>2]<<2)>>2]*u[si+24>>2])))+(f(0,ui),k()))),ui=b[0]):(q[zi>>2]=wi,Y(4,1024,zi))),(si=si+48|0)>>>0>>0;);if(f(0,ui),xi=k(),u[Ei>>2]=xi>>0>>0))break}}}L=80+zi|0}(a),function(a){var $h,fi,gi,hi,ii,Vh=0,Wh=0,Xh=0,Yh=0,Zh=x(0),_h=0,ai=0,bi=0,ci=0,di=0,ei=0;x(0);if(L=$h=L-32|0,Xh=q[a>>2],!(r[Xh+4|0]<4||(va(a,q[a+620>>2],q[a+624>>2],q[Xh+1040>>2],q[a+444>>2],q[Xh+892>>2]),_h=q[a>>2],r[_h+4|0]<5))){if(hi=q[_h+1048>>2],ii=q[_h+1044>>2],Xh=Yh=q[a+624>>2],!((0|(Vh=q[a+620>>2]))<1)){for(di=w(Vh,12)+Yh|0,ei=q[a+440>>2],ai=q[_h+1036>>2];;){if(Xh=ei+(q[Yh>>2]<<2)|0,Zh=x(q[Xh>>2]),1<=(0|(Wh=q[Yh+4>>2])))for(bi=(Vh=q[Yh+8>>2])+w(Wh,48)|0;(Wh=q[Vh+8>>2])&&((ci=Wh+-1|0)>>>0<=1?(Wh=q[Vh+4>>2],fi=u[ai+(Wh+q[Vh+12>>2]<<2)>>2],Zh=x(ci-1?Zh+x(u[Vh+44>>2]*x(fi*u[Vh+20>>2])):Zh+x(u[Vh+44>>2]*x(x(fi*u[Vh+20>>2])+x(u[ai+(Wh+q[Vh+16>>2]<<2)>>2]*u[Vh+24>>2]))))):(q[16+$h>>2]=Wh,Y(4,1024,16+$h|0))),(Vh=Vh+48|0)>>>0>>0;);if(Zh=(Zh=x(Zh+x(.0010000000474974513)))>2]=Vh,!((Yh=Yh+12|0)>>>0>>0))break}if(Xh=Yh=q[a+624>>2],!((0|(Vh=q[a+620>>2]))<1)){for(di=w(Vh,12)+Yh|0,ei=q[a+448>>2],ai=q[q[a>>2]+1032>>2];;){if(bi=ei+(q[Yh>>2]<<2)|0,Xh=q[bi>>2],1<=(0|(Wh=q[Yh+4>>2])))for(ci=(Vh=q[Yh+8>>2])+w(Wh,48)|0;(Wh=q[Vh+8>>2])&&((gi=Wh+-1|0)>>>0<=1?(Wh=q[Vh+4>>2],Zh=u[ai+(Wh+q[Vh+12>>2]<<2)>>2],j(x(gi-1?x(u[Vh+44>>2]*x(Zh*u[Vh+20>>2]))+(f(0,Xh),k()):x(u[Vh+44>>2]*x(x(Zh*u[Vh+20>>2])+x(u[ai+(Wh+q[Vh+16>>2]<<2)>>2]*u[Vh+24>>2])))+(f(0,Xh),k()))),Xh=b[0]):(q[$h>>2]=Wh,Y(4,1024,$h))),(Vh=Vh+48|0)>>>0>>0;);if(f(0,Xh),Zh=k(),u[bi>>2]=Zh>>0>>0))break}Vh=q[a+620>>2],Xh=q[a+624>>2]}}fa(Vh,Xh,ii,q[_h+1288>>2],q[_h+1292>>2],q[_h+1296>>2],q[a+452>>2]),fa(q[a+620>>2],q[a+624>>2],hi,q[_h+1300>>2],q[_h+1304>>2],q[_h+1308>>2],q[a+456>>2])}L=32+$h|0}(a),function(a){var Gg,Hg,Ig,Jg,Kg,Lg,Bg=0,Cg=0,Dg=0,Eg=0,Fg=x(0);if(L=Gg=L-16|0,Cg=q[a>>2],!(r[Cg+4|0]<5||(0|(Eg=q[a+628>>2]))<1))for(Jg=(Dg=q[a+632>>2])+w(Eg,12)|0,Kg=q[a+536>>2],Eg=q[Cg+1284>>2];;){if(Hg=(q[Dg>>2]<<2)+Kg|0,Cg=q[Hg>>2],1<=(0|(Bg=q[Dg+4>>2])))for(Lg=(a=q[Dg+8>>2])+w(Bg,48)|0;(Bg=q[a+8>>2])&&((Ig=Bg+-1|0)>>>0<=1?(Bg=q[a+4>>2],Fg=u[Eg+(Bg+q[a+12>>2]<<2)>>2],j(x(Ig-1?x(u[a+44>>2]*x(Fg*u[a+20>>2]))+(f(0,Cg),k()):x(u[a+44>>2]*x(x(Fg*u[a+20>>2])+x(u[Eg+(Bg+q[a+16>>2]<<2)>>2]*u[a+24>>2])))+(f(0,Cg),k()))),Cg=b[0]):(q[Gg>>2]=Bg,Y(4,1024,Gg))),(a=a+48|0)>>>0>>0;);if(f(0,Cg),Fg=k(),u[Hg>>2]=Fg>>0>>0))break}L=16+Gg|0}(a),function(a){var Qh,Th,mh=0,Oh=0,Ph=0,Rh=x(0),Sh=0;if(1<=(0|(mh=q[a+4>>2])))for(Th=(Oh=q[a+8>>2])+w(mh,12)|0,mh=q[a+40>>2],Ph=q[a+52>>2],a=Qh=q[a+48>>2];q[mh>>2]&&(Rh=u[Ph>>2],u[a>>2]=Rh,-1!=(0|(Sh=q[Oh+4>>2])))&&(u[a>>2]=Rh*u[(Sh<<2)+Qh>>2]),a=a+4|0,Ph=Ph+4|0,mh=mh+4|0,(Oh=Oh+12|0)>>>0>>0;);}(a),function(a){var lh,ih=0,jh=0,kh=0;if(1<=(0|(lh=q[a+304>>2])))for(ih=q[a+308>>2],jh=q[a+312>>2];q[jh>>2]&&n[q[ih+20>>2]](a,kh),jh=jh+4|0,ih=ih+32|0,(0|lh)!=(0|(kh=kh+1|0)););}(a),function(a){var Zg,_g,ch,gh,hh,Xg=0,Yg=0,$g=(x(0),x(0),0),ah=0,bh=0,dh=(x(0),0),eh=0,fh=0;if(1<=(0|(Xg=q[a+332>>2])))for(eh=(Yg=q[a+336>>2])+w(Xg,20)|0,fh=q[a+308>>2],dh=q[a+316>>2],hh=q[a+48>>2],Xg=q[a+448>>2],$g=q[a+444>>2],bh=q[a+424>>2];q[bh>>2]&&(-1!=(0|(ah=q[Yg+4>>2]))&&(u[Xg>>2]=u[(ah<<2)+hh>>2]*u[Xg>>2]),-1!=(0|(ah=q[Yg+8>>2])))&&(u[Xg>>2]=u[dh+(ah<<2)>>2]*u[Xg>>2],gh=q[$g>>2],n[q[24+(fh+(ah<<5)|0)>>2]](a,ah,gh,gh,q[Yg+16>>2])),$g=$g+4|0,Xg=Xg+4|0,bh=bh+4|0,(Yg=Yg+20|0)>>>0>>0;);if(!(r[q[a>>2]+4|0]<4||(0|(Xg=q[a+332>>2]))<1))for(ah=($g=q[a+336>>2])+w(Xg,20)|0,eh=q[a+328>>2],fh=q[a+324>>2],Yg=q[a+452>>2],Xg=q[a+456>>2],bh=q[a+424>>2];q[bh>>2]&&-1!=(0|(a=q[$g+8>>2]))&&(a=(dh=a<<4)+fh|0,Zg=x(u[Yg>>2]*u[a>>2]),u[Yg>>2]=Zg,_g=x(u[Yg+4>>2]*u[a+4>>2]),u[Yg+4>>2]=_g,ch=u[a+8>>2],q[Yg+12>>2]=1065353216,u[Yg+4>>2]=_g>2]=Zg>2]),u[Yg+8>>2]=Zg>2],_g=u[(a=eh+dh|0)>>2],Zg=x(x(Zg+_g)-x(Zg*_g)),u[Xg>>2]=Zg,_g=u[Xg+4>>2],ch=u[a+4>>2],_g=x(x(_g+ch)-x(_g*ch)),u[Xg+4>>2]=_g,ch=u[a+8>>2],q[Xg+12>>2]=1065353216,u[Xg+4>>2]=_g>2]=Zg>2],Zg=x(x(ch+Zg)-x(Zg*ch)),u[Xg+8>>2]=Zg>>0>>0;);}(a),function(a){var Ln,Mn,On,Ko,Lo,Mo,No,Oo,Po,Qo,Ro,So,To,Uo,Vo,Wo,Xo,Yo,Zo,_o,Nn=0;x(0),x(0),x(0),x(0),x(0),x(0),x(0);if(1<=(0|(Oo=q[a+500>>2])))for(Zo=q[a+536>>2],Po=q[a+444>>2],_o=q[a+504>>2];;){if(a=w(Nn,24)+_o|0,0<(0|(Qo=q[a+12>>2])))for(On=u[(Nn<<2)+Zo>>2],Ro=q[a+20>>2],So=q[a+16>>2],To=q[(q[a+4>>2]<<2)+Po>>2],Uo=q[(q[a+8>>2]<<2)+Po>>2],a=0;Vo=u[((Ln=1|a)<<2)+So>>2],Mn=s[(a<<1)+Ro>>1]<<3&262136,Ko=u[(Wo=(4|Mn)+To|0)>>2],Ln=s[(Ln<<1)+Ro>>1]<<3&262136,Lo=u[(Xo=(4|Ln)+Uo|0)>>2],Mo=u[(Mn=Mn+To|0)>>2],Yo=u[(a<<2)+So>>2],No=u[(Ln=Ln+Uo|0)>>2],u[Mn>>2]=Mo+x(On*x(Yo*x(No-Mo))),u[Wo>>2]=Ko+x(On*x(Yo*x(Lo-Ko))),u[Ln>>2]=No+x(On*x(Vo*x(Mo-No))),u[Xo>>2]=Lo+x(On*x(Vo*x(Ko-Lo))),(0|(a=a+2|0))<(0|Qo););if(!((0|(Nn=Nn+1|0))<(0|Oo)))break}}(a),n[q[1810]](a),function(a){var Rc,Sc,Uc,Vc,Gc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Tc=0;if(!((0|(Rc=q[a+480>>2]))<1)){for(Kc=(Sc=q[a+484>>2])+w(Rc,28)|0,Nc=q[a+424>>2],Oc=q[a+40>>2],Lc=q[a+44>>2],Tc=q[a+440>>2],Gc=Sc;;){if(1<=(0|(Mc=q[Gc+4>>2])))for(Qc=Gc+20|0,Pc=q[Gc+12>>2],Ic=0;Uc=q[4+(Jc=Pc+(Ic<<4)|0)>>2]<<2,Jc=1==q[(Vc=Jc)>>2],q[Vc+12>>2]=q[(q[(Jc?Oc:Nc)+Uc>>2]?(Jc?Lc:Tc)+Uc|0:Qc)>>2],(0|(Ic=Ic+1|0))<(0|Mc););if(!((Gc=Gc+28|0)>>>0>>0))break}if(!((0|Rc)<1))for(Tc=q[a+436>>2],Oc=0;;){if(Kc=w(Oc,28)+Sc|0,!(q[(Nc=Kc)+24>>2]<1)){for(Jc=q[a+488>>2],Ic=0;q[Jc+(Ic<<2)>>2]=-1,(0|(Ic=Ic+1|0))<(0|(Gc=q[Nc+24>>2])););if(!((0|Gc)<1))for(Gc=q[a+496>>2],Ic=0;q[Gc+(Ic<<2)>>2]=-1,(0|(Ic=Ic+1|0))>2];);}if(!(q[Kc+4>>2]<1)){for(Lc=q[a+492>>2],Ic=0;q[Lc+(Ic<<2)>>2]=-1,(0|(Ic=Ic+1|0))<(0|(Gc=q[Kc+4>>2])););if(!((0|Gc)<1))for(Mc=q[Kc+12>>2],Qc=q[a+496>>2],Ic=0;Pc=q[12+(Mc+(Ic<<4)|0)>>2]-q[Kc+20>>2]<<2,Gc=-1==(0|(Gc=q[(Jc=Pc+Qc|0)>>2]))?Pc+q[a+488>>2]|0:Lc+(Gc<<2)|0,q[Gc>>2]=Ic,(0|(Ic=(q[Jc>>2]=Ic)+1|0))>2];);}if(1<=(0|(Gc=q[Nc+24>>2])))for(Lc=q[Kc+8>>2],Qc=q[a+488>>2],Mc=0;;){if(-1!=(0|(Ic=q[Qc+(Mc<<2)>>2]))){for(Pc=q[a+492>>2],Jc=q[Kc+12>>2];Lc=(Gc=1==q[(Gc=Jc+(Ic<<4)|0)>>2]?(Gc=w(q[Gc+8>>2],28)+Sc|0,q[Gc+8>>2]=Lc,q[Gc>>2]):(q[Tc+(q[Gc+4>>2]<<2)>>2]=Lc,1))+Lc|0,(0|Ic)<(0|(Gc=q[Pc+(Ic<<2)>>2]))&&-1!=(0|(Ic=Gc)););Gc=q[Nc+24>>2]}if(!((0|(Mc=Mc+1|0))<(0|Gc)))break}if((0|Rc)==(0|(Oc=Oc+1|0)))break}}}(a),function(a){var Mg=0,Ng=0,Og=0,Pg=0,Rg=0,Sg=x(0),Tg=0,Ug=0,Qg=q[a+332>>2];if(q[a+644>>2]){if(!(((q[a+428>>2]=0)|Qg)<1))for(;Mg=126,Tg=q[a+432>>2]+Og|0,!q[(Ng=Og<<2)+q[a+424>>2]>>2]|u[Ng+q[a+448>>2]>>2]==x(0)||(Mg=127),o[0|Tg]=Mg,(0|Qg)!=(0|(Og=Og+1|0)););}else if(q[a+428>>2]){if(Mg=r[q[a>>2]+4|0],!(((q[a+428>>2]=0)|Qg)<1))if(4<=Mg>>>0)for(;Sg=u[(Mg=Og<<2)+q[a+448>>2]>>2],Pg=q[Mg+q[a+424>>2]>>2],Ng=Sg!=x(0)&0!=(0|Pg),Tg=q[a+432>>2]+Og|0,Ng=(0|Ng)==(1&o[0|Tg])?Ng:2|Ng,Ng=Sg!=u[Mg+q[a+468>>2]>>2]?4|Ng:Ng,Ng=q[Mg+q[a+440>>2]>>2]==q[Mg+q[a+464>>2]>>2]?Ng:8|Ng,Mg=q[Mg+q[a+436>>2]>>2]==q[Mg+q[a+460>>2]>>2]?Ng:16|Ng,Mg=Pg?32|Mg:Mg,Pg=(Ng=Ug<<2)+q[a+452>>2]|0,Rg=Ng+q[a+472>>2]|0,(u[Pg>>2]!=u[Rg>>2]|u[Pg+4>>2]!=u[Rg+4>>2]|(u[Pg+8>>2]!=u[Rg+8>>2]|u[Pg+12>>2]!=u[Rg+12>>2])||(Pg=Ng+q[a+456>>2]|0,Ng=Ng+q[a+476>>2]|0,u[Pg>>2]!=u[Ng>>2]|u[Pg+4>>2]!=u[Ng+4>>2]|u[Pg+8>>2]!=u[Ng+8>>2])||u[Pg+12>>2]!=u[Ng+12>>2])&&(Mg|=64),o[0|Tg]=Mg,Ug=Ug+4|0,(0|Qg)!=(0|(Og=Og+1|0)););else for(;Sg=u[(Mg=Og<<2)+q[a+448>>2]>>2],Pg=q[Mg+q[a+424>>2]>>2],Ng=Sg!=x(0)&0!=(0|Pg),Rg=q[a+432>>2]+Og|0,Ng=(0|Ng)==(1&o[0|Rg])?Ng:2|Ng,Ng=Sg!=u[Mg+q[a+468>>2]>>2]?4|Ng:Ng,Ng=q[Mg+q[a+440>>2]>>2]==q[Mg+q[a+464>>2]>>2]?Ng:8|Ng,Mg=q[Mg+q[a+436>>2]>>2]==q[Mg+q[a+460>>2]>>2]?Ng:16|Ng,o[0|Rg]=Pg?32|Mg:Mg,(0|Qg)!=(0|(Og=Og+1|0)););}else if(!((0|Qg)<1))for(;!q[(Mg=Og<<2)+q[a+424>>2]>>2]|u[Mg+q[a+448>>2]>>2]==x(0)?(Mg=q[a+432>>2]+Og|0,o[0|Mg]=254&r[0|Mg]):(Mg=q[a+432>>2]+Og|0,o[0|Mg]=1|r[0|Mg]),(0|Qg)!=(0|(Og=Og+1|0)););}(a),q[a+644>>2]=0}function va(a,Wa,Xa,Ya,Za,_a){var fb,gb,hb,jb,kb,cb,db,$a=0,bb=0,eb=0,ib=0;if(L=cb=L-32|0,1<=(0|Wa))for(kb=w(Wa,12)+Xa|0;;){if(!((0|($a=q[Xa+4>>2]))<1))if(fb=(Wa=q[Xa+8>>2])+w($a,48)|0,$a=q[Xa>>2]<<2,1<=(0|(db=q[$a+_a>>2])))for(db<<=1,gb=q[q[a>>2]+1052>>2],hb=q[Za+$a>>2];;){b:if($a=q[Wa+8>>2]){c:{if((bb=$a+-1|0)>>>0<=1){if($a=(q[Wa+4>>2]<<2)+Ya|0,ib=(q[$a+(q[Wa+12>>2]<<2)>>2]<<2)+gb|0,bb-1)break c;for(eb=(q[$a+(q[Wa+16>>2]<<2)>>2]<<2)+gb|0,$a=0;u[(jb=(bb=$a<<2)+hb|0)>>2]=u[jb>>2]+x(u[Wa+44>>2]*x(x(u[bb+ib>>2]*u[Wa+20>>2])+x(u[bb+eb>>2]*u[Wa+24>>2]))),(0|db)!=(0|($a=$a+1|0)););break b}q[cb>>2]=$a,Y(4,1024,cb);break b}for($a=0;u[(eb=(bb=$a<<2)+hb|0)>>2]=u[eb>>2]+x(u[Wa+44>>2]*x(u[bb+ib>>2]*u[Wa+20>>2])),(0|db)!=(0|($a=$a+1|0)););}if(!((Wa=Wa+48|0)>>>0>>0))break}else for(;3<=($a=q[Wa+8>>2])>>>0&&(q[16+cb>>2]=$a,Y(4,1024,16+cb|0)),(Wa=Wa+48|0)>>>0>>0;);if(!((Xa=Xa+12|0)>>>0>>0))break}L=32+cb|0}function wa(a,Wa,Xa){var Ya;Wa|=0,Xa|=0,L=Ya=L+-64|0;a:{if(a|=0)if(Wa)if((Wa+15&-16)!=(0|Wa))q[52+Ya>>2]=1522,q[48+Ya>>2]=2361,Y(4,1294,48+Ya|0);else{if(Wa=function(a,Il,Jl){var cm,$l=0,am=0,bm=0,dm=0,em=0,fm=0,gm=0,hm=0,im=0,jm=0,km=0,lm=0,mm=0,nm=x(0),om=0,pm=0,qm=0,rm=0,sm=0;if(ca(16+(L=cm=L-576|0)|0,0,560),Fa(a,16+cm|0,12+cm|0),(dm=q[12+cm>>2])>>>0<=Jl>>>0){if($l=(am=ca(Il,0,dm))+q[16+cm>>2]|0,q[$l+8>>2]=am+q[20+cm>>2],q[$l+40>>2]=am+q[24+cm>>2],q[$l+44>>2]=am+q[28+cm>>2],q[$l+48>>2]=am+q[32+cm>>2],q[$l+52>>2]=am+q[36+cm>>2],q[$l+16>>2]=am+q[40+cm>>2],q[$l+24>>2]=am+q[44+cm>>2],q[$l+28>>2]=am+q[48+cm>>2],q[$l+32>>2]=am+q[52+cm>>2],q[$l+36>>2]=am+q[56+cm>>2],Il=q[a+704>>2],q[$l+308>>2]=am+q[60+cm>>2],q[$l+312>>2]=am+q[64+cm>>2],q[$l+316>>2]=am+q[68+cm>>2],q[$l+320>>2]=am+q[72+cm>>2],q[$l+324>>2]=am+q[76+cm>>2],q[$l+328>>2]=am+q[80+cm>>2],q[$l+60>>2]=am+q[84+cm>>2],q[$l+144>>2]=am+q[88+cm>>2],q[$l+148>>2]=am+q[92+cm>>2],Jl=am+q[96+cm>>2]|0,q[$l+152>>2]=Jl,!((0|(dm=q[Il+8>>2]))<1)&&(Il=am+q[100+cm>>2]|0,q[Jl>>2]=Il,1!=(0|dm)))for(Jl=1;Il=(15+(q[q[a+796>>2]+(bm<<2)>>2]<<3)&-16)+Il|0,q[q[$l+152>>2]+(Jl<<2)>>2]=Il,(0|dm)!=(0|(Jl=(bm=Jl)+1|0)););if(q[$l+156>>2]=am+q[104+cm>>2],q[$l+160>>2]=am+q[108+cm>>2],q[$l+68>>2]=am+q[112+cm>>2],q[$l+76>>2]=am+q[116+cm>>2],q[$l+80>>2]=am+q[120+cm>>2],q[$l+84>>2]=am+q[124+cm>>2],q[$l+88>>2]=am+q[128+cm>>2],q[$l+92>>2]=am+q[132+cm>>2],q[$l+96>>2]=am+q[136+cm>>2],q[$l+100>>2]=am+q[140+cm>>2],q[$l+104>>2]=am+q[144+cm>>2],q[$l+108>>2]=am+q[148+cm>>2],q[$l+112>>2]=am+q[152+cm>>2],q[$l+116>>2]=am+q[156+cm>>2],q[$l+120>>2]=am+q[160+cm>>2],q[$l+124>>2]=am+q[164+cm>>2],q[$l+128>>2]=am+q[168+cm>>2],q[$l+132>>2]=am+q[172+cm>>2],q[$l+136>>2]=am+q[176+cm>>2],q[$l+140>>2]=am+q[180+cm>>2],q[$l+168>>2]=am+q[184+cm>>2],q[$l+264>>2]=am+q[188+cm>>2],q[$l+268>>2]=am+q[192+cm>>2],q[$l+272>>2]=am+q[196+cm>>2],q[$l+276>>2]=am+q[200+cm>>2],q[$l+280>>2]=am+q[204+cm>>2],q[$l+284>>2]=am+q[208+cm>>2],q[$l+288>>2]=am+q[212+cm>>2],q[$l+292>>2]=am+q[216+cm>>2],q[$l+296>>2]=am+q[220+cm>>2],q[$l+300>>2]=am+q[224+cm>>2],q[$l+176>>2]=am+q[228+cm>>2],q[$l+184>>2]=am+q[232+cm>>2],q[$l+188>>2]=am+q[236+cm>>2],q[$l+192>>2]=am+q[240+cm>>2],q[$l+196>>2]=am+q[244+cm>>2],q[$l+200>>2]=am+q[248+cm>>2],q[$l+204>>2]=am+q[252+cm>>2],q[$l+208>>2]=am+q[256+cm>>2],q[$l+212>>2]=am+q[260+cm>>2],q[$l+216>>2]=am+q[264+cm>>2],q[$l+220>>2]=am+q[268+cm>>2],q[$l+224>>2]=am+q[272+cm>>2],q[$l+228>>2]=am+q[276+cm>>2],q[$l+232>>2]=am+q[280+cm>>2],q[$l+236>>2]=am+q[284+cm>>2],q[$l+240>>2]=am+q[288+cm>>2],q[$l+244>>2]=am+q[292+cm>>2],q[$l+248>>2]=am+q[296+cm>>2],q[$l+252>>2]=am+q[300+cm>>2],q[$l+256>>2]=am+q[304+cm>>2],q[$l+260>>2]=am+q[308+cm>>2],Il=q[a+704>>2],q[$l+336>>2]=am+q[312+cm>>2],q[$l+424>>2]=am+q[316+cm>>2],q[$l+432>>2]=am+q[320+cm>>2],q[$l+436>>2]=am+q[324+cm>>2],q[$l+440>>2]=am+q[328+cm>>2],Jl=am+q[332+cm>>2]|0,q[$l+444>>2]=Jl,!((0|(dm=q[Il+16>>2]))<1)&&(bm=am+q[336+cm>>2]|0,q[Jl>>2]=bm,(Jl=1)!=(0|dm)))for(Il=0;bm=(15+(q[q[a+892>>2]+(Il<<2)>>2]<<3)&-16)+bm|0,q[q[$l+444>>2]+(Jl<<2)>>2]=bm,(0|dm)!=(0|(Jl=(Il=Jl)+1|0)););if(q[$l+448>>2]=am+q[340+cm>>2],q[$l+452>>2]=am+q[344+cm>>2],q[$l+456>>2]=am+q[348+cm>>2],q[$l+460>>2]=am+q[352+cm>>2],q[$l+464>>2]=am+q[356+cm>>2],q[$l+468>>2]=am+q[360+cm>>2],q[$l+472>>2]=am+q[364+cm>>2],q[$l+476>>2]=am+q[368+cm>>2],q[$l+344>>2]=am+q[372+cm>>2],q[$l+352>>2]=am+q[376+cm>>2],q[$l+356>>2]=am+q[380+cm>>2],q[$l+360>>2]=am+q[384+cm>>2],q[$l+364>>2]=am+q[388+cm>>2],q[$l+368>>2]=am+q[392+cm>>2],q[$l+372>>2]=am+q[396+cm>>2],q[$l+376>>2]=am+q[400+cm>>2],q[$l+380>>2]=am+q[404+cm>>2],q[$l+384>>2]=am+q[408+cm>>2],q[$l+388>>2]=am+q[412+cm>>2],q[$l+392>>2]=am+q[416+cm>>2],q[$l+396>>2]=am+q[420+cm>>2],q[$l+400>>2]=am+q[424+cm>>2],q[$l+404>>2]=am+q[428+cm>>2],q[$l+408>>2]=am+q[432+cm>>2],q[$l+412>>2]=am+q[436+cm>>2],q[$l+416>>2]=am+q[440+cm>>2],q[$l+420>>2]=am+q[444+cm>>2],Il=q[448+cm>>2],Jl=q[452+cm>>2],q[$l+552>>2]=am+q[456+cm>>2],q[$l+548>>2]=Jl+am,q[$l+544>>2]=Il+am,q[$l+560>>2]=am+q[460+cm>>2],Il=q[a+704>>2],gm=am+q[464+cm>>2]|0,q[$l+568>>2]=gm,1<=(0|(fm=q[Il+48>>2])))for(bm=am+q[468+cm>>2]|0,Il=am+q[472+cm>>2]|0,em=am+q[476+cm>>2]|0,hm=q[a+1072>>2],Jl=0;dm=gm+w(Jl,36)|0,q[dm+20>>2]=em,q[dm+16>>2]=Il,q[dm>>2]=bm,bm=((dm=q[hm+(Jl<<2)>>2])<<2)+bm|0,em=(dm=1<>2],dm=am+q[516+cm>>2]|0,q[$l+484>>2]=dm,1<=(0|(Il=q[Il+72>>2])))for(bm=am+q[520+cm>>2]|0,em=q[a+1212>>2],Jl=0;q[12+(dm+w(Jl,28)|0)>>2]=bm,bm=(q[em+(Jl<<2)>>2]<<4)+bm|0,(0|Il)!=(0|(Jl=Jl+1|0)););q[$l+488>>2]=am+q[524+cm>>2],q[$l+492>>2]=am+q[528+cm>>2],q[$l+496>>2]=am+q[532+cm>>2],q[$l+504>>2]=am+q[536+cm>>2],q[$l+536>>2]=am+q[540+cm>>2],q[$l+512>>2]=am+q[544+cm>>2],q[$l+520>>2]=am+q[548+cm>>2],q[$l+524>>2]=am+q[552+cm>>2],q[$l+528>>2]=am+q[556+cm>>2],q[$l+532>>2]=am+q[560+cm>>2];c:{if(4<=(fm=r[a+4|0])>>>0){if(q[$l+576>>2]=am+q[480+cm>>2],q[$l+584>>2]=am+q[484+cm>>2],Il=q[a+704>>2],Jl=q[492+cm>>2],dm=am+q[488+cm>>2]|0,q[$l+592>>2]=dm,1<=(0|(Il=q[Il+104>>2])))for(bm=Jl+am|0,em=q[a+1104>>2],Jl=0;q[40+(dm+w(Jl,48)|0)>>2]=bm,bm=(q[em+(Jl<<2)>>2]<<2)+bm|0,(0|Il)!=(0|(Jl=Jl+1|0)););q[$l+608>>2]=am+q[500+cm>>2],q[$l+624>>2]=am+q[508+cm>>2]}else{if(Il=q[572+cm>>2],Jl=q[568+cm>>2],q[$l+636>>2]=am+q[564+cm>>2],q[$l+640>>2]=Jl+am,q[q[a+704>>2]+20>>2]<1)break c;for(dm=Il+am|0,gm=0;;){e:{if((0|(bm=q[(Il=gm<<2)+q[a+952>>2]>>2]))<=0)Il=Il+q[$l+636>>2]|0;else{for(em=bm+(Jl=q[Il+q[a+948>>2]>>2])|0,hm=q[a+1060>>2],bm=0;bm=q[hm+(Jl<<2)>>2]+bm|0,(0|(Jl=Jl+1|0))<(0|em););if(Il=Il+q[$l+636>>2]|0,Jl=dm,bm)break e}Jl=bm=0}if(q[Il>>2]=Jl,dm=(bm<<2)+dm|0,!((0|(gm=gm+1|0))>2]+20>>2]))break}}fm>>>0<5||(q[$l+600>>2]=am+q[496+cm>>2],q[$l+616>>2]=am+q[504+cm>>2],q[$l+632>>2]=am+q[512+cm>>2])}q[$l+644>>2]=1,q[$l>>2]=a,q[$l+648>>2]=1&o[q[a+708>>2]+20|0],am=q[a+704>>2],gm=q[am+20>>2];g:if(!((0|(q[$l+540>>2]=gm))<1)){if(Il=gm+-1|0,hm=q[a+952>>2],im=q[a+940>>2],jm=q[a+932>>2],km=q[a+936>>2],lm=q[a+924>>2],mm=q[a+928>>2],om=q[$l+552>>2],qm=q[$l+544>>2],fm>>>0<4)for(;;)if(Jl=qm+w(Il,52)|0,bm=(dm=Il<<2)+mm|(q[Jl>>2]=0),q[Jl+4>>2]=q[bm>>2],q[Jl+8>>2]=q[(em=dm+lm|0)>>2],u[Jl+12>>2]=u[em>>2]-u[bm>>2],q[Jl+16>>2]=q[dm+km>>2],q[Jl+44>>2]=q[(bm=dm+jm|0)>>2],nm=Aa(x(q[dm+im>>2])),u[Jl+20>>2]=nm,u[Jl+24>>2]=nm*x(1.5),pm=q[dm+hm>>2],em=0,em=(q[Jl+32>>2]=pm)?q[$l+560>>2]+w(q[dm+q[a+948>>2]>>2],28)|0:em,q[Jl+48>>2]=1,q[Jl+28>>2]=em,q[dm+om>>2]=q[bm>>2],Jl=0<(0|Il),Il=Il+-1|0,!Jl)break g;for(pm=q[a+960>>2],sm=q[a+944>>2];Jl=qm+w(Il,52)|0,q[Jl>>2]=q[(bm=Il<<2)+sm>>2],q[Jl+4>>2]=q[(dm=bm+mm|0)>>2],q[Jl+8>>2]=q[(em=bm+lm|0)>>2],u[Jl+12>>2]=u[em>>2]-u[dm>>2],q[Jl+16>>2]=q[bm+km>>2],q[Jl+44>>2]=q[(rm=bm+jm|0)>>2],nm=Aa(x(q[bm+im>>2])),u[Jl+20>>2]=nm,u[Jl+24>>2]=nm*x(1.5),em=q[bm+hm>>2],q[Jl+32>>2]=em,q[Jl+28>>2]=em?q[$l+560>>2]+w(q[bm+q[a+948>>2]>>2],28)|0:0,dm=q[bm+pm>>2],dm=(q[Jl+40>>2]=dm)?q[$l+584>>2]+w(q[bm+q[a+956>>2]>>2],28)|0:0,q[Jl+48>>2]=1,q[Jl+36>>2]=dm,q[bm+om>>2]=q[rm>>2],Jl=0<(0|Il),Il=Il+-1|0,Jl;);}if(4<=fm>>>0?(q[$l+548>>2]=q[a+944>>2],dm=a):(ca(q[$l+548>>2],0,gm<<2),dm=q[$l>>2],am=q[dm+704>>2]),bm=q[am+52>>2],1<=(0|(q[$l+556>>2]=bm)))for(Jl=q[dm+1056>>2],em=q[dm+1192>>2],gm=q[dm+1060>>2],fm=q[$l+560>>2];Il=fm+w(bm=bm+-1|0,28)|0,q[Il>>2]=q[(hm=bm<<2)+gm>>2],hm=q[Jl+hm>>2],q[Il+24>>2]=1,q[Il+16>>2]=0,q[Il+20>>2]=1,q[Il+8>>2]=0,q[Il+12>>2]=0,q[Il+4>>2]=em+(hm<<2),0<(0|bm););if(bm=q[am+48>>2],1<=(0|(q[$l+564>>2]=bm))){for(;;){if(Il=q[$l+568>>2]+w(bm=bm+-1|0,36)|0,em=q[(am=bm<<2)+q[dm+1072>>2]>>2],1<=(0|(q[Il+4>>2]=em)))for(Jl=0;q[q[Il>>2]+(Jl<<2)>>2]=q[$l+560>>2]+w(q[q[dm+1064>>2]+(q[am+q[dm+1068>>2]>>2]+Jl<<2)>>2],28),(0|em)!=(0|(Jl=Jl+1|0)););if(q[Il+24>>2]=1,q[Il+28>>2]=1,q[Il+8>>2]=1<>2],am=q[dm+704>>2]}if(Il=q[am>>2],(0|(q[$l+4>>2]=Il))<1)Jl=0;else{for(hm=q[dm+732>>2],im=q[dm+736>>2],jm=q[dm+740>>2],em=q[dm+720>>2],km=q[$l+52>>2],gm=q[$l+568>>2],lm=q[$l+8>>2],bm=Il;fm=lm+w(bm=bm+-1|0,12)|0,q[fm>>2]=gm+w(q[(Jl=bm<<2)+em>>2],36),q[fm+4>>2]=q[Jl+jm>>2],q[fm+8>>2]=q[Jl+im>>2],u[Jl+km>>2]=q[Jl+hm>>2]?x(1):x(0),0<(0|bm););for(fm=q[$l+16>>2],Jl=0;bm=q[8+(gm+w(q[(hm=(Il=Il+-1|0)<<2)+em>>2],36)|0)>>2],Jl=Jl+(q[fm+hm>>2]=bm)|0,0<(0|Il););Il=q[$l+4>>2]}if(q[$l+12>>2]=Il,q[$l+20>>2]=Jl,Il=q[am+4>>2],1<=(0|(q[$l+304>>2]=Il))){for(;Jl=q[$l+308>>2]+((Il=Il+-1|0)<<5)|0,q[Jl>>2]=q[$l+568>>2]+w(q[(bm=Il<<2)+q[dm+752>>2]>>2],36),q[Jl+4>>2]=q[bm+q[dm+764>>2]>>2],q[Jl+8>>2]=q[bm+q[dm+768>>2]>>2],em=q[bm+q[dm+772>>2]>>2],q[Jl+12>>2]=em,am=q[bm+q[dm+776>>2]>>2],q[Jl+16>>2]=am,q[Jl+28>>2]=q[bm+q[dm+760>>2]>>2],em>>>0<=1?em-1?(q[20+(q[$l+60>>2]+w(am,24)|0)>>2]=Il,q[Jl+24>>2]=1,q[Jl+20>>2]=2):(q[8+(q[$l+168>>2]+w(am,12)|0)>>2]=Il,q[Jl+24>>2]=3,q[Jl+20>>2]=4):Y(4,1179,0),0<(0|Il););dm=q[$l>>2],am=q[dm+704>>2]}bm=q[am+8>>2];k:if(!((0|(q[$l+56>>2]=bm))<1)){if(Jl=bm+-1|0,gm=q[dm+796>>2],fm=q[dm+804>>2],hm=q[dm+800>>2],im=q[dm+780>>2],jm=q[$l+568>>2],km=q[$l+60>>2],r[dm+4|0]<2)for(;;)if(Il=km+w(Jl,24)|0,q[Il>>2]=jm+w(q[(em=Jl<<2)+im>>2],36),q[Il+4>>2]=q[em+hm>>2],q[Il+8>>2]=q[em+fm>>2],em=q[em+gm>>2],q[Il+12>>2]=0,q[Il+16>>2]=em,Il=0<(0|Jl),Jl=Jl+-1|0,!Il)break k;for(lm=q[dm+808>>2];Il=km+w(Jl,24)|0,q[Il>>2]=jm+w(q[(em=Jl<<2)+im>>2],36),q[Il+4>>2]=q[em+hm>>2],q[Il+8>>2]=q[em+fm>>2],q[Il+16>>2]=q[em+gm>>2],q[Il+12>>2]=q[em+lm>>2],Il=0<(0|Jl),Jl=Jl+-1|0,Il;);}if(Jl=q[am+12>>2],1<=(0|(q[$l+164>>2]=Jl)))for(em=q[dm+828>>2],gm=q[dm+812>>2],fm=q[$l+568>>2],hm=q[$l+168>>2],Il=Jl;im=hm+w(Il=Il+-1|0,12)|0,q[im>>2]=fm+w(q[(jm=Il<<2)+gm>>2],36),q[im+4>>2]=q[em+jm>>2],0<(0|Il););if(((Il=0)|bm)<1)em=0;else{for(gm=q[$l+68>>2],fm=q[$l+60>>2],em=0;Jl=q[q[fm+w(bm=bm+-1|0,24)>>2]+8>>2],em=(q[gm+(bm<<2)>>2]=Jl)+em|0,0<(0|bm););Jl=q[$l+164>>2],bm=q[$l+56>>2]}if(q[$l+64>>2]=bm,q[$l+72>>2]=em,bm=$l,1<=(0|Jl)){for(gm=q[$l+176>>2],fm=q[$l+168>>2];em=q[q[fm+w(Jl=Jl+-1|0,12)>>2]+8>>2],Il=Il+(q[gm+(Jl<<2)>>2]=em)|0,0<(0|Jl););Jl=q[$l+164>>2]}if(q[bm+172>>2]=Jl,q[$l+180>>2]=Il,em=q[am+16>>2],1<=(0|(q[$l+332>>2]=em))){for(hm=q[dm+872>>2],im=q[dm+892>>2],jm=q[dm+880>>2],km=q[dm+876>>2],gm=q[dm+852>>2],fm=q[$l+568>>2],lm=q[$l+336>>2],Il=em;Jl=lm+w(Il=Il+-1|0,20)|0,q[Jl>>2]=fm+w(q[(bm=Il<<2)+gm>>2],36),q[Jl+4>>2]=q[bm+km>>2],q[Jl+8>>2]=q[bm+jm>>2],q[Jl+16>>2]=q[bm+im>>2],q[Jl+12>>2]=q[bm+hm>>2],0<(0|Il););for(bm=q[$l+344>>2],Jl=0;Il=q[8+(fm+w(q[(hm=(em=em+-1|0)<<2)+gm>>2],36)|0)>>2],Jl=(q[bm+hm>>2]=Il)+Jl|0,0<(0|em););if(q[$l+348>>2]=Jl,em=q[$l+332>>2],!((0|(q[$l+340>>2]=em))<1))for(Jl=em<<2,bm=q[$l+456>>2],gm=q[$l+452>>2];q[(fm=(Il=Jl+-4|0)<<2)+gm>>2]=1065353216,q[(hm=(Jl<<=2)-4|0)+gm>>2]=1065353216,q[(im=(Jl=Jl+-12|0)+gm|0)>>2]=1065353216,q[im+4>>2]=1065353216,q[bm+fm>>2]=0,q[bm+hm>>2]=1065353216,q[(Jl=Jl+bm|0)>>2]=0,q[Jl+4>>2]=0,Jl=Il,0<(0|(em=em+-1|0)););}else q[$l+340>>2]=em,q[$l+348>>2]=0;if(em=q[am+72>>2],1<=(0|(q[$l+480>>2]=em)))for(hm=q[dm+1208>>2],im=q[dm+1224>>2],jm=q[dm+1220>>2],km=q[dm+1216>>2],lm=q[dm+1212>>2],mm=q[$l+484>>2],bm=0;;){if(Il=mm+w(bm,28)|0,gm=q[(Jl=bm<<2)+lm>>2],q[Il+4>>2]=gm,q[Il>>2]=q[Jl+km>>2],fm=q[Jl+jm>>2],q[Il+16>>2]=fm,om=q[Jl+im>>2],q[Il+20>>2]=om,q[Il+8>>2]=0,q[Il+24>>2]=1+(fm-om|0),1<=(0|gm))for(om=q[Jl+hm>>2],qm=q[Il+12>>2],pm=q[dm+1236>>2],sm=q[dm+1228>>2],rm=q[dm+1232>>2],Jl=0;q[4+(Il=qm+(Jl<<4)|0)>>2]=q[(fm=Jl+om<<2)+rm>>2],q[Il>>2]=q[fm+sm>>2],fm=q[fm+pm>>2],q[Il+12>>2]=0,q[Il+8>>2]=fm,(0|gm)!=(0|(Jl=Jl+1|0)););if((0|em)==(0|(bm=bm+1|0)))break}if(Jl=q[am+80>>2],(0|(q[$l+500>>2]=Jl))<1)bm=0;else{for(fm=q[dm+1280>>2],hm=q[dm+1268>>2],im=q[dm+1276>>2],jm=q[dm+1272>>2],km=q[dm+1264>>2],lm=q[dm+1260>>2],em=q[dm+1248>>2],gm=q[$l+568>>2],mm=q[$l+504>>2];Il=mm+w(Jl=Jl+-1|0,24)|0,q[Il>>2]=gm+w(q[(bm=Jl<<2)+em>>2],36),q[Il+4>>2]=q[bm+lm>>2],q[Il+8>>2]=q[bm+km>>2],q[Il+12>>2]=q[bm+jm>>2],bm=q[bm+hm>>2],q[Il+20>>2]=fm+(bm<<1),q[Il+16>>2]=im+(bm<<2),0<(0|Jl););if((0|(Jl=q[$l+500>>2]))<1)bm=0;else{for(fm=q[$l+512>>2],bm=0;Il=q[8+(gm+w(q[(hm=(Jl=Jl+-1|0)<<2)+em>>2],36)|0)>>2],bm=(q[fm+hm>>2]=Il)+bm|0,0<(0|Jl););Jl=q[$l+500>>2]}}q[$l+508>>2]=Jl,q[$l+516>>2]=bm;o:if(4<=r[a+4|0]){if(!((em=r[dm+4|0])>>>0<4)){if(Jl=q[am+120>>2],1<=(0|(q[$l+572>>2]=Jl))){for(fm=q[dm+1172>>2],hm=q[$l+576>>2];em=(0|(am=q[(Il=(Jl=Jl+-1|0)<<2)+fm>>2]))<0?am=gm=bm=0:(bm=(em=q[Il+q[dm+1176>>2]>>2]<<2)+q[dm+1188>>2]|0,gm=q[Il+q[dm+1180>>2]>>2],am=q[$l+544>>2]+w(am,52)|0,em+q[dm+1184>>2]|0),Il=hm+w(Jl,20)|0,q[Il+12>>2]=gm,q[Il+8>>2]=bm,q[Il+4>>2]=em,q[Il>>2]=am,0<(0|Jl););if(dm=q[$l>>2],(em=r[dm+4|0])>>>0<4)break o}if(am=q[dm+704>>2],bm=q[am+100>>2],1<=(0|(q[$l+580>>2]=bm)))for(gm=q[dm+1084>>2],fm=q[dm+1076>>2],hm=q[dm+1192>>2],im=q[dm+1080>>2],jm=q[$l+584>>2];Il=jm+w(bm=bm+-1|0,28)|0,q[Il>>2]=q[(Jl=bm<<2)+im>>2],q[Il+4>>2]=hm+(q[Jl+fm>>2]<<2),Jl=q[Jl+gm>>2],q[Il+20>>2]=1,q[Il+24>>2]=1,q[Il+12>>2]=0,q[Il+16>>2]=0,q[Il+8>>2]=Jl,0<(0|bm););if(bm=q[am+104>>2],1<=(0|(q[$l+588>>2]=bm))){for(;;){if(Il=q[$l+592>>2]+w(bm=bm+-1|0,48)|0,q[Il>>2]=q[$l+584>>2]+w(q[(em=bm<<2)+q[dm+1088>>2]>>2],28),Jl=q[em+q[dm+1092>>2]>>2],q[Il+28>>2]=1,q[Il+32>>2]=1,q[Il+8>>2]=0,q[Il+4>>2]=Jl,am=q[em+q[dm+1104>>2]>>2],1<=(0|(q[Il+36>>2]=am)))for(Jl=0;q[q[Il+40>>2]+(Jl<<2)>>2]=q[$l+576>>2]+w(q[q[dm+1168>>2]+(q[em+q[dm+1100>>2]>>2]+Jl<<2)>>2],20),(0|am)!=(0|(Jl=Jl+1|0)););if(!(1<=(0|bm)))break}dm=q[$l>>2],em=r[dm+4|0]}if(!(em>>>0<4)){if(em=q[a+704>>2],Jl=q[em+108>>2],1<=(0|(q[$l+604>>2]=Jl)))for(am=q[a+1124>>2],gm=q[a+1128>>2],fm=q[a+1120>>2],hm=q[$l+592>>2],im=q[$l+608>>2];Il=im+w(Jl=Jl+-1|0,12)|0,q[Il>>2]=q[(bm=Jl<<2)+fm>>2],q[Il+4>>2]=q[bm+gm>>2],q[Il+8>>2]=hm+w(q[am+bm>>2],48),0<(0|Jl););if(Jl=q[em+112>>2],1<=(0|(q[$l+620>>2]=Jl)))for(em=q[a+1148>>2],am=q[a+1152>>2],gm=q[a+1144>>2],fm=q[$l+592>>2],hm=q[$l+624>>2];Il=hm+w(Jl=Jl+-1|0,12)|0,q[Il>>2]=q[(bm=Jl<<2)+gm>>2],q[Il+4>>2]=q[am+bm>>2],q[Il+8>>2]=fm+w(q[bm+em>>2],48),0<(0|Jl););if(bm=q[dm+1192>>2],Il=q[q[dm+704>>2]+20>>2],q[$l+640>>2]=q[dm+972>>2],em=q[dm+964>>2],q[$l+636>>2]=em,!((0|Il)<(Jl=1))&&(q[em>>2]=bm+(q[q[dm+968>>2]>>2]<<2),1!=(0|Il)))for(;q[(em=Jl<<2)+q[$l+636>>2]>>2]=bm+(q[em+q[dm+968>>2]>>2]<<2),(0|Il)!=(0|(Jl=Jl+1|0)););}}}else if(!(q[am+20>>2]<1))for(am=0;;){if(bm=q[(gm=am<<2)+q[$l+636>>2]>>2],1<=((Il=0)|(Jl=q[gm+q[dm+952>>2]>>2])))for(im=Jl+(fm=q[gm+q[dm+948>>2]>>2])|0,jm=q[dm+1060>>2],km=q[dm+1056>>2];;){if(1<=(0|(hm=q[(Jl=fm<<2)+jm>>2])))for(lm=hm+(em=q[Jl+km>>2])|0,mm=q[dm+1192>>2];;){hm=bm+(Il<<2)|0,nm=u[mm+(em<<2)>>2],Jl=bm;q:{if(0<(0|Il))for(;;){if(u[Jl>>2]==nm)break q;if(!((Jl=Jl+4|0)>>>0>>0))break}u[hm>>2]=nm,Il=Il+1|0}if(!((0|(em=em+1|0))<(0|lm)))break}if(!((0|(fm=fm+1|0))<(0|im)))break}if(function(a,Sm){var un,Kn,xn=0,yn=0,Jn=0;q[8+(L=un=L-208|0)>>2]=1,q[12+un>>2]=0;a:if(Kn=Sm<<2){for(q[16+un>>2]=4,Jn=Sm=q[20+un>>2]=4,xn=2;Sm=(Jn+4|0)+(yn=Sm)|0,q[(16+un|0)+(xn<<2)>>2]=Sm,xn=xn+1|0,Jn=yn,Sm>>>0>>0;);if((yn=(a+Kn|0)-4|0)>>>0<=a>>>0)Sm=xn=1;else for(Sm=xn=1;Sm=3==(3&xn)?(ta(a,Sm,16+un|0),ma(8+un|0,2),Sm+2|0):(t[(16+un|0)+((Jn=Sm+-1|0)<<2)>>2]>=yn-a>>>0?la(a,8+un|0,Sm,0,16+un|0):ta(a,Sm,16+un|0),1==(0|Sm)?(ka(8+un|0,1),0):(ka(8+un|0,Jn),1)),xn=1|q[8+un>>2],q[8+un>>2]=xn,(a=a+4|0)>>>0>>0;);for(la(a,8+un|0,Sm,0,16+un|0);;){e:{f:{g:{if(!(1!=(0|Sm)|1!=(0|xn))){if(q[12+un>>2])break g;break a}if(1<(0|Sm))break f}ma(8+un|0,yn=Oa(8+un|0)),xn=q[8+un>>2],Sm=Sm+yn|0;break e}ka(8+un|0,2),q[8+un>>2]=7^q[8+un>>2],ma(8+un|0,1),la((Jn=a+-4|0)-q[(16+un|0)+((yn=Sm+-2|0)<<2)>>2]|0,8+un|0,Sm+-1|0,1,16+un|0),ka(8+un|0,1),xn=1|q[8+un>>2],q[8+un>>2]=xn,la(Jn,8+un|0,yn,1,16+un|0),Sm=yn}a=a+-4|0}}L=208+un|0}(bm,Il),q[gm+q[$l+640>>2]>>2]=Il,!((0|(am=am+1|0))>2]+20>>2]))break}if(!(r[a+4|0]<5|r[q[$l>>2]+4|0]<4)){if(Il=q[a+704>>2],Jl=q[Il+128>>2],1<=(0|(q[$l+596>>2]=Jl)))for(em=q[a+1112>>2],am=q[a+1116>>2],gm=q[a+1108>>2],fm=q[$l+592>>2],hm=q[$l+600>>2];dm=hm+w(Jl=Jl+-1|0,12)|0,q[dm>>2]=q[(bm=Jl<<2)+gm>>2],q[dm+4>>2]=q[am+bm>>2],q[dm+8>>2]=fm+w(q[bm+em>>2],48),0<(0|Jl););if(Jl=q[Il+132>>2],1<=(0|(q[$l+612>>2]=Jl)))for(em=q[a+1136>>2],am=q[a+1140>>2],gm=q[a+1132>>2],fm=q[$l+592>>2],hm=q[$l+616>>2];dm=hm+w(Jl=Jl+-1|0,12)|0,q[dm>>2]=q[(bm=Jl<<2)+gm>>2],q[dm+4>>2]=q[am+bm>>2],q[dm+8>>2]=fm+w(q[bm+em>>2],48),0<(0|Jl););if(Jl=q[Il+136>>2],!((0|(q[$l+628>>2]=Jl))<1))for(dm=q[a+1160>>2],bm=q[a+1164>>2],em=q[a+1156>>2],am=q[$l+592>>2],gm=q[$l+632>>2];a=gm+w(Jl=Jl+-1|0,12)|0,q[a>>2]=q[(Il=Jl<<2)+em>>2],q[a+4>>2]=q[Il+bm>>2],q[a+8>>2]=am+w(q[Il+dm>>2],48),0<(0|Jl););}ua($l)}return L=576+cm|0,$l}(a,Wa,Xa))break a;q[36+Ya>>2]=2209,q[32+Ya>>2]=2361,Y(4,1294,32+Ya|0)}else q[20+Ya>>2]=1444,q[16+Ya>>2]=2361,Y(4,1294,16+Ya|0);else q[4+Ya>>2]=2132,q[Ya>>2]=2361,Y(4,1294,Ya);Wa=0}return L=64+Ya|0,0|Wa}function xa(a){var Wa;return L=Wa=L-16|0,a=(a|=0)?function(a){var Il;return ca(16+(L=Il=L-576|0)|0,0,560),Fa(a,16+Il|0,12+Il|0),L=576+Il|0,q[12+Il>>2]}(a):(q[4+Wa>>2]=2132,q[Wa>>2]=2343,Y(4,1294,Wa),0),L=16+Wa|0,0|a}function ya(a){var Xa=r[a+4|0];X(q[a+704>>2],4,64),da(q[a+708>>2],4),da(q[a+708>>2]+4|0,4),da(q[a+708>>2]+8|0,4),da(q[a+708>>2]+12|0,4),da(q[a+708>>2]+16|0,4),da(q[a+708>>2]+20|0,1),X(q[a+720>>2],4,q[q[a+704>>2]>>2]),X(q[a+724>>2],4,q[q[a+704>>2]>>2]),X(q[a+728>>2],4,q[q[a+704>>2]>>2]),X(q[a+732>>2],4,q[q[a+704>>2]>>2]),X(q[a+736>>2],4,q[q[a+704>>2]>>2]),X(q[a+740>>2],4,q[q[a+704>>2]>>2]),X(q[a+752>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+756>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+760>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+764>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+768>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+772>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+776>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+780>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+784>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+788>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+796>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+800>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+804>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+812>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+816>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+820>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+828>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+852>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+856>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+860>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+868>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+872>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+876>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+880>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+884>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+888>>2],1,q[q[a+704>>2]+16>>2]),X(q[a+892>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+896>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+900>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+904>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+908>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+912>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+924>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+928>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+932>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+936>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+940>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+948>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+952>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+976>>2],4,q[q[a+704>>2]+24>>2]),X(q[a+980>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+984>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+996>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1e3>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1004>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1008>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1012>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1016>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1020>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1032>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1036>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1040>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1052>>2],4,q[q[a+704>>2]+40>>2]),X(q[a+1064>>2],4,q[q[a+704>>2]+44>>2]),X(q[a+1068>>2],4,q[q[a+704>>2]+48>>2]),X(q[a+1072>>2],4,q[q[a+704>>2]+48>>2]),X(q[a+1056>>2],4,q[q[a+704>>2]+52>>2]),X(q[a+1060>>2],4,q[q[a+704>>2]+52>>2]),X(q[a+1192>>2],4,q[q[a+704>>2]+56>>2]),X(q[a+1196>>2],4,q[q[a+704>>2]+60>>2]),X(q[a+1200>>2],2,q[q[a+704>>2]+64>>2]),X(q[a+1204>>2],4,q[q[a+704>>2]+68>>2]),X(q[a+1208>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1212>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1216>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1220>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1224>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1228>>2],4,q[q[a+704>>2]+76>>2]),X(q[a+1232>>2],4,q[q[a+704>>2]+76>>2]),X(q[a+1236>>2],4,q[q[a+704>>2]+76>>2]),X(q[a+1248>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1252>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1256>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1260>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1264>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1268>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1272>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1276>>2],4,q[q[a+704>>2]+84>>2]),X(q[a+1280>>2],2,q[q[a+704>>2]+84>>2]),X(q[a+1284>>2],4,q[q[a+704>>2]+88>>2]),Xa>>>0<2||(X(q[a+808>>2],4,q[q[a+704>>2]+8>>2]),Xa>>>0<4)||(X(q[a+968>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+972>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+792>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+824>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+864>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+1288>>2],4,q[q[a+704>>2]+92>>2]),X(q[a+1292>>2],4,q[q[a+704>>2]+92>>2]),X(q[a+1296>>2],4,q[q[a+704>>2]+92>>2]),X(q[a+1300>>2],4,q[q[a+704>>2]+96>>2]),X(q[a+1304>>2],4,q[q[a+704>>2]+96>>2]),X(q[a+1308>>2],4,q[q[a+704>>2]+96>>2]),X(q[a+944>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+956>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+960>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+1076>>2],4,q[q[a+704>>2]+100>>2]),X(q[a+1080>>2],4,q[q[a+704>>2]+100>>2]),X(q[a+1084>>2],4,q[q[a+704>>2]+100>>2]),X(q[a+1088>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1092>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1096>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1100>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1104>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1120>>2],4,q[q[a+704>>2]+108>>2]),X(q[a+1124>>2],4,q[q[a+704>>2]+108>>2]),X(q[a+1128>>2],4,q[q[a+704>>2]+108>>2]),X(q[a+1144>>2],4,q[q[a+704>>2]+112>>2]),X(q[a+1148>>2],4,q[q[a+704>>2]+112>>2]),X(q[a+1152>>2],4,q[q[a+704>>2]+112>>2]),X(q[a+1168>>2],4,q[q[a+704>>2]+116>>2]),X(q[a+1172>>2],4,q[q[a+704>>2]+120>>2]),X(q[a+1176>>2],4,q[q[a+704>>2]+120>>2]),X(q[a+1180>>2],4,q[q[a+704>>2]+120>>2]),X(q[a+1184>>2],4,q[q[a+704>>2]+124>>2]),X(q[a+1188>>2],4,q[q[a+704>>2]+124>>2]),4!=(0|Xa)&&(X(q[a+988>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+992>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+1024>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1028>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1044>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1048>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1108>>2],4,q[q[a+704>>2]+128>>2]),X(q[a+1112>>2],4,q[q[a+704>>2]+128>>2]),X(q[a+1116>>2],4,q[q[a+704>>2]+128>>2]),X(q[a+1132>>2],4,q[q[a+704>>2]+132>>2]),X(q[a+1136>>2],4,q[q[a+704>>2]+132>>2]),X(q[a+1140>>2],4,q[q[a+704>>2]+132>>2]),X(q[a+1156>>2],4,q[q[a+704>>2]+136>>2]),X(q[a+1160>>2],4,q[q[a+704>>2]+136>>2]),X(q[a+1164>>2],4,q[q[a+704>>2]+136>>2])))}function za(a,Za){var _a=0,lb=0,mb=0,ob=0,pb=0,rb=0,nb=a+Za|0;a:{b:if(!(1&(_a=q[a+4>>2]))){if(!(3&_a))break a;if(Za=(_a=q[a>>2])+Za|0,(0|(a=a-_a|0))!=q[2092])if(_a>>>0<=255)mb=_a>>>3,_a=q[a+8>>2],(0|(lb=q[a+12>>2]))==(0|_a)?(rb=q[2087]&dd(mb),q[2087]=rb):(q[_a+12>>2]=lb,q[lb+8>>2]=_a);else{if(pb=q[a+24>>2],(0|(_a=q[a+12>>2]))!=(0|a))lb=q[a+8>>2],q[lb+12>>2]=_a,q[_a+8>>2]=lb;else if(mb=(mb=q[(lb=a+20|0)>>2])||q[(lb=a+16|0)>>2]){for(;ob=lb,(mb=q[(lb=(_a=mb)+20|0)>>2])||(lb=_a+16|0,mb=q[_a+16>>2]););q[ob>>2]=0}else _a=0;if(pb){lb=q[a+28>>2];e:{if(q[(mb=8652+(lb<<2)|0)>>2]==(0|a)){if(q[mb>>2]=_a)break e;rb=q[2088]&dd(lb),q[2088]=rb;break b}if(!(q[pb+(q[pb+16>>2]==(0|a)?16:20)>>2]=_a))break b}q[_a+24>>2]=pb,(lb=q[a+16>>2])&&(q[_a+16>>2]=lb,q[lb+24>>2]=_a),(lb=q[a+20>>2])&&(q[_a+20>>2]=lb,q[lb+24>>2]=_a)}}else if(3==(3&(_a=q[4+nb>>2])))return q[2089]=Za,q[4+nb>>2]=-2&_a,q[a+4>>2]=1|Za,q[nb>>2]=Za}f:{if(!(2&(_a=q[4+nb>>2]))){if(q[2093]==(0|nb)){if(q[2093]=a,Za=q[2090]+Za|0,q[2090]=Za,q[a+4>>2]=1|Za,q[2092]!=(0|a))break a;return q[2089]=0,q[2092]=0}if(q[2092]==(0|nb))return q[2092]=a,Za=q[2089]+Za|0,q[2089]=Za,q[a+4>>2]=1|Za,q[a+Za>>2]=Za;Za=(-8&_a)+Za|0;g:if(_a>>>0<=255)mb=_a>>>3,_a=q[8+nb>>2],(0|(lb=q[12+nb>>2]))==(0|_a)?(rb=q[2087]&dd(mb),q[2087]=rb):(q[_a+12>>2]=lb,q[lb+8>>2]=_a);else{if(pb=q[24+nb>>2],(0|nb)!=(0|(_a=q[12+nb>>2])))lb=q[8+nb>>2],q[lb+12>>2]=_a,q[_a+8>>2]=lb;else if(mb=(mb=q[(lb=20+nb|0)>>2])||q[(lb=16+nb|0)>>2]){for(;ob=lb,(mb=q[(lb=(_a=mb)+20|0)>>2])||(lb=_a+16|0,mb=q[_a+16>>2]););q[ob>>2]=0}else _a=0;if(pb){lb=q[28+nb>>2];j:{if(q[(mb=8652+(lb<<2)|0)>>2]==(0|nb)){if(q[mb>>2]=_a)break j;rb=q[2088]&dd(lb),q[2088]=rb;break g}if(!(q[pb+(q[pb+16>>2]==(0|nb)?16:20)>>2]=_a))break g}q[_a+24>>2]=pb,(lb=q[16+nb>>2])&&(q[_a+16>>2]=lb,q[lb+24>>2]=_a),(lb=q[20+nb>>2])&&(q[_a+20>>2]=lb,q[lb+24>>2]=_a)}}if(q[a+4>>2]=1|Za,q[a+Za>>2]=Za,q[2092]!=(0|a))break f;return q[2089]=Za}q[4+nb>>2]=-2&_a,q[a+4>>2]=1|Za,q[a+Za>>2]=Za}if(Za>>>0<=255)return Za=8388+((_a=Za>>>3)<<3)|0,_a=(lb=q[2087])&(_a=1<<_a)?q[Za+8>>2]:(q[2087]=_a|lb,Za),q[Za+8>>2]=a,q[_a+12>>2]=a,q[a+12>>2]=Za,q[a+8>>2]=_a;q[a+16>>2]=0,_a=q[a+20>>2]=0,(mb=Za>>>8)&&(_a=31,16777215>>0||(_a=28+((_a=((nb=(mb<<=ob=mb+1048320>>>16&8)<<(_a=mb+520192>>>16&4))<<(mb=245760+nb>>>16&2)>>>15)-(mb|_a|ob)|0)<<1|Za>>>_a+21&1)|0)),mb=8652+((q[(lb=a)+28>>2]=_a)<<2)|0;m:{if((lb=q[2088])&(ob=1<<_a)){for(lb=Za<<(31==(0|_a)?0:25-(_a>>>1)|0),_a=q[mb>>2];;){if((-8&q[(mb=_a)+4>>2])==(0|Za))break m;if(_a=lb>>>29,lb<<=1,!(_a=q[16+(ob=mb+(4&_a)|0)>>2]))break}q[ob+16>>2]=a}else q[2088]=lb|ob,q[mb>>2]=a;return q[a+24>>2]=mb,q[a+12>>2]=a,q[a+8>>2]=a}Za=q[mb+8>>2],q[Za+12>>2]=a,q[mb+8>>2]=a,q[a+24>>2]=0,q[a+12>>2]=mb,q[a+8>>2]=Za}}function Aa(a){var vb,xb,yb,Ab,Bb,Cb,sb,wb,Za=x(0),tb=(x(0),0),ub=0,zb=(x(0),x(0),x(0),x(0),0);x(0),x(0);a:{b:{if(j(a),ub=2147483647&(tb=b[0])){if(!(ub>>>0<2139095041))return x(x(.10000000149011612)+a);if(1065353216==(0|ub))return x(-1<(0|tb)?.10000000149011612:10);if(2139095040==(0|ub))return x(-1<(0|tb)?0:-a);if(1073741824==(0|tb))return x(.010000000707805157);if(1056964608==(0|tb))return x(.3162277638912201);if(1291845633<=ub>>>0)return x((0|tb)<0?H:0);if(vb=u[1701],wb=x(x(1.600000023841858)-vb),xb=x(x(1)/x(vb+x(1.600000023841858))),f(0,-4096&(j(sb=x(wb*xb)),b[0])),Za=k(),yb=x(Za*Za),Bb=u[1705],vb=x(xb*x(x(wb-x((Ab=Za)*x(3.099609375)))-x(Za*x(x(1.600000023841858)-x(x(3.099609375)-vb))))),xb=x(x(sb+Za)*vb),Za=x(sb*sb),wb=x(xb+x(x(Za*Za)*x(x(Za*x(x(Za*x(x(Za*x(x(Za*x(x(Za*x(.20697501301765442))+x(.23066075146198273)))+x(.2727281153202057)))+x(.3333333432674408)))+x(.4285714328289032)))+x(.6000000238418579)))),f(0,-4096&(j(x(x(yb+x(3))+wb)),b[0])),Za=k(),xb=x(Ab*Za),sb=x(x(vb*Za)+x(sb*x(wb-x(x(Za+x(-3))-yb)))),f(0,-4096&(j(x(xb+sb)),b[0])),Za=k(),vb=x(Za*x(.9619140625)),yb=x(u[1703]+x(x(x(sb-x(Za-xb))*x(.9617967009544373))+x(Za*x(-.00011736857413779944)))),f(0,-4096&(j(x(x(Bb+x(vb+yb))+x(-4))),b[0])),sb=k(),f(0,-4096&tb),wb=k(),Za=x(sb*wb),a=x(x(x(yb-x(x(x(sb-x(-4))-Bb)-vb))*a)+x(x(a-wb)*sb)),j(sb=x(Za+a)),1124073473<=(0|(tb=b[0])))break b;d:{if((ub=1124073472)==(0|tb)){if(x(a+x(4.299566569443414e-8))>x(sb-Za))break b}else{if(ub=2147483647&tb,!(a<=x(sb-Za)^1|-1021968384!=(0|tb))|1125515265<=ub>>>0)break a;if(ub>>>0<1056964609)break d}zb=(8388607&(ub=(8388608>>>(ub>>>23)-126)+tb|0)|8388608)>>>150-(Cb=ub>>>23&255),zb=(0|tb)<0?0-zb|0:zb,Za=x(Za-(f(0,ub&-8388608>>Cb-127),k())),j(x(a+Za)),tb=b[0]}f(0,-32768&tb),sb=k(),vb=x(sb*x(.693145751953125)),sb=x(x(sb*x(14286065379565116e-22))+x(x(a-x(sb-Za))*x(.6931471824645996))),a=x(vb+sb),Za=x(a*a),Za=x(a-x(Za*x(x(Za*x(x(Za*x(x(Za*x(x(Za*x(4.138136944220605e-8))+x(-16533901998627698e-22)))+x(661375597701408e-19)))+x(-.0027777778450399637)))+x(.1666666716337204)))),Ab=x(x(a*Za)/x(Za+x(-2))),Za=x(sb-x(a-vb)),a=(0|(tb=0|(j(a=x(x(a-x(Ab-x(Za+x(a*Za))))+x(1))),b[0]+(zb<<23))))<=8388607?function(a,Vk){var zl=0;return 128<=(0|Vk)?(a=x(a*x(17014118346046923e22)),Vk=(0|(zl=Vk+-127|0))<128?zl:(a=x(a*x(17014118346046923e22)),((0|Vk)<381?Vk:381)+-254|0)):-127<(0|Vk)||(a=x(a*x(11754943508222875e-54)),Vk=-127<(0|(zl=Vk+126|0))?zl:(a=x(a*x(11754943508222875e-54)),(-378<(0|Vk)?Vk:-378)+252|0)),x(a*(f(0,1065353216+(Vk<<23)|0),k()))}(a,zb):(f(0,tb),k()),a=x(x(1)*a)}else a=x(1);return a}return x(H)}return x(0)}function Ba(a,Db){var Jb,Eb,Gb,Fb=0,Hb=0,Ib=x(0);if(j(Db),!((Gb=2147483647&(Eb=b[0]))>>>0<=2139095040&&(j(a),(Fb=2147483647&(Hb=b[0]))>>>0<2139095041)))return x(a+Db);if(1065353216==(0|Eb))return Ca(a);Eb=(Jb=Eb>>>30&2)|Hb>>>31;b:{c:{d:{e:{if(!Fb){switch(Eb-2|0){case 0:break e;case 1:break;default:break d}return x(-3.1415927410125732)}if(2139095040!=(0|Gb)){if(!Gb|!(Fb>>>0<=218103808+Gb>>>0&&2139095040!=(0|Fb)))break b;if(a=Ib=Fb+218103808>>>0>>0&&(Ib=x(0),Jb)?Ib:Ca(x(y(x(a/Db)))),Eb>>>0<=2){switch(Eb-1|0){case 0:return x(-a);case 1:break;default:break d}return x(x(3.1415927410125732)-x(a+x(8.742277657347586e-8)))}return x(x(a+x(8.742277657347586e-8))+x(-3.1415927410125732))}if(2139095040==(0|Fb))break c;return u[6784+(Eb<<2)>>2]}a=x(3.1415927410125732)}return a}return u[6768+(Eb<<2)>>2]}return x((0|Hb)<0?-1.5707963705062866:1.5707963705062866)}function Ca(a){x(0);var Kb,Nb,Ob,Db,Mb,Lb=0;x(0),x(0),j(a);a:{if(1283457024<=(Db=2147483647&(Mb=b[0]))>>>0){if(2139095040>>0)break a;return x((0|Mb)<0?-1.570796251296997:1.570796251296997)}b:{if(Db>>>0<=1054867455){if(Lb=-1,964689920<=Db>>>0)break b;break a}a=x(y(a)),Lb=Db>>>0<=1066926079?Db>>>0<=1060110335?(a=x(x(x(a+a)+x(-1))/x(a+x(2))),0):(a=x(x(a+x(-1))/x(a+x(1))),1):Db>>>0<=1075576831?(a=x(x(a+x(-1.5))/x(x(a*x(1.5))+x(1))),2):(a=x(x(-1)/a),3)}if(Db=Lb,Nb=x(a*a),Kb=x(Nb*Nb),Ob=x(Kb*x(x(Kb*x(-.106480173766613))+x(-.19999158382415771))),Kb=x(Nb*x(x(Kb*x(x(Kb*x(.06168760731816292))+x(.14253635704517365)))+x(.333333283662796))),(0|Db)<=-1)return x(a-x(a*x(Ob+Kb)));a=x(u[6736+(Db<<=2)>>2]-x(x(x(a*x(Ob+Kb))-u[6752+Db>>2])-a)),a=(0|Mb)<0?x(-a):a}return a}function Da(a,Pb){var Ub,Sb,Tb,Qb=0,Rb=0;return L=Sb=L-16|0,j(a),(Qb=2147483647&(Tb=b[0]))>>>0<=1305022426?(v[Pb>>3]=(Ub=+a)+-1.5707963109016418*(Rb=.6366197723675814*Ub+6755399441055744-6755399441055744)+-1.5893254773528196e-8*Rb,Qb=y(Rb)<2147483648?~~Rb:-2147483648):2139095040<=Qb>>>0?(v[Pb>>3]=x(a-a),Qb=0):(Ub=Qb,v[8+Sb>>3]=(f(0,Ub-((Qb=(Qb>>>23)-150|0)<<23)|0),k()),Qb=function(a,Il,Jl){var Nl,Sl,Wl,Xl,Zl,_l,Kl=0,Ll=0,Ml=0,Ol=0,Pl=0,Ql=0,Rl=0,Tl=0,Ul=0,Vl=0,Yl=0;if(L=Nl=L-560|0,Rl=(Ll=Jl)+w(Wl=0<(0|(Jl=(Jl+-3|0)/24|0))?Jl:0,-24)|0,0<=(0|(Sl=q[972])))for(Ll=Sl+1|0,Jl=Wl;v[(320+Nl|0)+(Ml<<3)>>3]=(0|Jl)<0?0:+q[3904+(Jl<<2)>>2],Jl=Jl+1|0,(0|Ll)!=(0|(Ml=Ml+1|0)););for(Pl=Rl+-24|0,Ll=0;;){for(Kl=Jl=0;Kl+=v[(Jl<<3)+a>>3]*v[(320+Nl|0)+(Ll-Jl<<3)>>3],1!=(0|(Jl=Jl+1|0)););if(v[(Ll<<3)+Nl>>3]=Kl,Jl=(0|Ll)<(0|Sl),Ll=Ll+1|0,!Jl)break}_l=23-Pl|0,Xl=24-Pl|0,Ll=Sl;a:{for(;;){if(Kl=v[(Ll<<3)+Nl>>3],!(Ul=((Jl=0)|(Ml=Ll))<1))for(;Ql=(480+Nl|0)+(Jl<<2)|0,Tl=Kl,Ol=y(Kl*=5.960464477539063e-8)<2147483648?~~Kl:-2147483648,Ol=y(Tl+=-16777216*(Kl=0|Ol))<2147483648?~~Tl:-2147483648,q[Ql>>2]=Ol,Kl=v[((Ml=Ml+-1|0)<<3)+Nl>>3]+Kl,(0|Ll)!=(0|(Jl=Jl+1|0)););Kl=ja(Kl,Pl),Kl=(Kl+=-8*C(.125*Kl))-(0|(Ql=y(Kl)<2147483648?~~Kl:-2147483648));e:{f:{g:{if(Yl=(0|Pl)<1){if(Pl)break g;Ol=q[476+((Ll<<2)+Nl|0)>>2]>>23}else Ol=q[476+(Ml=(Ll<<2)+Nl|0)>>2],Vl=Ml,Ml=Ol-((Jl=Ol>>Xl)<>2]=Ml)>>_l;if((0|Ol)<1)break e;break f}if(Ol=2,!(.5<=Kl)){Ol=0;break e}}if(Ml=Jl=0,!Ul)for(;;){Ul=q[(Zl=(480+Nl|0)+(Jl<<2)|0)>>2],Vl=16777215;i:{j:{if(!Ml){if(!Ul)break j;Vl=16777216,Ml=1}q[Zl>>2]=Vl-Ul;break i}Ml=0}if((0|Ll)==(0|(Jl=Jl+1|0)))break}Yl||1<(Jl=Pl+-1|0)>>>0||(q[476+(Jl=(Ll<<2)+Nl|0)>>2]=Jl-1?8388607&q[Jl+476>>2]:4194303&q[Jl+476>>2]),Ql=Ql+1|0,2==(0|Ol)&&(Kl=1-Kl,Ol=2,Ml)&&(Kl-=ja(1,Pl))}if(0!=Kl)break;if(!(((Ml=0)|(Jl=Ll))<=(0|Sl))){for(;Ml=q[(480+Nl|0)+((Jl=Jl+-1|0)<<2)>>2]|Ml,(0|Sl)<(0|Jl););if(Ml){for(Rl=Pl;Rl=Rl+-24|0,!q[(480+Nl|0)+((Ll=Ll+-1|0)<<2)>>2];);break a}}for(Jl=1;Jl=(Ml=Jl)+1|0,!q[(480+Nl|0)+(Sl-Ml<<2)>>2];);for(Ml=Ll+Ml|0;;){for(Ll=Ql=Ll+1|0,v[(320+Nl|0)+(Ql<<3)>>3]=q[3904+(Wl+Ll<<2)>>2],Kl=Jl=0;Kl+=v[(Jl<<3)+a>>3]*v[(320+Nl|0)+(Ql-Jl<<3)>>3],1!=(0|(Jl=Jl+1|0)););if(v[(Ll<<3)+Nl>>3]=Kl,!((0|Ll)<(0|Ml)))break}Ll=Ml}16777216<=(Kl=ja(Kl,0-Pl|0))?(a=(480+Nl|0)+(Ll<<2)|0,Tl=Kl,Jl=y(Kl*=5.960464477539063e-8)<2147483648?~~Kl:-2147483648,Ml=y(Kl=Tl+-16777216*(0|Jl))<2147483648?~~Kl:-2147483648,q[a>>2]=Ml,Ll=Ll+1|0):(Jl=y(Kl)<2147483648?~~Kl:-2147483648,Rl=Pl),q[(480+Nl|0)+(Ll<<2)>>2]=Jl}if(Kl=ja(1,Rl),!((0|Ll)<=-1)){for(Jl=Ll;v[(Jl<<3)+Nl>>3]=Kl*+q[(480+Nl|0)+(Jl<<2)>>2],Kl*=5.960464477539063e-8,a=0<(0|Jl),Jl=Jl+-1|0,a;);if(!((0|Ll)<=-1))for(Jl=Ll;;){for(Pl=Ll-(a=Jl)|0,Jl=Kl=0;Kl+=v[6672+(Jl<<3)>>3]*v[(a+Jl<<3)+Nl>>3],!((0|Sl)<=(0|Jl))&&(Rl=Jl>>>0>>0,Jl=Jl+1|0,Rl););if(v[(160+Nl|0)+(Pl<<3)>>3]=Kl,Jl=a+-1|0,!(0<(0|a)))break}}if(0<=(Ll|(Kl=0)))for(;Kl+=v[(160+Nl|0)+(Ll<<3)>>3],a=0<(0|Ll),Ll=Ll+-1|0,a;);return v[Il>>3]=Ol?-Kl:Kl,L=560+Nl|0,7&Ql}(8+Sb|0,Sb,Qb),Rb=v[Sb>>3],(0|Tb)<=-1?(v[Pb>>3]=-Rb,Qb=0-Qb|0):v[Pb>>3]=Rb),L=16+Sb|0,Qb}function Ea(a,Pb){return a?function(a,Il){a:{if(a){if(Il>>>0<=127)break a;if(q[q[1789]>>2]){if(Il>>>0<=2047)return o[a+1|0]=63&Il|128,o[0|a]=Il>>>6|192,2;if(!(57344!=(-8192&Il)&&55296<=Il>>>0))return o[a+2|0]=63&Il|128,o[0|a]=Il>>>12|224,o[a+1|0]=Il>>>6&63|128,3;if(Il+-65536>>>0<=1048575)return o[a+3|0]=63&Il|128,o[0|a]=Il>>>18|240,o[a+2|0]=Il>>>6&63|128,o[a+1|0]=Il>>>12&63|128,4}else if(57216==(-128&Il))break a;q[2086]=25,a=-1}else a=1;return a}return o[0|a]=Il,1}(a,Pb):0}function Fa(a,Pb,Wb){var fc,gc,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=r[a+4|0];if(q[Pb>>2]=652,Yb=q[a+704>>2],1<=(0|(_b=q[Yb>>2]))){for($b=q[a+720>>2],bc=q[a+1072>>2];Zb=(1<>2]<<2)>>2])+Zb|0,(0|_b)!=(0|(Xb=Xb+1|0)););Xb=Zb<<2}if(q[Pb+4>>2]=w(_b,12),q[Pb+8>>2]=q[Yb>>2]<<2,q[Pb+12>>2]=q[Yb>>2]<<2,q[Pb+16>>2]=q[Yb>>2]<<2,q[Pb+20>>2]=q[Yb>>2]<<2,Zb=q[Yb>>2],q[Pb+28>>2]=Xb,q[Pb+24>>2]=Zb<<2,Zb=q[Yb>>2],q[Pb+40>>2]=Xb,q[Pb+36>>2]=Xb,q[Pb+32>>2]=Zb<<2,q[Pb+44>>2]=q[Yb+4>>2]<<5,q[Pb+48>>2]=q[Yb+4>>2]<<2,q[Pb+52>>2]=q[Yb+4>>2]<<2,q[Pb+56>>2]=q[Yb+4>>2]<<2,q[Pb+60>>2]=q[Yb+4>>2]<<4,q[Pb+64>>2]=q[Yb+4>>2]<<4,1<=((Xb=0)|(_b=q[Yb+8>>2]))){for($b=q[a+780>>2],bc=q[a+1072>>2],dc=q[a+796>>2],Zb=0;ac=(15+(q[(cc=Xb<<2)+dc>>2]<<3)&-16)+ac|0,Zb=(1<>2]<<2)>>2])+Zb|0,(0|_b)!=(0|(Xb=Xb+1|0)););Xb=Zb<<2}if(q[Pb+68>>2]=w(_b,24),q[Pb+72>>2]=q[Yb+8>>2]<<2,q[Pb+76>>2]=q[Yb+8>>2]<<2,Zb=q[Yb+8>>2],q[Pb+84>>2]=ac,q[Pb+80>>2]=Zb<<2,q[Pb+88>>2]=q[Yb+8>>2]<<4,q[Pb+92>>2]=q[Yb+8>>2]<<4,Zb=q[Yb+8>>2],q[Pb+100>>2]=Xb,q[Pb+96>>2]=Zb<<2,Zb=q[Yb+8>>2],q[Pb+140>>2]=Xb,q[Pb+136>>2]=Xb,q[Pb+132>>2]=Xb,q[Pb+128>>2]=Xb,q[Pb+124>>2]=Xb,q[Pb+120>>2]=Xb,q[Pb+116>>2]=Xb,q[Pb+112>>2]=Xb,q[Pb+108>>2]=Xb,q[Pb+104>>2]=Zb<<2,q[Pb+144>>2]=q[Yb+8>>2]<<2,q[Pb+148>>2]=q[Yb+8>>2]<<2,q[Pb+152>>2]=q[Yb+8>>2]<<2,q[Pb+156>>2]=q[Yb+8>>2]<<2,q[Pb+160>>2]=q[Yb+8>>2]<<2,q[Pb+164>>2]=q[Yb+8>>2]<<2,1<=((Xb=ac=0)|(_b=q[Yb+12>>2]))){for($b=q[a+812>>2],bc=q[a+1072>>2],Zb=0;Zb=(1<>2]<<2)>>2])+Zb|0,(0|_b)!=(0|(Xb=Xb+1|0)););Xb=Zb<<2}if(q[Pb+168>>2]=w(_b,12),q[Pb+172>>2]=q[Yb+12>>2]<<2,q[Pb+176>>2]=q[Yb+12>>2]<<2,q[Pb+180>>2]=q[Yb+12>>2]<<2,q[Pb+184>>2]=q[Yb+12>>2]<<2,q[Pb+188>>2]=q[Yb+12>>2]<<2,q[Pb+192>>2]=q[Yb+12>>2]<<2,q[Pb+196>>2]=q[Yb+12>>2]<<2,q[Pb+200>>2]=q[Yb+12>>2]<<2,q[Pb+204>>2]=q[Yb+12>>2]<<4,q[Pb+208>>2]=q[Yb+12>>2]<<4,Zb=q[Yb+12>>2],q[Pb+216>>2]=Xb,q[Pb+212>>2]=Zb<<2,Zb=q[Yb+12>>2],q[Pb+268>>2]=Xb,q[Pb+264>>2]=Xb,q[Pb+260>>2]=Xb,q[Pb+256>>2]=Xb,q[Pb+252>>2]=Xb,q[Pb+248>>2]=Xb,q[Pb+244>>2]=Xb,q[Pb+240>>2]=Xb,q[Pb+236>>2]=Xb,q[Pb+232>>2]=Xb,q[Pb+228>>2]=Xb,q[Pb+224>>2]=Xb,q[Pb+220>>2]=Zb<<2,q[Pb+272>>2]=q[Yb+12>>2]<<2,q[Pb+276>>2]=q[Yb+12>>2]<<2,q[Pb+280>>2]=q[Yb+12>>2]<<2,q[Pb+284>>2]=q[Yb+12>>2]<<2,q[Pb+288>>2]=q[Yb+12>>2]<<2,q[Pb+292>>2]=q[Yb+12>>2]<<2,1<=((Xb=0)|(Zb=q[Yb+16>>2]))){for($b=q[a+852>>2],bc=q[a+1072>>2],dc=q[a+892>>2],_b=0;ac=(15+(q[(cc=Xb<<2)+dc>>2]<<3)&-16)+ac|0,_b=(1<>2]<<2)>>2])+_b|0,(0|Zb)!=(0|(Xb=Xb+1|0)););Xb=_b<<2}if(q[Pb+296>>2]=w(Zb,20),q[Pb+300>>2]=q[Yb+16>>2]<<2,q[Pb+304>>2]=q[Yb+16>>2],q[Pb+308>>2]=q[Yb+16>>2]<<2,q[Pb+312>>2]=q[Yb+16>>2]<<2,Zb=q[Yb+16>>2],q[Pb+320>>2]=ac,q[Pb+316>>2]=Zb<<2,q[Pb+324>>2]=q[Yb+16>>2]<<2,q[Pb+328>>2]=q[Yb+16>>2]<<4,q[Pb+332>>2]=q[Yb+16>>2]<<4,q[Pb+336>>2]=q[Yb+16>>2]<<2,q[Pb+340>>2]=q[Yb+16>>2]<<2,q[Pb+344>>2]=q[Yb+16>>2]<<2,q[Pb+348>>2]=q[Yb+16>>2]<<4,q[Pb+352>>2]=q[Yb+16>>2]<<4,Zb=q[Yb+16>>2],q[Pb+360>>2]=Xb,q[Pb+356>>2]=Zb<<2,Zb=q[Yb+16>>2],q[Pb+404>>2]=Xb,q[Pb+400>>2]=Xb,q[Pb+396>>2]=Xb,q[Pb+392>>2]=Xb,q[Pb+388>>2]=Xb,q[Pb+384>>2]=Xb,q[Pb+380>>2]=Xb,q[Pb+376>>2]=Xb,q[Pb+372>>2]=Xb,q[Pb+368>>2]=Xb,q[Pb+364>>2]=Zb<<2,q[Pb+408>>2]=q[Yb+16>>2]<<2,q[Pb+412>>2]=q[Yb+16>>2]<<2,q[Pb+416>>2]=q[Yb+16>>2]<<2,q[Pb+420>>2]=q[Yb+16>>2]<<2,q[Pb+424>>2]=q[Yb+16>>2]<<2,q[Pb+428>>2]=q[Yb+16>>2]<<2,$b=q[a+704>>2],q[Pb+432>>2]=w(q[$b+20>>2],52),q[Pb+436>>2]=ec>>>(Xb=_b=0)<=3?q[$b+20>>2]<<2:0,q[Pb+440>>2]=q[$b+20>>2]<<2,q[Pb+444>>2]=w(q[$b+52>>2],28),1<=(0|(Yb=q[$b+48>>2]))){for(Zb=q[a+1072>>2],ac=0;ac=(bc=q[Zb+(Xb<<2)>>2])+ac|0,_b=(1<>2]=Xb,q[Pb+456>>2]=Xb,q[Pb+452>>2]=_b,q[Pb+448>>2]=w(Yb,36),q[Pb+500>>2]=w(q[$b+72>>2],28),1<=((ac=Xb=Zb=0)|(bc=q[$b+72>>2]))){for(dc=q[a+1224>>2],cc=q[a+1220>>2],gc=q[a+1212>>2],_b=0;_b=(0|(fc=q[(Yb=ac<<2)+cc>>2]-q[Yb+dc>>2]|0))<(0|_b)?_b:1+fc|0,Xb=(0|Xb)<(0|(Yb=q[Yb+gc>>2]))?Yb:Xb,(0|bc)!=(0|(ac=ac+1|0)););ac=Xb<<2,Xb=_b<<2}if(Yb=q[$b+76>>2],q[Pb+516>>2]=Xb,q[Pb+512>>2]=ac,q[Pb+508>>2]=Xb,q[Pb+504>>2]=Yb<<4,1<=(0|(Yb=q[$b+80>>2]))){for(Zb=q[a+1248>>2],ac=q[a+1072>>2],_b=Xb=0;_b=(1<>2]<<2)>>2])+_b|0,(0|Yb)!=(0|(Xb=Xb+1|0)););Zb=_b<<2}if(q[Pb+520>>2]=w(Yb,24),q[Pb+524>>2]=q[$b+80>>2]<<2,Yb=q[$b+80>>2],q[Pb+532>>2]=Zb,q[Pb+528>>2]=Yb<<2,Yb=q[$b+80>>2],q[Pb+544>>2]=Zb,q[Pb+540>>2]=Zb,q[Pb+536>>2]=Yb<<2,Yb=Pb,4<=ec>>>0){if(q[Pb+464>>2]=w(q[$b+120>>2],20),q[Pb+468>>2]=w(q[$b+100>>2],28),Zb=Pb,1<=((Xb=ac=0)|(bc=q[$b+104>>2]))){for(a=q[a+1104>>2],_b=0;_b=q[a+(Xb<<2)>>2]+_b|0,(0|bc)!=(0|(Xb=Xb+1|0)););a=_b<<2}else a=0;q[Zb+476>>2]=a,q[Pb+472>>2]=w(bc,48),q[Pb+484>>2]=w(q[$b+108>>2],12),a=q[$b+112>>2],q[Pb+552>>2]=0,q[Pb+492>>2]=w(a,12),a=0}else{if((0|(ac=q[$b+20>>2]))<1)_b=0;else for(bc=q[a+1060>>2],dc=q[a+952>>2],a=q[a+948>>2],Zb=_b=0;;){if(1<=(0|(cc=q[(Xb=Zb<<2)+dc>>2])))for(cc=(Xb=bc+(q[a+Xb>>2]<<2)|0)+(cc<<2)|0;_b=q[Xb>>2]+_b|0,(Xb=Xb+4|0)>>>0>>0;);if((0|ac)==(0|(Zb=Zb+1|0)))break}q[Pb+552>>2]=ac<<2,ac=q[$b+20>>2]<<2,a=_b<<2}for(q[Yb+556>>2]=a,q[Pb+548>>2]=ac,4>>0&&(q[Pb+480>>2]=w(q[$b+128>>2],12),q[Pb+488>>2]=w(q[$b+132>>2],12),q[Pb+496>>2]=w(q[$b+136>>2],12)),Xb=_b=0;Xb=((Yb=q[(a=(_b<<2)+Pb|0)>>2])+15&-16)+(q[a>>2]=Xb)|0,140!=(0|(_b=_b+1|0)););q[Wb>>2]=Xb}function Ga(a,Pb,Wb,hc){a:{if(!(20>>0||9<(Pb=Pb+-9|0)>>>0)){switch(Pb-1|0){default:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=q[Pb>>2];case 0:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,Pb=q[Pb>>2],q[a>>2]=Pb,q[a+4>>2]=Pb>>31;case 1:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=q[Pb>>2],q[a+4>>2]=0;case 3:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,Pb=p[Pb>>1],q[a>>2]=Pb,q[a+4>>2]=Pb>>31;case 4:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=s[Pb>>1],q[a+4>>2]=0;case 5:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,Pb=o[0|Pb],q[a>>2]=Pb,q[a+4>>2]=Pb>>31;case 6:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=r[0|Pb],q[a+4>>2]=0;case 2:case 7:break a;case 8:}n[hc](a,Wb)}return}Pb=q[Wb>>2]+7&-8,q[Wb>>2]=Pb+8,Wb=q[Pb+4>>2],q[a>>2]=q[Pb>>2],q[a+4>>2]=Wb}function Ha(a){var Pb,hc,Wb=0;if(ha(o[q[a>>2]]))for(;Pb=q[a>>2],hc=o[0|Pb],q[a>>2]=Pb+1,Wb=(w(Wb,10)+hc|0)-48|0,ha(o[Pb+1|0]););return Wb}function Ia(a,ic,jc,kc,lc){var oc,mc;q[204+(L=mc=L-208|0)>>2]=jc,ca(160+mc|(jc=0),0,40),q[200+mc>>2]=q[204+mc>>2],(0|ra(0,ic,200+mc|0,80+mc|0,160+mc|0,kc,lc))<0||(jc=0<=q[a+76>>2]?1:jc,jc=q[a>>2],o[a+74|0]<=0&&(q[a>>2]=-33&jc),oc=32&jc,q[a+48>>2]?ra(a,ic,200+mc|0,80+mc|0,160+mc|0,kc,lc):(q[a+48>>2]=80,q[a+16>>2]=80+mc,q[a+28>>2]=mc,q[a+20>>2]=mc,jc=q[a+44>>2],ra(a,ic,200+(q[a+44>>2]=mc)|0,80+mc|0,160+mc|0,kc,lc),jc&&(n[q[a+36>>2]](a,0,0),q[a+48>>2]=0,q[a+44>>2]=jc,q[a+28>>2]=0,q[a+16>>2]=0,q[a+20>>2]=0)),q[a>>2]=q[a>>2]|oc),L=208+mc|0}function Ka(a,ic,pc){var rc,qc;$(8+(L=qc=L-160|0)|0,3192,144),q[52+qc>>2]=a,q[28+qc>>2]=a,q[56+qc>>2]=rc=(rc=-2-a|0)>>>0<256?rc:256,q[36+qc>>2]=a=a+rc|0,q[24+qc>>2]=a,Ia(8+qc|0,ic,pc,11,12),rc&&(a=q[28+qc>>2],o[a-((0|a)==q[24+qc>>2])|0]=0),L=160+qc|0}function La(a,ic){var sc,tc,pc=0,pc=0!=(0|ic);a:{b:{c:{d:if(!(!ic|!(3&a)))for(;;){if(!r[0|a])break c;if(a=a+1|0,pc=0!=(0|(ic=ic+-1|0)),!ic)break d;if(!(3&a))break}if(!pc)break b}if(!r[0|a])break a;e:{if(4<=ic>>>0){for(pc=(pc=ic+-4|0)-(sc=-4&pc)|0,sc=4+(a+sc|0)|0;;){if((-1^(tc=q[a>>2]))&tc+-16843009&-2139062144)break e;if(a=a+4|0,!(3<(ic=ic+-4|0)>>>0))break}ic=pc,a=sc}if(!ic)break b}for(;;){if(!r[0|a])break a;if(a=a+1|0,!(ic=ic+-1|0))break}}return 0}return a}function Ma(a){var uc,ic=0;if(!a)return 32;if(!(1&a))for(;ic=ic+1|0,uc=2&a,a>>>=1,!uc;);return ic}function Na(a,vc){var zc,Ac,Bc,yc,wc=0,xc=0,xc=4;L=yc=L-256|0;a:if(!((0|vc)<2))for(wc=q[(Bc=(vc<<2)+a|0)>>2]=yc;;){for($(wc,q[a>>2],zc=xc>>>0<256?xc:256),wc=0;$(q[(Ac=(wc<<2)+a|0)>>2],q[((wc=wc+1|0)<<2)+a>>2],zc),q[Ac>>2]=q[Ac>>2]+zc,(0|vc)!=(0|wc););if(!(xc=xc-zc|0))break a;wc=q[Bc>>2]}L=256+yc|0}function Oa(a){return Ma(q[a>>2]+-1|0)||((a=Ma(q[a+4>>2]))?a+32|0:0)}function Zc(a,$o){$o|=0,b[0]=a|=0,b[1]=$o}function ad(a,$o,ap){return function(a,$o,ap){var ep,cp,bp,dp,fp=w(cp=ap>>>16,bp=a>>>16);return a=(65535&(bp=((ep=w(dp=65535&ap,a&=65535))>>>16)+w(bp,dp)|0))+w(a,cp)|0,M=((fp+w($o,ap)|0)+(bp>>>16)|0)+(a>>>16)|0,65535&ep|a<<16}(a,$o,ap)}function bd(a,$o,ap){return function(a,$o,ap){var np,mp,gp=0,hp=0,ip=0,jp=0,kp=0,lp=0,op=0;a:{b:{c:{d:{e:{if(!(hp=$o))return Zc(($o=a)-w(a=(a>>>0)/(ap>>>0)|0,ap)|0,0),M=0,a;if(gp=ap){if(!((jp=gp+-1|0)&gp))break e;kp=0-(jp=(z(gp)+33|0)-z(hp)|0)|0;break c}if(!a)return Zc(0,hp-w(a=(hp>>>0)/0|0,0)|0),M=0,a;if((gp=32-z(hp)|0)>>>0<31)break d;break b}if(Zc(a&jp,0),1==(0|gp))break a;return ap=31&(gp=gp?31-z(gp+-1^gp)|0:32),a=32<=(63&gp)>>>0?(hp=0,$o>>>ap):(hp=$o>>>ap,((1<>>ap),M=hp,a}jp=gp+1|0,kp=63-gp|0}if(gp=$o,ip=31&(hp=63&jp),ip=32<=hp>>>0?(hp=0,gp>>>ip):(hp=gp>>>ip,((1<>>ip),gp=31&(kp&=63),32<=kp>>>0?($o=a<>>32-gp|$o<>>0<4294967295&&(gp=0);ip=(mp=lp=ip<<1|$o>>>31)-(np=ap&(lp=gp-((hp=hp<<1|ip>>>31)+(kp>>>0>>0)|0)>>31))|0,hp=hp-(mp>>>0>>0)|0,$o=$o<<1|a>>>31,a=op|a<<1,op=lp&=1,jp=jp+-1|0;);return Zc(ip,hp),M=$o<<1|a>>>31,lp|a<<1}Zc(a,$o),$o=a=0}return M=$o,a}(a,$o,ap)}function dd(a){var pp;return(-1>>>(pp=31&a)&-2)<>>a}function N(){return buffer.byteLength/65536|0}}(H,I,J)}}l=null,b.wasmBinary&&(F=b.wasmBinary);var WebAssembly={},F=[];"object"!=typeof WebAssembly&&E("no native wasm support detected");var I,J=new function(a){var c=Array(16);return c.grow=function(){17<=c.length&&B("Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH."),c.push(null)},c.set=function(a,e){c[a]=e},c.get=function(a){return c[a]},c},K=!1;function assert(a,c){a||B("Assertion failed: "+c)}var buffer,M,L,N,ha="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function ia(a,c,d){var e=c+d;for(d=c;a[d]&&!(e<=d);)++d;if(16>10,56320|1023&f)))):e+=String.fromCharCode(f)}return e}function ja(a,c){return a?ia(L,a,c):""}function ka(a){return 0>>16)*e+d*(c>>>16)<<16)|0}),Math.fround||(ra=new Float32Array(1),Math.fround=function(a){return ra[0]=a,ra[0]}),Math.clz32||(Math.clz32=function(a){var c=32,d=a>>16;return d&&(c-=16,a=d),(d=a>>8)&&(c-=8,a=d),(d=a>>4)&&(c-=4,a=d),(d=a>>2)&&(c-=2,a=d),a>>1?c-2:c-a}),Math.trunc||(Math.trunc=function(a){return a<0?Math.ceil(a):Math.floor(a)}),0),Q=null,U=null;function B(a){throw b.onAbort&&b.onAbort(a),D(a),E(a),K=!0,"abort("+a+"). Build with -s ASSERTIONS=1 for more info."}b.preloadedImages={},b.preloadedAudios={};var V="data:application/octet-stream;base64,";function W(a){return String.prototype.startsWith?a.startsWith(V):0===a.indexOf(V)}var X="_em_module.wasm";function ta(){try{if(F)return new Uint8Array(F);var a=z(X);if(a)return a;if(w)return w(X);throw"both async and sync fetching of the wasm failed"}catch(c){B(c)}}W(X)||(t=X,X=b.locateFile?b.locateFile(t,u):u+t),na.push({ea:function(){va()}});var wa=[null,[],[]],xa=!1;function C(a){for(var c=[],d=0;d>4,f=(15&f)<<4|g>>2,h=(3&g)<<6|m}while(c+=String.fromCharCode(e),64!==g&&(c+=String.fromCharCode(f)),64!==m&&(c+=String.fromCharCode(h)),d>16),la(I.buffer);var d=1;break a}catch(e){}d=void 0}return!!d},c:function(a,c,d,e){try{for(var f=0,g=0;g>2],h=N[c+(8*g+4)>>2],A=0;A>2]=f,0}catch(T){return"undefined"!=typeof FS&&T instanceof FS.fa||B(T),T.ga}},memory:I,table:J},u=function(){function a(a){b.asm=a.exports,P--,b.monitorRunDependencies&&b.monitorRunDependencies(P),0==P&&(null!==Q&&(clearInterval(Q),Q=null),U)&&(a=U,U=null,a())}function c(c){a(c.instance)}function d(a){(F||!p&&!q||"function"!=typeof fetch?new Promise(function(a){a(ta())}):fetch(X,{credentials:"same-origin"}).then(function(a){if(a.ok)return a.arrayBuffer();throw"failed to load wasm binary file at '"+X+"'"}).catch(ta)).then(function(){return{then:function(a){a({instance:new da})}}}).then(a,function(a){E("failed to asynchronously prepare wasm: "+a),B(a)})}var e={env:H,wasi_unstable:H};if(P++,b.monitorRunDependencies&&b.monitorRunDependencies(P),b.instantiateWasm)try{return b.instantiateWasm(e,a)}catch(f){return E("Module.instantiateWasm callback failed with error: "+f),!1}return F||"function"!=typeof WebAssembly.instantiateStreaming||W(X)||"function"!=typeof fetch?d(c):fetch(X,{credentials:"same-origin"}).then(function(a){return WebAssembly.instantiateStreaming(a,e).then(c,function(a){E("wasm streaming compile failed: "+a),E("falling back to ArrayBuffer instantiation"),d(c)})}),{}}(),va=(b.asm=u,b.___wasm_call_ctors=function(){return b.asm.d.apply(null,arguments)}),Aa=(b._csmGetVersion=function(){return b.asm.e.apply(null,arguments)},b._csmGetLatestMocVersion=function(){return b.asm.f.apply(null,arguments)},b._csmGetMocVersion=function(){return b.asm.g.apply(null,arguments)},b._csmHasMocConsistency=function(){return b.asm.h.apply(null,arguments)},b._csmSetLogFunction=function(){return b.asm.i.apply(null,arguments)},b._csmReviveMocInPlace=function(){return b.asm.j.apply(null,arguments)},b._csmReadCanvasInfo=function(){return b.asm.k.apply(null,arguments)},b._csmGetSizeofModel=function(){return b.asm.l.apply(null,arguments)},b._csmInitializeModelInPlace=function(){return b.asm.m.apply(null,arguments)},b._csmUpdateModel=function(){return b.asm.n.apply(null,arguments)},b._csmGetParameterCount=function(){return b.asm.o.apply(null,arguments)},b._csmGetParameterIds=function(){return b.asm.p.apply(null,arguments)},b._csmGetParameterTypes=function(){return b.asm.q.apply(null,arguments)},b._csmGetParameterMinimumValues=function(){return b.asm.r.apply(null,arguments)},b._csmGetParameterMaximumValues=function(){return b.asm.s.apply(null,arguments)},b._csmGetParameterDefaultValues=function(){return b.asm.t.apply(null,arguments)},b._csmGetParameterValues=function(){return b.asm.u.apply(null,arguments)},b._csmGetPartCount=function(){return b.asm.v.apply(null,arguments)},b._csmGetPartIds=function(){return b.asm.w.apply(null,arguments)},b._csmGetPartOpacities=function(){return b.asm.x.apply(null,arguments)},b._csmGetPartParentPartIndices=function(){return b.asm.y.apply(null,arguments)},b._csmGetDrawableCount=function(){return b.asm.z.apply(null,arguments)},b._csmGetDrawableIds=function(){return b.asm.A.apply(null,arguments)},b._csmGetDrawableConstantFlags=function(){return b.asm.B.apply(null,arguments)},b._csmGetDrawableDynamicFlags=function(){return b.asm.C.apply(null,arguments)},b._csmGetDrawableTextureIndices=function(){return b.asm.D.apply(null,arguments)},b._csmGetDrawableDrawOrders=function(){return b.asm.E.apply(null,arguments)},b._csmGetDrawableRenderOrders=function(){return b.asm.F.apply(null,arguments)},b._csmGetDrawableOpacities=function(){return b.asm.G.apply(null,arguments)},b._csmGetDrawableMaskCounts=function(){return b.asm.H.apply(null,arguments)},b._csmGetDrawableMasks=function(){return b.asm.I.apply(null,arguments)},b._csmGetDrawableVertexCounts=function(){return b.asm.J.apply(null,arguments)},b._csmGetDrawableVertexPositions=function(){return b.asm.K.apply(null,arguments)},b._csmGetDrawableVertexUvs=function(){return b.asm.L.apply(null,arguments)},b._csmGetDrawableIndexCounts=function(){return b.asm.M.apply(null,arguments)},b._csmGetDrawableIndices=function(){return b.asm.N.apply(null,arguments)},b._csmGetDrawableMultiplyColors=function(){return b.asm.O.apply(null,arguments)},b._csmGetDrawableScreenColors=function(){return b.asm.P.apply(null,arguments)},b._csmGetDrawableParentPartIndices=function(){return b.asm.Q.apply(null,arguments)},b._csmResetDrawableDynamicFlags=function(){return b.asm.R.apply(null,arguments)},b._csmGetParameterKeyCounts=function(){return b.asm.S.apply(null,arguments)},b._csmGetParameterKeyValues=function(){return b.asm.T.apply(null,arguments)},b._csmMallocMoc=function(){return b.asm.U.apply(null,arguments)},b._csmMallocModelAndInitialize=function(){return b.asm.V.apply(null,arguments)},b._csmMalloc=function(){return b.asm.W.apply(null,arguments)},b._csmFree=function(){return b.asm.X.apply(null,arguments)},b._csmInitializeAmountOfMemory=function(){return b.asm.Y.apply(null,arguments)},b.stackSave=function(){return b.asm.Z.apply(null,arguments)}),Ba=b.stackAlloc=function(){return b.asm._.apply(null,arguments)},Ca=b.stackRestore=function(){return b.asm.$.apply(null,arguments)},ca=b.__growWasmMemory=function(){return b.asm.aa.apply(null,arguments)};function Z(){function a(){if(!Y&&(Y=!0,!K)){if(O(na),O(oa),b.onRuntimeInitialized&&b.onRuntimeInitialized(),b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var a=b.postRun.shift();pa.unshift(a)}O(pa)}}if(!(0>6}else{if(k<=65535){if(d<=e+2)break;f[e++]=224|k>>12}else{if(d<=e+3)break;f[e++]=240|k>>18,f[e++]=128|k>>12&63}f[e++]=128|k>>6&63}f[e++]=128|63&k}}f[e]=0}}return c},array:function(a){var c=Ba(a.length);return M.set(a,c),c}},g=function(a){var c=b["_"+a];return assert(c,"Cannot call unknown function "+a+", make sure it is exported"),c}(a),m=[];if(a=0,e)for(var h=0;h + * デフォルト値の仕様は以下のマニュアルに基づく
+ * https://docs.live2d.com/cubism-editor-manual/standard-parametor-list/ + */ +export declare const CubismDefaultParameterId: Readonly>; +export declare namespace Live2DCubismFramework { + const HitAreaBody: string; + const HitAreaHead: string; + const HitAreaPrefix: string; + const ParamAngleX: string; + const ParamAngleY: string; + const ParamAngleZ: string; + const ParamArmLA: string; + const ParamArmLB: string; + const ParamArmRA: string; + const ParamArmRB: string; + const ParamBaseX: string; + const ParamBaseY: string; + const ParamBodyAngleX: string; + const ParamBodyAngleY: string; + const ParamBodyAngleZ: string; + const ParamBreath: string; + const ParamBrowLAngle: string; + const ParamBrowLForm: string; + const ParamBrowLX: string; + const ParamBrowLY: string; + const ParamBrowRAngle: string; + const ParamBrowRForm: string; + const ParamBrowRX: string; + const ParamBrowRY: string; + const ParamBustX: string; + const ParamBustY: string; + const ParamCheek: string; + const ParamEyeBallForm: string; + const ParamEyeBallX: string; + const ParamEyeBallY: string; + const ParamEyeLOpen: string; + const ParamEyeLSmile: string; + const ParamEyeROpen: string; + const ParamEyeRSmile: string; + const ParamHairBack: string; + const ParamHairFluffy: string; + const ParamHairFront: string; + const ParamHairSide: string; + const ParamHandL: string; + const ParamHandR: string; + const ParamMouthForm: string; + const ParamMouthOpenY: string; + const ParamNONE: string; + const ParamShoulderY: string; + const PartsArmLPrefix: string; + const PartsArmPrefix: string; + const PartsArmRPrefix: string; + const PartsIdCore: string; +} +//# sourceMappingURL=cubismdefaultparameterid.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/cubismdefaultparameterid.d.ts.map b/live2demo/Framework/cubismdefaultparameterid.d.ts.map new file mode 100644 index 0000000..90d0fd3 --- /dev/null +++ b/live2demo/Framework/cubismdefaultparameterid.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismdefaultparameterid.d.ts","sourceRoot":"","sources":["../src/cubismdefaultparameterid.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,kCAmDnC,CAAC;AAKH,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,aAAa,QAA2C,CAAC;IAC/D,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,eAAe,QAA6C,CAAC;IACnE,MAAM,eAAe,QAA6C,CAAC;IACnE,MAAM,eAAe,QAA6C,CAAC;IACnE,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,eAAe,QAA6C,CAAC;IACnE,MAAM,cAAc,QAA4C,CAAC;IACjE,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,eAAe,QAA6C,CAAC;IACnE,MAAM,cAAc,QAA4C,CAAC;IACjE,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,WAAW,QAAyC,CAAC;IAC3D,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,gBAAgB,QAA8C,CAAC;IACrE,MAAM,aAAa,QAA2C,CAAC;IAC/D,MAAM,aAAa,QAA2C,CAAC;IAC/D,MAAM,aAAa,QAA2C,CAAC;IAC/D,MAAM,cAAc,QAA4C,CAAC;IACjE,MAAM,aAAa,QAA2C,CAAC;IAC/D,MAAM,cAAc,QAA4C,CAAC;IACjE,MAAM,aAAa,QAA2C,CAAC;IAC/D,MAAM,eAAe,QAA6C,CAAC;IACnE,MAAM,cAAc,QAA4C,CAAC;IACjE,MAAM,aAAa,QAA2C,CAAC;IAC/D,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,UAAU,QAAwC,CAAC;IACzD,MAAM,cAAc,QAA4C,CAAC;IACjE,MAAM,eAAe,QAA6C,CAAC;IACnE,MAAM,SAAS,QAAuC,CAAC;IACvD,MAAM,cAAc,QAA4C,CAAC;IACjE,MAAM,eAAe,QAA6C,CAAC;IACnE,MAAM,cAAc,QAA4C,CAAC;IACjE,MAAM,eAAe,QAA6C,CAAC;IACnE,MAAM,WAAW,QAAyC,CAAC;CACnE"} \ No newline at end of file diff --git a/live2demo/Framework/cubismdefaultparameterid.js b/live2demo/Framework/cubismdefaultparameterid.js new file mode 100644 index 0000000..0478f1f --- /dev/null +++ b/live2demo/Framework/cubismdefaultparameterid.js @@ -0,0 +1,144 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismDefaultParameterId = void 0; +/** + * @brief パラメータIDのデフォルト値を保持する定数
+ * デフォルト値の仕様は以下のマニュアルに基づく
+ * https://docs.live2d.com/cubism-editor-manual/standard-parametor-list/ + */ +exports.CubismDefaultParameterId = Object.freeze({ + // パーツID + HitAreaPrefix: 'HitArea', + HitAreaHead: 'Head', + HitAreaBody: 'Body', + PartsIdCore: 'Parts01Core', + PartsArmPrefix: 'Parts01Arm_', + PartsArmLPrefix: 'Parts01ArmL_', + PartsArmRPrefix: 'Parts01ArmR_', + // パラメータID + ParamAngleX: 'ParamAngleX', + ParamAngleY: 'ParamAngleY', + ParamAngleZ: 'ParamAngleZ', + ParamEyeLOpen: 'ParamEyeLOpen', + ParamEyeLSmile: 'ParamEyeLSmile', + ParamEyeROpen: 'ParamEyeROpen', + ParamEyeRSmile: 'ParamEyeRSmile', + ParamEyeBallX: 'ParamEyeBallX', + ParamEyeBallY: 'ParamEyeBallY', + ParamEyeBallForm: 'ParamEyeBallForm', + ParamBrowLY: 'ParamBrowLY', + ParamBrowRY: 'ParamBrowRY', + ParamBrowLX: 'ParamBrowLX', + ParamBrowRX: 'ParamBrowRX', + ParamBrowLAngle: 'ParamBrowLAngle', + ParamBrowRAngle: 'ParamBrowRAngle', + ParamBrowLForm: 'ParamBrowLForm', + ParamBrowRForm: 'ParamBrowRForm', + ParamMouthForm: 'ParamMouthForm', + ParamMouthOpenY: 'ParamMouthOpenY', + ParamCheek: 'ParamCheek', + ParamBodyAngleX: 'ParamBodyAngleX', + ParamBodyAngleY: 'ParamBodyAngleY', + ParamBodyAngleZ: 'ParamBodyAngleZ', + ParamBreath: 'ParamBreath', + ParamArmLA: 'ParamArmLA', + ParamArmRA: 'ParamArmRA', + ParamArmLB: 'ParamArmLB', + ParamArmRB: 'ParamArmRB', + ParamHandL: 'ParamHandL', + ParamHandR: 'ParamHandR', + ParamHairFront: 'ParamHairFront', + ParamHairSide: 'ParamHairSide', + ParamHairBack: 'ParamHairBack', + ParamHairFluffy: 'ParamHairFluffy', + ParamShoulderY: 'ParamShoulderY', + ParamBustX: 'ParamBustX', + ParamBustY: 'ParamBustY', + ParamBaseX: 'ParamBaseX', + ParamBaseY: 'ParamBaseY', + ParamNONE: 'NONE:' +}); +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismdefaultparameterid")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.HitAreaBody = $.CubismDefaultParameterId.HitAreaBody; + Live2DCubismFramework.HitAreaHead = $.CubismDefaultParameterId.HitAreaHead; + Live2DCubismFramework.HitAreaPrefix = $.CubismDefaultParameterId.HitAreaPrefix; + Live2DCubismFramework.ParamAngleX = $.CubismDefaultParameterId.ParamAngleX; + Live2DCubismFramework.ParamAngleY = $.CubismDefaultParameterId.ParamAngleY; + Live2DCubismFramework.ParamAngleZ = $.CubismDefaultParameterId.ParamAngleZ; + Live2DCubismFramework.ParamArmLA = $.CubismDefaultParameterId.ParamArmLA; + Live2DCubismFramework.ParamArmLB = $.CubismDefaultParameterId.ParamArmLB; + Live2DCubismFramework.ParamArmRA = $.CubismDefaultParameterId.ParamArmRA; + Live2DCubismFramework.ParamArmRB = $.CubismDefaultParameterId.ParamArmRB; + Live2DCubismFramework.ParamBaseX = $.CubismDefaultParameterId.ParamBaseX; + Live2DCubismFramework.ParamBaseY = $.CubismDefaultParameterId.ParamBaseY; + Live2DCubismFramework.ParamBodyAngleX = $.CubismDefaultParameterId.ParamBodyAngleX; + Live2DCubismFramework.ParamBodyAngleY = $.CubismDefaultParameterId.ParamBodyAngleY; + Live2DCubismFramework.ParamBodyAngleZ = $.CubismDefaultParameterId.ParamBodyAngleZ; + Live2DCubismFramework.ParamBreath = $.CubismDefaultParameterId.ParamBreath; + Live2DCubismFramework.ParamBrowLAngle = $.CubismDefaultParameterId.ParamBrowLAngle; + Live2DCubismFramework.ParamBrowLForm = $.CubismDefaultParameterId.ParamBrowLForm; + Live2DCubismFramework.ParamBrowLX = $.CubismDefaultParameterId.ParamBrowLX; + Live2DCubismFramework.ParamBrowLY = $.CubismDefaultParameterId.ParamBrowLY; + Live2DCubismFramework.ParamBrowRAngle = $.CubismDefaultParameterId.ParamBrowRAngle; + Live2DCubismFramework.ParamBrowRForm = $.CubismDefaultParameterId.ParamBrowRForm; + Live2DCubismFramework.ParamBrowRX = $.CubismDefaultParameterId.ParamBrowRX; + Live2DCubismFramework.ParamBrowRY = $.CubismDefaultParameterId.ParamBrowRY; + Live2DCubismFramework.ParamBustX = $.CubismDefaultParameterId.ParamBustX; + Live2DCubismFramework.ParamBustY = $.CubismDefaultParameterId.ParamBustY; + Live2DCubismFramework.ParamCheek = $.CubismDefaultParameterId.ParamCheek; + Live2DCubismFramework.ParamEyeBallForm = $.CubismDefaultParameterId.ParamEyeBallForm; + Live2DCubismFramework.ParamEyeBallX = $.CubismDefaultParameterId.ParamEyeBallX; + Live2DCubismFramework.ParamEyeBallY = $.CubismDefaultParameterId.ParamEyeBallY; + Live2DCubismFramework.ParamEyeLOpen = $.CubismDefaultParameterId.ParamEyeLOpen; + Live2DCubismFramework.ParamEyeLSmile = $.CubismDefaultParameterId.ParamEyeLSmile; + Live2DCubismFramework.ParamEyeROpen = $.CubismDefaultParameterId.ParamEyeROpen; + Live2DCubismFramework.ParamEyeRSmile = $.CubismDefaultParameterId.ParamEyeRSmile; + Live2DCubismFramework.ParamHairBack = $.CubismDefaultParameterId.ParamHairBack; + Live2DCubismFramework.ParamHairFluffy = $.CubismDefaultParameterId.ParamHairFluffy; + Live2DCubismFramework.ParamHairFront = $.CubismDefaultParameterId.ParamHairFront; + Live2DCubismFramework.ParamHairSide = $.CubismDefaultParameterId.ParamHairSide; + Live2DCubismFramework.ParamHandL = $.CubismDefaultParameterId.ParamHandL; + Live2DCubismFramework.ParamHandR = $.CubismDefaultParameterId.ParamHandR; + Live2DCubismFramework.ParamMouthForm = $.CubismDefaultParameterId.ParamMouthForm; + Live2DCubismFramework.ParamMouthOpenY = $.CubismDefaultParameterId.ParamMouthOpenY; + Live2DCubismFramework.ParamNONE = $.CubismDefaultParameterId.ParamNONE; + Live2DCubismFramework.ParamShoulderY = $.CubismDefaultParameterId.ParamShoulderY; + Live2DCubismFramework.PartsArmLPrefix = $.CubismDefaultParameterId.PartsArmLPrefix; + Live2DCubismFramework.PartsArmPrefix = $.CubismDefaultParameterId.PartsArmPrefix; + Live2DCubismFramework.PartsArmRPrefix = $.CubismDefaultParameterId.PartsArmRPrefix; + Live2DCubismFramework.PartsIdCore = $.CubismDefaultParameterId.PartsIdCore; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismdefaultparameterid.js.map \ No newline at end of file diff --git a/live2demo/Framework/cubismdefaultparameterid.js.map b/live2demo/Framework/cubismdefaultparameterid.js.map new file mode 100644 index 0000000..910fab0 --- /dev/null +++ b/live2demo/Framework/cubismdefaultparameterid.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismdefaultparameterid.js","sourceRoot":"","sources":["../src/cubismdefaultparameterid.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/cubismframeworkconfig.d.ts b/live2demo/Framework/cubismframeworkconfig.d.ts new file mode 100644 index 0000000..da19d37 --- /dev/null +++ b/live2demo/Framework/cubismframeworkconfig.d.ts @@ -0,0 +1,20 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +export declare const CSM_LOG_LEVEL_VERBOSE = 0; +export declare const CSM_LOG_LEVEL_DEBUG = 1; +export declare const CSM_LOG_LEVEL_INFO = 2; +export declare const CSM_LOG_LEVEL_WARNING = 3; +export declare const CSM_LOG_LEVEL_ERROR = 4; +export declare const CSM_LOG_LEVEL_OFF = 5; +/** + * ログ出力レベル設定。 + * + * 強制的にログ出力レベルを変える時に定義を有効にする。 + * CSM_LOG_LEVEL_VERBOSE ~ CSM_LOG_LEVEL_OFF を選択する。 + */ +export declare const CSM_LOG_LEVEL: number; +//# sourceMappingURL=cubismframeworkconfig.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/cubismframeworkconfig.d.ts.map b/live2demo/Framework/cubismframeworkconfig.d.ts.map new file mode 100644 index 0000000..3b47009 --- /dev/null +++ b/live2demo/Framework/cubismframeworkconfig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismframeworkconfig.d.ts","sourceRoot":"","sources":["../src/cubismframeworkconfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,MAA8B,CAAC"} \ No newline at end of file diff --git a/live2demo/Framework/cubismframeworkconfig.js b/live2demo/Framework/cubismframeworkconfig.js new file mode 100644 index 0000000..39bcd6b --- /dev/null +++ b/live2demo/Framework/cubismframeworkconfig.js @@ -0,0 +1,33 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CSM_LOG_LEVEL = exports.CSM_LOG_LEVEL_OFF = exports.CSM_LOG_LEVEL_ERROR = exports.CSM_LOG_LEVEL_WARNING = exports.CSM_LOG_LEVEL_INFO = exports.CSM_LOG_LEVEL_DEBUG = exports.CSM_LOG_LEVEL_VERBOSE = void 0; +//======================================================== +// ログ出力関数の設定 +//======================================================== +//---------- ログ出力レベル 選択項目 定義 ---------- +// 詳細ログ出力設定 +exports.CSM_LOG_LEVEL_VERBOSE = 0; +// デバッグログ出力設定 +exports.CSM_LOG_LEVEL_DEBUG = 1; +// Infoログ出力設定 +exports.CSM_LOG_LEVEL_INFO = 2; +// 警告ログ出力設定 +exports.CSM_LOG_LEVEL_WARNING = 3; +// エラーログ出力設定 +exports.CSM_LOG_LEVEL_ERROR = 4; +// ログ出力オフ設定 +exports.CSM_LOG_LEVEL_OFF = 5; +/** + * ログ出力レベル設定。 + * + * 強制的にログ出力レベルを変える時に定義を有効にする。 + * CSM_LOG_LEVEL_VERBOSE ~ CSM_LOG_LEVEL_OFF を選択する。 + */ +exports.CSM_LOG_LEVEL = exports.CSM_LOG_LEVEL_VERBOSE; +//# sourceMappingURL=cubismframeworkconfig.js.map \ No newline at end of file diff --git a/live2demo/Framework/cubismframeworkconfig.js.map b/live2demo/Framework/cubismframeworkconfig.js.map new file mode 100644 index 0000000..8d3da2d --- /dev/null +++ b/live2demo/Framework/cubismframeworkconfig.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismframeworkconfig.js","sourceRoot":"","sources":["../src/cubismframeworkconfig.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,0DAA0D;AAC1D,aAAa;AACb,0DAA0D;AAE1D,uCAAuC;AACvC,WAAW;AACE,QAAA,qBAAqB,GAAG,CAAC,CAAC;AACvC,aAAa;AACA,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACrC,aAAa;AACA,QAAA,kBAAkB,GAAG,CAAC,CAAC;AACpC,WAAW;AACE,QAAA,qBAAqB,GAAG,CAAC,CAAC;AACvC,YAAY;AACC,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACrC,WAAW;AACE,QAAA,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;;;GAKG;AACU,QAAA,aAAa,GAAW,6BAAqB,CAAC"} \ No newline at end of file diff --git a/live2demo/Framework/cubismmodelsettingjson.d.ts b/live2demo/Framework/cubismmodelsettingjson.d.ts new file mode 100644 index 0000000..7c2cad5 --- /dev/null +++ b/live2demo/Framework/cubismmodelsettingjson.d.ts @@ -0,0 +1,278 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { ICubismModelSetting } from './icubismmodelsetting'; +import { CubismIdHandle } from './id/cubismid'; +import { csmMap } from './type/csmmap'; +import { CubismJson } from './utils/cubismjson'; +/** + * Model3Jsonパーサー + * + * model3.jsonファイルをパースして値を取得する + */ +export declare class CubismModelSettingJson extends ICubismModelSetting { + /** + * 引数付きコンストラクタ + * + * @param buffer Model3Jsonをバイト配列として読み込んだデータバッファ + * @param size Model3Jsonのデータサイズ + */ + constructor(buffer: ArrayBuffer, size: number); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * CubismJsonオブジェクトを取得する + * + * @return CubismJson + */ + GetJson(): CubismJson; + /** + * Mocファイルの名前を取得する + * @return Mocファイルの名前 + */ + getModelFileName(): string; + /** + * モデルが使用するテクスチャの数を取得する + * テクスチャの数 + */ + getTextureCount(): number; + /** + * テクスチャが配置されたディレクトリの名前を取得する + * @return テクスチャが配置されたディレクトリの名前 + */ + getTextureDirectory(): string; + /** + * モデルが使用するテクスチャの名前を取得する + * @param index 配列のインデックス値 + * @return テクスチャの名前 + */ + getTextureFileName(index: number): string; + /** + * モデルに設定された当たり判定の数を取得する + * @return モデルに設定された当たり判定の数 + */ + getHitAreasCount(): number; + /** + * 当たり判定に設定されたIDを取得する + * + * @param index 配列のindex + * @return 当たり判定に設定されたID + */ + getHitAreaId(index: number): CubismIdHandle; + /** + * 当たり判定に設定された名前を取得する + * @param index 配列のインデックス値 + * @return 当たり判定に設定された名前 + */ + getHitAreaName(index: number): string; + /** + * 物理演算設定ファイルの名前を取得する + * @return 物理演算設定ファイルの名前 + */ + getPhysicsFileName(): string; + /** + * パーツ切り替え設定ファイルの名前を取得する + * @return パーツ切り替え設定ファイルの名前 + */ + getPoseFileName(): string; + /** + * 表情設定ファイルの数を取得する + * @return 表情設定ファイルの数 + */ + getExpressionCount(): number; + /** + * 表情設定ファイルを識別する名前(別名)を取得する + * @param index 配列のインデックス値 + * @return 表情の名前 + */ + getExpressionName(index: number): string; + /** + * 表情設定ファイルの名前を取得する + * @param index 配列のインデックス値 + * @return 表情設定ファイルの名前 + */ + getExpressionFileName(index: number): string; + /** + * モーショングループの数を取得する + * @return モーショングループの数 + */ + getMotionGroupCount(): number; + /** + * モーショングループの名前を取得する + * @param index 配列のインデックス値 + * @return モーショングループの名前 + */ + getMotionGroupName(index: number): string; + /** + * モーショングループに含まれるモーションの数を取得する + * @param groupName モーショングループの名前 + * @return モーショングループの数 + */ + getMotionCount(groupName: string): number; + /** + * グループ名とインデックス値からモーションファイル名を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return モーションファイルの名前 + */ + getMotionFileName(groupName: string, index: number): string; + /** + * モーションに対応するサウンドファイルの名前を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return サウンドファイルの名前 + */ + getMotionSoundFileName(groupName: string, index: number): string; + /** + * モーション開始時のフェードイン処理時間を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return フェードイン処理時間[秒] + */ + getMotionFadeInTimeValue(groupName: string, index: number): number; + /** + * モーション終了時のフェードアウト処理時間を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return フェードアウト処理時間[秒] + */ + getMotionFadeOutTimeValue(groupName: string, index: number): number; + /** + * ユーザーデータのファイル名を取得する + * @return ユーザーデータのファイル名 + */ + getUserDataFile(): string; + /** + * レイアウト情報を取得する + * @param outLayoutMap csmMapクラスのインスタンス + * @return true レイアウト情報が存在する + * @return false レイアウト情報が存在しない + */ + getLayoutMap(outLayoutMap: csmMap): boolean; + /** + * 目パチに関連付けられたパラメータの数を取得する + * @return 目パチに関連付けられたパラメータの数 + */ + getEyeBlinkParameterCount(): number; + /** + * 目パチに関連付けられたパラメータのIDを取得する + * @param index 配列のインデックス値 + * @return パラメータID + */ + getEyeBlinkParameterId(index: number): CubismIdHandle; + /** + * リップシンクに関連付けられたパラメータの数を取得する + * @return リップシンクに関連付けられたパラメータの数 + */ + getLipSyncParameterCount(): number; + /** + * リップシンクに関連付けられたパラメータの数を取得する + * @param index 配列のインデックス値 + * @return パラメータID + */ + getLipSyncParameterId(index: number): CubismIdHandle; + /** + * モデルファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistModelFile; + /** + * テクスチャファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistTextureFiles; + /** + * 当たり判定のキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistHitAreas; + /** + * 物理演算ファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistPhysicsFile; + /** + * ポーズ設定ファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistPoseFile; + /** + * 表情設定ファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistExpressionFile; + /** + * モーショングループのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistMotionGroups; + /** + * 引数で指定したモーショングループのキーが存在するかどうかを確認する + * @param groupName グループ名 + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistMotionGroupName; + /** + * 引数で指定したモーションに対応するサウンドファイルのキーが存在するかどうかを確認する + * @param groupName グループ名 + * @param index 配列のインデックス値 + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistMotionSoundFile; + /** + * 引数で指定したモーションに対応するフェードイン時間のキーが存在するかどうかを確認する + * @param groupName グループ名 + * @param index 配列のインデックス値 + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistMotionFadeIn; + /** + * 引数で指定したモーションに対応するフェードアウト時間のキーが存在するかどうかを確認する + * @param groupName グループ名 + * @param index 配列のインデックス値 + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistMotionFadeOut; + /** + * UserDataのファイル名が存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistUserDataFile; + /** + * 目ぱちに対応付けられたパラメータが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistEyeBlinkParameters; + /** + * リップシンクに対応付けられたパラメータが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + private isExistLipSyncParameters; + private _json; + private _jsonValue; +} +import * as $ from './cubismmodelsettingjson'; +export declare namespace Live2DCubismFramework { + const CubismModelSettingJson: typeof $.CubismModelSettingJson; + type CubismModelSettingJson = $.CubismModelSettingJson; +} +//# sourceMappingURL=cubismmodelsettingjson.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/cubismmodelsettingjson.d.ts.map b/live2demo/Framework/cubismmodelsettingjson.d.ts.map new file mode 100644 index 0000000..3babc13 --- /dev/null +++ b/live2demo/Framework/cubismmodelsettingjson.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodelsettingjson.d.ts","sourceRoot":"","sources":["../src/cubismmodelsettingjson.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/cubismmodelsettingjson.js b/live2demo/Framework/cubismmodelsettingjson.js new file mode 100644 index 0000000..c6fbb8f --- /dev/null +++ b/live2demo/Framework/cubismmodelsettingjson.js @@ -0,0 +1,731 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismModelSettingJson = void 0; +var icubismmodelsetting_1 = require("./icubismmodelsetting"); +var live2dcubismframework_1 = require("./live2dcubismframework"); +var csmvector_1 = require("./type/csmvector"); +var cubismjson_1 = require("./utils/cubismjson"); +/** + * Model3Jsonのキー文字列 + */ +// JSON Keys +var Version = 'Version'; +var FileReferences = 'FileReferences'; +var Groups = 'Groups'; +var Layout = 'Layout'; +var HitAreas = 'HitAreas'; +var Moc = 'Moc'; +var Textures = 'Textures'; +var Physics = 'Physics'; +var Pose = 'Pose'; +var Expressions = 'Expressions'; +var Motions = 'Motions'; +var UserData = 'UserData'; +var Name = 'Name'; +var FilePath = 'File'; +var Id = 'Id'; +var Ids = 'Ids'; +var Target = 'Target'; +// Motions +var Idle = 'Idle'; +var TapBody = 'TapBody'; +var PinchIn = 'PinchIn'; +var PinchOut = 'PinchOut'; +var Shake = 'Shake'; +var FlickHead = 'FlickHead'; +var Parameter = 'Parameter'; +var SoundPath = 'Sound'; +var FadeInTime = 'FadeInTime'; +var FadeOutTime = 'FadeOutTime'; +// Layout +var CenterX = 'CenterX'; +var CenterY = 'CenterY'; +var X = 'X'; +var Y = 'Y'; +var Width = 'Width'; +var Height = 'Height'; +var LipSync = 'LipSync'; +var EyeBlink = 'EyeBlink'; +var InitParameter = 'init_param'; +var InitPartsVisible = 'init_parts_visible'; +var Val = 'val'; +var FrequestNode; +(function (FrequestNode) { + FrequestNode[FrequestNode["FrequestNode_Groups"] = 0] = "FrequestNode_Groups"; + FrequestNode[FrequestNode["FrequestNode_Moc"] = 1] = "FrequestNode_Moc"; + FrequestNode[FrequestNode["FrequestNode_Motions"] = 2] = "FrequestNode_Motions"; + FrequestNode[FrequestNode["FrequestNode_Expressions"] = 3] = "FrequestNode_Expressions"; + FrequestNode[FrequestNode["FrequestNode_Textures"] = 4] = "FrequestNode_Textures"; + FrequestNode[FrequestNode["FrequestNode_Physics"] = 5] = "FrequestNode_Physics"; + FrequestNode[FrequestNode["FrequestNode_Pose"] = 6] = "FrequestNode_Pose"; + FrequestNode[FrequestNode["FrequestNode_HitAreas"] = 7] = "FrequestNode_HitAreas"; // getRoot().getValueByString(HitAreas) +})(FrequestNode || (FrequestNode = {})); +/** + * Model3Jsonパーサー + * + * model3.jsonファイルをパースして値を取得する + */ +var CubismModelSettingJson = /** @class */ (function (_super) { + __extends(CubismModelSettingJson, _super); + /** + * 引数付きコンストラクタ + * + * @param buffer Model3Jsonをバイト配列として読み込んだデータバッファ + * @param size Model3Jsonのデータサイズ + */ + function CubismModelSettingJson(buffer, size) { + var _this = _super.call(this) || this; + _this._json = cubismjson_1.CubismJson.create(buffer, size); + if (_this._json) { + _this._jsonValue = new csmvector_1.csmVector(); + // 順番はenum FrequestNodeと一致させる + _this._jsonValue.pushBack(_this._json.getRoot().getValueByString(Groups)); + _this._jsonValue.pushBack(_this._json + .getRoot() + .getValueByString(FileReferences) + .getValueByString(Moc)); + _this._jsonValue.pushBack(_this._json + .getRoot() + .getValueByString(FileReferences) + .getValueByString(Motions)); + _this._jsonValue.pushBack(_this._json + .getRoot() + .getValueByString(FileReferences) + .getValueByString(Expressions)); + _this._jsonValue.pushBack(_this._json + .getRoot() + .getValueByString(FileReferences) + .getValueByString(Textures)); + _this._jsonValue.pushBack(_this._json + .getRoot() + .getValueByString(FileReferences) + .getValueByString(Physics)); + _this._jsonValue.pushBack(_this._json + .getRoot() + .getValueByString(FileReferences) + .getValueByString(Pose)); + _this._jsonValue.pushBack(_this._json.getRoot().getValueByString(HitAreas)); + } + return _this; + } + /** + * デストラクタ相当の処理 + */ + CubismModelSettingJson.prototype.release = function () { + cubismjson_1.CubismJson.delete(this._json); + this._jsonValue = null; + }; + /** + * CubismJsonオブジェクトを取得する + * + * @return CubismJson + */ + CubismModelSettingJson.prototype.GetJson = function () { + return this._json; + }; + /** + * Mocファイルの名前を取得する + * @return Mocファイルの名前 + */ + CubismModelSettingJson.prototype.getModelFileName = function () { + if (!this.isExistModelFile()) { + return ''; + } + return this._jsonValue.at(FrequestNode.FrequestNode_Moc).getRawString(); + }; + /** + * モデルが使用するテクスチャの数を取得する + * テクスチャの数 + */ + CubismModelSettingJson.prototype.getTextureCount = function () { + if (!this.isExistTextureFiles()) { + return 0; + } + return this._jsonValue.at(FrequestNode.FrequestNode_Textures).getSize(); + }; + /** + * テクスチャが配置されたディレクトリの名前を取得する + * @return テクスチャが配置されたディレクトリの名前 + */ + CubismModelSettingJson.prototype.getTextureDirectory = function () { + var texturePath = this._jsonValue + .at(FrequestNode.FrequestNode_Textures) + .getValueByIndex(0) + .getRawString(); + var pathArray = texturePath.split('/'); + // 最後の要素はテクスチャ名なので不要 + var arrayLength = pathArray.length - 1; + var textureDirectoryStr = ''; + // 分割したパスを結合 + for (var i = 0; i < arrayLength; i++) { + textureDirectoryStr += pathArray[i]; + if (i < arrayLength - 1) { + textureDirectoryStr += '/'; + } + } + return textureDirectoryStr; + }; + /** + * モデルが使用するテクスチャの名前を取得する + * @param index 配列のインデックス値 + * @return テクスチャの名前 + */ + CubismModelSettingJson.prototype.getTextureFileName = function (index) { + return this._jsonValue + .at(FrequestNode.FrequestNode_Textures) + .getValueByIndex(index) + .getRawString(); + }; + /** + * モデルに設定された当たり判定の数を取得する + * @return モデルに設定された当たり判定の数 + */ + CubismModelSettingJson.prototype.getHitAreasCount = function () { + if (!this.isExistHitAreas()) { + return 0; + } + return this._jsonValue.at(FrequestNode.FrequestNode_HitAreas).getSize(); + }; + /** + * 当たり判定に設定されたIDを取得する + * + * @param index 配列のindex + * @return 当たり判定に設定されたID + */ + CubismModelSettingJson.prototype.getHitAreaId = function (index) { + return live2dcubismframework_1.CubismFramework.getIdManager().getId(this._jsonValue + .at(FrequestNode.FrequestNode_HitAreas) + .getValueByIndex(index) + .getValueByString(Id) + .getRawString()); + }; + /** + * 当たり判定に設定された名前を取得する + * @param index 配列のインデックス値 + * @return 当たり判定に設定された名前 + */ + CubismModelSettingJson.prototype.getHitAreaName = function (index) { + return this._jsonValue + .at(FrequestNode.FrequestNode_HitAreas) + .getValueByIndex(index) + .getValueByString(Name) + .getRawString(); + }; + /** + * 物理演算設定ファイルの名前を取得する + * @return 物理演算設定ファイルの名前 + */ + CubismModelSettingJson.prototype.getPhysicsFileName = function () { + if (!this.isExistPhysicsFile()) { + return ''; + } + return this._jsonValue.at(FrequestNode.FrequestNode_Physics).getRawString(); + }; + /** + * パーツ切り替え設定ファイルの名前を取得する + * @return パーツ切り替え設定ファイルの名前 + */ + CubismModelSettingJson.prototype.getPoseFileName = function () { + if (!this.isExistPoseFile()) { + return ''; + } + return this._jsonValue.at(FrequestNode.FrequestNode_Pose).getRawString(); + }; + /** + * 表情設定ファイルの数を取得する + * @return 表情設定ファイルの数 + */ + CubismModelSettingJson.prototype.getExpressionCount = function () { + if (!this.isExistExpressionFile()) { + return 0; + } + return this._jsonValue.at(FrequestNode.FrequestNode_Expressions).getSize(); + }; + /** + * 表情設定ファイルを識別する名前(別名)を取得する + * @param index 配列のインデックス値 + * @return 表情の名前 + */ + CubismModelSettingJson.prototype.getExpressionName = function (index) { + return this._jsonValue + .at(FrequestNode.FrequestNode_Expressions) + .getValueByIndex(index) + .getValueByString(Name) + .getRawString(); + }; + /** + * 表情設定ファイルの名前を取得する + * @param index 配列のインデックス値 + * @return 表情設定ファイルの名前 + */ + CubismModelSettingJson.prototype.getExpressionFileName = function (index) { + return this._jsonValue + .at(FrequestNode.FrequestNode_Expressions) + .getValueByIndex(index) + .getValueByString(FilePath) + .getRawString(); + }; + /** + * モーショングループの数を取得する + * @return モーショングループの数 + */ + CubismModelSettingJson.prototype.getMotionGroupCount = function () { + if (!this.isExistMotionGroups()) { + return 0; + } + return this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getKeys() + .getSize(); + }; + /** + * モーショングループの名前を取得する + * @param index 配列のインデックス値 + * @return モーショングループの名前 + */ + CubismModelSettingJson.prototype.getMotionGroupName = function (index) { + if (!this.isExistMotionGroups()) { + return null; + } + return this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getKeys() + .at(index); + }; + /** + * モーショングループに含まれるモーションの数を取得する + * @param groupName モーショングループの名前 + * @return モーショングループの数 + */ + CubismModelSettingJson.prototype.getMotionCount = function (groupName) { + if (!this.isExistMotionGroupName(groupName)) { + return 0; + } + return this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getValueByString(groupName) + .getSize(); + }; + /** + * グループ名とインデックス値からモーションファイル名を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return モーションファイルの名前 + */ + CubismModelSettingJson.prototype.getMotionFileName = function (groupName, index) { + if (!this.isExistMotionGroupName(groupName)) { + return ''; + } + return this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getValueByString(groupName) + .getValueByIndex(index) + .getValueByString(FilePath) + .getRawString(); + }; + /** + * モーションに対応するサウンドファイルの名前を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return サウンドファイルの名前 + */ + CubismModelSettingJson.prototype.getMotionSoundFileName = function (groupName, index) { + if (!this.isExistMotionSoundFile(groupName, index)) { + return ''; + } + return this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getValueByString(groupName) + .getValueByIndex(index) + .getValueByString(SoundPath) + .getRawString(); + }; + /** + * モーション開始時のフェードイン処理時間を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return フェードイン処理時間[秒] + */ + CubismModelSettingJson.prototype.getMotionFadeInTimeValue = function (groupName, index) { + if (!this.isExistMotionFadeIn(groupName, index)) { + return -1.0; + } + return this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getValueByString(groupName) + .getValueByIndex(index) + .getValueByString(FadeInTime) + .toFloat(); + }; + /** + * モーション終了時のフェードアウト処理時間を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return フェードアウト処理時間[秒] + */ + CubismModelSettingJson.prototype.getMotionFadeOutTimeValue = function (groupName, index) { + if (!this.isExistMotionFadeOut(groupName, index)) { + return -1.0; + } + return this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getValueByString(groupName) + .getValueByIndex(index) + .getValueByString(FadeOutTime) + .toFloat(); + }; + /** + * ユーザーデータのファイル名を取得する + * @return ユーザーデータのファイル名 + */ + CubismModelSettingJson.prototype.getUserDataFile = function () { + if (!this.isExistUserDataFile()) { + return ''; + } + return this._json + .getRoot() + .getValueByString(FileReferences) + .getValueByString(UserData) + .getRawString(); + }; + /** + * レイアウト情報を取得する + * @param outLayoutMap csmMapクラスのインスタンス + * @return true レイアウト情報が存在する + * @return false レイアウト情報が存在しない + */ + CubismModelSettingJson.prototype.getLayoutMap = function (outLayoutMap) { + // 存在しない要素にアクセスするとエラーになるためValueがnullの場合はnullを代入する + var map = this._json + .getRoot() + .getValueByString(Layout) + .getMap(); + if (map == null) { + return false; + } + var ret = false; + for (var ite = map.begin(); ite.notEqual(map.end()); ite.preIncrement()) { + outLayoutMap.setValue(ite.ptr().first, ite.ptr().second.toFloat()); + ret = true; + } + return ret; + }; + /** + * 目パチに関連付けられたパラメータの数を取得する + * @return 目パチに関連付けられたパラメータの数 + */ + CubismModelSettingJson.prototype.getEyeBlinkParameterCount = function () { + if (!this.isExistEyeBlinkParameters()) { + return 0; + } + var num = 0; + for (var i = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); i++) { + var refI = this._jsonValue + .at(FrequestNode.FrequestNode_Groups) + .getValueByIndex(i); + if (refI.isNull() || refI.isError()) { + continue; + } + if (refI.getValueByString(Name).getRawString() == EyeBlink) { + num = refI.getValueByString(Ids).getVector().getSize(); + break; + } + } + return num; + }; + /** + * 目パチに関連付けられたパラメータのIDを取得する + * @param index 配列のインデックス値 + * @return パラメータID + */ + CubismModelSettingJson.prototype.getEyeBlinkParameterId = function (index) { + if (!this.isExistEyeBlinkParameters()) { + return null; + } + for (var i = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); i++) { + var refI = this._jsonValue + .at(FrequestNode.FrequestNode_Groups) + .getValueByIndex(i); + if (refI.isNull() || refI.isError()) { + continue; + } + if (refI.getValueByString(Name).getRawString() == EyeBlink) { + return live2dcubismframework_1.CubismFramework.getIdManager().getId(refI.getValueByString(Ids).getValueByIndex(index).getRawString()); + } + } + return null; + }; + /** + * リップシンクに関連付けられたパラメータの数を取得する + * @return リップシンクに関連付けられたパラメータの数 + */ + CubismModelSettingJson.prototype.getLipSyncParameterCount = function () { + if (!this.isExistLipSyncParameters()) { + return 0; + } + var num = 0; + for (var i = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); i++) { + var refI = this._jsonValue + .at(FrequestNode.FrequestNode_Groups) + .getValueByIndex(i); + if (refI.isNull() || refI.isError()) { + continue; + } + if (refI.getValueByString(Name).getRawString() == LipSync) { + num = refI.getValueByString(Ids).getVector().getSize(); + break; + } + } + return num; + }; + /** + * リップシンクに関連付けられたパラメータの数を取得する + * @param index 配列のインデックス値 + * @return パラメータID + */ + CubismModelSettingJson.prototype.getLipSyncParameterId = function (index) { + if (!this.isExistLipSyncParameters()) { + return null; + } + for (var i = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); i++) { + var refI = this._jsonValue + .at(FrequestNode.FrequestNode_Groups) + .getValueByIndex(i); + if (refI.isNull() || refI.isError()) { + continue; + } + if (refI.getValueByString(Name).getRawString() == LipSync) { + return live2dcubismframework_1.CubismFramework.getIdManager().getId(refI.getValueByString(Ids).getValueByIndex(index).getRawString()); + } + } + return null; + }; + /** + * モデルファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistModelFile = function () { + var node = this._jsonValue.at(FrequestNode.FrequestNode_Moc); + return !node.isNull() && !node.isError(); + }; + /** + * テクスチャファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistTextureFiles = function () { + var node = this._jsonValue.at(FrequestNode.FrequestNode_Textures); + return !node.isNull() && !node.isError(); + }; + /** + * 当たり判定のキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistHitAreas = function () { + var node = this._jsonValue.at(FrequestNode.FrequestNode_HitAreas); + return !node.isNull() && !node.isError(); + }; + /** + * 物理演算ファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistPhysicsFile = function () { + var node = this._jsonValue.at(FrequestNode.FrequestNode_Physics); + return !node.isNull() && !node.isError(); + }; + /** + * ポーズ設定ファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistPoseFile = function () { + var node = this._jsonValue.at(FrequestNode.FrequestNode_Pose); + return !node.isNull() && !node.isError(); + }; + /** + * 表情設定ファイルのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistExpressionFile = function () { + var node = this._jsonValue.at(FrequestNode.FrequestNode_Expressions); + return !node.isNull() && !node.isError(); + }; + /** + * モーショングループのキーが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistMotionGroups = function () { + var node = this._jsonValue.at(FrequestNode.FrequestNode_Motions); + return !node.isNull() && !node.isError(); + }; + /** + * 引数で指定したモーショングループのキーが存在するかどうかを確認する + * @param groupName グループ名 + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistMotionGroupName = function (groupName) { + var node = this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getValueByString(groupName); + return !node.isNull() && !node.isError(); + }; + /** + * 引数で指定したモーションに対応するサウンドファイルのキーが存在するかどうかを確認する + * @param groupName グループ名 + * @param index 配列のインデックス値 + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistMotionSoundFile = function (groupName, index) { + var node = this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getValueByString(groupName) + .getValueByIndex(index) + .getValueByString(SoundPath); + return !node.isNull() && !node.isError(); + }; + /** + * 引数で指定したモーションに対応するフェードイン時間のキーが存在するかどうかを確認する + * @param groupName グループ名 + * @param index 配列のインデックス値 + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistMotionFadeIn = function (groupName, index) { + var node = this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getValueByString(groupName) + .getValueByIndex(index) + .getValueByString(FadeInTime); + return !node.isNull() && !node.isError(); + }; + /** + * 引数で指定したモーションに対応するフェードアウト時間のキーが存在するかどうかを確認する + * @param groupName グループ名 + * @param index 配列のインデックス値 + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistMotionFadeOut = function (groupName, index) { + var node = this._jsonValue + .at(FrequestNode.FrequestNode_Motions) + .getValueByString(groupName) + .getValueByIndex(index) + .getValueByString(FadeOutTime); + return !node.isNull() && !node.isError(); + }; + /** + * UserDataのファイル名が存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistUserDataFile = function () { + var node = this._json + .getRoot() + .getValueByString(FileReferences) + .getValueByString(UserData); + return !node.isNull() && !node.isError(); + }; + /** + * 目ぱちに対応付けられたパラメータが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistEyeBlinkParameters = function () { + if (this._jsonValue.at(FrequestNode.FrequestNode_Groups).isNull() || + this._jsonValue.at(FrequestNode.FrequestNode_Groups).isError()) { + return false; + } + for (var i = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); ++i) { + if (this._jsonValue + .at(FrequestNode.FrequestNode_Groups) + .getValueByIndex(i) + .getValueByString(Name) + .getRawString() == EyeBlink) { + return true; + } + } + return false; + }; + /** + * リップシンクに対応付けられたパラメータが存在するかどうかを確認する + * @return true キーが存在する + * @return false キーが存在しない + */ + CubismModelSettingJson.prototype.isExistLipSyncParameters = function () { + if (this._jsonValue.at(FrequestNode.FrequestNode_Groups).isNull() || + this._jsonValue.at(FrequestNode.FrequestNode_Groups).isError()) { + return false; + } + for (var i = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); ++i) { + if (this._jsonValue + .at(FrequestNode.FrequestNode_Groups) + .getValueByIndex(i) + .getValueByString(Name) + .getRawString() == LipSync) { + return true; + } + } + return false; + }; + return CubismModelSettingJson; +}(icubismmodelsetting_1.ICubismModelSetting)); +exports.CubismModelSettingJson = CubismModelSettingJson; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmodelsettingjson")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismModelSettingJson = $.CubismModelSettingJson; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmodelsettingjson.js.map \ No newline at end of file diff --git a/live2demo/Framework/cubismmodelsettingjson.js.map b/live2demo/Framework/cubismmodelsettingjson.js.map new file mode 100644 index 0000000..9bcc571 --- /dev/null +++ b/live2demo/Framework/cubismmodelsettingjson.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodelsettingjson.js","sourceRoot":"","sources":["../src/cubismmodelsettingjson.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismbreath.d.ts b/live2demo/Framework/effect/cubismbreath.d.ts new file mode 100644 index 0000000..0b05ced --- /dev/null +++ b/live2demo/Framework/effect/cubismbreath.d.ts @@ -0,0 +1,74 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { CubismModel } from '../model/cubismmodel'; +import { csmVector } from '../type/csmvector'; +/** + * 呼吸機能 + * + * 呼吸機能を提供する。 + */ +export declare class CubismBreath { + /** + * インスタンスの作成 + */ + static create(): CubismBreath; + /** + * インスタンスの破棄 + * @param instance 対象のCubismBreath + */ + static delete(instance: CubismBreath): void; + /** + * 呼吸のパラメータの紐づけ + * @param breathParameters 呼吸を紐づけたいパラメータのリスト + */ + setParameters(breathParameters: csmVector): void; + /** + * 呼吸に紐づいているパラメータの取得 + * @return 呼吸に紐づいているパラメータのリスト + */ + getParameters(): csmVector; + /** + * モデルのパラメータの更新 + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + */ + updateParameters(model: CubismModel, deltaTimeSeconds: number): void; + /** + * コンストラクタ + */ + constructor(); + _breathParameters: csmVector; + _currentTime: number; +} +/** + * 呼吸のパラメータ情報 + */ +export declare class BreathParameterData { + /** + * コンストラクタ + * @param parameterId 呼吸をひもづけるパラメータID + * @param offset 呼吸を正弦波としたときの、波のオフセット + * @param peak 呼吸を正弦波としたときの、波の高さ + * @param cycle 呼吸を正弦波としたときの、波の周期 + * @param weight パラメータへの重み + */ + constructor(parameterId?: CubismIdHandle, offset?: number, peak?: number, cycle?: number, weight?: number); + parameterId: CubismIdHandle; + offset: number; + peak: number; + cycle: number; + weight: number; +} +import * as $ from './cubismbreath'; +export declare namespace Live2DCubismFramework { + const BreathParameterData: typeof $.BreathParameterData; + type BreathParameterData = $.BreathParameterData; + const CubismBreath: typeof $.CubismBreath; + type CubismBreath = $.CubismBreath; +} +//# sourceMappingURL=cubismbreath.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismbreath.d.ts.map b/live2demo/Framework/effect/cubismbreath.d.ts.map new file mode 100644 index 0000000..48cbf1d --- /dev/null +++ b/live2demo/Framework/effect/cubismbreath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismbreath.d.ts","sourceRoot":"","sources":["../../src/effect/cubismbreath.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;;;GAIG;AACH,qBAAa,YAAY;IACvB;;OAEG;WACW,MAAM,IAAI,YAAY;IAIpC;;;OAGG;WACW,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMlD;;;OAGG;IACI,aAAa,CAAC,gBAAgB,EAAE,SAAS,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAI5E;;;OAGG;IACI,aAAa,IAAI,SAAS,CAAC,mBAAmB,CAAC;IAItD;;;;OAIG;IACI,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAgB3E;;OAEG;;IAKH,iBAAiB,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAClD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;OAOG;gBAED,WAAW,CAAC,EAAE,cAAc,EAC5B,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM;IASjB,WAAW,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,mBAAmB,8BAAwB,CAAC;IACzD,KAAY,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;IACjD,MAAM,YAAY,uBAAiB,CAAC;IAC3C,KAAY,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;CAC3C"} \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismbreath.js b/live2demo/Framework/effect/cubismbreath.js new file mode 100644 index 0000000..c5eb9b1 --- /dev/null +++ b/live2demo/Framework/effect/cubismbreath.js @@ -0,0 +1,120 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.BreathParameterData = exports.CubismBreath = void 0; +/** + * 呼吸機能 + * + * 呼吸機能を提供する。 + */ +var CubismBreath = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismBreath() { + this._currentTime = 0.0; + } + /** + * インスタンスの作成 + */ + CubismBreath.create = function () { + return new CubismBreath(); + }; + /** + * インスタンスの破棄 + * @param instance 対象のCubismBreath + */ + CubismBreath.delete = function (instance) { + if (instance != null) { + instance = null; + } + }; + /** + * 呼吸のパラメータの紐づけ + * @param breathParameters 呼吸を紐づけたいパラメータのリスト + */ + CubismBreath.prototype.setParameters = function (breathParameters) { + this._breathParameters = breathParameters; + }; + /** + * 呼吸に紐づいているパラメータの取得 + * @return 呼吸に紐づいているパラメータのリスト + */ + CubismBreath.prototype.getParameters = function () { + return this._breathParameters; + }; + /** + * モデルのパラメータの更新 + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + */ + CubismBreath.prototype.updateParameters = function (model, deltaTimeSeconds) { + this._currentTime += deltaTimeSeconds; + var t = this._currentTime * 2.0 * 3.14159; + for (var i = 0; i < this._breathParameters.getSize(); ++i) { + var data = this._breathParameters.at(i); + model.addParameterValueById(data.parameterId, data.offset + data.peak * Math.sin(t / data.cycle), data.weight); + } + }; + return CubismBreath; +}()); +exports.CubismBreath = CubismBreath; +/** + * 呼吸のパラメータ情報 + */ +var BreathParameterData = /** @class */ (function () { + /** + * コンストラクタ + * @param parameterId 呼吸をひもづけるパラメータID + * @param offset 呼吸を正弦波としたときの、波のオフセット + * @param peak 呼吸を正弦波としたときの、波の高さ + * @param cycle 呼吸を正弦波としたときの、波の周期 + * @param weight パラメータへの重み + */ + function BreathParameterData(parameterId, offset, peak, cycle, weight) { + this.parameterId = parameterId == undefined ? null : parameterId; + this.offset = offset == undefined ? 0.0 : offset; + this.peak = peak == undefined ? 0.0 : peak; + this.cycle = cycle == undefined ? 0.0 : cycle; + this.weight = weight == undefined ? 0.0 : weight; + } + return BreathParameterData; +}()); +exports.BreathParameterData = BreathParameterData; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismbreath")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.BreathParameterData = $.BreathParameterData; + Live2DCubismFramework.CubismBreath = $.CubismBreath; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismbreath.js.map \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismbreath.js.map b/live2demo/Framework/effect/cubismbreath.js.map new file mode 100644 index 0000000..945adc6 --- /dev/null +++ b/live2demo/Framework/effect/cubismbreath.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismbreath.js","sourceRoot":"","sources":["../../src/effect/cubismbreath.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAMH;;;;GAIG;AACH;IAuDE;;OAEG;IACH;QACE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,CAAC;IA3DD;;OAEG;IACW,mBAAM,GAApB;QACE,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACW,mBAAM,GAApB,UAAqB,QAAsB;QACzC,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,QAAQ,GAAG,IAAI,CAAC;SACjB;IACH,CAAC;IAED;;;OAGG;IACI,oCAAa,GAApB,UAAqB,gBAAgD;QACnE,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,oCAAa,GAApB;QACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,uCAAgB,GAAvB,UAAwB,KAAkB,EAAE,gBAAwB;QAClE,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC;QAEtC,IAAM,CAAC,GAAW,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,OAAO,CAAC;QAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE;YACzD,IAAM,IAAI,GAAwB,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAE/D,KAAK,CAAC,qBAAqB,CACzB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAClD,IAAI,CAAC,MAAM,CACZ,CAAC;SACH;IACH,CAAC;IAWH,mBAAC;AAAD,CAAC,AAhED,IAgEC;AAhEY,oCAAY;AAkEzB;;GAEG;AACH;IACE;;;;;;;OAOG;IACH,6BACE,WAA4B,EAC5B,MAAe,EACf,IAAa,EACb,KAAc,EACd,MAAe;QAEf,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IAOH,0BAAC;AAAD,CAAC,AA5BD,IA4BC;AA5BY,kDAAmB;AA8BhC,0CAA0C;AAC1C,gDAAoC;AACpC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAKrC;AALD,WAAiB,qBAAqB;IACvB,yCAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;IAE5C,kCAAY,GAAG,CAAC,CAAC,YAAY,CAAC;AAE7C,CAAC,EALgB,qBAAqB,qCAArB,qBAAqB,QAKrC"} \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismeyeblink.d.ts b/live2demo/Framework/effect/cubismeyeblink.d.ts new file mode 100644 index 0000000..0598d11 --- /dev/null +++ b/live2demo/Framework/effect/cubismeyeblink.d.ts @@ -0,0 +1,101 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { ICubismModelSetting } from '../icubismmodelsetting'; +import { CubismIdHandle } from '../id/cubismid'; +import { CubismModel } from '../model/cubismmodel'; +import { csmVector } from '../type/csmvector'; +/** + * 自動まばたき機能 + * + * 自動まばたき機能を提供する。 + */ +export declare class CubismEyeBlink { + /** + * インスタンスを作成する + * @param modelSetting モデルの設定情報 + * @return 作成されたインスタンス + * @note 引数がNULLの場合、パラメータIDが設定されていない空のインスタンスを作成する。 + */ + static create(modelSetting?: ICubismModelSetting): CubismEyeBlink; + /** + * インスタンスの破棄 + * @param eyeBlink 対象のCubismEyeBlink + */ + static delete(eyeBlink: CubismEyeBlink): void; + /** + * まばたきの間隔の設定 + * @param blinkingInterval まばたきの間隔の時間[秒] + */ + setBlinkingInterval(blinkingInterval: number): void; + /** + * まばたきのモーションの詳細設定 + * @param closing まぶたを閉じる動作の所要時間[秒] + * @param closed まぶたを閉じている動作の所要時間[秒] + * @param opening まぶたを開く動作の所要時間[秒] + */ + setBlinkingSetting(closing: number, closed: number, opening: number): void; + /** + * まばたきさせるパラメータIDのリストの設定 + * @param parameterIds パラメータのIDのリスト + */ + setParameterIds(parameterIds: csmVector): void; + /** + * まばたきさせるパラメータIDのリストの取得 + * @return パラメータIDのリスト + */ + getParameterIds(): csmVector; + /** + * モデルのパラメータの更新 + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + */ + updateParameters(model: CubismModel, deltaTimeSeconds: number): void; + /** + * コンストラクタ + * @param modelSetting モデルの設定情報 + */ + constructor(modelSetting: ICubismModelSetting); + /** + * 次の瞬きのタイミングの決定 + * + * @return 次のまばたきを行う時刻[秒] + */ + determinNextBlinkingTiming(): number; + _blinkingState: number; + _parameterIds: csmVector; + _nextBlinkingTime: number; + _stateStartTimeSeconds: number; + _blinkingIntervalSeconds: number; + _closingSeconds: number; + _closedSeconds: number; + _openingSeconds: number; + _userTimeSeconds: number; + /** + * IDで指定された目のパラメータが、0のときに閉じるなら true 、1の時に閉じるなら false 。 + */ + static readonly CloseIfZero: boolean; +} +/** + * まばたきの状態 + * + * まばたきの状態を表す列挙型 + */ +export declare enum EyeState { + EyeState_First = 0, + EyeState_Interval = 1, + EyeState_Closing = 2, + EyeState_Closed = 3, + EyeState_Opening = 4 +} +import * as $ from './cubismeyeblink'; +export declare namespace Live2DCubismFramework { + const CubismEyeBlink: typeof $.CubismEyeBlink; + type CubismEyeBlink = $.CubismEyeBlink; + const EyeState: typeof $.EyeState; + type EyeState = $.EyeState; +} +//# sourceMappingURL=cubismeyeblink.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismeyeblink.d.ts.map b/live2demo/Framework/effect/cubismeyeblink.d.ts.map new file mode 100644 index 0000000..94ea1e2 --- /dev/null +++ b/live2demo/Framework/effect/cubismeyeblink.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismeyeblink.d.ts","sourceRoot":"","sources":["../../src/effect/cubismeyeblink.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;;;GAIG;AACH,qBAAa,cAAc;IACzB;;;;;OAKG;WACW,MAAM,CAClB,YAAY,GAAE,mBAA0B,GACvC,cAAc;IAIjB;;;OAGG;WACW,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAMpD;;;OAGG;IACI,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAI1D;;;;;OAKG;IACI,kBAAkB,CACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI;IAMP;;;OAGG;IACI,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,IAAI;IAIrE;;;OAGG;IACI,eAAe,IAAI,SAAS,CAAC,cAAc,CAAC;IAInD;;;;OAIG;IACI,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IA0E3E;;;OAGG;gBACgB,YAAY,EAAE,mBAAmB;IAoBpD;;;;OAIG;IACI,0BAA0B,IAAI,MAAM;IAO3C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAQ;CAC7C;AAED;;;;GAIG;AACH,oBAAY,QAAQ;IAClB,cAAc,IAAI;IAClB,iBAAiB,IAAA;IACjB,gBAAgB,IAAA;IAChB,eAAe,IAAA;IACf,gBAAgB,IAAA;CACjB;AAGD,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AAEtC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,cAAc,yBAAmB,CAAC;IAC/C,KAAY,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;IACvC,MAAM,QAAQ,mBAAa,CAAC;IACnC,KAAY,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;CACnC"} \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismeyeblink.js b/live2demo/Framework/effect/cubismeyeblink.js new file mode 100644 index 0000000..5d6c17c --- /dev/null +++ b/live2demo/Framework/effect/cubismeyeblink.js @@ -0,0 +1,212 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.EyeState = exports.CubismEyeBlink = void 0; +var csmvector_1 = require("../type/csmvector"); +/** + * 自動まばたき機能 + * + * 自動まばたき機能を提供する。 + */ +var CubismEyeBlink = /** @class */ (function () { + /** + * コンストラクタ + * @param modelSetting モデルの設定情報 + */ + function CubismEyeBlink(modelSetting) { + this._blinkingState = EyeState.EyeState_First; + this._nextBlinkingTime = 0.0; + this._stateStartTimeSeconds = 0.0; + this._blinkingIntervalSeconds = 4.0; + this._closingSeconds = 0.1; + this._closedSeconds = 0.05; + this._openingSeconds = 0.15; + this._userTimeSeconds = 0.0; + this._parameterIds = new csmvector_1.csmVector(); + if (modelSetting == null) { + return; + } + for (var i = 0; i < modelSetting.getEyeBlinkParameterCount(); ++i) { + this._parameterIds.pushBack(modelSetting.getEyeBlinkParameterId(i)); + } + } + /** + * インスタンスを作成する + * @param modelSetting モデルの設定情報 + * @return 作成されたインスタンス + * @note 引数がNULLの場合、パラメータIDが設定されていない空のインスタンスを作成する。 + */ + CubismEyeBlink.create = function (modelSetting) { + if (modelSetting === void 0) { modelSetting = null; } + return new CubismEyeBlink(modelSetting); + }; + /** + * インスタンスの破棄 + * @param eyeBlink 対象のCubismEyeBlink + */ + CubismEyeBlink.delete = function (eyeBlink) { + if (eyeBlink != null) { + eyeBlink = null; + } + }; + /** + * まばたきの間隔の設定 + * @param blinkingInterval まばたきの間隔の時間[秒] + */ + CubismEyeBlink.prototype.setBlinkingInterval = function (blinkingInterval) { + this._blinkingIntervalSeconds = blinkingInterval; + }; + /** + * まばたきのモーションの詳細設定 + * @param closing まぶたを閉じる動作の所要時間[秒] + * @param closed まぶたを閉じている動作の所要時間[秒] + * @param opening まぶたを開く動作の所要時間[秒] + */ + CubismEyeBlink.prototype.setBlinkingSetting = function (closing, closed, opening) { + this._closingSeconds = closing; + this._closedSeconds = closed; + this._openingSeconds = opening; + }; + /** + * まばたきさせるパラメータIDのリストの設定 + * @param parameterIds パラメータのIDのリスト + */ + CubismEyeBlink.prototype.setParameterIds = function (parameterIds) { + this._parameterIds = parameterIds; + }; + /** + * まばたきさせるパラメータIDのリストの取得 + * @return パラメータIDのリスト + */ + CubismEyeBlink.prototype.getParameterIds = function () { + return this._parameterIds; + }; + /** + * モデルのパラメータの更新 + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + */ + CubismEyeBlink.prototype.updateParameters = function (model, deltaTimeSeconds) { + this._userTimeSeconds += deltaTimeSeconds; + var parameterValue; + var t = 0.0; + switch (this._blinkingState) { + case EyeState.EyeState_Closing: + t = + (this._userTimeSeconds - this._stateStartTimeSeconds) / + this._closingSeconds; + if (t >= 1.0) { + t = 1.0; + this._blinkingState = EyeState.EyeState_Closed; + this._stateStartTimeSeconds = this._userTimeSeconds; + } + parameterValue = 1.0 - t; + break; + case EyeState.EyeState_Closed: + t = + (this._userTimeSeconds - this._stateStartTimeSeconds) / + this._closedSeconds; + if (t >= 1.0) { + this._blinkingState = EyeState.EyeState_Opening; + this._stateStartTimeSeconds = this._userTimeSeconds; + } + parameterValue = 0.0; + break; + case EyeState.EyeState_Opening: + t = + (this._userTimeSeconds - this._stateStartTimeSeconds) / + this._openingSeconds; + if (t >= 1.0) { + t = 1.0; + this._blinkingState = EyeState.EyeState_Interval; + this._nextBlinkingTime = this.determinNextBlinkingTiming(); + } + parameterValue = t; + break; + case EyeState.EyeState_Interval: + if (this._nextBlinkingTime < this._userTimeSeconds) { + this._blinkingState = EyeState.EyeState_Closing; + this._stateStartTimeSeconds = this._userTimeSeconds; + } + parameterValue = 1.0; + break; + case EyeState.EyeState_First: + default: + this._blinkingState = EyeState.EyeState_Interval; + this._nextBlinkingTime = this.determinNextBlinkingTiming(); + parameterValue = 1.0; + break; + } + if (!CubismEyeBlink.CloseIfZero) { + parameterValue = -parameterValue; + } + for (var i = 0; i < this._parameterIds.getSize(); ++i) { + model.setParameterValueById(this._parameterIds.at(i), parameterValue); + } + }; + /** + * 次の瞬きのタイミングの決定 + * + * @return 次のまばたきを行う時刻[秒] + */ + CubismEyeBlink.prototype.determinNextBlinkingTiming = function () { + var r = Math.random(); + return (this._userTimeSeconds + r * (2.0 * this._blinkingIntervalSeconds - 1.0)); + }; + /** + * IDで指定された目のパラメータが、0のときに閉じるなら true 、1の時に閉じるなら false 。 + */ + CubismEyeBlink.CloseIfZero = true; + return CubismEyeBlink; +}()); +exports.CubismEyeBlink = CubismEyeBlink; +/** + * まばたきの状態 + * + * まばたきの状態を表す列挙型 + */ +var EyeState; +(function (EyeState) { + EyeState[EyeState["EyeState_First"] = 0] = "EyeState_First"; + EyeState[EyeState["EyeState_Interval"] = 1] = "EyeState_Interval"; + EyeState[EyeState["EyeState_Closing"] = 2] = "EyeState_Closing"; + EyeState[EyeState["EyeState_Closed"] = 3] = "EyeState_Closed"; + EyeState[EyeState["EyeState_Opening"] = 4] = "EyeState_Opening"; // まぶたが開いていく途中の状態 +})(EyeState || (exports.EyeState = EyeState = {})); +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismeyeblink")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismEyeBlink = $.CubismEyeBlink; + Live2DCubismFramework.EyeState = $.EyeState; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismeyeblink.js.map \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismeyeblink.js.map b/live2demo/Framework/effect/cubismeyeblink.js.map new file mode 100644 index 0000000..301dddb --- /dev/null +++ b/live2demo/Framework/effect/cubismeyeblink.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismeyeblink.js","sourceRoot":"","sources":["../../src/effect/cubismeyeblink.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismpose.d.ts b/live2demo/Framework/effect/cubismpose.d.ts new file mode 100644 index 0000000..ae50a16 --- /dev/null +++ b/live2demo/Framework/effect/cubismpose.d.ts @@ -0,0 +1,96 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { CubismModel } from '../model/cubismmodel'; +import { csmVector } from '../type/csmvector'; +/** + * パーツの不透明度の設定 + * + * パーツの不透明度の管理と設定を行う。 + */ +export declare class CubismPose { + /** + * インスタンスの作成 + * @param pose3json pose3.jsonのデータ + * @param size pose3.jsonのデータのサイズ[byte] + * @return 作成されたインスタンス + */ + static create(pose3json: ArrayBuffer, size: number): CubismPose; + /** + * インスタンスを破棄する + * @param pose 対象のCubismPose + */ + static delete(pose: CubismPose): void; + /** + * モデルのパラメータの更新 + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + */ + updateParameters(model: CubismModel, deltaTimeSeconds: number): void; + /** + * 表示を初期化 + * @param model 対象のモデル + * @note 不透明度の初期値が0でないパラメータは、不透明度を1に設定する + */ + reset(model: CubismModel): void; + /** + * パーツの不透明度をコピー + * + * @param model 対象のモデル + */ + copyPartOpacities(model: CubismModel): void; + /** + * パーツのフェード操作を行う。 + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + * @param beginIndex フェード操作を行うパーツグループの先頭インデックス + * @param partGroupCount フェード操作を行うパーツグループの個数 + */ + doFade(model: CubismModel, deltaTimeSeconds: number, beginIndex: number, partGroupCount: number): void; + /** + * コンストラクタ + */ + constructor(); + _partGroups: csmVector; + _partGroupCounts: csmVector; + _fadeTimeSeconds: number; + _lastModel: CubismModel; +} +/** + * パーツにまつわるデータを管理 + */ +export declare class PartData { + /** + * コンストラクタ + */ + constructor(v?: PartData); + /** + * =演算子のオーバーロード + */ + assignment(v: PartData): PartData; + /** + * 初期化 + * @param model 初期化に使用するモデル + */ + initialize(model: CubismModel): void; + /** + * オブジェクトのコピーを生成する + */ + clone(): PartData; + partId: CubismIdHandle; + parameterIndex: number; + partIndex: number; + link: csmVector; +} +import * as $ from './cubismpose'; +export declare namespace Live2DCubismFramework { + const CubismPose: typeof $.CubismPose; + type CubismPose = $.CubismPose; + const PartData: typeof $.PartData; + type PartData = $.PartData; +} +//# sourceMappingURL=cubismpose.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismpose.d.ts.map b/live2demo/Framework/effect/cubismpose.d.ts.map new file mode 100644 index 0000000..ee4fae1 --- /dev/null +++ b/live2demo/Framework/effect/cubismpose.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismpose.d.ts","sourceRoot":"","sources":["../../src/effect/cubismpose.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAY,MAAM,mBAAmB,CAAC;AAYxD;;;;GAIG;AACH,qBAAa,UAAU;IACrB;;;;;OAKG;WACW,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU;IAiEtE;;;OAGG;WACW,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM5C;;;;OAIG;IACI,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IA2B3E;;;;OAIG;IACI,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IA4BtC;;;;OAIG;IACI,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAgClD;;;;;;OAMG;IACI,MAAM,CACX,KAAK,EAAE,WAAW,EAClB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,IAAI;IAqEP;;OAEG;;IAQH,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,gBAAgB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,QAAQ;IACnB;;OAEG;gBACS,CAAC,CAAC,EAAE,QAAQ;IAkBxB;;OAEG;IACI,UAAU,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAcxC;;;OAGG;IACI,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAO3C;;OAEG;IACI,KAAK,IAAI,QAAQ;IAmBxB,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;CAC3B;AAGD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,UAAU,qBAAe,CAAC;IACvC,KAAY,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IAC/B,MAAM,QAAQ,mBAAa,CAAC;IACnC,KAAY,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;CACnC"} \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismpose.js b/live2demo/Framework/effect/cubismpose.js new file mode 100644 index 0000000..18bb9b6 --- /dev/null +++ b/live2demo/Framework/effect/cubismpose.js @@ -0,0 +1,317 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.PartData = exports.CubismPose = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var csmvector_1 = require("../type/csmvector"); +var cubismjson_1 = require("../utils/cubismjson"); +var Epsilon = 0.001; +var DefaultFadeInSeconds = 0.5; +// Pose.jsonのタグ +var FadeIn = 'FadeInTime'; +var Link = 'Link'; +var Groups = 'Groups'; +var Id = 'Id'; +/** + * パーツの不透明度の設定 + * + * パーツの不透明度の管理と設定を行う。 + */ +var CubismPose = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismPose() { + this._fadeTimeSeconds = DefaultFadeInSeconds; + this._lastModel = null; + this._partGroups = new csmvector_1.csmVector(); + this._partGroupCounts = new csmvector_1.csmVector(); + } + /** + * インスタンスの作成 + * @param pose3json pose3.jsonのデータ + * @param size pose3.jsonのデータのサイズ[byte] + * @return 作成されたインスタンス + */ + CubismPose.create = function (pose3json, size) { + var ret = new CubismPose(); + var json = cubismjson_1.CubismJson.create(pose3json, size); + var root = json.getRoot(); + // フェード時間の指定 + if (!root.getValueByString(FadeIn).isNull()) { + ret._fadeTimeSeconds = root + .getValueByString(FadeIn) + .toFloat(DefaultFadeInSeconds); + if (ret._fadeTimeSeconds <= 0.0) { + ret._fadeTimeSeconds = DefaultFadeInSeconds; + } + } + // パーツグループ + var poseListInfo = root.getValueByString(Groups); + var poseCount = poseListInfo.getSize(); + for (var poseIndex = 0; poseIndex < poseCount; ++poseIndex) { + var idListInfo = poseListInfo.getValueByIndex(poseIndex); + var idCount = idListInfo.getSize(); + var groupCount = 0; + for (var groupIndex = 0; groupIndex < idCount; ++groupIndex) { + var partInfo = idListInfo.getValueByIndex(groupIndex); + var partData = new PartData(); + var parameterId = live2dcubismframework_1.CubismFramework.getIdManager().getId(partInfo.getValueByString(Id).getRawString()); + partData.partId = parameterId; + // リンクするパーツの設定 + if (!partInfo.getValueByString(Link).isNull()) { + var linkListInfo = partInfo.getValueByString(Link); + var linkCount = linkListInfo.getSize(); + for (var linkIndex = 0; linkIndex < linkCount; ++linkIndex) { + var linkPart = new PartData(); + var linkId = live2dcubismframework_1.CubismFramework.getIdManager().getId(linkListInfo.getValueByIndex(linkIndex).getString()); + linkPart.partId = linkId; + partData.link.pushBack(linkPart); + } + } + ret._partGroups.pushBack(partData.clone()); + ++groupCount; + } + ret._partGroupCounts.pushBack(groupCount); + } + cubismjson_1.CubismJson.delete(json); + return ret; + }; + /** + * インスタンスを破棄する + * @param pose 対象のCubismPose + */ + CubismPose.delete = function (pose) { + if (pose != null) { + pose = null; + } + }; + /** + * モデルのパラメータの更新 + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + */ + CubismPose.prototype.updateParameters = function (model, deltaTimeSeconds) { + // 前回のモデルと同じでない場合は初期化が必要 + if (model != this._lastModel) { + // パラメータインデックスの初期化 + this.reset(model); + } + this._lastModel = model; + // 設定から時間を変更すると、経過時間がマイナスになる事があるので、経過時間0として対応 + if (deltaTimeSeconds < 0.0) { + deltaTimeSeconds = 0.0; + } + var beginIndex = 0; + for (var i = 0; i < this._partGroupCounts.getSize(); i++) { + var partGroupCount = this._partGroupCounts.at(i); + this.doFade(model, deltaTimeSeconds, beginIndex, partGroupCount); + beginIndex += partGroupCount; + } + this.copyPartOpacities(model); + }; + /** + * 表示を初期化 + * @param model 対象のモデル + * @note 不透明度の初期値が0でないパラメータは、不透明度を1に設定する + */ + CubismPose.prototype.reset = function (model) { + var beginIndex = 0; + for (var i = 0; i < this._partGroupCounts.getSize(); ++i) { + var groupCount = this._partGroupCounts.at(i); + for (var j = beginIndex; j < beginIndex + groupCount; ++j) { + this._partGroups.at(j).initialize(model); + var partsIndex = this._partGroups.at(j).partIndex; + var paramIndex = this._partGroups.at(j).parameterIndex; + if (partsIndex < 0) { + continue; + } + model.setPartOpacityByIndex(partsIndex, j == beginIndex ? 1.0 : 0.0); + model.setParameterValueByIndex(paramIndex, j == beginIndex ? 1.0 : 0.0); + for (var k = 0; k < this._partGroups.at(j).link.getSize(); ++k) { + this._partGroups.at(j).link.at(k).initialize(model); + } + } + beginIndex += groupCount; + } + }; + /** + * パーツの不透明度をコピー + * + * @param model 対象のモデル + */ + CubismPose.prototype.copyPartOpacities = function (model) { + for (var groupIndex = 0; groupIndex < this._partGroups.getSize(); ++groupIndex) { + var partData = this._partGroups.at(groupIndex); + if (partData.link.getSize() == 0) { + continue; // 連動するパラメータはない + } + var partIndex = this._partGroups.at(groupIndex).partIndex; + var opacity = model.getPartOpacityByIndex(partIndex); + for (var linkIndex = 0; linkIndex < partData.link.getSize(); ++linkIndex) { + var linkPart = partData.link.at(linkIndex); + var linkPartIndex = linkPart.partIndex; + if (linkPartIndex < 0) { + continue; + } + model.setPartOpacityByIndex(linkPartIndex, opacity); + } + } + }; + /** + * パーツのフェード操作を行う。 + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + * @param beginIndex フェード操作を行うパーツグループの先頭インデックス + * @param partGroupCount フェード操作を行うパーツグループの個数 + */ + CubismPose.prototype.doFade = function (model, deltaTimeSeconds, beginIndex, partGroupCount) { + var visiblePartIndex = -1; + var newOpacity = 1.0; + var phi = 0.5; + var backOpacityThreshold = 0.15; + // 現在、表示状態になっているパーツを取得 + for (var i = beginIndex; i < beginIndex + partGroupCount; ++i) { + var partIndex = this._partGroups.at(i).partIndex; + var paramIndex = this._partGroups.at(i).parameterIndex; + if (model.getParameterValueByIndex(paramIndex) > Epsilon) { + if (visiblePartIndex >= 0) { + break; + } + visiblePartIndex = i; + newOpacity = model.getPartOpacityByIndex(partIndex); + // 新しい不透明度を計算 + newOpacity += deltaTimeSeconds / this._fadeTimeSeconds; + if (newOpacity > 1.0) { + newOpacity = 1.0; + } + } + } + if (visiblePartIndex < 0) { + visiblePartIndex = 0; + newOpacity = 1.0; + } + // 表示パーツ、非表示パーツの不透明度を設定する + for (var i = beginIndex; i < beginIndex + partGroupCount; ++i) { + var partsIndex = this._partGroups.at(i).partIndex; + // 表示パーツの設定 + if (visiblePartIndex == i) { + model.setPartOpacityByIndex(partsIndex, newOpacity); // 先に設定 + } + // 非表示パーツの設定 + else { + var opacity = model.getPartOpacityByIndex(partsIndex); + var a1 = // 計算によって求められる不透明度 + void 0; // 計算によって求められる不透明度 + if (newOpacity < phi) { + a1 = (newOpacity * (phi - 1)) / phi + 1.0; // (0,1),(phi,phi)を通る直線式 + } + else { + a1 = ((1 - newOpacity) * phi) / (1.0 - phi); // (1,0),(phi,phi)を通る直線式 + } + // 背景の見える割合を制限する場合 + var backOpacity = (1.0 - a1) * (1.0 - newOpacity); + if (backOpacity > backOpacityThreshold) { + a1 = 1.0 - backOpacityThreshold / (1.0 - newOpacity); + } + if (opacity > a1) { + opacity = a1; // 計算の不透明度よりも大きければ(濃ければ)不透明度を上げる + } + model.setPartOpacityByIndex(partsIndex, opacity); + } + } + }; + return CubismPose; +}()); +exports.CubismPose = CubismPose; +/** + * パーツにまつわるデータを管理 + */ +var PartData = /** @class */ (function () { + /** + * コンストラクタ + */ + function PartData(v) { + this.parameterIndex = 0; + this.partIndex = 0; + this.link = new csmvector_1.csmVector(); + if (v != undefined) { + this.partId = v.partId; + for (var ite = v.link.begin(); ite.notEqual(v.link.end()); ite.preIncrement()) { + this.link.pushBack(ite.ptr().clone()); + } + } + } + /** + * =演算子のオーバーロード + */ + PartData.prototype.assignment = function (v) { + this.partId = v.partId; + for (var ite = v.link.begin(); ite.notEqual(v.link.end()); ite.preIncrement()) { + this.link.pushBack(ite.ptr().clone()); + } + return this; + }; + /** + * 初期化 + * @param model 初期化に使用するモデル + */ + PartData.prototype.initialize = function (model) { + this.parameterIndex = model.getParameterIndex(this.partId); + this.partIndex = model.getPartIndex(this.partId); + model.setParameterValueByIndex(this.parameterIndex, 1); + }; + /** + * オブジェクトのコピーを生成する + */ + PartData.prototype.clone = function () { + var clonePartData = new PartData(); + clonePartData.partId = this.partId; + clonePartData.parameterIndex = this.parameterIndex; + clonePartData.partIndex = this.partIndex; + clonePartData.link = new csmvector_1.csmVector(); + for (var ite = this.link.begin(); ite.notEqual(this.link.end()); ite.increment()) { + clonePartData.link.pushBack(ite.ptr().clone()); + } + return clonePartData; + }; + return PartData; +}()); +exports.PartData = PartData; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismpose")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismPose = $.CubismPose; + Live2DCubismFramework.PartData = $.PartData; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismpose.js.map \ No newline at end of file diff --git a/live2demo/Framework/effect/cubismpose.js.map b/live2demo/Framework/effect/cubismpose.js.map new file mode 100644 index 0000000..91dd883 --- /dev/null +++ b/live2demo/Framework/effect/cubismpose.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismpose.js","sourceRoot":"","sources":["../../src/effect/cubismpose.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/icubismallcator.d.ts b/live2demo/Framework/icubismallcator.d.ts new file mode 100644 index 0000000..06c4888 --- /dev/null +++ b/live2demo/Framework/icubismallcator.d.ts @@ -0,0 +1,45 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +/** + * メモリアロケーションを抽象化したクラス + * + * メモリ確保・解放処理をプラットフォーム側で実装して + * フレームワークから呼び出すためのインターフェース + */ +export declare abstract class ICubismAllocator { + /** + * アラインメント制約なしのヒープ・メモリーを確保します + * + * @param size 確保するバイト数 + * @return 成功すると割り当てられたメモリのアドレス。そうでなければ'0'を返す + */ + abstract allocate(size: number): any; + /** + * アラインメント制約なしのヒープ・メモリーを解放します。 + * + * @param memory 解放するメモリのアドレス + */ + abstract deallocate(memory: any): void; + /** + * アラインメント制約有のヒープ・メモリーを確保します。 + * @param size 確保するバイト数 + * @param alignment メモリーブロックのアラインメント幅 + * @return 成功すると割り当てられたメモリのアドレス。そうでなければ'0'を返す + */ + abstract allocateAligned(size: number, alignment: number): any; + /** + * アラインメント制約ありのヒープ・メモリーを解放します。 + * @param alignedMemory 解放するメモリのアドレス + */ + abstract deallocateAligned(alignedMemory: any): void; +} +import * as $ from './icubismallcator'; +export declare namespace Live2DCubismFramework { + const ICubismAllocator: typeof $.ICubismAllocator; + type ICubismAllocator = $.ICubismAllocator; +} +//# sourceMappingURL=icubismallcator.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/icubismallcator.d.ts.map b/live2demo/Framework/icubismallcator.d.ts.map new file mode 100644 index 0000000..3d07040 --- /dev/null +++ b/live2demo/Framework/icubismallcator.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icubismallcator.d.ts","sourceRoot":"","sources":["../src/icubismallcator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,8BAAsB,gBAAgB;IACpC;;;;;OAKG;aACa,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAE3C;;;;OAIG;aACa,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAE7C;;;;;OAKG;aACa,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG;IAErE;;;OAGG;aACa,iBAAiB,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI;CAC5D;AAGD,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAC;AAEvC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,gBAAgB,2BAAqB,CAAC;IACnD,KAAY,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;CACnD"} \ No newline at end of file diff --git a/live2demo/Framework/icubismallcator.js b/live2demo/Framework/icubismallcator.js new file mode 100644 index 0000000..44367b7 --- /dev/null +++ b/live2demo/Framework/icubismallcator.js @@ -0,0 +1,52 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.ICubismAllocator = void 0; +/** + * メモリアロケーションを抽象化したクラス + * + * メモリ確保・解放処理をプラットフォーム側で実装して + * フレームワークから呼び出すためのインターフェース + */ +var ICubismAllocator = /** @class */ (function () { + function ICubismAllocator() { + } + return ICubismAllocator; +}()); +exports.ICubismAllocator = ICubismAllocator; +// Namespace definition for compatibility. +var $ = __importStar(require("./icubismallcator")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.ICubismAllocator = $.ICubismAllocator; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=icubismallcator.js.map \ No newline at end of file diff --git a/live2demo/Framework/icubismallcator.js.map b/live2demo/Framework/icubismallcator.js.map new file mode 100644 index 0000000..90b6d1b --- /dev/null +++ b/live2demo/Framework/icubismallcator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"icubismallcator.js","sourceRoot":"","sources":["../src/icubismallcator.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH;;;;;GAKG;AACH;IAAA;IA6BA,CAAC;IAAD,uBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BqB,4CAAgB;AA+BtC,0CAA0C;AAC1C,mDAAuC;AACvC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAGrC;AAHD,WAAiB,qBAAqB;IACvB,sCAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;AAErD,CAAC,EAHgB,qBAAqB,qCAArB,qBAAqB,QAGrC"} \ No newline at end of file diff --git a/live2demo/Framework/icubismmodelsetting.d.ts b/live2demo/Framework/icubismmodelsetting.d.ts new file mode 100644 index 0000000..8f0d4e2 --- /dev/null +++ b/live2demo/Framework/icubismmodelsetting.d.ts @@ -0,0 +1,166 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from './id/cubismid'; +import { csmMap } from './type/csmmap'; +/** + * モデル設定情報を取り扱う関数を宣言した純粋仮想クラス。 + * + * このクラスを継承することで、モデル設定情報を取り扱うクラスになる。 + */ +export declare abstract class ICubismModelSetting { + /** + * Mocファイルの名前を取得する + * @return Mocファイルの名前 + */ + abstract getModelFileName(): string; + /** + * モデルが使用するテクスチャの数を取得する + * テクスチャの数 + */ + abstract getTextureCount(): number; + /** + * テクスチャが配置されたディレクトリの名前を取得する + * @return テクスチャが配置されたディレクトリの名前 + */ + abstract getTextureDirectory(): string; + /** + * モデルが使用するテクスチャの名前を取得する + * @param index 配列のインデックス値 + * @return テクスチャの名前 + */ + abstract getTextureFileName(index: number): string; + /** + * モデルに設定された当たり判定の数を取得する + * @return モデルに設定された当たり判定の数 + */ + abstract getHitAreasCount(): number; + /** + * 当たり判定に設定されたIDを取得する + * + * @param index 配列のindex + * @return 当たり判定に設定されたID + */ + abstract getHitAreaId(index: number): CubismIdHandle; + /** + * 当たり判定に設定された名前を取得する + * @param index 配列のインデックス値 + * @return 当たり判定に設定された名前 + */ + abstract getHitAreaName(index: number): string; + /** + * 物理演算設定ファイルの名前を取得する + * @return 物理演算設定ファイルの名前 + */ + abstract getPhysicsFileName(): string; + /** + * パーツ切り替え設定ファイルの名前を取得する + * @return パーツ切り替え設定ファイルの名前 + */ + abstract getPoseFileName(): string; + /** + * 表情設定ファイルの数を取得する + * @return 表情設定ファイルの数 + */ + abstract getExpressionCount(): number; + /** + * 表情設定ファイルを識別する名前(別名)を取得する + * @param index 配列のインデックス値 + * @return 表情の名前 + */ + abstract getExpressionName(index: number): string; + /** + * 表情設定ファイルの名前を取得する + * @param index 配列のインデックス値 + * @return 表情設定ファイルの名前 + */ + abstract getExpressionFileName(index: number): string; + /** + * モーショングループの数を取得する + * @return モーショングループの数 + */ + abstract getMotionGroupCount(): number; + /** + * モーショングループの名前を取得する + * @param index 配列のインデックス値 + * @return モーショングループの名前 + */ + abstract getMotionGroupName(index: number): string; + /** + * モーショングループに含まれるモーションの数を取得する + * @param groupName モーショングループの名前 + * @return モーショングループの数 + */ + abstract getMotionCount(groupName: string): number; + /** + * グループ名とインデックス値からモーションファイル名を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return モーションファイルの名前 + */ + abstract getMotionFileName(groupName: string, index: number): string; + /** + * モーションに対応するサウンドファイルの名前を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return サウンドファイルの名前 + */ + abstract getMotionSoundFileName(groupName: string, index: number): string; + /** + * モーション開始時のフェードイン処理時間を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return フェードイン処理時間[秒] + */ + abstract getMotionFadeInTimeValue(groupName: string, index: number): number; + /** + * モーション終了時のフェードアウト処理時間を取得する + * @param groupName モーショングループの名前 + * @param index 配列のインデックス値 + * @return フェードアウト処理時間[秒] + */ + abstract getMotionFadeOutTimeValue(groupName: string, index: number): number; + /** + * ユーザーデータのファイル名を取得する + * @return ユーザーデータのファイル名 + */ + abstract getUserDataFile(): string; + /** + * レイアウト情報を取得する + * @param outLayoutMap csmMapクラスのインスタンス + * @return true レイアウト情報が存在する + * @return false レイアウト情報が存在しない + */ + abstract getLayoutMap(outLayoutMap: csmMap): boolean; + /** + * 目パチに関連付けられたパラメータの数を取得する + * @return 目パチに関連付けられたパラメータの数 + */ + abstract getEyeBlinkParameterCount(): number; + /** + * 目パチに関連付けられたパラメータのIDを取得する + * @param index 配列のインデックス値 + * @return パラメータID + */ + abstract getEyeBlinkParameterId(index: number): CubismIdHandle; + /** + * リップシンクに関連付けられたパラメータの数を取得する + * @return リップシンクに関連付けられたパラメータの数 + */ + abstract getLipSyncParameterCount(): number; + /** + * リップシンクに関連付けられたパラメータの数を取得する + * @param index 配列のインデックス値 + * @return パラメータID + */ + abstract getLipSyncParameterId(index: number): CubismIdHandle; +} +import * as $ from './icubismmodelsetting'; +export declare namespace Live2DCubismFramework { + const ICubismModelSetting: typeof $.ICubismModelSetting; + type ICubismModelSetting = $.ICubismModelSetting; +} +//# sourceMappingURL=icubismmodelsetting.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/icubismmodelsetting.d.ts.map b/live2demo/Framework/icubismmodelsetting.d.ts.map new file mode 100644 index 0000000..9fab7eb --- /dev/null +++ b/live2demo/Framework/icubismmodelsetting.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icubismmodelsetting.d.ts","sourceRoot":"","sources":["../src/icubismmodelsetting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;GAIG;AACH,8BAAsB,mBAAmB;IACvC;;;OAGG;aACa,gBAAgB,IAAI,MAAM;IAE1C;;;OAGG;aACa,eAAe,IAAI,MAAM;IAEzC;;;OAGG;aACa,mBAAmB,IAAI,MAAM;IAE7C;;;;OAIG;aACa,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAEzD;;;OAGG;aACa,gBAAgB,IAAI,MAAM;IAE1C;;;;;OAKG;aACa,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAE3D;;;;OAIG;aACa,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAErD;;;OAGG;aACa,kBAAkB,IAAI,MAAM;IAE5C;;;OAGG;aACa,eAAe,IAAI,MAAM;IAEzC;;;OAGG;aACa,kBAAkB,IAAI,MAAM;IAE5C;;;;OAIG;aACa,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAExD;;;;OAIG;aACa,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAE5D;;;OAGG;aACa,mBAAmB,IAAI,MAAM;IAE7C;;;;OAIG;aACa,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAEzD;;;;OAIG;aACa,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAEzD;;;;;OAKG;aACa,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAE3E;;;;;OAKG;aACa,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM;IAET;;;;;OAKG;aACa,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM;IAET;;;;;OAKG;aACa,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM;IAET;;;OAGG;aACa,eAAe,IAAI,MAAM;IAEzC;;;;;OAKG;aACa,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;IAE3E;;;OAGG;aACa,yBAAyB,IAAI,MAAM;IAEnD;;;;OAIG;aACa,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAErE;;;OAGG;aACa,wBAAwB,IAAI,MAAM;IAElD;;;;OAIG;aACa,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;CACrE;AAGD,OAAO,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAE3C,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,mBAAmB,8BAAwB,CAAC;IACzD,KAAY,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;CACzD"} \ No newline at end of file diff --git a/live2demo/Framework/icubismmodelsetting.js b/live2demo/Framework/icubismmodelsetting.js new file mode 100644 index 0000000..cd1136a --- /dev/null +++ b/live2demo/Framework/icubismmodelsetting.js @@ -0,0 +1,51 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.ICubismModelSetting = void 0; +/** + * モデル設定情報を取り扱う関数を宣言した純粋仮想クラス。 + * + * このクラスを継承することで、モデル設定情報を取り扱うクラスになる。 + */ +var ICubismModelSetting = /** @class */ (function () { + function ICubismModelSetting() { + } + return ICubismModelSetting; +}()); +exports.ICubismModelSetting = ICubismModelSetting; +// Namespace definition for compatibility. +var $ = __importStar(require("./icubismmodelsetting")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.ICubismModelSetting = $.ICubismModelSetting; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=icubismmodelsetting.js.map \ No newline at end of file diff --git a/live2demo/Framework/icubismmodelsetting.js.map b/live2demo/Framework/icubismmodelsetting.js.map new file mode 100644 index 0000000..9028f2b --- /dev/null +++ b/live2demo/Framework/icubismmodelsetting.js.map @@ -0,0 +1 @@ +{"version":3,"file":"icubismmodelsetting.js","sourceRoot":"","sources":["../src/icubismmodelsetting.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAKH;;;;GAIG;AACH;IAAA;IAmLA,CAAC;IAAD,0BAAC;AAAD,CAAC,AAnLD,IAmLC;AAnLqB,kDAAmB;AAqLzC,0CAA0C;AAC1C,uDAA2C;AAC3C,2DAA2D;AAC3D,IAAiB,qBAAqB,CAGrC;AAHD,WAAiB,qBAAqB;IACvB,yCAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;AAE3D,CAAC,EAHgB,qBAAqB,qCAArB,qBAAqB,QAGrC"} \ No newline at end of file diff --git a/live2demo/Framework/id/cubismid.d.ts b/live2demo/Framework/id/cubismid.d.ts new file mode 100644 index 0000000..385468f --- /dev/null +++ b/live2demo/Framework/id/cubismid.d.ts @@ -0,0 +1,57 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { csmString } from '../type/csmstring'; +/** + * パラメータ名・パーツ名・Drawable名を保持 + * + * パラメータ名・パーツ名・Drawable名を保持するクラス。 + * + * @note 指定したID文字列からCubismIdを取得する際はこのクラスの生成メソッドを呼ばず、 + * CubismIdManager().getId(id)を使用してください + */ +export declare class CubismId { + /** + * 内部で使用するCubismIdクラス生成メソッド + * + * @param id ID文字列 + * @returns CubismId + * @note 指定したID文字列からCubismIdを取得する際は + * CubismIdManager().getId(id)を使用してください + */ + static _createIdInternal(id: string | csmString): CubismId; + /** + * ID名を取得する + */ + getString(): csmString; + /** + * idを比較 + * @param c 比較するid + * @return 同じならばtrue,異なっていればfalseを返す + */ + isEqual(c: string | csmString | CubismId): boolean; + /** + * idを比較 + * @param c 比較するid + * @return 同じならばtrue,異なっていればfalseを返す + */ + isNotEqual(c: string | csmString | CubismId): boolean; + /** + * プライベートコンストラクタ + * + * @note ユーザーによる生成は許可しません + */ + private constructor(); + private _id; +} +export declare type CubismIdHandle = CubismId; +import * as $ from './cubismid'; +export declare namespace Live2DCubismFramework { + const CubismId: typeof $.CubismId; + type CubismId = $.CubismId; + type CubismIdHandle = $.CubismIdHandle; +} +//# sourceMappingURL=cubismid.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/id/cubismid.d.ts.map b/live2demo/Framework/id/cubismid.d.ts.map new file mode 100644 index 0000000..78722e2 --- /dev/null +++ b/live2demo/Framework/id/cubismid.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismid.d.ts","sourceRoot":"","sources":["../../src/id/cubismid.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;;;;;;GAOG;AACH,qBAAa,QAAQ;IACnB;;;;;;;OAOG;WACW,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS;IAItD;;OAEG;IACI,SAAS,IAAI,SAAS;IAI7B;;;;OAIG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO;IAWzD;;;;OAIG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO;IAW5D;;;;OAIG;IACH,OAAO;IASP,OAAO,CAAC,GAAG,CAAY;CACxB;AAED,MAAM,CAAC,OAAO,MAAM,cAAc,GAAG,QAAQ,CAAC;AAG9C,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;AAEhC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,QAAQ,mBAAa,CAAC;IACnC,KAAY,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAClC,KAAY,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;CAC/C"} \ No newline at end of file diff --git a/live2demo/Framework/id/cubismid.js b/live2demo/Framework/id/cubismid.js new file mode 100644 index 0000000..9bb1c7c --- /dev/null +++ b/live2demo/Framework/id/cubismid.js @@ -0,0 +1,116 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismId = void 0; +var csmstring_1 = require("../type/csmstring"); +/** + * パラメータ名・パーツ名・Drawable名を保持 + * + * パラメータ名・パーツ名・Drawable名を保持するクラス。 + * + * @note 指定したID文字列からCubismIdを取得する際はこのクラスの生成メソッドを呼ばず、 + * CubismIdManager().getId(id)を使用してください + */ +var CubismId = /** @class */ (function () { + /** + * プライベートコンストラクタ + * + * @note ユーザーによる生成は許可しません + */ + function CubismId(id) { + if (typeof id === 'string') { + this._id = new csmstring_1.csmString(id); + return; + } + this._id = id; + } + /** + * 内部で使用するCubismIdクラス生成メソッド + * + * @param id ID文字列 + * @returns CubismId + * @note 指定したID文字列からCubismIdを取得する際は + * CubismIdManager().getId(id)を使用してください + */ + CubismId._createIdInternal = function (id) { + return new CubismId(id); + }; + /** + * ID名を取得する + */ + CubismId.prototype.getString = function () { + return this._id; + }; + /** + * idを比較 + * @param c 比較するid + * @return 同じならばtrue,異なっていればfalseを返す + */ + CubismId.prototype.isEqual = function (c) { + if (typeof c === 'string') { + return this._id.isEqual(c); + } + else if (c instanceof csmstring_1.csmString) { + return this._id.isEqual(c.s); + } + else if (c instanceof CubismId) { + return this._id.isEqual(c._id.s); + } + return false; + }; + /** + * idを比較 + * @param c 比較するid + * @return 同じならばtrue,異なっていればfalseを返す + */ + CubismId.prototype.isNotEqual = function (c) { + if (typeof c == 'string') { + return !this._id.isEqual(c); + } + else if (c instanceof csmstring_1.csmString) { + return !this._id.isEqual(c.s); + } + else if (c instanceof CubismId) { + return !this._id.isEqual(c._id.s); + } + return false; + }; + return CubismId; +}()); +exports.CubismId = CubismId; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismid")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismId = $.CubismId; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismid.js.map \ No newline at end of file diff --git a/live2demo/Framework/id/cubismid.js.map b/live2demo/Framework/id/cubismid.js.map new file mode 100644 index 0000000..42ded90 --- /dev/null +++ b/live2demo/Framework/id/cubismid.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismid.js","sourceRoot":"","sources":["../../src/id/cubismid.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAA8C;AAE9C;;;;;;;GAOG;AACH;IAoDE;;;;OAIG;IACH,kBAAoB,EAAsB;QACxC,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,qBAAS,CAAC,EAAE,CAAC,CAAC;YAC7B,OAAO;SACR;QAED,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;IA/DD;;;;;;;OAOG;IACW,0BAAiB,GAA/B,UAAgC,EAAsB;QACpD,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,4BAAS,GAAhB;QACE,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,0BAAO,GAAd,UAAe,CAAgC;QAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;YACzB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC5B;aAAM,IAAI,CAAC,YAAY,qBAAS,EAAE;YACjC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9B;aAAM,IAAI,CAAC,YAAY,QAAQ,EAAE;YAChC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,6BAAU,GAAjB,UAAkB,CAAgC;QAChD,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC7B;aAAM,IAAI,CAAC,YAAY,qBAAS,EAAE;YACjC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM,IAAI,CAAC,YAAY,QAAQ,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAiBH,eAAC;AAAD,CAAC,AAnED,IAmEC;AAnEY,4BAAQ;AAuErB,0CAA0C;AAC1C,4CAAgC;AAChC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAIrC;AAJD,WAAiB,qBAAqB;IACvB,8BAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AAGrC,CAAC,EAJgB,qBAAqB,qCAArB,qBAAqB,QAIrC"} \ No newline at end of file diff --git a/live2demo/Framework/id/cubismidmanager.d.ts b/live2demo/Framework/id/cubismidmanager.d.ts new file mode 100644 index 0000000..c7a1e2e --- /dev/null +++ b/live2demo/Framework/id/cubismidmanager.d.ts @@ -0,0 +1,63 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { csmString } from '../type/csmstring'; +import { CubismId } from './cubismid'; +/** + * ID名の管理 + * + * ID名を管理する。 + */ +export declare class CubismIdManager { + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * ID名をリストから登録 + * + * @param ids ID名リスト + * @param count IDの個数 + */ + registerIds(ids: string[] | csmString[]): void; + /** + * ID名を登録 + * + * @param id ID名 + */ + registerId(id: string | csmString): CubismId; + /** + * ID名からIDを取得する + * + * @param id ID名 + */ + getId(id: csmString | string): CubismId; + /** + * ID名からIDの確認 + * + * @return true 存在する + * @return false 存在しない + */ + isExist(id: csmString | string): boolean; + /** + * ID名からIDを検索する。 + * + * @param id ID名 + * @return 登録されているID。なければNULL。 + */ + private findId; + private _ids; +} +import * as $ from './cubismidmanager'; +export declare namespace Live2DCubismFramework { + const CubismIdManager: typeof $.CubismIdManager; + type CubismIdManager = $.CubismIdManager; +} +//# sourceMappingURL=cubismidmanager.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/id/cubismidmanager.d.ts.map b/live2demo/Framework/id/cubismidmanager.d.ts.map new file mode 100644 index 0000000..60d4d19 --- /dev/null +++ b/live2demo/Framework/id/cubismidmanager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismidmanager.d.ts","sourceRoot":"","sources":["../../src/id/cubismidmanager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;GAIG;AACH,qBAAa,eAAe;IAC1B;;OAEG;;IAKH;;OAEG;IACI,OAAO,IAAI,IAAI;IAOtB;;;;;OAKG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI;IAMrD;;;;OAIG;IACI,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ;IAiBnD;;;;OAIG;IACI,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ;IAI9C;;;;;OAKG;IACI,OAAO,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO;IAO/C;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,IAAI,CAAsB;CACnC;AAGD,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAC;AAEvC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,eAAe,0BAAoB,CAAC;IACjD,KAAY,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC;CACjD"} \ No newline at end of file diff --git a/live2demo/Framework/id/cubismidmanager.js b/live2demo/Framework/id/cubismidmanager.js new file mode 100644 index 0000000..826d923 --- /dev/null +++ b/live2demo/Framework/id/cubismidmanager.js @@ -0,0 +1,130 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismIdManager = void 0; +var csmvector_1 = require("../type/csmvector"); +var cubismid_1 = require("./cubismid"); +/** + * ID名の管理 + * + * ID名を管理する。 + */ +var CubismIdManager = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismIdManager() { + this._ids = new csmvector_1.csmVector(); + } + /** + * デストラクタ相当の処理 + */ + CubismIdManager.prototype.release = function () { + for (var i = 0; i < this._ids.getSize(); ++i) { + this._ids.set(i, void 0); + } + this._ids = null; + }; + /** + * ID名をリストから登録 + * + * @param ids ID名リスト + * @param count IDの個数 + */ + CubismIdManager.prototype.registerIds = function (ids) { + for (var i = 0; i < ids.length; i++) { + this.registerId(ids[i]); + } + }; + /** + * ID名を登録 + * + * @param id ID名 + */ + CubismIdManager.prototype.registerId = function (id) { + var result = null; + if ('string' == typeof id) { + if ((result = this.findId(id)) != null) { + return result; + } + result = cubismid_1.CubismId._createIdInternal(id); + this._ids.pushBack(result); + } + else { + return this.registerId(id.s); + } + return result; + }; + /** + * ID名からIDを取得する + * + * @param id ID名 + */ + CubismIdManager.prototype.getId = function (id) { + return this.registerId(id); + }; + /** + * ID名からIDの確認 + * + * @return true 存在する + * @return false 存在しない + */ + CubismIdManager.prototype.isExist = function (id) { + if ('string' == typeof id) { + return this.findId(id) != null; + } + return this.isExist(id.s); + }; + /** + * ID名からIDを検索する。 + * + * @param id ID名 + * @return 登録されているID。なければNULL。 + */ + CubismIdManager.prototype.findId = function (id) { + for (var i = 0; i < this._ids.getSize(); ++i) { + if (this._ids.at(i).getString().isEqual(id)) { + return this._ids.at(i); + } + } + return null; + }; + return CubismIdManager; +}()); +exports.CubismIdManager = CubismIdManager; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismidmanager")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismIdManager = $.CubismIdManager; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismidmanager.js.map \ No newline at end of file diff --git a/live2demo/Framework/id/cubismidmanager.js.map b/live2demo/Framework/id/cubismidmanager.js.map new file mode 100644 index 0000000..b322afc --- /dev/null +++ b/live2demo/Framework/id/cubismidmanager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismidmanager.js","sourceRoot":"","sources":["../../src/id/cubismidmanager.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,+CAA8C;AAC9C,uCAAsC;AAEtC;;;;GAIG;AACH;IACE;;OAEG;IACH;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAS,EAAY,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,iCAAO,GAAd;QACE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAC1B;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACI,qCAAW,GAAlB,UAAmB,GAA2B;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED;;;;OAIG;IACI,oCAAU,GAAjB,UAAkB,EAAsB;QACtC,IAAI,MAAM,GAAa,IAAI,CAAC;QAE5B,IAAI,QAAQ,IAAI,OAAO,EAAE,EAAE;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;gBACtC,OAAO,MAAM,CAAC;aACf;YAED,MAAM,GAAG,mBAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC5B;aAAM;YACL,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9B;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,+BAAK,GAAZ,UAAa,EAAsB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACI,iCAAO,GAAd,UAAe,EAAsB;QACnC,IAAI,QAAQ,IAAI,OAAO,EAAE,EAAE;YACzB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;SAChC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACK,gCAAM,GAAd,UAAe,EAAU;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE;YAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAGH,sBAAC;AAAD,CAAC,AA3FD,IA2FC;AA3FY,0CAAe;AA6F5B,0CAA0C;AAC1C,mDAAuC;AACvC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAGrC;AAHD,WAAiB,qBAAqB;IACvB,qCAAe,GAAG,CAAC,CAAC,eAAe,CAAC;AAEnD,CAAC,EAHgB,qBAAqB,qCAArB,qBAAqB,QAGrC"} \ No newline at end of file diff --git a/live2demo/Framework/live2dcubismframework.d.ts b/live2demo/Framework/live2dcubismframework.d.ts new file mode 100644 index 0000000..0c7ee72 --- /dev/null +++ b/live2demo/Framework/live2dcubismframework.d.ts @@ -0,0 +1,105 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdManager } from './id/cubismidmanager'; +export declare function strtod(s: string, endPtr: string[]): number; +/** + * Framework内で使う定数の宣言 + */ +export declare const Constant: Readonly>; +export declare function csmDelete(address: T): void; +/** + * Live2D Cubism SDK Original Workflow SDKのエントリポイント + * 利用開始時はCubismFramework.initialize()を呼び、CubismFramework.dispose()で終了する。 + */ +export declare class CubismFramework { + /** + * Cubism FrameworkのAPIを使用可能にする。 + * APIを実行する前に必ずこの関数を実行すること。 + * 一度準備が完了して以降は、再び実行しても内部処理がスキップされます。 + * + * @param option Optionクラスのインスタンス + * + * @return 準備処理が完了したらtrueが返ります。 + */ + static startUp(option?: Option): boolean; + /** + * StartUp()で初期化したCubismFrameworkの各パラメータをクリアします。 + * Dispose()したCubismFrameworkを再利用する際に利用してください。 + */ + static cleanUp(): void; + /** + * Cubism Framework内のリソースを初期化してモデルを表示可能な状態にします。
+ * 再度Initialize()するには先にDispose()を実行する必要があります。 + * + * @param memorySize 初期化時メモリ量 [byte(s)] + * 複数モデル表示時などにモデルが更新されない際に使用してください。 + * 指定する際は必ず1024*1024*16 byte(16MB)以上の値を指定してください。 + * それ以外はすべて1024*1024*16 byteに丸めます。 + */ + static initialize(memorySize?: number): void; + /** + * Cubism Framework内の全てのリソースを解放します。 + * ただし、外部で確保されたリソースについては解放しません。 + * 外部で適切に破棄する必要があります。 + */ + static dispose(): void; + /** + * Cubism FrameworkのAPIを使用する準備が完了したかどうか + * @return APIを使用する準備が完了していればtrueが返ります。 + */ + static isStarted(): boolean; + /** + * Cubism Frameworkのリソース初期化がすでに行われているかどうか + * @return リソース確保が完了していればtrueが返ります + */ + static isInitialized(): boolean; + /** + * Core APIにバインドしたログ関数を実行する + * + * @praram message ログメッセージ + */ + static coreLogFunction(message: string): void; + /** + * 現在のログ出力レベル設定の値を返す。 + * + * @return 現在のログ出力レベル設定の値 + */ + static getLoggingLevel(): LogLevel; + /** + * IDマネージャのインスタンスを取得する + * @return CubismManagerクラスのインスタンス + */ + static getIdManager(): CubismIdManager; + /** + * 静的クラスとして使用する + * インスタンス化させない + */ + private constructor(); +} +export declare class Option { + logFunction: Live2DCubismCore.csmLogFunction; + loggingLevel: LogLevel; +} +/** + * ログ出力のレベル + */ +export declare enum LogLevel { + LogLevel_Verbose = 0, + LogLevel_Debug = 1, + LogLevel_Info = 2, + LogLevel_Warning = 3, + LogLevel_Error = 4, + LogLevel_Off = 5 +} +import * as $ from './live2dcubismframework'; +export declare namespace Live2DCubismFramework { + const Constant: Readonly>; + const csmDelete: typeof $.csmDelete; + const CubismFramework: typeof $.CubismFramework; + type CubismFramework = $.CubismFramework; +} +//# sourceMappingURL=live2dcubismframework.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/live2dcubismframework.d.ts.map b/live2demo/Framework/live2dcubismframework.d.ts.map new file mode 100644 index 0000000..d883ee2 --- /dev/null +++ b/live2demo/Framework/live2dcubismframework.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"live2dcubismframework.d.ts","sourceRoot":"","sources":["../src/live2dcubismframework.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AASvD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CA4B1D;AASD;;GAEG;AACH,eAAO,MAAM,QAAQ,kCAGnB,CAAC;AAEH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAM7C;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B;;;;;;;;OAQG;WACW,OAAO,CAAC,MAAM,GAAE,MAAa,GAAG,OAAO;IAoCrD;;;OAGG;WACW,OAAO,IAAI,IAAI;IAO7B;;;;;;;;OAQG;WACW,UAAU,CAAC,UAAU,SAAI,GAAG,IAAI;IAiC9C;;;;OAIG;WACW,OAAO,IAAI,IAAI;IA4B7B;;;OAGG;WACW,SAAS,IAAI,OAAO;IAIlC;;;OAGG;WACW,aAAa,IAAI,OAAO;IAItC;;;;OAIG;WACW,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASpD;;;;OAIG;WACW,eAAe,IAAI,QAAQ;IAOzC;;;OAGG;WACW,YAAY,IAAI,eAAe;IAI7C;;;OAGG;IACH,OAAO;CACR;AAED,qBAAa,MAAM;IACjB,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAAC;IAC7C,YAAY,EAAE,QAAQ,CAAC;CACxB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,gBAAgB,IAAI;IACpB,cAAc,IAAA;IACd,aAAa,IAAA;IACb,gBAAgB,IAAA;IAChB,cAAc,IAAA;IACd,YAAY,IAAA;CACb;AAGD,OAAO,KAAK,CAAC,MAAM,yBAAyB,CAAC;AAE7C,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,QAAQ,kCAAa,CAAC;IAC5B,MAAM,SAAS,oBAAc,CAAC;IAC9B,MAAM,eAAe,0BAAoB,CAAC;IACjD,KAAY,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC;CACjD"} \ No newline at end of file diff --git a/live2demo/Framework/live2dcubismframework.js b/live2demo/Framework/live2dcubismframework.js new file mode 100644 index 0000000..12cba9e --- /dev/null +++ b/live2demo/Framework/live2dcubismframework.js @@ -0,0 +1,268 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.LogLevel = exports.Option = exports.CubismFramework = exports.csmDelete = exports.Constant = exports.strtod = void 0; +var cubismidmanager_1 = require("./id/cubismidmanager"); +var cubismrenderer_1 = require("./rendering/cubismrenderer"); +var cubismdebug_1 = require("./utils/cubismdebug"); +var cubismjson_1 = require("./utils/cubismjson"); +function strtod(s, endPtr) { + var index = 0; + for (var i = 1;; i++) { + var testC = s.slice(i - 1, i); + // 指数・マイナスの可能性があるのでスキップする + if (testC == 'e' || testC == '-' || testC == 'E') { + continue; + } // 文字列の範囲を広げていく + var test = s.substring(0, i); + var number = Number(test); + if (isNaN(number)) { + // 数値として認識できなくなったので終了 + break; + } // 最後に数値としてできたindexを格納しておく + index = i; + } + var d = parseFloat(s); // パースした数値 + if (isNaN(d)) { + // 数値として認識できなくなったので終了 + d = NaN; + } + endPtr[0] = s.slice(index); // 後続の文字列 + return d; +} +exports.strtod = strtod; +// ファイルスコープの変数を初期化 +var s_isStarted = false; +var s_isInitialized = false; +var s_option = null; +var s_cubismIdManager = null; +/** + * Framework内で使う定数の宣言 + */ +exports.Constant = Object.freeze({ + vertexOffset: 0, + vertexStep: 2 // メッシュ頂点のステップ値 +}); +function csmDelete(address) { + if (!address) { + return; + } + address = void 0; +} +exports.csmDelete = csmDelete; +/** + * Live2D Cubism SDK Original Workflow SDKのエントリポイント + * 利用開始時はCubismFramework.initialize()を呼び、CubismFramework.dispose()で終了する。 + */ +var CubismFramework = /** @class */ (function () { + /** + * 静的クラスとして使用する + * インスタンス化させない + */ + function CubismFramework() { + } + /** + * Cubism FrameworkのAPIを使用可能にする。 + * APIを実行する前に必ずこの関数を実行すること。 + * 一度準備が完了して以降は、再び実行しても内部処理がスキップされます。 + * + * @param option Optionクラスのインスタンス + * + * @return 準備処理が完了したらtrueが返ります。 + */ + CubismFramework.startUp = function (option) { + if (option === void 0) { option = null; } + if (s_isStarted) { + (0, cubismdebug_1.CubismLogInfo)('CubismFramework.startUp() is already done.'); + return s_isStarted; + } + s_option = option; + if (s_option != null) { + Live2DCubismCore.Logging.csmSetLogFunction(s_option.logFunction); + } + s_isStarted = true; + // Live2D Cubism Coreバージョン情報を表示 + if (s_isStarted) { + var version = Live2DCubismCore.Version.csmGetVersion(); + var major = (version & 0xff000000) >> 24; + var minor = (version & 0x00ff0000) >> 16; + var patch = version & 0x0000ffff; + var versionNumber = version; + (0, cubismdebug_1.CubismLogInfo)("Live2D Cubism Core version: {0}.{1}.{2} ({3})", ('00' + major).slice(-2), ('00' + minor).slice(-2), ('0000' + patch).slice(-4), versionNumber); + } + (0, cubismdebug_1.CubismLogInfo)('CubismFramework.startUp() is complete.'); + return s_isStarted; + }; + /** + * StartUp()で初期化したCubismFrameworkの各パラメータをクリアします。 + * Dispose()したCubismFrameworkを再利用する際に利用してください。 + */ + CubismFramework.cleanUp = function () { + s_isStarted = false; + s_isInitialized = false; + s_option = null; + s_cubismIdManager = null; + }; + /** + * Cubism Framework内のリソースを初期化してモデルを表示可能な状態にします。
+ * 再度Initialize()するには先にDispose()を実行する必要があります。 + * + * @param memorySize 初期化時メモリ量 [byte(s)] + * 複数モデル表示時などにモデルが更新されない際に使用してください。 + * 指定する際は必ず1024*1024*16 byte(16MB)以上の値を指定してください。 + * それ以外はすべて1024*1024*16 byteに丸めます。 + */ + CubismFramework.initialize = function (memorySize) { + if (memorySize === void 0) { memorySize = 0; } + (0, cubismdebug_1.CSM_ASSERT)(s_isStarted); + if (!s_isStarted) { + (0, cubismdebug_1.CubismLogWarning)('CubismFramework is not started.'); + return; + } + // --- s_isInitializedによる連続初期化ガード --- + // 連続してリソース確保が行われないようにする。 + // 再度Initialize()するには先にDispose()を実行する必要がある。 + if (s_isInitialized) { + (0, cubismdebug_1.CubismLogWarning)('CubismFramework.initialize() skipped, already initialized.'); + return; + } + //---- static 初期化 ---- + cubismjson_1.Value.staticInitializeNotForClientCall(); + s_cubismIdManager = new cubismidmanager_1.CubismIdManager(); + // --- HACK: 初期化時メモリ量の拡張(単位byte) --- + // 複数モデル表示時などにモデルが更新されない際に使用してください。 + // 指定する際は必ず1024*1024*16 byte(16MB)以上の値を指定してください。 + // それ以外はすべて1024*1024*16 byteに丸めます。 + Live2DCubismCore.Memory.initializeAmountOfMemory(memorySize); + s_isInitialized = true; + (0, cubismdebug_1.CubismLogInfo)('CubismFramework.initialize() is complete.'); + }; + /** + * Cubism Framework内の全てのリソースを解放します。 + * ただし、外部で確保されたリソースについては解放しません。 + * 外部で適切に破棄する必要があります。 + */ + CubismFramework.dispose = function () { + (0, cubismdebug_1.CSM_ASSERT)(s_isStarted); + if (!s_isStarted) { + (0, cubismdebug_1.CubismLogWarning)('CubismFramework is not started.'); + return; + } + // --- s_isInitializedによる未初期化解放ガード --- + // dispose()するには先にinitialize()を実行する必要がある。 + if (!s_isInitialized) { + // false...リソース未確保の場合 + (0, cubismdebug_1.CubismLogWarning)('CubismFramework.dispose() skipped, not initialized.'); + return; + } + cubismjson_1.Value.staticReleaseNotForClientCall(); + s_cubismIdManager.release(); + s_cubismIdManager = null; + // レンダラの静的リソース(シェーダプログラム他)を解放する + cubismrenderer_1.CubismRenderer.staticRelease(); + s_isInitialized = false; + (0, cubismdebug_1.CubismLogInfo)('CubismFramework.dispose() is complete.'); + }; + /** + * Cubism FrameworkのAPIを使用する準備が完了したかどうか + * @return APIを使用する準備が完了していればtrueが返ります。 + */ + CubismFramework.isStarted = function () { + return s_isStarted; + }; + /** + * Cubism Frameworkのリソース初期化がすでに行われているかどうか + * @return リソース確保が完了していればtrueが返ります + */ + CubismFramework.isInitialized = function () { + return s_isInitialized; + }; + /** + * Core APIにバインドしたログ関数を実行する + * + * @praram message ログメッセージ + */ + CubismFramework.coreLogFunction = function (message) { + // Return if logging not possible. + if (!Live2DCubismCore.Logging.csmGetLogFunction()) { + return; + } + Live2DCubismCore.Logging.csmGetLogFunction()(message); + }; + /** + * 現在のログ出力レベル設定の値を返す。 + * + * @return 現在のログ出力レベル設定の値 + */ + CubismFramework.getLoggingLevel = function () { + if (s_option != null) { + return s_option.loggingLevel; + } + return LogLevel.LogLevel_Off; + }; + /** + * IDマネージャのインスタンスを取得する + * @return CubismManagerクラスのインスタンス + */ + CubismFramework.getIdManager = function () { + return s_cubismIdManager; + }; + return CubismFramework; +}()); +exports.CubismFramework = CubismFramework; +var Option = /** @class */ (function () { + function Option() { + } + return Option; +}()); +exports.Option = Option; +/** + * ログ出力のレベル + */ +var LogLevel; +(function (LogLevel) { + LogLevel[LogLevel["LogLevel_Verbose"] = 0] = "LogLevel_Verbose"; + LogLevel[LogLevel["LogLevel_Debug"] = 1] = "LogLevel_Debug"; + LogLevel[LogLevel["LogLevel_Info"] = 2] = "LogLevel_Info"; + LogLevel[LogLevel["LogLevel_Warning"] = 3] = "LogLevel_Warning"; + LogLevel[LogLevel["LogLevel_Error"] = 4] = "LogLevel_Error"; + LogLevel[LogLevel["LogLevel_Off"] = 5] = "LogLevel_Off"; // ログ出力無効 +})(LogLevel || (exports.LogLevel = LogLevel = {})); +// Namespace definition for compatibility. +var $ = __importStar(require("./live2dcubismframework")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.Constant = $.Constant; + Live2DCubismFramework.csmDelete = $.csmDelete; + Live2DCubismFramework.CubismFramework = $.CubismFramework; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=live2dcubismframework.js.map \ No newline at end of file diff --git a/live2demo/Framework/live2dcubismframework.js.map b/live2demo/Framework/live2dcubismframework.js.map new file mode 100644 index 0000000..615a1bc --- /dev/null +++ b/live2demo/Framework/live2dcubismframework.js.map @@ -0,0 +1 @@ +{"version":3,"file":"live2dcubismframework.js","sourceRoot":"","sources":["../src/live2dcubismframework.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmath.d.ts b/live2demo/Framework/math/cubismmath.d.ts new file mode 100644 index 0000000..cd5c83c --- /dev/null +++ b/live2demo/Framework/math/cubismmath.d.ts @@ -0,0 +1,149 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismVector2 } from './cubismvector2'; +/** + * 数値計算などに使用するユーティリティクラス + */ +export declare class CubismMath { + static readonly Epsilon: number; + /** + * 第一引数の値を最小値と最大値の範囲に収めた値を返す + * + * @param value 収められる値 + * @param min 範囲の最小値 + * @param max 範囲の最大値 + * @return 最小値と最大値の範囲に収めた値 + */ + static range(value: number, min: number, max: number): number; + /** + * サイン関数の値を求める + * + * @param x 角度値(ラジアン) + * @return サイン関数sin(x)の値 + */ + static sin(x: number): number; + /** + * コサイン関数の値を求める + * + * @param x 角度値(ラジアン) + * @return コサイン関数cos(x)の値 + */ + static cos(x: number): number; + /** + * 値の絶対値を求める + * + * @param x 絶対値を求める値 + * @return 値の絶対値 + */ + static abs(x: number): number; + /** + * 平方根(ルート)を求める + * @param x -> 平方根を求める値 + * @return 値の平方根 + */ + static sqrt(x: number): number; + /** + * 立方根を求める + * @param x -> 立方根を求める値 + * @return 値の立方根 + */ + static cbrt(x: number): number; + /** + * イージング処理されたサインを求める + * フェードイン・アウト時のイージングに利用できる + * + * @param value イージングを行う値 + * @return イージング処理されたサイン値 + */ + static getEasingSine(value: number): number; + /** + * 大きい方の値を返す + * + * @param left 左辺の値 + * @param right 右辺の値 + * @return 大きい方の値 + */ + static max(left: number, right: number): number; + /** + * 小さい方の値を返す + * + * @param left 左辺の値 + * @param right 右辺の値 + * @return 小さい方の値 + */ + static min(left: number, right: number): number; + /** + * 角度値をラジアン値に変換する + * + * @param degrees 角度値 + * @return 角度値から変換したラジアン値 + */ + static degreesToRadian(degrees: number): number; + /** + * ラジアン値を角度値に変換する + * + * @param radian ラジアン値 + * @return ラジアン値から変換した角度値 + */ + static radianToDegrees(radian: number): number; + /** + * 2つのベクトルからラジアン値を求める + * + * @param from 始点ベクトル + * @param to 終点ベクトル + * @return ラジアン値から求めた方向ベクトル + */ + static directionToRadian(from: CubismVector2, to: CubismVector2): number; + /** + * 2つのベクトルから角度値を求める + * + * @param from 始点ベクトル + * @param to 終点ベクトル + * @return 角度値から求めた方向ベクトル + */ + static directionToDegrees(from: CubismVector2, to: CubismVector2): number; + /** + * ラジアン値を方向ベクトルに変換する。 + * + * @param totalAngle ラジアン値 + * @return ラジアン値から変換した方向ベクトル + */ + static radianToDirection(totalAngle: number): CubismVector2; + /** + * 三次方程式の三次項の係数が0になったときに補欠的に二次方程式の解をもとめる。 + * a * x^2 + b * x + c = 0 + * + * @param a -> 二次項の係数値 + * @param b -> 一次項の係数値 + * @param c -> 定数項の値 + * @return 二次方程式の解 + */ + static quadraticEquation(a: number, b: number, c: number): number; + /** + * カルダノの公式によってベジェのt値に該当する3次方程式の解を求める。 + * 重解になったときには0.0~1.0の値になる解を返す。 + * + * a * x^3 + b * x^2 + c * x + d = 0 + * + * @param a -> 三次項の係数値 + * @param b -> 二次項の係数値 + * @param c -> 一次項の係数値 + * @param d -> 定数項の値 + * @return 0.0~1.0の間にある解 + */ + static cardanoAlgorithmForBezier(a: number, b: number, c: number, d: number): number; + /** + * コンストラクタ + */ + private constructor(); +} +import * as $ from './cubismmath'; +export declare namespace Live2DCubismFramework { + const CubismMath: typeof $.CubismMath; + type CubismMath = $.CubismMath; +} +//# sourceMappingURL=cubismmath.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmath.d.ts.map b/live2demo/Framework/math/cubismmath.d.ts.map new file mode 100644 index 0000000..b140b51 --- /dev/null +++ b/live2demo/Framework/math/cubismmath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmath.d.ts","sourceRoot":"","sources":["../../src/math/cubismmath.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAW;IAE1C;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAU7D;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI7B;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI7B;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI7B;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI9B;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAsB9B;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAU3C;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/C;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/C;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI/C;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI9C;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,GAAG,MAAM;IAiBxE;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,GAAG,MAAM;IAWzE;;;;;OAKG;IAEH,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa;IAS3D;;;;;;;;OAQG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAWjE;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,yBAAyB,CAC9B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,MAAM;IAoET;;OAEG;IACH,OAAO;CACR;AAGD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,UAAU,qBAAe,CAAC;IACvC,KAAY,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;CACvC"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmath.js b/live2demo/Framework/math/cubismmath.js new file mode 100644 index 0000000..1805428 --- /dev/null +++ b/live2demo/Framework/math/cubismmath.js @@ -0,0 +1,315 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismMath = void 0; +var cubismvector2_1 = require("./cubismvector2"); +/** + * 数値計算などに使用するユーティリティクラス + */ +var CubismMath = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismMath() { + } + /** + * 第一引数の値を最小値と最大値の範囲に収めた値を返す + * + * @param value 収められる値 + * @param min 範囲の最小値 + * @param max 範囲の最大値 + * @return 最小値と最大値の範囲に収めた値 + */ + CubismMath.range = function (value, min, max) { + if (value < min) { + value = min; + } + else if (value > max) { + value = max; + } + return value; + }; + /** + * サイン関数の値を求める + * + * @param x 角度値(ラジアン) + * @return サイン関数sin(x)の値 + */ + CubismMath.sin = function (x) { + return Math.sin(x); + }; + /** + * コサイン関数の値を求める + * + * @param x 角度値(ラジアン) + * @return コサイン関数cos(x)の値 + */ + CubismMath.cos = function (x) { + return Math.cos(x); + }; + /** + * 値の絶対値を求める + * + * @param x 絶対値を求める値 + * @return 値の絶対値 + */ + CubismMath.abs = function (x) { + return Math.abs(x); + }; + /** + * 平方根(ルート)を求める + * @param x -> 平方根を求める値 + * @return 値の平方根 + */ + CubismMath.sqrt = function (x) { + return Math.sqrt(x); + }; + /** + * 立方根を求める + * @param x -> 立方根を求める値 + * @return 値の立方根 + */ + CubismMath.cbrt = function (x) { + if (x === 0) { + return x; + } + var cx = x; + var isNegativeNumber = cx < 0; + if (isNegativeNumber) { + cx = -cx; + } + var ret; + if (cx === Infinity) { + ret = Infinity; + } + else { + ret = Math.exp(Math.log(cx) / 3); + ret = (cx / (ret * ret) + 2 * ret) / 3; + } + return isNegativeNumber ? -ret : ret; + }; + /** + * イージング処理されたサインを求める + * フェードイン・アウト時のイージングに利用できる + * + * @param value イージングを行う値 + * @return イージング処理されたサイン値 + */ + CubismMath.getEasingSine = function (value) { + if (value < 0.0) { + return 0.0; + } + else if (value > 1.0) { + return 1.0; + } + return 0.5 - 0.5 * this.cos(value * Math.PI); + }; + /** + * 大きい方の値を返す + * + * @param left 左辺の値 + * @param right 右辺の値 + * @return 大きい方の値 + */ + CubismMath.max = function (left, right) { + return left > right ? left : right; + }; + /** + * 小さい方の値を返す + * + * @param left 左辺の値 + * @param right 右辺の値 + * @return 小さい方の値 + */ + CubismMath.min = function (left, right) { + return left > right ? right : left; + }; + /** + * 角度値をラジアン値に変換する + * + * @param degrees 角度値 + * @return 角度値から変換したラジアン値 + */ + CubismMath.degreesToRadian = function (degrees) { + return (degrees / 180.0) * Math.PI; + }; + /** + * ラジアン値を角度値に変換する + * + * @param radian ラジアン値 + * @return ラジアン値から変換した角度値 + */ + CubismMath.radianToDegrees = function (radian) { + return (radian * 180.0) / Math.PI; + }; + /** + * 2つのベクトルからラジアン値を求める + * + * @param from 始点ベクトル + * @param to 終点ベクトル + * @return ラジアン値から求めた方向ベクトル + */ + CubismMath.directionToRadian = function (from, to) { + var q1 = Math.atan2(to.y, to.x); + var q2 = Math.atan2(from.y, from.x); + var ret = q1 - q2; + while (ret < -Math.PI) { + ret += Math.PI * 2.0; + } + while (ret > Math.PI) { + ret -= Math.PI * 2.0; + } + return ret; + }; + /** + * 2つのベクトルから角度値を求める + * + * @param from 始点ベクトル + * @param to 終点ベクトル + * @return 角度値から求めた方向ベクトル + */ + CubismMath.directionToDegrees = function (from, to) { + var radian = this.directionToRadian(from, to); + var degree = this.radianToDegrees(radian); + if (to.x - from.x > 0.0) { + degree = -degree; + } + return degree; + }; + /** + * ラジアン値を方向ベクトルに変換する。 + * + * @param totalAngle ラジアン値 + * @return ラジアン値から変換した方向ベクトル + */ + CubismMath.radianToDirection = function (totalAngle) { + var ret = new cubismvector2_1.CubismVector2(); + ret.x = this.sin(totalAngle); + ret.y = this.cos(totalAngle); + return ret; + }; + /** + * 三次方程式の三次項の係数が0になったときに補欠的に二次方程式の解をもとめる。 + * a * x^2 + b * x + c = 0 + * + * @param a -> 二次項の係数値 + * @param b -> 一次項の係数値 + * @param c -> 定数項の値 + * @return 二次方程式の解 + */ + CubismMath.quadraticEquation = function (a, b, c) { + if (this.abs(a) < CubismMath.Epsilon) { + if (this.abs(b) < CubismMath.Epsilon) { + return -c; + } + return -c / b; + } + return -(b + this.sqrt(b * b - 4.0 * a * c)) / (2.0 * a); + }; + /** + * カルダノの公式によってベジェのt値に該当する3次方程式の解を求める。 + * 重解になったときには0.0~1.0の値になる解を返す。 + * + * a * x^3 + b * x^2 + c * x + d = 0 + * + * @param a -> 三次項の係数値 + * @param b -> 二次項の係数値 + * @param c -> 一次項の係数値 + * @param d -> 定数項の値 + * @return 0.0~1.0の間にある解 + */ + CubismMath.cardanoAlgorithmForBezier = function (a, b, c, d) { + if (this.sqrt(a) < CubismMath.Epsilon) { + return this.range(this.quadraticEquation(b, c, d), 0.0, 1.0); + } + var ba = b / a; + var ca = c / a; + var da = d / a; + var p = (3.0 * ca - ba * ba) / 3.0; + var p3 = p / 3.0; + var q = (2.0 * ba * ba * ba - 9.0 * ba * ca + 27.0 * da) / 27.0; + var q2 = q / 2.0; + var discriminant = q2 * q2 + p3 * p3 * p3; + var center = 0.5; + var threshold = center + 0.01; + if (discriminant < 0.0) { + var mp3 = -p / 3.0; + var mp33 = mp3 * mp3 * mp3; + var r = this.sqrt(mp33); + var t = -q / (2.0 * r); + var cosphi = this.range(t, -1.0, 1.0); + var phi = Math.acos(cosphi); + var crtr = this.cbrt(r); + var t1 = 2.0 * crtr; + var root1_1 = t1 * this.cos(phi / 3.0) - ba / 3.0; + if (this.abs(root1_1 - center) < threshold) { + return this.range(root1_1, 0.0, 1.0); + } + var root2 = t1 * this.cos((phi + 2.0 * Math.PI) / 3.0) - ba / 3.0; + if (this.abs(root2 - center) < threshold) { + return this.range(root2, 0.0, 1.0); + } + var root3 = t1 * this.cos((phi + 4.0 * Math.PI) / 3.0) - ba / 3.0; + return this.range(root3, 0.0, 1.0); + } + if (discriminant == 0.0) { + var u1_1; + if (q2 < 0.0) { + u1_1 = this.cbrt(-q2); + } + else { + u1_1 = -this.cbrt(q2); + } + var root1_2 = 2.0 * u1_1 - ba / 3.0; + if (this.abs(root1_2 - center) < threshold) { + return this.range(root1_2, 0.0, 1.0); + } + var root2 = -u1_1 - ba / 3.0; + return this.range(root2, 0.0, 1.0); + } + var sd = this.sqrt(discriminant); + var u1 = this.cbrt(sd - q2); + var v1 = this.cbrt(sd + q2); + var root1 = u1 - v1 - ba / 3.0; + return this.range(root1, 0.0, 1.0); + }; + CubismMath.Epsilon = 0.00001; + return CubismMath; +}()); +exports.CubismMath = CubismMath; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmath")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismMath = $.CubismMath; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmath.js.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmath.js.map b/live2demo/Framework/math/cubismmath.js.map new file mode 100644 index 0000000..3e81ed2 --- /dev/null +++ b/live2demo/Framework/math/cubismmath.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmath.js","sourceRoot":"","sources":["../../src/math/cubismmath.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmatrix44.d.ts b/live2demo/Framework/math/cubismmatrix44.d.ts new file mode 100644 index 0000000..1605225 --- /dev/null +++ b/live2demo/Framework/math/cubismmatrix44.d.ts @@ -0,0 +1,147 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +/** + * 4x4の行列 + * + * 4x4行列の便利クラス。 + */ +export declare class CubismMatrix44 { + /** + * コンストラクタ + */ + constructor(); + /** + * 受け取った2つの行列の乗算を行う。 + * + * @param a 行列a + * @param b 行列b + * @return 乗算結果の行列 + */ + static multiply(a: Float32Array, b: Float32Array, dst: Float32Array): void; + /** + * 単位行列に初期化する + */ + loadIdentity(): void; + /** + * 行列を設定 + * + * @param tr 16個の浮動小数点数で表される4x4の行列 + */ + setMatrix(tr: Float32Array): void; + /** + * 行列を浮動小数点数の配列で取得 + * + * @return 16個の浮動小数点数で表される4x4の行列 + */ + getArray(): Float32Array; + /** + * X軸の拡大率を取得 + * @return X軸の拡大率 + */ + getScaleX(): number; + /** + * Y軸の拡大率を取得する + * + * @return Y軸の拡大率 + */ + getScaleY(): number; + /** + * X軸の移動量を取得 + * @return X軸の移動量 + */ + getTranslateX(): number; + /** + * Y軸の移動量を取得 + * @return Y軸の移動量 + */ + getTranslateY(): number; + /** + * X軸の値を現在の行列で計算 + * + * @param src X軸の値 + * @return 現在の行列で計算されたX軸の値 + */ + transformX(src: number): number; + /** + * Y軸の値を現在の行列で計算 + * + * @param src Y軸の値 + * @return 現在の行列で計算されたY軸の値 + */ + transformY(src: number): number; + /** + * X軸の値を現在の行列で逆計算 + */ + invertTransformX(src: number): number; + /** + * Y軸の値を現在の行列で逆計算 + */ + invertTransformY(src: number): number; + /** + * 現在の行列の位置を起点にして移動 + * + * 現在の行列の位置を起点にして相対的に移動する。 + * + * @param x X軸の移動量 + * @param y Y軸の移動量 + */ + translateRelative(x: number, y: number): void; + /** + * 現在の行列の位置を移動 + * + * 現在の行列の位置を指定した位置へ移動する + * + * @param x X軸の移動量 + * @param y y軸の移動量 + */ + translate(x: number, y: number): void; + /** + * 現在の行列のX軸の位置を指定した位置へ移動する + * + * @param x X軸の移動量 + */ + translateX(x: number): void; + /** + * 現在の行列のY軸の位置を指定した位置へ移動する + * + * @param y Y軸の移動量 + */ + translateY(y: number): void; + /** + * 現在の行列の拡大率を相対的に設定する + * + * @param x X軸の拡大率 + * @param y Y軸の拡大率 + */ + scaleRelative(x: number, y: number): void; + /** + * 現在の行列の拡大率を指定した倍率に設定する + * + * @param x X軸の拡大率 + * @param y Y軸の拡大率 + */ + scale(x: number, y: number): void; + /** + * 引数で与えられた行列にこの行列を乗算する。 + * (引数で与えられた行列) * (この行列) + * + * @note 関数名と実際の計算内容に乖離があるため、今後計算順が修正される可能性があります。 + * @param m 行列 + */ + multiplyByMatrix(m: CubismMatrix44): void; + /** + * オブジェクトのコピーを生成する + */ + clone(): CubismMatrix44; + protected _tr: Float32Array; +} +import * as $ from './cubismmatrix44'; +export declare namespace Live2DCubismFramework { + const CubismMatrix44: typeof $.CubismMatrix44; + type CubismMatrix44 = $.CubismMatrix44; +} +//# sourceMappingURL=cubismmatrix44.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmatrix44.d.ts.map b/live2demo/Framework/math/cubismmatrix44.d.ts.map new file mode 100644 index 0000000..128924e --- /dev/null +++ b/live2demo/Framework/math/cubismmatrix44.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmatrix44.d.ts","sourceRoot":"","sources":["../../src/math/cubismmatrix44.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,qBAAa,cAAc;IACzB;;OAEG;;IAMH;;;;;;OAMG;WACW,QAAQ,CACpB,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,GAAG,EAAE,YAAY,GAChB,IAAI;IAqBP;;OAEG;IACI,YAAY,IAAI,IAAI;IAS3B;;;;OAIG;IACI,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAMxC;;;;OAIG;IACI,QAAQ,IAAI,YAAY;IAI/B;;;OAGG;IACI,SAAS,IAAI,MAAM;IAI1B;;;;OAIG;IACI,SAAS,IAAI,MAAM;IAI1B;;;OAGG;IACI,aAAa,IAAI,MAAM;IAI9B;;;OAGG;IACI,aAAa,IAAI,MAAM;IAI9B;;;;;OAKG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAItC;;;;;OAKG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAItC;;OAEG;IACI,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI5C;;OAEG;IACI,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI5C;;;;;;;OAOG;IACI,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAuBpD;;;;;;;OAOG;IACI,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5C;;;;OAIG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;;OAKG;IACI,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAuBhD;;;;;OAKG;IACI,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;;;OAMG;IACI,gBAAgB,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI;IAIhD;;OAEG;IACI,KAAK,IAAI,cAAc;IAU9B,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC;CAC7B;AAGD,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AAEtC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,cAAc,yBAAmB,CAAC;IAC/C,KAAY,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;CAC/C"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmatrix44.js b/live2demo/Framework/math/cubismmatrix44.js new file mode 100644 index 0000000..32ee103 --- /dev/null +++ b/live2demo/Framework/math/cubismmatrix44.js @@ -0,0 +1,281 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismMatrix44 = void 0; +/** + * 4x4の行列 + * + * 4x4行列の便利クラス。 + */ +var CubismMatrix44 = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismMatrix44() { + this._tr = new Float32Array(16); // 4 * 4のサイズ + this.loadIdentity(); + } + /** + * 受け取った2つの行列の乗算を行う。 + * + * @param a 行列a + * @param b 行列b + * @return 乗算結果の行列 + */ + CubismMatrix44.multiply = function (a, b, dst) { + var c = new Float32Array([ + 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, + 0.0 + ]); + var n = 4; + for (var i = 0; i < n; ++i) { + for (var j = 0; j < n; ++j) { + for (var k = 0; k < n; ++k) { + c[j + i * 4] += a[k + i * 4] * b[j + k * 4]; + } + } + } + for (var i = 0; i < 16; ++i) { + dst[i] = c[i]; + } + }; + /** + * 単位行列に初期化する + */ + CubismMatrix44.prototype.loadIdentity = function () { + var c = new Float32Array([ + 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, + 1.0 + ]); + this.setMatrix(c); + }; + /** + * 行列を設定 + * + * @param tr 16個の浮動小数点数で表される4x4の行列 + */ + CubismMatrix44.prototype.setMatrix = function (tr) { + for (var i = 0; i < 16; ++i) { + this._tr[i] = tr[i]; + } + }; + /** + * 行列を浮動小数点数の配列で取得 + * + * @return 16個の浮動小数点数で表される4x4の行列 + */ + CubismMatrix44.prototype.getArray = function () { + return this._tr; + }; + /** + * X軸の拡大率を取得 + * @return X軸の拡大率 + */ + CubismMatrix44.prototype.getScaleX = function () { + return this._tr[0]; + }; + /** + * Y軸の拡大率を取得する + * + * @return Y軸の拡大率 + */ + CubismMatrix44.prototype.getScaleY = function () { + return this._tr[5]; + }; + /** + * X軸の移動量を取得 + * @return X軸の移動量 + */ + CubismMatrix44.prototype.getTranslateX = function () { + return this._tr[12]; + }; + /** + * Y軸の移動量を取得 + * @return Y軸の移動量 + */ + CubismMatrix44.prototype.getTranslateY = function () { + return this._tr[13]; + }; + /** + * X軸の値を現在の行列で計算 + * + * @param src X軸の値 + * @return 現在の行列で計算されたX軸の値 + */ + CubismMatrix44.prototype.transformX = function (src) { + return this._tr[0] * src + this._tr[12]; + }; + /** + * Y軸の値を現在の行列で計算 + * + * @param src Y軸の値 + * @return 現在の行列で計算されたY軸の値 + */ + CubismMatrix44.prototype.transformY = function (src) { + return this._tr[5] * src + this._tr[13]; + }; + /** + * X軸の値を現在の行列で逆計算 + */ + CubismMatrix44.prototype.invertTransformX = function (src) { + return (src - this._tr[12]) / this._tr[0]; + }; + /** + * Y軸の値を現在の行列で逆計算 + */ + CubismMatrix44.prototype.invertTransformY = function (src) { + return (src - this._tr[13]) / this._tr[5]; + }; + /** + * 現在の行列の位置を起点にして移動 + * + * 現在の行列の位置を起点にして相対的に移動する。 + * + * @param x X軸の移動量 + * @param y Y軸の移動量 + */ + CubismMatrix44.prototype.translateRelative = function (x, y) { + var tr1 = new Float32Array([ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + x, + y, + 0.0, + 1.0 + ]); + CubismMatrix44.multiply(tr1, this._tr, this._tr); + }; + /** + * 現在の行列の位置を移動 + * + * 現在の行列の位置を指定した位置へ移動する + * + * @param x X軸の移動量 + * @param y y軸の移動量 + */ + CubismMatrix44.prototype.translate = function (x, y) { + this._tr[12] = x; + this._tr[13] = y; + }; + /** + * 現在の行列のX軸の位置を指定した位置へ移動する + * + * @param x X軸の移動量 + */ + CubismMatrix44.prototype.translateX = function (x) { + this._tr[12] = x; + }; + /** + * 現在の行列のY軸の位置を指定した位置へ移動する + * + * @param y Y軸の移動量 + */ + CubismMatrix44.prototype.translateY = function (y) { + this._tr[13] = y; + }; + /** + * 現在の行列の拡大率を相対的に設定する + * + * @param x X軸の拡大率 + * @param y Y軸の拡大率 + */ + CubismMatrix44.prototype.scaleRelative = function (x, y) { + var tr1 = new Float32Array([ + x, + 0.0, + 0.0, + 0.0, + 0.0, + y, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ]); + CubismMatrix44.multiply(tr1, this._tr, this._tr); + }; + /** + * 現在の行列の拡大率を指定した倍率に設定する + * + * @param x X軸の拡大率 + * @param y Y軸の拡大率 + */ + CubismMatrix44.prototype.scale = function (x, y) { + this._tr[0] = x; + this._tr[5] = y; + }; + /** + * 引数で与えられた行列にこの行列を乗算する。 + * (引数で与えられた行列) * (この行列) + * + * @note 関数名と実際の計算内容に乖離があるため、今後計算順が修正される可能性があります。 + * @param m 行列 + */ + CubismMatrix44.prototype.multiplyByMatrix = function (m) { + CubismMatrix44.multiply(m.getArray(), this._tr, this._tr); + }; + /** + * オブジェクトのコピーを生成する + */ + CubismMatrix44.prototype.clone = function () { + var cloneMatrix = new CubismMatrix44(); + for (var i = 0; i < this._tr.length; i++) { + cloneMatrix._tr[i] = this._tr[i]; + } + return cloneMatrix; + }; + return CubismMatrix44; +}()); +exports.CubismMatrix44 = CubismMatrix44; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmatrix44")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismMatrix44 = $.CubismMatrix44; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmatrix44.js.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmatrix44.js.map b/live2demo/Framework/math/cubismmatrix44.js.map new file mode 100644 index 0000000..e1908c9 --- /dev/null +++ b/live2demo/Framework/math/cubismmatrix44.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmatrix44.js","sourceRoot":"","sources":["../../src/math/cubismmatrix44.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmodelmatrix.d.ts b/live2demo/Framework/math/cubismmodelmatrix.d.ts new file mode 100644 index 0000000..e432883 --- /dev/null +++ b/live2demo/Framework/math/cubismmodelmatrix.d.ts @@ -0,0 +1,111 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { csmMap } from '../type/csmmap'; +import { CubismMatrix44 } from './cubismmatrix44'; +/** + * モデル座標設定用の4x4行列 + * + * モデル座標設定用の4x4行列クラス + */ +export declare class CubismModelMatrix extends CubismMatrix44 { + /** + * コンストラクタ + * + * @param w 横幅 + * @param h 縦幅 + */ + constructor(w?: number, h?: number); + /** + * 横幅を設定 + * + * @param w 横幅 + */ + setWidth(w: number): void; + /** + * 縦幅を設定 + * @param h 縦幅 + */ + setHeight(h: number): void; + /** + * 位置を設定 + * + * @param x X軸の位置 + * @param y Y軸の位置 + */ + setPosition(x: number, y: number): void; + /** + * 中心位置を設定 + * + * @param x X軸の中心位置 + * @param y Y軸の中心位置 + * + * @note widthかheightを設定したあとでないと、拡大率が正しく取得できないためずれる。 + */ + setCenterPosition(x: number, y: number): void; + /** + * 上辺の位置を設定する + * + * @param y 上辺のY軸位置 + */ + top(y: number): void; + /** + * 下辺の位置を設定する + * + * @param y 下辺のY軸位置 + */ + bottom(y: number): void; + /** + * 左辺の位置を設定 + * + * @param x 左辺のX軸位置 + */ + left(x: number): void; + /** + * 右辺の位置を設定 + * + * @param x 右辺のX軸位置 + */ + right(x: number): void; + /** + * X軸の中心位置を設定 + * + * @param x X軸の中心位置 + */ + centerX(x: number): void; + /** + * X軸の位置を設定 + * + * @param x X軸の位置 + */ + setX(x: number): void; + /** + * Y軸の中心位置を設定 + * + * @param y Y軸の中心位置 + */ + centerY(y: number): void; + /** + * Y軸の位置を設定する + * + * @param y Y軸の位置 + */ + setY(y: number): void; + /** + * レイアウト情報から位置を設定 + * + * @param layout レイアウト情報 + */ + setupFromLayout(layout: csmMap): void; + private _width; + private _height; +} +import * as $ from './cubismmodelmatrix'; +export declare namespace Live2DCubismFramework { + const CubismModelMatrix: typeof $.CubismModelMatrix; + type CubismModelMatrix = $.CubismModelMatrix; +} +//# sourceMappingURL=cubismmodelmatrix.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmodelmatrix.d.ts.map b/live2demo/Framework/math/cubismmodelmatrix.d.ts.map new file mode 100644 index 0000000..1b56457 --- /dev/null +++ b/live2demo/Framework/math/cubismmodelmatrix.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodelmatrix.d.ts","sourceRoot":"","sources":["../../src/math/cubismmodelmatrix.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAY,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACnD;;;;;OAKG;gBACS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM;IASlC;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMhC;;;OAGG;IACI,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMjC;;;;;OAKG;IACI,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9C;;;;;;;OAOG;IACI,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAK7C;;;;OAIG;IACI,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3B;;;;OAIG;IACI,MAAM,CAAC,CAAC,EAAE,MAAM;IAMvB;;;;OAIG;IACI,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;OAIG;IACI,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAM7B;;;;OAIG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAM/B;;;;OAIG;IACI,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;OAIG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAM/B;;;;OAIG;IACI,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;OAIG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAuD5D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;CACzB;AAGD,OAAO,KAAK,CAAC,MAAM,qBAAqB,CAAC;AAEzC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,iBAAiB,4BAAsB,CAAC;IACrD,KAAY,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;CACrD"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmodelmatrix.js b/live2demo/Framework/math/cubismmodelmatrix.js new file mode 100644 index 0000000..81fd559 --- /dev/null +++ b/live2demo/Framework/math/cubismmodelmatrix.js @@ -0,0 +1,242 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismModelMatrix = void 0; +var cubismmatrix44_1 = require("./cubismmatrix44"); +/** + * モデル座標設定用の4x4行列 + * + * モデル座標設定用の4x4行列クラス + */ +var CubismModelMatrix = /** @class */ (function (_super) { + __extends(CubismModelMatrix, _super); + /** + * コンストラクタ + * + * @param w 横幅 + * @param h 縦幅 + */ + function CubismModelMatrix(w, h) { + var _this = _super.call(this) || this; + _this._width = w !== undefined ? w : 0.0; + _this._height = h !== undefined ? h : 0.0; + _this.setHeight(2.0); + return _this; + } + /** + * 横幅を設定 + * + * @param w 横幅 + */ + CubismModelMatrix.prototype.setWidth = function (w) { + var scaleX = w / this._width; + var scaleY = scaleX; + this.scale(scaleX, scaleY); + }; + /** + * 縦幅を設定 + * @param h 縦幅 + */ + CubismModelMatrix.prototype.setHeight = function (h) { + var scaleX = h / this._height; + var scaleY = scaleX; + this.scale(scaleX, scaleY); + }; + /** + * 位置を設定 + * + * @param x X軸の位置 + * @param y Y軸の位置 + */ + CubismModelMatrix.prototype.setPosition = function (x, y) { + this.translate(x, y); + }; + /** + * 中心位置を設定 + * + * @param x X軸の中心位置 + * @param y Y軸の中心位置 + * + * @note widthかheightを設定したあとでないと、拡大率が正しく取得できないためずれる。 + */ + CubismModelMatrix.prototype.setCenterPosition = function (x, y) { + this.centerX(x); + this.centerY(y); + }; + /** + * 上辺の位置を設定する + * + * @param y 上辺のY軸位置 + */ + CubismModelMatrix.prototype.top = function (y) { + this.setY(y); + }; + /** + * 下辺の位置を設定する + * + * @param y 下辺のY軸位置 + */ + CubismModelMatrix.prototype.bottom = function (y) { + var h = this._height * this.getScaleY(); + this.translateY(y - h); + }; + /** + * 左辺の位置を設定 + * + * @param x 左辺のX軸位置 + */ + CubismModelMatrix.prototype.left = function (x) { + this.setX(x); + }; + /** + * 右辺の位置を設定 + * + * @param x 右辺のX軸位置 + */ + CubismModelMatrix.prototype.right = function (x) { + var w = this._width * this.getScaleX(); + this.translateX(x - w); + }; + /** + * X軸の中心位置を設定 + * + * @param x X軸の中心位置 + */ + CubismModelMatrix.prototype.centerX = function (x) { + var w = this._width * this.getScaleX(); + this.translateX(x - w / 2.0); + }; + /** + * X軸の位置を設定 + * + * @param x X軸の位置 + */ + CubismModelMatrix.prototype.setX = function (x) { + this.translateX(x); + }; + /** + * Y軸の中心位置を設定 + * + * @param y Y軸の中心位置 + */ + CubismModelMatrix.prototype.centerY = function (y) { + var h = this._height * this.getScaleY(); + this.translateY(y - h / 2.0); + }; + /** + * Y軸の位置を設定する + * + * @param y Y軸の位置 + */ + CubismModelMatrix.prototype.setY = function (y) { + this.translateY(y); + }; + /** + * レイアウト情報から位置を設定 + * + * @param layout レイアウト情報 + */ + CubismModelMatrix.prototype.setupFromLayout = function (layout) { + var keyWidth = 'width'; + var keyHeight = 'height'; + var keyX = 'x'; + var keyY = 'y'; + var keyCenterX = 'center_x'; + var keyCenterY = 'center_y'; + var keyTop = 'top'; + var keyBottom = 'bottom'; + var keyLeft = 'left'; + var keyRight = 'right'; + for (var ite = layout.begin(); ite.notEqual(layout.end()); ite.preIncrement()) { + var key = ite.ptr().first; + var value = ite.ptr().second; + if (key == keyWidth) { + this.setWidth(value); + } + else if (key == keyHeight) { + this.setHeight(value); + } + } + for (var ite = layout.begin(); ite.notEqual(layout.end()); ite.preIncrement()) { + var key = ite.ptr().first; + var value = ite.ptr().second; + if (key == keyX) { + this.setX(value); + } + else if (key == keyY) { + this.setY(value); + } + else if (key == keyCenterX) { + this.centerX(value); + } + else if (key == keyCenterY) { + this.centerY(value); + } + else if (key == keyTop) { + this.top(value); + } + else if (key == keyBottom) { + this.bottom(value); + } + else if (key == keyLeft) { + this.left(value); + } + else if (key == keyRight) { + this.right(value); + } + } + }; + return CubismModelMatrix; +}(cubismmatrix44_1.CubismMatrix44)); +exports.CubismModelMatrix = CubismModelMatrix; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmodelmatrix")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismModelMatrix = $.CubismModelMatrix; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmodelmatrix.js.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismmodelmatrix.js.map b/live2demo/Framework/math/cubismmodelmatrix.js.map new file mode 100644 index 0000000..7d70cb4 --- /dev/null +++ b/live2demo/Framework/math/cubismmodelmatrix.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodelmatrix.js","sourceRoot":"","sources":["../../src/math/cubismmodelmatrix.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,mDAAkD;AAElD;;;;GAIG;AACH;IAAuC,qCAAc;IACnD;;;;;OAKG;IACH,2BAAY,CAAU,EAAE,CAAU;QAAlC,YACE,iBAAO,SAMR;QAJC,KAAI,CAAC,MAAM,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACxC,KAAI,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAEzC,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;IACtB,CAAC;IAED;;;;OAIG;IACI,oCAAQ,GAAf,UAAgB,CAAS;QACvB,IAAM,MAAM,GAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACvC,IAAM,MAAM,GAAW,MAAM,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,qCAAS,GAAhB,UAAiB,CAAS;QACxB,IAAM,MAAM,GAAW,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACxC,IAAM,MAAM,GAAW,MAAM,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACI,uCAAW,GAAlB,UAAmB,CAAS,EAAE,CAAS;QACrC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACI,6CAAiB,GAAxB,UAAyB,CAAS,EAAE,CAAS;QAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,+BAAG,GAAV,UAAW,CAAS;QAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,kCAAM,GAAb,UAAc,CAAS;QACrB,IAAM,CAAC,GAAW,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAElD,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACI,gCAAI,GAAX,UAAY,CAAS;QACnB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,iCAAK,GAAZ,UAAa,CAAS;QACpB,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEzC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACI,mCAAO,GAAd,UAAe,CAAS;QACtB,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEzC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,gCAAI,GAAX,UAAY,CAAS;QACnB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,mCAAO,GAAd,UAAe,CAAS;QACtB,IAAM,CAAC,GAAW,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAElD,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,gCAAI,GAAX,UAAY,CAAS;QACnB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,2CAAe,GAAtB,UAAuB,MAA8B;QACnD,IAAM,QAAQ,GAAG,OAAO,CAAC;QACzB,IAAM,SAAS,GAAG,QAAQ,CAAC;QAC3B,IAAM,IAAI,GAAG,GAAG,CAAC;QACjB,IAAM,IAAI,GAAG,GAAG,CAAC;QACjB,IAAM,UAAU,GAAG,UAAU,CAAC;QAC9B,IAAM,UAAU,GAAG,UAAU,CAAC;QAC9B,IAAM,MAAM,GAAG,KAAK,CAAC;QACrB,IAAM,SAAS,GAAG,QAAQ,CAAC;QAC3B,IAAM,OAAO,GAAG,MAAM,CAAC;QACvB,IAAM,QAAQ,GAAG,OAAO,CAAC;QAEzB,KACE,IAAM,GAAG,GAA6B,MAAM,CAAC,KAAK,EAAE,EACpD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAC1B,GAAG,CAAC,YAAY,EAAE,EAClB;YACA,IAAM,GAAG,GAAW,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;YACpC,IAAM,KAAK,GAAW,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;YAEvC,IAAI,GAAG,IAAI,QAAQ,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACtB;iBAAM,IAAI,GAAG,IAAI,SAAS,EAAE;gBAC3B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aACvB;SACF;QAED,KACE,IAAM,GAAG,GAA6B,MAAM,CAAC,KAAK,EAAE,EACpD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAC1B,GAAG,CAAC,YAAY,EAAE,EAClB;YACA,IAAM,GAAG,GAAW,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;YACpC,IAAM,KAAK,GAAW,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;YAEvC,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClB;iBAAM,IAAI,GAAG,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClB;iBAAM,IAAI,GAAG,IAAI,UAAU,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACrB;iBAAM,IAAI,GAAG,IAAI,UAAU,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACrB;iBAAM,IAAI,GAAG,IAAI,MAAM,EAAE;gBACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACjB;iBAAM,IAAI,GAAG,IAAI,SAAS,EAAE;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACpB;iBAAM,IAAI,GAAG,IAAI,OAAO,EAAE;gBACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClB;iBAAM,IAAI,GAAG,IAAI,QAAQ,EAAE;gBAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACnB;SACF;IACH,CAAC;IAIH,wBAAC;AAAD,CAAC,AA1MD,CAAuC,+BAAc,GA0MpD;AA1MY,8CAAiB;AA4M9B,0CAA0C;AAC1C,qDAAyC;AACzC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAGrC;AAHD,WAAiB,qBAAqB;IACvB,uCAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;AAEvD,CAAC,EAHgB,qBAAqB,qCAArB,qBAAqB,QAGrC"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismtargetpoint.d.ts b/live2demo/Framework/math/cubismtargetpoint.d.ts new file mode 100644 index 0000000..cb2ba41 --- /dev/null +++ b/live2demo/Framework/math/cubismtargetpoint.d.ts @@ -0,0 +1,54 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +/** + * 顔の向きの制御機能 + * + * 顔の向きの制御機能を提供するクラス。 + */ +export declare class CubismTargetPoint { + /** + * コンストラクタ + */ + constructor(); + /** + * 更新処理 + */ + update(deltaTimeSeconds: number): void; + /** + * X軸の顔の向きの値を取得 + * + * @return X軸の顔の向きの値(-1.0 ~ 1.0) + */ + getX(): number; + /** + * Y軸の顔の向きの値を取得 + * + * @return Y軸の顔の向きの値(-1.0 ~ 1.0) + */ + getY(): number; + /** + * 顔の向きの目標値を設定 + * + * @param x X軸の顔の向きの値(-1.0 ~ 1.0) + * @param y Y軸の顔の向きの値(-1.0 ~ 1.0) + */ + set(x: number, y: number): void; + private _faceTargetX; + private _faceTargetY; + private _faceX; + private _faceY; + private _faceVX; + private _faceVY; + private _lastTimeSeconds; + private _userTimeSeconds; +} +import * as $ from './cubismtargetpoint'; +export declare namespace Live2DCubismFramework { + const CubismTargetPoint: typeof $.CubismTargetPoint; + type CubismTargetPoint = $.CubismTargetPoint; +} +//# sourceMappingURL=cubismtargetpoint.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismtargetpoint.d.ts.map b/live2demo/Framework/math/cubismtargetpoint.d.ts.map new file mode 100644 index 0000000..ed9b614 --- /dev/null +++ b/live2demo/Framework/math/cubismtargetpoint.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismtargetpoint.d.ts","sourceRoot":"","sources":["../../src/math/cubismtargetpoint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;;IAYH;;OAEG;IACI,MAAM,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAwF7C;;;;OAIG;IACI,IAAI,IAAI,MAAM;IAIrB;;;;OAIG;IACI,IAAI,IAAI,MAAM;IAIrB;;;;;OAKG;IACI,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAAS;CAClC;AAGD,OAAO,KAAK,CAAC,MAAM,qBAAqB,CAAC;AAEzC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,iBAAiB,4BAAsB,CAAC;IACrD,KAAY,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;CACrD"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismtargetpoint.js b/live2demo/Framework/math/cubismtargetpoint.js new file mode 100644 index 0000000..6b02e7f --- /dev/null +++ b/live2demo/Framework/math/cubismtargetpoint.js @@ -0,0 +1,161 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismTargetPoint = void 0; +var cubismmath_1 = require("./cubismmath"); +var FrameRate = 30; +var Epsilon = 0.01; +/** + * 顔の向きの制御機能 + * + * 顔の向きの制御機能を提供するクラス。 + */ +var CubismTargetPoint = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismTargetPoint() { + this._faceTargetX = 0.0; + this._faceTargetY = 0.0; + this._faceX = 0.0; + this._faceY = 0.0; + this._faceVX = 0.0; + this._faceVY = 0.0; + this._lastTimeSeconds = 0.0; + this._userTimeSeconds = 0.0; + } + /** + * 更新処理 + */ + CubismTargetPoint.prototype.update = function (deltaTimeSeconds) { + // デルタ時間を加算する + this._userTimeSeconds += deltaTimeSeconds; + // 首を中央から左右に振るときの平均的な速さは 秒速度。加速・減速を考慮して、その2倍を最高速度とする + // 顔の振り具合を、中央(0.0)から、左右は(+-1.0)とする + var faceParamMaxV = 40.0 / 10.0; // 7.5秒間に40分移動(5.3/sc) + var maxV = (faceParamMaxV * 1.0) / FrameRate; // 1frameあたりに変化できる速度の上限 + if (this._lastTimeSeconds == 0.0) { + this._lastTimeSeconds = this._userTimeSeconds; + return; + } + var deltaTimeWeight = (this._userTimeSeconds - this._lastTimeSeconds) * FrameRate; + this._lastTimeSeconds = this._userTimeSeconds; + // 最高速度になるまでの時間を + var timeToMaxSpeed = 0.15; + var frameToMaxSpeed = timeToMaxSpeed * FrameRate; // sec * frame/sec + var maxA = (deltaTimeWeight * maxV) / frameToMaxSpeed; // 1frameあたりの加速度 + // 目指す向きは、(dx, dy)方向のベクトルとなる + var dx = this._faceTargetX - this._faceX; + var dy = this._faceTargetY - this._faceY; + if (cubismmath_1.CubismMath.abs(dx) <= Epsilon && cubismmath_1.CubismMath.abs(dy) <= Epsilon) { + return; // 変化なし + } + // 速度の最大よりも大きい場合は、速度を落とす + var d = cubismmath_1.CubismMath.sqrt(dx * dx + dy * dy); + // 進行方向の最大速度ベクトル + var vx = (maxV * dx) / d; + var vy = (maxV * dy) / d; + // 現在の速度から、新規速度への変化(加速度)を求める + var ax = vx - this._faceVX; + var ay = vy - this._faceVY; + var a = cubismmath_1.CubismMath.sqrt(ax * ax + ay * ay); + // 加速のとき + if (a < -maxA || a > maxA) { + ax *= maxA / a; + ay *= maxA / a; + } + // 加速度を元の速度に足して、新速度とする + this._faceVX += ax; + this._faceVY += ay; + // 目的の方向に近づいたとき、滑らかに減速するための処理 + // 設定された加速度で止まる事の出来る距離と速度の関係から + // 現在とりうる最高速度を計算し、それ以上の時は速度を落とす + // ※本来、人間は筋力で力(加速度)を調整できるため、より自由度が高いが、簡単な処理で済ませている + { + // 加速度、速度、距離の関係式。 + // 2 6 2 3 + // sqrt(a t + 16 a h t - 8 a h) - a t + // v = -------------------------------------- + // 2 + // 4 t - 2 + // (t=1) + // 時刻tは、あらかじめ加速度、速度を1/60(フレームレート、単位なし)で + // 考えているので、t=1として消してよい(※未検証) + var maxV_1 = 0.5 * + (cubismmath_1.CubismMath.sqrt(maxA * maxA + 16.0 * maxA * d - 8.0 * maxA * d) - + maxA); + var curV = cubismmath_1.CubismMath.sqrt(this._faceVX * this._faceVX + this._faceVY * this._faceVY); + if (curV > maxV_1) { + // 現在の速度 > 最高速度のとき、最高速度まで減速 + this._faceVX *= maxV_1 / curV; + this._faceVY *= maxV_1 / curV; + } + } + this._faceX += this._faceVX; + this._faceY += this._faceVY; + }; + /** + * X軸の顔の向きの値を取得 + * + * @return X軸の顔の向きの値(-1.0 ~ 1.0) + */ + CubismTargetPoint.prototype.getX = function () { + return this._faceX; + }; + /** + * Y軸の顔の向きの値を取得 + * + * @return Y軸の顔の向きの値(-1.0 ~ 1.0) + */ + CubismTargetPoint.prototype.getY = function () { + return this._faceY; + }; + /** + * 顔の向きの目標値を設定 + * + * @param x X軸の顔の向きの値(-1.0 ~ 1.0) + * @param y Y軸の顔の向きの値(-1.0 ~ 1.0) + */ + CubismTargetPoint.prototype.set = function (x, y) { + this._faceTargetX = x; + this._faceTargetY = y; + }; + return CubismTargetPoint; +}()); +exports.CubismTargetPoint = CubismTargetPoint; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismtargetpoint")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismTargetPoint = $.CubismTargetPoint; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismtargetpoint.js.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismtargetpoint.js.map b/live2demo/Framework/math/cubismtargetpoint.js.map new file mode 100644 index 0000000..a038521 --- /dev/null +++ b/live2demo/Framework/math/cubismtargetpoint.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismtargetpoint.js","sourceRoot":"","sources":["../../src/math/cubismtargetpoint.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismvector2.d.ts b/live2demo/Framework/math/cubismvector2.d.ts new file mode 100644 index 0000000..68de11f --- /dev/null +++ b/live2demo/Framework/math/cubismvector2.d.ts @@ -0,0 +1,111 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +/** + * 2次元ベクトル型 + * + * 2次元ベクトル型の機能を提供する。 + */ +export declare class CubismVector2 { + x?: number; + y?: number; + /** + * コンストラクタ + */ + constructor(x?: number, y?: number); + /** + * ベクトルの加算 + * + * @param vector2 加算するベクトル値 + * @return 加算結果 ベクトル値 + */ + add(vector2: CubismVector2): CubismVector2; + /** + * ベクトルの減算 + * + * @param vector2 減算するベクトル値 + * @return 減算結果 ベクトル値 + */ + substract(vector2: CubismVector2): CubismVector2; + /** + * ベクトルの乗算 + * + * @param vector2 乗算するベクトル値 + * @return 乗算結果 ベクトル値 + */ + multiply(vector2: CubismVector2): CubismVector2; + /** + * ベクトルの乗算(スカラー) + * + * @param scalar 乗算するスカラー値 + * @return 乗算結果 ベクトル値 + */ + multiplyByScaler(scalar: number): CubismVector2; + /** + * ベクトルの除算 + * + * @param vector2 除算するベクトル値 + * @return 除算結果 ベクトル値 + */ + division(vector2: CubismVector2): CubismVector2; + /** + * ベクトルの除算(スカラー) + * + * @param scalar 除算するスカラー値 + * @return 除算結果 ベクトル値 + */ + divisionByScalar(scalar: number): CubismVector2; + /** + * ベクトルの長さを取得する + * + * @return ベクトルの長さ + */ + getLength(): number; + /** + * ベクトルの距離の取得 + * + * @param a 点 + * @return ベクトルの距離 + */ + getDistanceWith(a: CubismVector2): number; + /** + * ドット積の計算 + * + * @param a 値 + * @return 結果 + */ + dot(a: CubismVector2): number; + /** + * 正規化の適用 + */ + normalize(): void; + /** + * 等しさの確認(等しいか?) + * + * 値が等しいか? + * + * @param rhs 確認する値 + * @return true 値は等しい + * @return false 値は等しくない + */ + isEqual(rhs: CubismVector2): boolean; + /** + * 等しさの確認(等しくないか?) + * + * 値が等しくないか? + * + * @param rhs 確認する値 + * @return true 値は等しくない + * @return false 値は等しい + */ + isNotEqual(rhs: CubismVector2): boolean; +} +import * as $ from './cubismvector2'; +export declare namespace Live2DCubismFramework { + const CubismVector2: typeof $.CubismVector2; + type CubismVector2 = $.CubismVector2; +} +//# sourceMappingURL=cubismvector2.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismvector2.d.ts.map b/live2demo/Framework/math/cubismvector2.d.ts.map new file mode 100644 index 0000000..75deb26 --- /dev/null +++ b/live2demo/Framework/math/cubismvector2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismvector2.d.ts","sourceRoot":"","sources":["../../src/math/cubismvector2.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,qBAAa,aAAa;IAKf,CAAC,CAAC,EAAE,MAAM;IACV,CAAC,CAAC,EAAE,MAAM;IALnB;;OAEG;gBAEM,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM;IAOnB;;;;;OAKG;IACI,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa;IAOjD;;;;;OAKG;IACI,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa;IAOvD;;;;;OAKG;IACI,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa;IAOtD;;;;;OAKG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAItD;;;;;OAKG;IACI,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa;IAOtD;;;;;OAKG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAItD;;;;OAIG;IACI,SAAS,IAAI,MAAM;IAI1B;;;;;OAKG;IACI,eAAe,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM;IAMhD;;;;;OAKG;IACI,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM;IAIpC;;OAEG;IACI,SAAS,IAAI,IAAI;IAOxB;;;;;;;;OAQG;IACI,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI3C;;;;;;;;OAQG;IACI,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;CAG/C;AAGD,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAC;AAErC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,aAAa,wBAAkB,CAAC;IAC7C,KAAY,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;CAC7C"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismvector2.js b/live2demo/Framework/math/cubismvector2.js new file mode 100644 index 0000000..8a13a3d --- /dev/null +++ b/live2demo/Framework/math/cubismvector2.js @@ -0,0 +1,182 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismVector2 = void 0; +/** + * 2次元ベクトル型 + * + * 2次元ベクトル型の機能を提供する。 + */ +var CubismVector2 = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismVector2(x, y) { + this.x = x; + this.y = y; + this.x = x == undefined ? 0.0 : x; + this.y = y == undefined ? 0.0 : y; + } + /** + * ベクトルの加算 + * + * @param vector2 加算するベクトル値 + * @return 加算結果 ベクトル値 + */ + CubismVector2.prototype.add = function (vector2) { + var ret = new CubismVector2(0.0, 0.0); + ret.x = this.x + vector2.x; + ret.y = this.y + vector2.y; + return ret; + }; + /** + * ベクトルの減算 + * + * @param vector2 減算するベクトル値 + * @return 減算結果 ベクトル値 + */ + CubismVector2.prototype.substract = function (vector2) { + var ret = new CubismVector2(0.0, 0.0); + ret.x = this.x - vector2.x; + ret.y = this.y - vector2.y; + return ret; + }; + /** + * ベクトルの乗算 + * + * @param vector2 乗算するベクトル値 + * @return 乗算結果 ベクトル値 + */ + CubismVector2.prototype.multiply = function (vector2) { + var ret = new CubismVector2(0.0, 0.0); + ret.x = this.x * vector2.x; + ret.y = this.y * vector2.y; + return ret; + }; + /** + * ベクトルの乗算(スカラー) + * + * @param scalar 乗算するスカラー値 + * @return 乗算結果 ベクトル値 + */ + CubismVector2.prototype.multiplyByScaler = function (scalar) { + return this.multiply(new CubismVector2(scalar, scalar)); + }; + /** + * ベクトルの除算 + * + * @param vector2 除算するベクトル値 + * @return 除算結果 ベクトル値 + */ + CubismVector2.prototype.division = function (vector2) { + var ret = new CubismVector2(0.0, 0.0); + ret.x = this.x / vector2.x; + ret.y = this.y / vector2.y; + return ret; + }; + /** + * ベクトルの除算(スカラー) + * + * @param scalar 除算するスカラー値 + * @return 除算結果 ベクトル値 + */ + CubismVector2.prototype.divisionByScalar = function (scalar) { + return this.division(new CubismVector2(scalar, scalar)); + }; + /** + * ベクトルの長さを取得する + * + * @return ベクトルの長さ + */ + CubismVector2.prototype.getLength = function () { + return Math.sqrt(this.x * this.x + this.y * this.y); + }; + /** + * ベクトルの距離の取得 + * + * @param a 点 + * @return ベクトルの距離 + */ + CubismVector2.prototype.getDistanceWith = function (a) { + return Math.sqrt((this.x - a.x) * (this.x - a.x) + (this.y - a.y) * (this.y - a.y)); + }; + /** + * ドット積の計算 + * + * @param a 値 + * @return 結果 + */ + CubismVector2.prototype.dot = function (a) { + return this.x * a.x + this.y * a.y; + }; + /** + * 正規化の適用 + */ + CubismVector2.prototype.normalize = function () { + var length = Math.pow(this.x * this.x + this.y * this.y, 0.5); + this.x = this.x / length; + this.y = this.y / length; + }; + /** + * 等しさの確認(等しいか?) + * + * 値が等しいか? + * + * @param rhs 確認する値 + * @return true 値は等しい + * @return false 値は等しくない + */ + CubismVector2.prototype.isEqual = function (rhs) { + return this.x == rhs.x && this.y == rhs.y; + }; + /** + * 等しさの確認(等しくないか?) + * + * 値が等しくないか? + * + * @param rhs 確認する値 + * @return true 値は等しくない + * @return false 値は等しい + */ + CubismVector2.prototype.isNotEqual = function (rhs) { + return !this.isEqual(rhs); + }; + return CubismVector2; +}()); +exports.CubismVector2 = CubismVector2; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismvector2")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismVector2 = $.CubismVector2; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismvector2.js.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismvector2.js.map b/live2demo/Framework/math/cubismvector2.js.map new file mode 100644 index 0000000..c88d856 --- /dev/null +++ b/live2demo/Framework/math/cubismvector2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismvector2.js","sourceRoot":"","sources":["../../src/math/cubismvector2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismviewmatrix.d.ts b/live2demo/Framework/math/cubismviewmatrix.d.ts new file mode 100644 index 0000000..b3002b3 --- /dev/null +++ b/live2demo/Framework/math/cubismviewmatrix.d.ts @@ -0,0 +1,140 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismMatrix44 } from './cubismmatrix44'; +/** + * カメラの位置変更に使うと便利な4x4行列 + * + * カメラの位置変更に使うと便利な4x4行列のクラス。 + */ +export declare class CubismViewMatrix extends CubismMatrix44 { + /** + * コンストラクタ + */ + constructor(); + /** + * 移動を調整 + * + * @param x X軸の移動量 + * @param y Y軸の移動量 + */ + adjustTranslate(x: number, y: number): void; + /** + * 拡大率を調整 + * + * @param cx 拡大を行うX軸の中心位置 + * @param cy 拡大を行うY軸の中心位置 + * @param scale 拡大率 + */ + adjustScale(cx: number, cy: number, scale: number): void; + /** + * デバイスに対応する論理座養生の範囲の設定 + * + * @param left 左辺のX軸の位置 + * @param right 右辺のX軸の位置 + * @param bottom 下辺のY軸の位置 + * @param top 上辺のY軸の位置 + */ + setScreenRect(left: number, right: number, bottom: number, top: number): void; + /** + * デバイスに対応する論理座標上の移動可能範囲の設定 + * @param left 左辺のX軸の位置 + * @param right 右辺のX軸の位置 + * @param bottom 下辺のY軸の位置 + * @param top 上辺のY軸の位置 + */ + setMaxScreenRect(left: number, right: number, bottom: number, top: number): void; + /** + * 最大拡大率の設定 + * @param maxScale 最大拡大率 + */ + setMaxScale(maxScale: number): void; + /** + * 最小拡大率の設定 + * @param minScale 最小拡大率 + */ + setMinScale(minScale: number): void; + /** + * 最大拡大率の取得 + * @return 最大拡大率 + */ + getMaxScale(): number; + /** + * 最小拡大率の取得 + * @return 最小拡大率 + */ + getMinScale(): number; + /** + * 拡大率が最大になっているかを確認する + * + * @return true 拡大率は最大 + * @return false 拡大率は最大ではない + */ + isMaxScale(): boolean; + /** + * 拡大率が最小になっているかを確認する + * + * @return true 拡大率は最小 + * @return false 拡大率は最小ではない + */ + isMinScale(): boolean; + /** + * デバイスに対応する論理座標の左辺のX軸位置を取得する + * @return デバイスに対応する論理座標の左辺のX軸位置 + */ + getScreenLeft(): number; + /** + * デバイスに対応する論理座標の右辺のX軸位置を取得する + * @return デバイスに対応する論理座標の右辺のX軸位置 + */ + getScreenRight(): number; + /** + * デバイスに対応する論理座標の下辺のY軸位置を取得する + * @return デバイスに対応する論理座標の下辺のY軸位置 + */ + getScreenBottom(): number; + /** + * デバイスに対応する論理座標の上辺のY軸位置を取得する + * @return デバイスに対応する論理座標の上辺のY軸位置 + */ + getScreenTop(): number; + /** + * 左辺のX軸位置の最大値の取得 + * @return 左辺のX軸位置の最大値 + */ + getMaxLeft(): number; + /** + * 右辺のX軸位置の最大値の取得 + * @return 右辺のX軸位置の最大値 + */ + getMaxRight(): number; + /** + * 下辺のY軸位置の最大値の取得 + * @return 下辺のY軸位置の最大値 + */ + getMaxBottom(): number; + /** + * 上辺のY軸位置の最大値の取得 + * @return 上辺のY軸位置の最大値 + */ + getMaxTop(): number; + private _screenLeft; + private _screenRight; + private _screenTop; + private _screenBottom; + private _maxLeft; + private _maxRight; + private _maxTop; + private _maxBottom; + private _maxScale; + private _minScale; +} +import * as $ from './cubismviewmatrix'; +export declare namespace Live2DCubismFramework { + const CubismViewMatrix: typeof $.CubismViewMatrix; + type CubismViewMatrix = $.CubismViewMatrix; +} +//# sourceMappingURL=cubismviewmatrix.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismviewmatrix.d.ts.map b/live2demo/Framework/math/cubismviewmatrix.d.ts.map new file mode 100644 index 0000000..5f978c6 --- /dev/null +++ b/live2demo/Framework/math/cubismviewmatrix.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismviewmatrix.d.ts","sourceRoot":"","sources":["../../src/math/cubismviewmatrix.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD;;OAEG;;IAeH;;;;;OAKG;IACI,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IA0ClD;;;;;;OAMG;IACI,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA8E/D;;;;;;;OAOG;IACI,aAAa,CAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,IAAI;IAOP;;;;;;OAMG;IACI,gBAAgB,CACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,IAAI;IAOP;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI1C;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI1C;;;OAGG;IACI,WAAW,IAAI,MAAM;IAI5B;;;OAGG;IACI,WAAW,IAAI,MAAM;IAI5B;;;;;OAKG;IACI,UAAU,IAAI,OAAO;IAI5B;;;;;OAKG;IACI,UAAU,IAAI,OAAO;IAI5B;;;OAGG;IACI,aAAa,IAAI,MAAM;IAI9B;;;OAGG;IACI,cAAc,IAAI,MAAM;IAI/B;;;OAGG;IACI,eAAe,IAAI,MAAM;IAIhC;;;OAGG;IACI,YAAY,IAAI,MAAM;IAI7B;;;OAGG;IACI,UAAU,IAAI,MAAM;IAI3B;;;OAGG;IACI,WAAW,IAAI,MAAM;IAI5B;;;OAGG;IACI,YAAY,IAAI,MAAM;IAI7B;;;OAGG;IACI,SAAS,IAAI,MAAM;IAI1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;CAC3B;AAGD,OAAO,KAAK,CAAC,MAAM,oBAAoB,CAAC;AAExC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,gBAAgB,2BAAqB,CAAC;IACnD,KAAY,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;CACnD"} \ No newline at end of file diff --git a/live2demo/Framework/math/cubismviewmatrix.js b/live2demo/Framework/math/cubismviewmatrix.js new file mode 100644 index 0000000..f9d2b03 --- /dev/null +++ b/live2demo/Framework/math/cubismviewmatrix.js @@ -0,0 +1,331 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismViewMatrix = void 0; +var cubismmatrix44_1 = require("./cubismmatrix44"); +/** + * カメラの位置変更に使うと便利な4x4行列 + * + * カメラの位置変更に使うと便利な4x4行列のクラス。 + */ +var CubismViewMatrix = /** @class */ (function (_super) { + __extends(CubismViewMatrix, _super); + /** + * コンストラクタ + */ + function CubismViewMatrix() { + var _this = _super.call(this) || this; + _this._screenLeft = 0.0; + _this._screenRight = 0.0; + _this._screenTop = 0.0; + _this._screenBottom = 0.0; + _this._maxLeft = 0.0; + _this._maxRight = 0.0; + _this._maxTop = 0.0; + _this._maxBottom = 0.0; + _this._maxScale = 0.0; + _this._minScale = 0.0; + return _this; + } + /** + * 移動を調整 + * + * @param x X軸の移動量 + * @param y Y軸の移動量 + */ + CubismViewMatrix.prototype.adjustTranslate = function (x, y) { + if (this._tr[0] * this._maxLeft + (this._tr[12] + x) > this._screenLeft) { + x = this._screenLeft - this._tr[0] * this._maxLeft - this._tr[12]; + } + if (this._tr[0] * this._maxRight + (this._tr[12] + x) < this._screenRight) { + x = this._screenRight - this._tr[0] * this._maxRight - this._tr[12]; + } + if (this._tr[5] * this._maxTop + (this._tr[13] + y) < this._screenTop) { + y = this._screenTop - this._tr[5] * this._maxTop - this._tr[13]; + } + if (this._tr[5] * this._maxBottom + (this._tr[13] + y) > + this._screenBottom) { + y = this._screenBottom - this._tr[5] * this._maxBottom - this._tr[13]; + } + var tr1 = new Float32Array([ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + x, + y, + 0.0, + 1.0 + ]); + cubismmatrix44_1.CubismMatrix44.multiply(tr1, this._tr, this._tr); + }; + /** + * 拡大率を調整 + * + * @param cx 拡大を行うX軸の中心位置 + * @param cy 拡大を行うY軸の中心位置 + * @param scale 拡大率 + */ + CubismViewMatrix.prototype.adjustScale = function (cx, cy, scale) { + var maxScale = this.getMaxScale(); + var minScale = this.getMinScale(); + var targetScale = scale * this._tr[0]; + if (targetScale < minScale) { + if (this._tr[0] > 0.0) { + scale = minScale / this._tr[0]; + } + } + else if (targetScale > maxScale) { + if (this._tr[0] > 0.0) { + scale = maxScale / this._tr[0]; + } + } + var tr1 = new Float32Array([ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + cx, + cy, + 0.0, + 1.0 + ]); + var tr2 = new Float32Array([ + scale, + 0.0, + 0.0, + 0.0, + 0.0, + scale, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ]); + var tr3 = new Float32Array([ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + -cx, + -cy, + 0.0, + 1.0 + ]); + cubismmatrix44_1.CubismMatrix44.multiply(tr3, this._tr, this._tr); + cubismmatrix44_1.CubismMatrix44.multiply(tr2, this._tr, this._tr); + cubismmatrix44_1.CubismMatrix44.multiply(tr1, this._tr, this._tr); + }; + /** + * デバイスに対応する論理座養生の範囲の設定 + * + * @param left 左辺のX軸の位置 + * @param right 右辺のX軸の位置 + * @param bottom 下辺のY軸の位置 + * @param top 上辺のY軸の位置 + */ + CubismViewMatrix.prototype.setScreenRect = function (left, right, bottom, top) { + this._screenLeft = left; + this._screenRight = right; + this._screenBottom = bottom; + this._screenTop = top; + }; + /** + * デバイスに対応する論理座標上の移動可能範囲の設定 + * @param left 左辺のX軸の位置 + * @param right 右辺のX軸の位置 + * @param bottom 下辺のY軸の位置 + * @param top 上辺のY軸の位置 + */ + CubismViewMatrix.prototype.setMaxScreenRect = function (left, right, bottom, top) { + this._maxLeft = left; + this._maxRight = right; + this._maxTop = top; + this._maxBottom = bottom; + }; + /** + * 最大拡大率の設定 + * @param maxScale 最大拡大率 + */ + CubismViewMatrix.prototype.setMaxScale = function (maxScale) { + this._maxScale = maxScale; + }; + /** + * 最小拡大率の設定 + * @param minScale 最小拡大率 + */ + CubismViewMatrix.prototype.setMinScale = function (minScale) { + this._minScale = minScale; + }; + /** + * 最大拡大率の取得 + * @return 最大拡大率 + */ + CubismViewMatrix.prototype.getMaxScale = function () { + return this._maxScale; + }; + /** + * 最小拡大率の取得 + * @return 最小拡大率 + */ + CubismViewMatrix.prototype.getMinScale = function () { + return this._minScale; + }; + /** + * 拡大率が最大になっているかを確認する + * + * @return true 拡大率は最大 + * @return false 拡大率は最大ではない + */ + CubismViewMatrix.prototype.isMaxScale = function () { + return this.getScaleX() >= this._maxScale; + }; + /** + * 拡大率が最小になっているかを確認する + * + * @return true 拡大率は最小 + * @return false 拡大率は最小ではない + */ + CubismViewMatrix.prototype.isMinScale = function () { + return this.getScaleX() <= this._minScale; + }; + /** + * デバイスに対応する論理座標の左辺のX軸位置を取得する + * @return デバイスに対応する論理座標の左辺のX軸位置 + */ + CubismViewMatrix.prototype.getScreenLeft = function () { + return this._screenLeft; + }; + /** + * デバイスに対応する論理座標の右辺のX軸位置を取得する + * @return デバイスに対応する論理座標の右辺のX軸位置 + */ + CubismViewMatrix.prototype.getScreenRight = function () { + return this._screenRight; + }; + /** + * デバイスに対応する論理座標の下辺のY軸位置を取得する + * @return デバイスに対応する論理座標の下辺のY軸位置 + */ + CubismViewMatrix.prototype.getScreenBottom = function () { + return this._screenBottom; + }; + /** + * デバイスに対応する論理座標の上辺のY軸位置を取得する + * @return デバイスに対応する論理座標の上辺のY軸位置 + */ + CubismViewMatrix.prototype.getScreenTop = function () { + return this._screenTop; + }; + /** + * 左辺のX軸位置の最大値の取得 + * @return 左辺のX軸位置の最大値 + */ + CubismViewMatrix.prototype.getMaxLeft = function () { + return this._maxLeft; + }; + /** + * 右辺のX軸位置の最大値の取得 + * @return 右辺のX軸位置の最大値 + */ + CubismViewMatrix.prototype.getMaxRight = function () { + return this._maxRight; + }; + /** + * 下辺のY軸位置の最大値の取得 + * @return 下辺のY軸位置の最大値 + */ + CubismViewMatrix.prototype.getMaxBottom = function () { + return this._maxBottom; + }; + /** + * 上辺のY軸位置の最大値の取得 + * @return 上辺のY軸位置の最大値 + */ + CubismViewMatrix.prototype.getMaxTop = function () { + return this._maxTop; + }; + return CubismViewMatrix; +}(cubismmatrix44_1.CubismMatrix44)); +exports.CubismViewMatrix = CubismViewMatrix; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismviewmatrix")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismViewMatrix = $.CubismViewMatrix; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismviewmatrix.js.map \ No newline at end of file diff --git a/live2demo/Framework/math/cubismviewmatrix.js.map b/live2demo/Framework/math/cubismviewmatrix.js.map new file mode 100644 index 0000000..102000d --- /dev/null +++ b/live2demo/Framework/math/cubismviewmatrix.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismviewmatrix.js","sourceRoot":"","sources":["../../src/math/cubismviewmatrix.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmoc.d.ts b/live2demo/Framework/model/cubismmoc.d.ts new file mode 100644 index 0000000..6e299f7 --- /dev/null +++ b/live2demo/Framework/model/cubismmoc.d.ts @@ -0,0 +1,63 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismModel } from './cubismmodel'; +/** + * Mocデータの管理 + * + * Mocデータの管理を行うクラス。 + */ +export declare class CubismMoc { + /** + * Mocデータの作成 + */ + static create(mocBytes: ArrayBuffer, shouldCheckMocConsistency: boolean): CubismMoc; + /** + * Mocデータを削除 + * + * Mocデータを削除する + */ + static delete(moc: CubismMoc): void; + /** + * モデルを作成する + * + * @return Mocデータから作成されたモデル + */ + createModel(): CubismModel; + /** + * モデルを削除する + */ + deleteModel(model: CubismModel): void; + /** + * コンストラクタ + */ + private constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * 最新の.moc3 Versionを取得 + */ + getLatestMocVersion(): number; + /** + * 読み込んだモデルの.moc3 Versionを取得 + */ + getMocVersion(): number; + /** + * .moc3 の整合性を検証する + */ + static hasMocConsistency(mocBytes: ArrayBuffer): boolean; + _moc: Live2DCubismCore.Moc; + _modelCount: number; + _mocVersion: number; +} +import * as $ from './cubismmoc'; +export declare namespace Live2DCubismFramework { + const CubismMoc: typeof $.CubismMoc; + type CubismMoc = $.CubismMoc; +} +//# sourceMappingURL=cubismmoc.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmoc.d.ts.map b/live2demo/Framework/model/cubismmoc.d.ts.map new file mode 100644 index 0000000..00931d0 --- /dev/null +++ b/live2demo/Framework/model/cubismmoc.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmoc.d.ts","sourceRoot":"","sources":["../../src/model/cubismmoc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,SAAS;IACpB;;OAEG;WACW,MAAM,CAClB,QAAQ,EAAE,WAAW,EACrB,yBAAyB,EAAE,OAAO,GACjC,SAAS;IA4BZ;;;;OAIG;WACW,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAM1C;;;;OAIG;IACH,WAAW,IAAI,WAAW;IAiB1B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAQrC;;OAEG;IACH,OAAO;IAMP;;OAEG;IACI,OAAO,IAAI,IAAI;IAOtB;;OAEG;IACI,mBAAmB,IAAI,MAAM;IAIpC;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B;;OAEG;WACW,iBAAiB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO;IAM/D,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,SAAS,oBAAc,CAAC;IACrC,KAAY,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;CACrC"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmoc.js b/live2demo/Framework/model/cubismmoc.js new file mode 100644 index 0000000..e9b2e43 --- /dev/null +++ b/live2demo/Framework/model/cubismmoc.js @@ -0,0 +1,142 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismMoc = void 0; +var cubismdebug_1 = require("../utils/cubismdebug"); +var cubismmodel_1 = require("./cubismmodel"); +/** + * Mocデータの管理 + * + * Mocデータの管理を行うクラス。 + */ +var CubismMoc = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismMoc(moc) { + this._moc = moc; + this._modelCount = 0; + this._mocVersion = 0; + } + /** + * Mocデータの作成 + */ + CubismMoc.create = function (mocBytes, shouldCheckMocConsistency) { + var cubismMoc = null; + if (shouldCheckMocConsistency) { + // .moc3の整合性を確認 + var consistency = this.hasMocConsistency(mocBytes); + if (!consistency) { + // 整合性が確認できなければ処理しない + (0, cubismdebug_1.CubismLogError)("Inconsistent MOC3."); + return cubismMoc; + } + } + var moc = Live2DCubismCore.Moc.fromArrayBuffer(mocBytes); + if (moc) { + cubismMoc = new CubismMoc(moc); + cubismMoc._mocVersion = Live2DCubismCore.Version.csmGetMocVersion(moc, mocBytes); + } + return cubismMoc; + }; + /** + * Mocデータを削除 + * + * Mocデータを削除する + */ + CubismMoc.delete = function (moc) { + moc._moc._release(); + moc._moc = null; + moc = null; + }; + /** + * モデルを作成する + * + * @return Mocデータから作成されたモデル + */ + CubismMoc.prototype.createModel = function () { + var cubismModel = null; + var model = Live2DCubismCore.Model.fromMoc(this._moc); + if (model) { + cubismModel = new cubismmodel_1.CubismModel(model); + cubismModel.initialize(); + ++this._modelCount; + } + return cubismModel; + }; + /** + * モデルを削除する + */ + CubismMoc.prototype.deleteModel = function (model) { + if (model != null) { + model.release(); + model = null; + --this._modelCount; + } + }; + /** + * デストラクタ相当の処理 + */ + CubismMoc.prototype.release = function () { + (0, cubismdebug_1.CSM_ASSERT)(this._modelCount == 0); + this._moc._release(); + this._moc = null; + }; + /** + * 最新の.moc3 Versionを取得 + */ + CubismMoc.prototype.getLatestMocVersion = function () { + return Live2DCubismCore.Version.csmGetLatestMocVersion(); + }; + /** + * 読み込んだモデルの.moc3 Versionを取得 + */ + CubismMoc.prototype.getMocVersion = function () { + return this._mocVersion; + }; + /** + * .moc3 の整合性を検証する + */ + CubismMoc.hasMocConsistency = function (mocBytes) { + var isConsistent = Live2DCubismCore.Moc.prototype.hasMocConsistency(mocBytes); + return isConsistent === 1 ? true : false; + }; + return CubismMoc; +}()); +exports.CubismMoc = CubismMoc; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmoc")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismMoc = $.CubismMoc; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmoc.js.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmoc.js.map b/live2demo/Framework/model/cubismmoc.js.map new file mode 100644 index 0000000..7cc33d9 --- /dev/null +++ b/live2demo/Framework/model/cubismmoc.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmoc.js","sourceRoot":"","sources":["../../src/model/cubismmoc.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oDAAkE;AAClE,6CAA4C;AAE5C;;;;GAIG;AACH;IA+EE;;OAEG;IACH,mBAAoB,GAAyB;QAC3C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IArFD;;OAEG;IACW,gBAAM,GAApB,UACE,QAAqB,EACrB,yBAAkC;QAElC,IAAI,SAAS,GAAc,IAAI,CAAC;QAEhC,IAAI,yBAAyB,EAAE;YAC7B,eAAe;YACf,IAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAErD,IAAI,CAAC,WAAW,EAAE;gBAChB,oBAAoB;gBACpB,IAAA,4BAAc,EAAC,oBAAoB,CAAC,CAAC;gBACrC,OAAO,SAAS,CAAC;aAClB;SACF;QAED,IAAM,GAAG,GACP,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,GAAG,EAAE;YACP,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,SAAS,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAC/D,GAAG,EACH,QAAQ,CACT,CAAC;SACH;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACW,gBAAM,GAApB,UAAqB,GAAc;QACjC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,GAAG,GAAG,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,+BAAW,GAAX;QACE,IAAI,WAAW,GAAgB,IAAI,CAAC;QAEpC,IAAM,KAAK,GAA2B,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAClE,IAAI,CAAC,IAAI,CACV,CAAC;QAEF,IAAI,KAAK,EAAE;YACT,WAAW,GAAG,IAAI,yBAAW,CAAC,KAAK,CAAC,CAAC;YACrC,WAAW,CAAC,UAAU,EAAE,CAAC;YAEzB,EAAE,IAAI,CAAC,WAAW,CAAC;SACpB;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,+BAAW,GAAX,UAAY,KAAkB;QAC5B,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,KAAK,GAAG,IAAI,CAAC;YACb,EAAE,IAAI,CAAC,WAAW,CAAC;SACpB;IACH,CAAC;IAWD;;OAEG;IACI,2BAAO,GAAd;QACE,IAAA,wBAAU,EAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,uCAAmB,GAA1B;QACE,OAAO,gBAAgB,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,iCAAa,GAApB;QACE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACW,2BAAiB,GAA/B,UAAgC,QAAqB;QACnD,IAAM,YAAY,GAChB,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC7D,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IAKH,gBAAC;AAAD,CAAC,AA5HD,IA4HC;AA5HY,8BAAS;AA8HtB,0CAA0C;AAC1C,6CAAiC;AACjC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAGrC;AAHD,WAAiB,qBAAqB;IACvB,+BAAS,GAAG,CAAC,CAAC,SAAS,CAAC;AAEvC,CAAC,EAHgB,qBAAqB,qCAArB,qBAAqB,QAGrC"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodel.d.ts b/live2demo/Framework/model/cubismmodel.d.ts new file mode 100644 index 0000000..2cbfb7e --- /dev/null +++ b/live2demo/Framework/model/cubismmodel.d.ts @@ -0,0 +1,679 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { CubismBlendMode, CubismTextureColor } from '../rendering/cubismrenderer'; +import { csmVector } from '../type/csmvector'; +/** + * SDK側から与えられたDrawableの乗算色・スクリーン色上書きフラグと + * その色を保持する構造体 + */ +export declare class DrawableColorData { + constructor(isOverwritten?: boolean, color?: CubismTextureColor); + isOverwritten: boolean; + Color: CubismTextureColor; +} +/** + * @brief テクスチャの色をRGBAで扱うための構造体 + */ +export declare class PartColorData { + constructor(isOverwritten?: boolean, color?: CubismTextureColor); + isOverwritten: boolean; + Color: CubismTextureColor; +} +/** + * テクスチャのカリング設定を管理するための構造体 + */ +export declare class DrawableCullingData { + /** + * コンストラクタ + * + * @param isOverwritten + * @param isCulling + */ + constructor(isOverwritten?: boolean, isCulling?: boolean); + isOverwritten: boolean; + isCulling: boolean; +} +/** + * モデル + * + * Mocデータから生成されるモデルのクラス。 + */ +export declare class CubismModel { + /** + * モデルのパラメータの更新 + */ + update(): void; + /** + * PixelsPerUnitを取得する + * @returns PixelsPerUnit + */ + getPixelsPerUnit(): number; + /** + * キャンバスの幅を取得する + */ + getCanvasWidth(): number; + /** + * キャンバスの高さを取得する + */ + getCanvasHeight(): number; + /** + * パラメータを保存する + */ + saveParameters(): void; + /** + * 乗算色を取得する + * @param index Drawablesのインデックス + * @returns 指定したdrawableの乗算色(RGBA) + */ + getMultiplyColor(index: number): CubismTextureColor; + /** + * スクリーン色を取得する + * @param index Drawablesのインデックス + * @returns 指定したdrawableのスクリーン色(RGBA) + */ + getScreenColor(index: number): CubismTextureColor; + /** + * 乗算色をセットする + * @param index Drawablesのインデックス + * @param color 設定する乗算色(CubismTextureColor) + */ + setMultiplyColorByTextureColor(index: number, color: CubismTextureColor): void; + /** + * 乗算色をセットする + * @param index Drawablesのインデックス + * @param r 設定する乗算色のR値 + * @param g 設定する乗算色のG値 + * @param b 設定する乗算色のB値 + * @param a 設定する乗算色のA値 + */ + setMultiplyColorByRGBA(index: number, r: number, g: number, b: number, a?: number): void; + /** + * スクリーン色をセットする + * @param index Drawablesのインデックス + * @param color 設定するスクリーン色(CubismTextureColor) + */ + setScreenColorByTextureColor(index: number, color: CubismTextureColor): void; + /** + * スクリーン色をセットする + * @param index Drawablesのインデックス + * @param r 設定するスクリーン色のR値 + * @param g 設定するスクリーン色のG値 + * @param b 設定するスクリーン色のB値 + * @param a 設定するスクリーン色のA値 + */ + setScreenColorByRGBA(index: number, r: number, g: number, b: number, a?: number): void; + /** + * partの乗算色を取得する + * @param partIndex partのインデックス + * @returns 指定したpartの乗算色 + */ + getPartMultiplyColor(partIndex: number): CubismTextureColor; + /** + * partのスクリーン色を取得する + * @param partIndex partのインデックス + * @returns 指定したpartのスクリーン色 + */ + getPartScreenColor(partIndex: number): CubismTextureColor; + /** + * partのOverwriteColor setter関数 + * @param partIndex partのインデックス + * @param r 設定する色のR値 + * @param g 設定する色のG値 + * @param b 設定する色のB値 + * @param a 設定する色のA値 + * @param partColors 設定するpartのカラーデータ配列 + * @param drawableColors partに関連するDrawableのカラーデータ配列 + */ + setPartColor(partIndex: number, r: number, g: number, b: number, a: number, partColors: csmVector, drawableColors: csmVector): void; + /** + * 乗算色をセットする + * @param partIndex partのインデックス + * @param color 設定する乗算色(CubismTextureColor) + */ + setPartMultiplyColorByTextureColor(partIndex: number, color: CubismTextureColor): void; + /** + * 乗算色をセットする + * @param partIndex partのインデックス + * @param r 設定する乗算色のR値 + * @param g 設定する乗算色のG値 + * @param b 設定する乗算色のB値 + * @param a 設定する乗算色のA値 + */ + setPartMultiplyColorByRGBA(partIndex: number, r: number, g: number, b: number, a: number): void; + /** + * スクリーン色をセットする + * @param partIndex partのインデックス + * @param color 設定するスクリーン色(CubismTextureColor) + */ + setPartScreenColorByTextureColor(partIndex: number, color: CubismTextureColor): void; + /** + * スクリーン色をセットする + * @param partIndex partのインデックス + * @param r 設定するスクリーン色のR値 + * @param g 設定するスクリーン色のG値 + * @param b 設定するスクリーン色のB値 + * @param a 設定するスクリーン色のA値 + */ + setPartScreenColorByRGBA(partIndex: number, r: number, g: number, b: number, a: number): void; + /** + * SDKから指定したモデルの乗算色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + getOverwriteFlagForModelMultiplyColors(): boolean; + /** + * SDKから指定したモデルのスクリーン色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + getOverwriteFlagForModelScreenColors(): boolean; + /** + * SDKから指定したモデルの乗算色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + setOverwriteFlagForModelMultiplyColors(value: boolean): void; + /** + * SDKから指定したモデルのスクリーン色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + setOverwriteFlagForModelScreenColors(value: boolean): void; + /** + * SDKから指定したDrawableIndexの乗算色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + getOverwriteFlagForDrawableMultiplyColors(drawableindex: number): boolean; + /** + * SDKから指定したDrawableIndexのスクリーン色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + getOverwriteFlagForDrawableScreenColors(drawableindex: number): boolean; + /** + * SDKから指定したDrawableIndexの乗算色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + setOverwriteFlagForDrawableMultiplyColors(drawableindex: number, value: boolean): void; + /** + * SDKから指定したDrawableIndexのスクリーン色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + setOverwriteFlagForDrawableScreenColors(drawableindex: number, value: boolean): void; + /** + * SDKからpartの乗算色を上書きするか + * @param partIndex partのインデックス + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + getOverwriteColorForPartMultiplyColors(partIndex: number): boolean; + /** + * SDKからpartのスクリーン色を上書きするか + * @param partIndex partのインデックス + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + getOverwriteColorForPartScreenColors(partIndex: number): boolean; + /** + * partのOverwriteFlag setter関数 + * @param partIndex partのインデックス + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + * @param partColors 設定するpartのカラーデータ配列 + * @param drawableColors partに関連するDrawableのカラーデータ配列 + */ + setOverwriteColorForPartColors(partIndex: number, value: boolean, partColors: csmVector, drawableColors: csmVector): void; + /** + * SDKからpartのスクリーン色を上書きするかをセットする + * @param partIndex partのインデックス + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + setOverwriteColorForPartMultiplyColors(partIndex: number, value: boolean): void; + /** + * SDKからpartのスクリーン色を上書きするかをセットする + * @param partIndex partのインデックス + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + setOverwriteColorForPartScreenColors(partIndex: number, value: boolean): void; + /** + * Drawableのカリング情報を取得する。 + * + * @param drawableIndex Drawableのインデックス + * @return Drawableのカリング情報 + */ + getDrawableCulling(drawableIndex: number): boolean; + /** + * Drawableのカリング情報を設定する。 + * + * @param drawableIndex Drawableのインデックス + * @param isCulling カリング情報 + */ + setDrawableCulling(drawableIndex: number, isCulling: boolean): void; + /** + * SDKからモデル全体のカリング設定を上書きするか。 + * + * @retval true -> SDK上のカリング設定を使用 + * @retval false -> モデルのカリング設定を使用 + */ + getOverwriteFlagForModelCullings(): boolean; + /** + * SDKからモデル全体のカリング設定を上書きするかを設定する。 + * + * @param isOverwrittenCullings SDK上のカリング設定を使うならtrue、モデルのカリング設定を使うならfalse + */ + setOverwriteFlagForModelCullings(isOverwrittenCullings: boolean): void; + /** + * + * @param drawableIndex Drawableのインデックス + * @retval true -> SDK上のカリング設定を使用 + * @retval false -> モデルのカリング設定を使用 + */ + getOverwriteFlagForDrawableCullings(drawableIndex: number): boolean; + /** + * + * @param drawableIndex Drawableのインデックス + * @param isOverwrittenCullings SDK上のカリング設定を使うならtrue、モデルのカリング設定を使うならfalse + */ + setOverwriteFlagForDrawableCullings(drawableIndex: number, isOverwrittenCullings: boolean): void; + /** + * モデルの不透明度を取得する + * + * @returns 不透明度の値 + */ + getModelOapcity(): number; + /** + * モデルの不透明度を設定する + * + * @param value 不透明度の値 + */ + setModelOapcity(value: number): void; + /** + * モデルを取得 + */ + getModel(): Live2DCubismCore.Model; + /** + * パーツのインデックスを取得 + * @param partId パーツのID + * @return パーツのインデックス + */ + getPartIndex(partId: CubismIdHandle): number; + /** + * パーツのIDを取得する。 + * + * @param partIndex 取得するパーツのインデックス + * @return パーツのID + */ + getPartId(partIndex: number): CubismIdHandle; + /** + * パーツの個数の取得 + * @return パーツの個数 + */ + getPartCount(): number; + /** + * パーツの不透明度の設定(Index) + * @param partIndex パーツのインデックス + * @param opacity 不透明度 + */ + setPartOpacityByIndex(partIndex: number, opacity: number): void; + /** + * パーツの不透明度の設定(Id) + * @param partId パーツのID + * @param opacity パーツの不透明度 + */ + setPartOpacityById(partId: CubismIdHandle, opacity: number): void; + /** + * パーツの不透明度の取得(index) + * @param partIndex パーツのインデックス + * @return パーツの不透明度 + */ + getPartOpacityByIndex(partIndex: number): number; + /** + * パーツの不透明度の取得(id) + * @param partId パーツのId + * @return パーツの不透明度 + */ + getPartOpacityById(partId: CubismIdHandle): number; + /** + * パラメータのインデックスの取得 + * @param パラメータID + * @return パラメータのインデックス + */ + getParameterIndex(parameterId: CubismIdHandle): number; + /** + * パラメータの個数の取得 + * @return パラメータの個数 + */ + getParameterCount(): number; + /** + * パラメータの種類の取得 + * @param parameterIndex パラメータのインデックス + * @return csmParameterType_Normal -> 通常のパラメータ + * csmParameterType_BlendShape -> ブレンドシェイプパラメータ + */ + getParameterType(parameterIndex: number): Live2DCubismCore.csmParameterType; + /** + * パラメータの最大値の取得 + * @param parameterIndex パラメータのインデックス + * @return パラメータの最大値 + */ + getParameterMaximumValue(parameterIndex: number): number; + /** + * パラメータの最小値の取得 + * @param parameterIndex パラメータのインデックス + * @return パラメータの最小値 + */ + getParameterMinimumValue(parameterIndex: number): number; + /** + * パラメータのデフォルト値の取得 + * @param parameterIndex パラメータのインデックス + * @return パラメータのデフォルト値 + */ + getParameterDefaultValue(parameterIndex: number): number; + /** + * 指定したパラメータindexのIDを取得 + * + * @param parameterIndex パラメータのインデックス + * @returns パラメータID + */ + getParameterId(parameterIndex: number): CubismIdHandle; + /** + * パラメータの値の取得 + * @param parameterIndex パラメータのインデックス + * @return パラメータの値 + */ + getParameterValueByIndex(parameterIndex: number): number; + /** + * パラメータの値の取得 + * @param parameterId パラメータのID + * @return パラメータの値 + */ + getParameterValueById(parameterId: CubismIdHandle): number; + /** + * パラメータの値の設定 + * @param parameterIndex パラメータのインデックス + * @param value パラメータの値 + * @param weight 重み + */ + setParameterValueByIndex(parameterIndex: number, value: number, weight?: number): void; + /** + * パラメータの値の設定 + * @param parameterId パラメータのID + * @param value パラメータの値 + * @param weight 重み + */ + setParameterValueById(parameterId: CubismIdHandle, value: number, weight?: number): void; + /** + * パラメータの値の加算(index) + * @param parameterIndex パラメータインデックス + * @param value 加算する値 + * @param weight 重み + */ + addParameterValueByIndex(parameterIndex: number, value: number, weight?: number): void; + /** + * パラメータの値の加算(id) + * @param parameterId パラメータID + * @param value 加算する値 + * @param weight 重み + */ + addParameterValueById(parameterId: any, value: number, weight?: number): void; + /** + * パラメータの値の乗算 + * @param parameterId パラメータのID + * @param value 乗算する値 + * @param weight 重み + */ + multiplyParameterValueById(parameterId: CubismIdHandle, value: number, weight?: number): void; + /** + * パラメータの値の乗算 + * @param parameterIndex パラメータのインデックス + * @param value 乗算する値 + * @param weight 重み + */ + multiplyParameterValueByIndex(parameterIndex: number, value: number, weight?: number): void; + /** + * Drawableのインデックスの取得 + * @param drawableId DrawableのID + * @return Drawableのインデックス + */ + getDrawableIndex(drawableId: CubismIdHandle): number; + /** + * Drawableの個数の取得 + * @return drawableの個数 + */ + getDrawableCount(): number; + /** + * DrawableのIDを取得する + * @param drawableIndex Drawableのインデックス + * @return drawableのID + */ + getDrawableId(drawableIndex: number): CubismIdHandle; + /** + * Drawableの描画順リストの取得 + * @return Drawableの描画順リスト + */ + getDrawableRenderOrders(): Int32Array; + /** + * @deprecated + * 関数名が誤っていたため、代替となる getDrawableTextureIndex を追加し、この関数は非推奨となりました。 + * + * Drawableのテクスチャインデックスリストの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableのテクスチャインデックスリスト + */ + getDrawableTextureIndices(drawableIndex: number): number; + /** + * Drawableのテクスチャインデックスの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableのテクスチャインデックス + */ + getDrawableTextureIndex(drawableIndex: number): number; + /** + * DrawableのVertexPositionsの変化情報の取得 + * + * 直近のCubismModel.update関数でDrawableの頂点情報が変化したかを取得する。 + * + * @param drawableIndex Drawableのインデックス + * @retval true Drawableの頂点情報が直近のCubismModel.update関数で変化した + * @retval false Drawableの頂点情報が直近のCubismModel.update関数で変化していない + */ + getDrawableDynamicFlagVertexPositionsDidChange(drawableIndex: number): boolean; + /** + * Drawableの頂点インデックスの個数の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点インデックスの個数 + */ + getDrawableVertexIndexCount(drawableIndex: number): number; + /** + * Drawableの頂点の個数の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点の個数 + */ + getDrawableVertexCount(drawableIndex: number): number; + /** + * Drawableの頂点リストの取得 + * @param drawableIndex drawableのインデックス + * @return drawableの頂点リスト + */ + getDrawableVertices(drawableIndex: number): Float32Array; + /** + * Drawableの頂点インデックスリストの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点インデックスリスト + */ + getDrawableVertexIndices(drawableIndex: number): Uint16Array; + /** + * Drawableの頂点リストの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点リスト + */ + getDrawableVertexPositions(drawableIndex: number): Float32Array; + /** + * Drawableの頂点のUVリストの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点UVリスト + */ + getDrawableVertexUvs(drawableIndex: number): Float32Array; + /** + * Drawableの不透明度の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの不透明度 + */ + getDrawableOpacity(drawableIndex: number): number; + /** + * Drawableの乗算色の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの乗算色(RGBA) + * スクリーン色はRGBAで取得されるが、Aは必ず0 + */ + getDrawableMultiplyColor(drawableIndex: number): CubismTextureColor; + /** + * Drawableのスクリーン色の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableのスクリーン色(RGBA) + * スクリーン色はRGBAで取得されるが、Aは必ず0 + */ + getDrawableScreenColor(drawableIndex: number): CubismTextureColor; + /** + * Drawableの親パーツのインデックスの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの親パーツのインデックス + */ + getDrawableParentPartIndex(drawableIndex: number): number; + /** + * Drawableのブレンドモードを取得 + * @param drawableIndex Drawableのインデックス + * @return drawableのブレンドモード + */ + getDrawableBlendMode(drawableIndex: number): CubismBlendMode; + /** + * Drawableのマスクの反転使用の取得 + * + * Drawableのマスク使用時の反転設定を取得する。 + * マスクを使用しない場合は無視される。 + * + * @param drawableIndex Drawableのインデックス + * @return Drawableの反転設定 + */ + getDrawableInvertedMaskBit(drawableIndex: number): boolean; + /** + * Drawableのクリッピングマスクリストの取得 + * @return Drawableのクリッピングマスクリスト + */ + getDrawableMasks(): Int32Array[]; + /** + * Drawableのクリッピングマスクの個数リストの取得 + * @return Drawableのクリッピングマスクの個数リスト + */ + getDrawableMaskCounts(): Int32Array; + /** + * クリッピングマスクの使用状態 + * + * @return true クリッピングマスクを使用している + * @return false クリッピングマスクを使用していない + */ + isUsingMasking(): boolean; + /** + * Drawableの表示情報を取得する + * + * @param drawableIndex Drawableのインデックス + * @return true Drawableが表示 + * @return false Drawableが非表示 + */ + getDrawableDynamicFlagIsVisible(drawableIndex: number): boolean; + /** + * DrawableのDrawOrderの変化情報の取得 + * + * 直近のCubismModel.update関数でdrawableのdrawOrderが変化したかを取得する。 + * drawOrderはartMesh上で指定する0から1000の情報 + * @param drawableIndex drawableのインデックス + * @return true drawableの不透明度が直近のCubismModel.update関数で変化した + * @return false drawableの不透明度が直近のCubismModel.update関数で変化している + */ + getDrawableDynamicFlagVisibilityDidChange(drawableIndex: number): boolean; + /** + * Drawableの不透明度の変化情報の取得 + * + * 直近のCubismModel.update関数でdrawableの不透明度が変化したかを取得する。 + * + * @param drawableIndex drawableのインデックス + * @return true Drawableの不透明度が直近のCubismModel.update関数で変化した + * @return false Drawableの不透明度が直近のCubismModel.update関数で変化してない + */ + getDrawableDynamicFlagOpacityDidChange(drawableIndex: number): boolean; + /** + * Drawableの描画順序の変化情報の取得 + * + * 直近のCubismModel.update関数でDrawableの描画の順序が変化したかを取得する。 + * + * @param drawableIndex Drawableのインデックス + * @return true Drawableの描画の順序が直近のCubismModel.update関数で変化した + * @return false Drawableの描画の順序が直近のCubismModel.update関数で変化してない + */ + getDrawableDynamicFlagRenderOrderDidChange(drawableIndex: number): boolean; + /** + * Drawableの乗算色・スクリーン色の変化情報の取得 + * + * 直近のCubismModel.update関数でDrawableの乗算色・スクリーン色が変化したかを取得する。 + * + * @param drawableIndex Drawableのインデックス + * @return true Drawableの乗算色・スクリーン色が直近のCubismModel.update関数で変化した + * @return false Drawableの乗算色・スクリーン色が直近のCubismModel.update関数で変化してない + */ + getDrawableDynamicFlagBlendColorDidChange(drawableIndex: number): boolean; + /** + * 保存されたパラメータの読み込み + */ + loadParameters(): void; + /** + * 初期化する + */ + initialize(): void; + /** + * コンストラクタ + * @param model モデル + */ + constructor(model: Live2DCubismCore.Model); + /** + * デストラクタ相当の処理 + */ + release(): void; + private _notExistPartOpacities; + private _notExistPartId; + private _notExistParameterValues; + private _notExistParameterId; + private _savedParameters; + private _isOverwrittenModelMultiplyColors; + private _isOverwrittenModelScreenColors; + private _userMultiplyColors; + private _userScreenColors; + private _userPartScreenColors; + private _userPartMultiplyColors; + private _partChildDrawables; + private _model; + private _parameterValues; + private _parameterMaximumValues; + private _parameterMinimumValues; + private _partOpacities; + private _modelOpacity; + private _parameterIds; + private _partIds; + private _drawableIds; + private _isOverwrittenCullings; + private _userCullings; +} +import * as $ from './cubismmodel'; +export declare namespace Live2DCubismFramework { + const CubismModel: typeof $.CubismModel; + type CubismModel = $.CubismModel; +} +//# sourceMappingURL=cubismmodel.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodel.d.ts.map b/live2demo/Framework/model/cubismmodel.d.ts.map new file mode 100644 index 0000000..b778272 --- /dev/null +++ b/live2demo/Framework/model/cubismmodel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodel.d.ts","sourceRoot":"","sources":["../../src/model/cubismmodel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodel.js b/live2demo/Framework/model/cubismmodel.js new file mode 100644 index 0000000..0a84f2f --- /dev/null +++ b/live2demo/Framework/model/cubismmodel.js @@ -0,0 +1,1198 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismModel = exports.DrawableCullingData = exports.PartColorData = exports.DrawableColorData = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var cubismrenderer_1 = require("../rendering/cubismrenderer"); +var csmmap_1 = require("../type/csmmap"); +var csmvector_1 = require("../type/csmvector"); +var cubismdebug_1 = require("../utils/cubismdebug"); +/** + * SDK側から与えられたDrawableの乗算色・スクリーン色上書きフラグと + * その色を保持する構造体 + */ +var DrawableColorData = /** @class */ (function () { + function DrawableColorData(isOverwritten, color) { + if (isOverwritten === void 0) { isOverwritten = false; } + if (color === void 0) { color = new cubismrenderer_1.CubismTextureColor(); } + this.isOverwritten = isOverwritten; + this.Color = color; + } + return DrawableColorData; +}()); +exports.DrawableColorData = DrawableColorData; +/** + * @brief テクスチャの色をRGBAで扱うための構造体 + */ +var PartColorData = /** @class */ (function () { + function PartColorData(isOverwritten, color) { + if (isOverwritten === void 0) { isOverwritten = false; } + if (color === void 0) { color = new cubismrenderer_1.CubismTextureColor(); } + this.isOverwritten = isOverwritten; + this.Color = color; + } + return PartColorData; +}()); +exports.PartColorData = PartColorData; +/** + * テクスチャのカリング設定を管理するための構造体 + */ +var DrawableCullingData = /** @class */ (function () { + /** + * コンストラクタ + * + * @param isOverwritten + * @param isCulling + */ + function DrawableCullingData(isOverwritten, isCulling) { + if (isOverwritten === void 0) { isOverwritten = false; } + if (isCulling === void 0) { isCulling = false; } + this.isOverwritten = isOverwritten; + this.isCulling = isCulling; + } + return DrawableCullingData; +}()); +exports.DrawableCullingData = DrawableCullingData; +/** + * モデル + * + * Mocデータから生成されるモデルのクラス。 + */ +var CubismModel = /** @class */ (function () { + /** + * コンストラクタ + * @param model モデル + */ + function CubismModel(model) { + this._model = model; + this._parameterValues = null; + this._parameterMaximumValues = null; + this._parameterMinimumValues = null; + this._partOpacities = null; + this._savedParameters = new csmvector_1.csmVector(); + this._parameterIds = new csmvector_1.csmVector(); + this._drawableIds = new csmvector_1.csmVector(); + this._partIds = new csmvector_1.csmVector(); + this._isOverwrittenModelMultiplyColors = false; + this._isOverwrittenModelScreenColors = false; + this._isOverwrittenCullings = false; + this._modelOpacity = 1.0; + this._userMultiplyColors = new csmvector_1.csmVector(); + this._userScreenColors = new csmvector_1.csmVector(); + this._userCullings = new csmvector_1.csmVector(); + this._userPartMultiplyColors = new csmvector_1.csmVector(); + this._userPartScreenColors = new csmvector_1.csmVector(); + this._partChildDrawables = new csmvector_1.csmVector(); + this._notExistPartId = new csmmap_1.csmMap(); + this._notExistParameterId = new csmmap_1.csmMap(); + this._notExistParameterValues = new csmmap_1.csmMap(); + this._notExistPartOpacities = new csmmap_1.csmMap(); + } + /** + * モデルのパラメータの更新 + */ + CubismModel.prototype.update = function () { + // Update model + this._model.update(); + this._model.drawables.resetDynamicFlags(); + }; + /** + * PixelsPerUnitを取得する + * @returns PixelsPerUnit + */ + CubismModel.prototype.getPixelsPerUnit = function () { + if (this._model == null) { + return 0.0; + } + return this._model.canvasinfo.PixelsPerUnit; + }; + /** + * キャンバスの幅を取得する + */ + CubismModel.prototype.getCanvasWidth = function () { + if (this._model == null) { + return 0.0; + } + return (this._model.canvasinfo.CanvasWidth / this._model.canvasinfo.PixelsPerUnit); + }; + /** + * キャンバスの高さを取得する + */ + CubismModel.prototype.getCanvasHeight = function () { + if (this._model == null) { + return 0.0; + } + return (this._model.canvasinfo.CanvasHeight / this._model.canvasinfo.PixelsPerUnit); + }; + /** + * パラメータを保存する + */ + CubismModel.prototype.saveParameters = function () { + var parameterCount = this._model.parameters.count; + var savedParameterCount = this._savedParameters.getSize(); + for (var i = 0; i < parameterCount; ++i) { + if (i < savedParameterCount) { + this._savedParameters.set(i, this._parameterValues[i]); + } + else { + this._savedParameters.pushBack(this._parameterValues[i]); + } + } + }; + /** + * 乗算色を取得する + * @param index Drawablesのインデックス + * @returns 指定したdrawableの乗算色(RGBA) + */ + CubismModel.prototype.getMultiplyColor = function (index) { + // Drawableとモデル全体の乗算色上書きフラグがどちらもtrueな場合、モデル全体の上書きフラグが優先される + if (this.getOverwriteFlagForModelMultiplyColors() || + this.getOverwriteFlagForDrawableMultiplyColors(index)) { + return this._userMultiplyColors.at(index).Color; + } + var color = this.getDrawableMultiplyColor(index); + return color; + }; + /** + * スクリーン色を取得する + * @param index Drawablesのインデックス + * @returns 指定したdrawableのスクリーン色(RGBA) + */ + CubismModel.prototype.getScreenColor = function (index) { + // Drawableとモデル全体のスクリーン色上書きフラグがどちらもtrueな場合、モデル全体の上書きフラグが優先される + if (this.getOverwriteFlagForModelScreenColors() || + this.getOverwriteFlagForDrawableScreenColors(index)) { + return this._userScreenColors.at(index).Color; + } + var color = this.getDrawableScreenColor(index); + return color; + }; + /** + * 乗算色をセットする + * @param index Drawablesのインデックス + * @param color 設定する乗算色(CubismTextureColor) + */ + CubismModel.prototype.setMultiplyColorByTextureColor = function (index, color) { + this.setMultiplyColorByRGBA(index, color.R, color.G, color.B, color.A); + }; + /** + * 乗算色をセットする + * @param index Drawablesのインデックス + * @param r 設定する乗算色のR値 + * @param g 設定する乗算色のG値 + * @param b 設定する乗算色のB値 + * @param a 設定する乗算色のA値 + */ + CubismModel.prototype.setMultiplyColorByRGBA = function (index, r, g, b, a) { + if (a === void 0) { a = 1.0; } + this._userMultiplyColors.at(index).Color.R = r; + this._userMultiplyColors.at(index).Color.G = g; + this._userMultiplyColors.at(index).Color.B = b; + this._userMultiplyColors.at(index).Color.A = a; + }; + /** + * スクリーン色をセットする + * @param index Drawablesのインデックス + * @param color 設定するスクリーン色(CubismTextureColor) + */ + CubismModel.prototype.setScreenColorByTextureColor = function (index, color) { + this.setScreenColorByRGBA(index, color.R, color.G, color.B, color.A); + }; + /** + * スクリーン色をセットする + * @param index Drawablesのインデックス + * @param r 設定するスクリーン色のR値 + * @param g 設定するスクリーン色のG値 + * @param b 設定するスクリーン色のB値 + * @param a 設定するスクリーン色のA値 + */ + CubismModel.prototype.setScreenColorByRGBA = function (index, r, g, b, a) { + if (a === void 0) { a = 1.0; } + this._userScreenColors.at(index).Color.R = r; + this._userScreenColors.at(index).Color.G = g; + this._userScreenColors.at(index).Color.B = b; + this._userScreenColors.at(index).Color.A = a; + }; + /** + * partの乗算色を取得する + * @param partIndex partのインデックス + * @returns 指定したpartの乗算色 + */ + CubismModel.prototype.getPartMultiplyColor = function (partIndex) { + return this._userPartMultiplyColors.at(partIndex).Color; + }; + /** + * partのスクリーン色を取得する + * @param partIndex partのインデックス + * @returns 指定したpartのスクリーン色 + */ + CubismModel.prototype.getPartScreenColor = function (partIndex) { + return this._userPartScreenColors.at(partIndex).Color; + }; + /** + * partのOverwriteColor setter関数 + * @param partIndex partのインデックス + * @param r 設定する色のR値 + * @param g 設定する色のG値 + * @param b 設定する色のB値 + * @param a 設定する色のA値 + * @param partColors 設定するpartのカラーデータ配列 + * @param drawableColors partに関連するDrawableのカラーデータ配列 + */ + CubismModel.prototype.setPartColor = function (partIndex, r, g, b, a, partColors, drawableColors) { + partColors.at(partIndex).Color.R = r; + partColors.at(partIndex).Color.G = g; + partColors.at(partIndex).Color.B = b; + partColors.at(partIndex).Color.A = a; + if (partColors.at(partIndex).isOverwritten) { + for (var i = 0; i < this._partChildDrawables.at(partIndex).getSize(); ++i) { + var drawableIndex = this._partChildDrawables.at(partIndex).at(i); + drawableColors.at(drawableIndex).Color.R = r; + drawableColors.at(drawableIndex).Color.G = g; + drawableColors.at(drawableIndex).Color.B = b; + drawableColors.at(drawableIndex).Color.A = a; + } + } + }; + /** + * 乗算色をセットする + * @param partIndex partのインデックス + * @param color 設定する乗算色(CubismTextureColor) + */ + CubismModel.prototype.setPartMultiplyColorByTextureColor = function (partIndex, color) { + this.setPartMultiplyColorByRGBA(partIndex, color.R, color.G, color.B, color.A); + }; + /** + * 乗算色をセットする + * @param partIndex partのインデックス + * @param r 設定する乗算色のR値 + * @param g 設定する乗算色のG値 + * @param b 設定する乗算色のB値 + * @param a 設定する乗算色のA値 + */ + CubismModel.prototype.setPartMultiplyColorByRGBA = function (partIndex, r, g, b, a) { + this.setPartColor(partIndex, r, g, b, a, this._userPartMultiplyColors, this._userMultiplyColors); + }; + /** + * スクリーン色をセットする + * @param partIndex partのインデックス + * @param color 設定するスクリーン色(CubismTextureColor) + */ + CubismModel.prototype.setPartScreenColorByTextureColor = function (partIndex, color) { + this.setPartScreenColorByRGBA(partIndex, color.R, color.G, color.B, color.A); + }; + /** + * スクリーン色をセットする + * @param partIndex partのインデックス + * @param r 設定するスクリーン色のR値 + * @param g 設定するスクリーン色のG値 + * @param b 設定するスクリーン色のB値 + * @param a 設定するスクリーン色のA値 + */ + CubismModel.prototype.setPartScreenColorByRGBA = function (partIndex, r, g, b, a) { + this.setPartColor(partIndex, r, g, b, a, this._userPartScreenColors, this._userScreenColors); + }; + /** + * SDKから指定したモデルの乗算色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.getOverwriteFlagForModelMultiplyColors = function () { + return this._isOverwrittenModelMultiplyColors; + }; + /** + * SDKから指定したモデルのスクリーン色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.getOverwriteFlagForModelScreenColors = function () { + return this._isOverwrittenModelScreenColors; + }; + /** + * SDKから指定したモデルの乗算色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.setOverwriteFlagForModelMultiplyColors = function (value) { + this._isOverwrittenModelMultiplyColors = value; + }; + /** + * SDKから指定したモデルのスクリーン色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.setOverwriteFlagForModelScreenColors = function (value) { + this._isOverwrittenModelScreenColors = value; + }; + /** + * SDKから指定したDrawableIndexの乗算色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.getOverwriteFlagForDrawableMultiplyColors = function (drawableindex) { + return this._userMultiplyColors.at(drawableindex).isOverwritten; + }; + /** + * SDKから指定したDrawableIndexのスクリーン色を上書きするか + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.getOverwriteFlagForDrawableScreenColors = function (drawableindex) { + return this._userScreenColors.at(drawableindex).isOverwritten; + }; + /** + * SDKから指定したDrawableIndexの乗算色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.setOverwriteFlagForDrawableMultiplyColors = function (drawableindex, value) { + this._userMultiplyColors.at(drawableindex).isOverwritten = value; + }; + /** + * SDKから指定したDrawableIndexのスクリーン色を上書きするかセットする + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.setOverwriteFlagForDrawableScreenColors = function (drawableindex, value) { + this._userScreenColors.at(drawableindex).isOverwritten = value; + }; + /** + * SDKからpartの乗算色を上書きするか + * @param partIndex partのインデックス + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.getOverwriteColorForPartMultiplyColors = function (partIndex) { + return this._userPartMultiplyColors.at(partIndex).isOverwritten; + }; + /** + * SDKからpartのスクリーン色を上書きするか + * @param partIndex partのインデックス + * @returns true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.getOverwriteColorForPartScreenColors = function (partIndex) { + return this._userPartScreenColors.at(partIndex).isOverwritten; + }; + /** + * partのOverwriteFlag setter関数 + * @param partIndex partのインデックス + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + * @param partColors 設定するpartのカラーデータ配列 + * @param drawableColors partに関連するDrawableのカラーデータ配列 + */ + CubismModel.prototype.setOverwriteColorForPartColors = function (partIndex, value, partColors, drawableColors) { + partColors.at(partIndex).isOverwritten = value; + for (var i = 0; i < this._partChildDrawables.at(partIndex).getSize(); ++i) { + var drawableIndex = this._partChildDrawables.at(partIndex).at(i); + drawableColors.at(drawableIndex).isOverwritten = value; + if (value) { + drawableColors.at(drawableIndex).Color.R = + partColors.at(partIndex).Color.R; + drawableColors.at(drawableIndex).Color.G = + partColors.at(partIndex).Color.G; + drawableColors.at(drawableIndex).Color.B = + partColors.at(partIndex).Color.B; + drawableColors.at(drawableIndex).Color.A = + partColors.at(partIndex).Color.A; + } + } + }; + /** + * SDKからpartのスクリーン色を上書きするかをセットする + * @param partIndex partのインデックス + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.setOverwriteColorForPartMultiplyColors = function (partIndex, value) { + this._userPartMultiplyColors.at(partIndex).isOverwritten = value; + this.setOverwriteColorForPartColors(partIndex, value, this._userPartMultiplyColors, this._userMultiplyColors); + }; + /** + * SDKからpartのスクリーン色を上書きするかをセットする + * @param partIndex partのインデックス + * @param value true -> SDKからの情報を優先する + * false -> モデルに設定されている色情報を使用 + */ + CubismModel.prototype.setOverwriteColorForPartScreenColors = function (partIndex, value) { + this._userPartScreenColors.at(partIndex).isOverwritten = value; + this.setOverwriteColorForPartColors(partIndex, value, this._userPartScreenColors, this._userScreenColors); + }; + /** + * Drawableのカリング情報を取得する。 + * + * @param drawableIndex Drawableのインデックス + * @return Drawableのカリング情報 + */ + CubismModel.prototype.getDrawableCulling = function (drawableIndex) { + if (this.getOverwriteFlagForModelCullings() || + this.getOverwriteFlagForDrawableCullings(drawableIndex)) { + return this._userCullings.at(drawableIndex).isCulling; + } + var constantFlags = this._model.drawables.constantFlags; + return !Live2DCubismCore.Utils.hasIsDoubleSidedBit(constantFlags[drawableIndex]); + }; + /** + * Drawableのカリング情報を設定する。 + * + * @param drawableIndex Drawableのインデックス + * @param isCulling カリング情報 + */ + CubismModel.prototype.setDrawableCulling = function (drawableIndex, isCulling) { + this._userCullings.at(drawableIndex).isCulling = isCulling; + }; + /** + * SDKからモデル全体のカリング設定を上書きするか。 + * + * @retval true -> SDK上のカリング設定を使用 + * @retval false -> モデルのカリング設定を使用 + */ + CubismModel.prototype.getOverwriteFlagForModelCullings = function () { + return this._isOverwrittenCullings; + }; + /** + * SDKからモデル全体のカリング設定を上書きするかを設定する。 + * + * @param isOverwrittenCullings SDK上のカリング設定を使うならtrue、モデルのカリング設定を使うならfalse + */ + CubismModel.prototype.setOverwriteFlagForModelCullings = function (isOverwrittenCullings) { + this._isOverwrittenCullings = isOverwrittenCullings; + }; + /** + * + * @param drawableIndex Drawableのインデックス + * @retval true -> SDK上のカリング設定を使用 + * @retval false -> モデルのカリング設定を使用 + */ + CubismModel.prototype.getOverwriteFlagForDrawableCullings = function (drawableIndex) { + return this._userCullings.at(drawableIndex).isOverwritten; + }; + /** + * + * @param drawableIndex Drawableのインデックス + * @param isOverwrittenCullings SDK上のカリング設定を使うならtrue、モデルのカリング設定を使うならfalse + */ + CubismModel.prototype.setOverwriteFlagForDrawableCullings = function (drawableIndex, isOverwrittenCullings) { + this._userCullings.at(drawableIndex).isOverwritten = isOverwrittenCullings; + }; + /** + * モデルの不透明度を取得する + * + * @returns 不透明度の値 + */ + CubismModel.prototype.getModelOapcity = function () { + return this._modelOpacity; + }; + /** + * モデルの不透明度を設定する + * + * @param value 不透明度の値 + */ + CubismModel.prototype.setModelOapcity = function (value) { + this._modelOpacity = value; + }; + /** + * モデルを取得 + */ + CubismModel.prototype.getModel = function () { + return this._model; + }; + /** + * パーツのインデックスを取得 + * @param partId パーツのID + * @return パーツのインデックス + */ + CubismModel.prototype.getPartIndex = function (partId) { + var partIndex; + var partCount = this._model.parts.count; + for (partIndex = 0; partIndex < partCount; ++partIndex) { + if (partId == this._partIds.at(partIndex)) { + return partIndex; + } + } + // モデルに存在していない場合、非存在パーツIDリスト内にあるかを検索し、そのインデックスを返す + if (this._notExistPartId.isExist(partId)) { + return this._notExistPartId.getValue(partId); + } + // 非存在パーツIDリストにない場合、新しく要素を追加する + partIndex = partCount + this._notExistPartId.getSize(); + this._notExistPartId.setValue(partId, partIndex); + this._notExistPartOpacities.appendKey(partIndex); + return partIndex; + }; + /** + * パーツのIDを取得する。 + * + * @param partIndex 取得するパーツのインデックス + * @return パーツのID + */ + CubismModel.prototype.getPartId = function (partIndex) { + var partId = this._model.parts.ids[partIndex]; + return live2dcubismframework_1.CubismFramework.getIdManager().getId(partId); + }; + /** + * パーツの個数の取得 + * @return パーツの個数 + */ + CubismModel.prototype.getPartCount = function () { + var partCount = this._model.parts.count; + return partCount; + }; + /** + * パーツの不透明度の設定(Index) + * @param partIndex パーツのインデックス + * @param opacity 不透明度 + */ + CubismModel.prototype.setPartOpacityByIndex = function (partIndex, opacity) { + if (this._notExistPartOpacities.isExist(partIndex)) { + this._notExistPartOpacities.setValue(partIndex, opacity); + return; + } + // インデックスの範囲内検知 + (0, cubismdebug_1.CSM_ASSERT)(0 <= partIndex && partIndex < this.getPartCount()); + this._partOpacities[partIndex] = opacity; + }; + /** + * パーツの不透明度の設定(Id) + * @param partId パーツのID + * @param opacity パーツの不透明度 + */ + CubismModel.prototype.setPartOpacityById = function (partId, opacity) { + // 高速化のためにPartIndexを取得できる機構になっているが、外部からの設定の時は呼び出し頻度が低いため不要 + var index = this.getPartIndex(partId); + if (index < 0) { + return; // パーツがないのでスキップ + } + this.setPartOpacityByIndex(index, opacity); + }; + /** + * パーツの不透明度の取得(index) + * @param partIndex パーツのインデックス + * @return パーツの不透明度 + */ + CubismModel.prototype.getPartOpacityByIndex = function (partIndex) { + if (this._notExistPartOpacities.isExist(partIndex)) { + // モデルに存在しないパーツIDの場合、非存在パーツリストから不透明度を返す。 + return this._notExistPartOpacities.getValue(partIndex); + } + // インデックスの範囲内検知 + (0, cubismdebug_1.CSM_ASSERT)(0 <= partIndex && partIndex < this.getPartCount()); + return this._partOpacities[partIndex]; + }; + /** + * パーツの不透明度の取得(id) + * @param partId パーツのId + * @return パーツの不透明度 + */ + CubismModel.prototype.getPartOpacityById = function (partId) { + // 高速化のためにPartIndexを取得できる機構になっているが、外部からの設定の時は呼び出し頻度が低いため不要 + var index = this.getPartIndex(partId); + if (index < 0) { + return 0; // パーツが無いのでスキップ + } + return this.getPartOpacityByIndex(index); + }; + /** + * パラメータのインデックスの取得 + * @param パラメータID + * @return パラメータのインデックス + */ + CubismModel.prototype.getParameterIndex = function (parameterId) { + var parameterIndex; + var idCount = this._model.parameters.count; + for (parameterIndex = 0; parameterIndex < idCount; ++parameterIndex) { + if (parameterId != this._parameterIds.at(parameterIndex)) { + continue; + } + return parameterIndex; + } + // モデルに存在していない場合、非存在パラメータIDリスト内を検索し、そのインデックスを返す + if (this._notExistParameterId.isExist(parameterId)) { + return this._notExistParameterId.getValue(parameterId); + } + // 非存在パラメータIDリストにない場合新しく要素を追加する + parameterIndex = + this._model.parameters.count + this._notExistParameterId.getSize(); + this._notExistParameterId.setValue(parameterId, parameterIndex); + this._notExistParameterValues.appendKey(parameterIndex); + return parameterIndex; + }; + /** + * パラメータの個数の取得 + * @return パラメータの個数 + */ + CubismModel.prototype.getParameterCount = function () { + return this._model.parameters.count; + }; + /** + * パラメータの種類の取得 + * @param parameterIndex パラメータのインデックス + * @return csmParameterType_Normal -> 通常のパラメータ + * csmParameterType_BlendShape -> ブレンドシェイプパラメータ + */ + CubismModel.prototype.getParameterType = function (parameterIndex) { + return this._model.parameters.types[parameterIndex]; + }; + /** + * パラメータの最大値の取得 + * @param parameterIndex パラメータのインデックス + * @return パラメータの最大値 + */ + CubismModel.prototype.getParameterMaximumValue = function (parameterIndex) { + return this._model.parameters.maximumValues[parameterIndex]; + }; + /** + * パラメータの最小値の取得 + * @param parameterIndex パラメータのインデックス + * @return パラメータの最小値 + */ + CubismModel.prototype.getParameterMinimumValue = function (parameterIndex) { + return this._model.parameters.minimumValues[parameterIndex]; + }; + /** + * パラメータのデフォルト値の取得 + * @param parameterIndex パラメータのインデックス + * @return パラメータのデフォルト値 + */ + CubismModel.prototype.getParameterDefaultValue = function (parameterIndex) { + return this._model.parameters.defaultValues[parameterIndex]; + }; + /** + * 指定したパラメータindexのIDを取得 + * + * @param parameterIndex パラメータのインデックス + * @returns パラメータID + */ + CubismModel.prototype.getParameterId = function (parameterIndex) { + return live2dcubismframework_1.CubismFramework.getIdManager().getId(this._model.parameters.ids[parameterIndex]); + }; + /** + * パラメータの値の取得 + * @param parameterIndex パラメータのインデックス + * @return パラメータの値 + */ + CubismModel.prototype.getParameterValueByIndex = function (parameterIndex) { + if (this._notExistParameterValues.isExist(parameterIndex)) { + return this._notExistParameterValues.getValue(parameterIndex); + } + // インデックスの範囲内検知 + (0, cubismdebug_1.CSM_ASSERT)(0 <= parameterIndex && parameterIndex < this.getParameterCount()); + return this._parameterValues[parameterIndex]; + }; + /** + * パラメータの値の取得 + * @param parameterId パラメータのID + * @return パラメータの値 + */ + CubismModel.prototype.getParameterValueById = function (parameterId) { + // 高速化のためにparameterIndexを取得できる機構になっているが、外部からの設定の時は呼び出し頻度が低いため不要 + var parameterIndex = this.getParameterIndex(parameterId); + return this.getParameterValueByIndex(parameterIndex); + }; + /** + * パラメータの値の設定 + * @param parameterIndex パラメータのインデックス + * @param value パラメータの値 + * @param weight 重み + */ + CubismModel.prototype.setParameterValueByIndex = function (parameterIndex, value, weight) { + if (weight === void 0) { weight = 1.0; } + if (this._notExistParameterValues.isExist(parameterIndex)) { + this._notExistParameterValues.setValue(parameterIndex, weight == 1 + ? value + : this._notExistParameterValues.getValue(parameterIndex) * + (1 - weight) + + value * weight); + return; + } + // インデックスの範囲内検知 + (0, cubismdebug_1.CSM_ASSERT)(0 <= parameterIndex && parameterIndex < this.getParameterCount()); + if (this._model.parameters.maximumValues[parameterIndex] < value) { + value = this._model.parameters.maximumValues[parameterIndex]; + } + if (this._model.parameters.minimumValues[parameterIndex] > value) { + value = this._model.parameters.minimumValues[parameterIndex]; + } + this._parameterValues[parameterIndex] = + weight == 1 + ? value + : (this._parameterValues[parameterIndex] = + this._parameterValues[parameterIndex] * (1 - weight) + + value * weight); + }; + /** + * パラメータの値の設定 + * @param parameterId パラメータのID + * @param value パラメータの値 + * @param weight 重み + */ + CubismModel.prototype.setParameterValueById = function (parameterId, value, weight) { + if (weight === void 0) { weight = 1.0; } + var index = this.getParameterIndex(parameterId); + this.setParameterValueByIndex(index, value, weight); + }; + /** + * パラメータの値の加算(index) + * @param parameterIndex パラメータインデックス + * @param value 加算する値 + * @param weight 重み + */ + CubismModel.prototype.addParameterValueByIndex = function (parameterIndex, value, weight) { + if (weight === void 0) { weight = 1.0; } + this.setParameterValueByIndex(parameterIndex, this.getParameterValueByIndex(parameterIndex) + value * weight); + }; + /** + * パラメータの値の加算(id) + * @param parameterId パラメータID + * @param value 加算する値 + * @param weight 重み + */ + CubismModel.prototype.addParameterValueById = function (parameterId, value, weight) { + if (weight === void 0) { weight = 1.0; } + var index = this.getParameterIndex(parameterId); + this.addParameterValueByIndex(index, value, weight); + }; + /** + * パラメータの値の乗算 + * @param parameterId パラメータのID + * @param value 乗算する値 + * @param weight 重み + */ + CubismModel.prototype.multiplyParameterValueById = function (parameterId, value, weight) { + if (weight === void 0) { weight = 1.0; } + var index = this.getParameterIndex(parameterId); + this.multiplyParameterValueByIndex(index, value, weight); + }; + /** + * パラメータの値の乗算 + * @param parameterIndex パラメータのインデックス + * @param value 乗算する値 + * @param weight 重み + */ + CubismModel.prototype.multiplyParameterValueByIndex = function (parameterIndex, value, weight) { + if (weight === void 0) { weight = 1.0; } + this.setParameterValueByIndex(parameterIndex, this.getParameterValueByIndex(parameterIndex) * + (1.0 + (value - 1.0) * weight)); + }; + /** + * Drawableのインデックスの取得 + * @param drawableId DrawableのID + * @return Drawableのインデックス + */ + CubismModel.prototype.getDrawableIndex = function (drawableId) { + var drawableCount = this._model.drawables.count; + for (var drawableIndex = 0; drawableIndex < drawableCount; ++drawableIndex) { + if (this._drawableIds.at(drawableIndex) == drawableId) { + return drawableIndex; + } + } + return -1; + }; + /** + * Drawableの個数の取得 + * @return drawableの個数 + */ + CubismModel.prototype.getDrawableCount = function () { + var drawableCount = this._model.drawables.count; + return drawableCount; + }; + /** + * DrawableのIDを取得する + * @param drawableIndex Drawableのインデックス + * @return drawableのID + */ + CubismModel.prototype.getDrawableId = function (drawableIndex) { + var parameterIds = this._model.drawables.ids; + return live2dcubismframework_1.CubismFramework.getIdManager().getId(parameterIds[drawableIndex]); + }; + /** + * Drawableの描画順リストの取得 + * @return Drawableの描画順リスト + */ + CubismModel.prototype.getDrawableRenderOrders = function () { + var renderOrders = this._model.drawables.renderOrders; + return renderOrders; + }; + /** + * @deprecated + * 関数名が誤っていたため、代替となる getDrawableTextureIndex を追加し、この関数は非推奨となりました。 + * + * Drawableのテクスチャインデックスリストの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableのテクスチャインデックスリスト + */ + CubismModel.prototype.getDrawableTextureIndices = function (drawableIndex) { + return this.getDrawableTextureIndex(drawableIndex); + }; + /** + * Drawableのテクスチャインデックスの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableのテクスチャインデックス + */ + CubismModel.prototype.getDrawableTextureIndex = function (drawableIndex) { + var textureIndices = this._model.drawables.textureIndices; + return textureIndices[drawableIndex]; + }; + /** + * DrawableのVertexPositionsの変化情報の取得 + * + * 直近のCubismModel.update関数でDrawableの頂点情報が変化したかを取得する。 + * + * @param drawableIndex Drawableのインデックス + * @retval true Drawableの頂点情報が直近のCubismModel.update関数で変化した + * @retval false Drawableの頂点情報が直近のCubismModel.update関数で変化していない + */ + CubismModel.prototype.getDrawableDynamicFlagVertexPositionsDidChange = function (drawableIndex) { + var dynamicFlags = this._model.drawables.dynamicFlags; + return Live2DCubismCore.Utils.hasVertexPositionsDidChangeBit(dynamicFlags[drawableIndex]); + }; + /** + * Drawableの頂点インデックスの個数の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点インデックスの個数 + */ + CubismModel.prototype.getDrawableVertexIndexCount = function (drawableIndex) { + var indexCounts = this._model.drawables.indexCounts; + return indexCounts[drawableIndex]; + }; + /** + * Drawableの頂点の個数の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点の個数 + */ + CubismModel.prototype.getDrawableVertexCount = function (drawableIndex) { + var vertexCounts = this._model.drawables.vertexCounts; + return vertexCounts[drawableIndex]; + }; + /** + * Drawableの頂点リストの取得 + * @param drawableIndex drawableのインデックス + * @return drawableの頂点リスト + */ + CubismModel.prototype.getDrawableVertices = function (drawableIndex) { + return this.getDrawableVertexPositions(drawableIndex); + }; + /** + * Drawableの頂点インデックスリストの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点インデックスリスト + */ + CubismModel.prototype.getDrawableVertexIndices = function (drawableIndex) { + var indicesArray = this._model.drawables.indices; + return indicesArray[drawableIndex]; + }; + /** + * Drawableの頂点リストの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点リスト + */ + CubismModel.prototype.getDrawableVertexPositions = function (drawableIndex) { + var verticesArray = this._model.drawables.vertexPositions; + return verticesArray[drawableIndex]; + }; + /** + * Drawableの頂点のUVリストの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの頂点UVリスト + */ + CubismModel.prototype.getDrawableVertexUvs = function (drawableIndex) { + var uvsArray = this._model.drawables.vertexUvs; + return uvsArray[drawableIndex]; + }; + /** + * Drawableの不透明度の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの不透明度 + */ + CubismModel.prototype.getDrawableOpacity = function (drawableIndex) { + var opacities = this._model.drawables.opacities; + return opacities[drawableIndex]; + }; + /** + * Drawableの乗算色の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの乗算色(RGBA) + * スクリーン色はRGBAで取得されるが、Aは必ず0 + */ + CubismModel.prototype.getDrawableMultiplyColor = function (drawableIndex) { + var multiplyColors = this._model.drawables.multiplyColors; + var index = drawableIndex * 4; + var multiplyColor = new cubismrenderer_1.CubismTextureColor(); + multiplyColor.R = multiplyColors[index]; + multiplyColor.G = multiplyColors[index + 1]; + multiplyColor.B = multiplyColors[index + 2]; + multiplyColor.A = multiplyColors[index + 3]; + return multiplyColor; + }; + /** + * Drawableのスクリーン色の取得 + * @param drawableIndex Drawableのインデックス + * @return drawableのスクリーン色(RGBA) + * スクリーン色はRGBAで取得されるが、Aは必ず0 + */ + CubismModel.prototype.getDrawableScreenColor = function (drawableIndex) { + var screenColors = this._model.drawables.screenColors; + var index = drawableIndex * 4; + var screenColor = new cubismrenderer_1.CubismTextureColor(); + screenColor.R = screenColors[index]; + screenColor.G = screenColors[index + 1]; + screenColor.B = screenColors[index + 2]; + screenColor.A = screenColors[index + 3]; + return screenColor; + }; + /** + * Drawableの親パーツのインデックスの取得 + * @param drawableIndex Drawableのインデックス + * @return drawableの親パーツのインデックス + */ + CubismModel.prototype.getDrawableParentPartIndex = function (drawableIndex) { + return this._model.drawables.parentPartIndices[drawableIndex]; + }; + /** + * Drawableのブレンドモードを取得 + * @param drawableIndex Drawableのインデックス + * @return drawableのブレンドモード + */ + CubismModel.prototype.getDrawableBlendMode = function (drawableIndex) { + var constantFlags = this._model.drawables.constantFlags; + return Live2DCubismCore.Utils.hasBlendAdditiveBit(constantFlags[drawableIndex]) + ? cubismrenderer_1.CubismBlendMode.CubismBlendMode_Additive + : Live2DCubismCore.Utils.hasBlendMultiplicativeBit(constantFlags[drawableIndex]) + ? cubismrenderer_1.CubismBlendMode.CubismBlendMode_Multiplicative + : cubismrenderer_1.CubismBlendMode.CubismBlendMode_Normal; + }; + /** + * Drawableのマスクの反転使用の取得 + * + * Drawableのマスク使用時の反転設定を取得する。 + * マスクを使用しない場合は無視される。 + * + * @param drawableIndex Drawableのインデックス + * @return Drawableの反転設定 + */ + CubismModel.prototype.getDrawableInvertedMaskBit = function (drawableIndex) { + var constantFlags = this._model.drawables.constantFlags; + return Live2DCubismCore.Utils.hasIsInvertedMaskBit(constantFlags[drawableIndex]); + }; + /** + * Drawableのクリッピングマスクリストの取得 + * @return Drawableのクリッピングマスクリスト + */ + CubismModel.prototype.getDrawableMasks = function () { + var masks = this._model.drawables.masks; + return masks; + }; + /** + * Drawableのクリッピングマスクの個数リストの取得 + * @return Drawableのクリッピングマスクの個数リスト + */ + CubismModel.prototype.getDrawableMaskCounts = function () { + var maskCounts = this._model.drawables.maskCounts; + return maskCounts; + }; + /** + * クリッピングマスクの使用状態 + * + * @return true クリッピングマスクを使用している + * @return false クリッピングマスクを使用していない + */ + CubismModel.prototype.isUsingMasking = function () { + for (var d = 0; d < this._model.drawables.count; ++d) { + if (this._model.drawables.maskCounts[d] <= 0) { + continue; + } + return true; + } + return false; + }; + /** + * Drawableの表示情報を取得する + * + * @param drawableIndex Drawableのインデックス + * @return true Drawableが表示 + * @return false Drawableが非表示 + */ + CubismModel.prototype.getDrawableDynamicFlagIsVisible = function (drawableIndex) { + var dynamicFlags = this._model.drawables.dynamicFlags; + return Live2DCubismCore.Utils.hasIsVisibleBit(dynamicFlags[drawableIndex]); + }; + /** + * DrawableのDrawOrderの変化情報の取得 + * + * 直近のCubismModel.update関数でdrawableのdrawOrderが変化したかを取得する。 + * drawOrderはartMesh上で指定する0から1000の情報 + * @param drawableIndex drawableのインデックス + * @return true drawableの不透明度が直近のCubismModel.update関数で変化した + * @return false drawableの不透明度が直近のCubismModel.update関数で変化している + */ + CubismModel.prototype.getDrawableDynamicFlagVisibilityDidChange = function (drawableIndex) { + var dynamicFlags = this._model.drawables.dynamicFlags; + return Live2DCubismCore.Utils.hasVisibilityDidChangeBit(dynamicFlags[drawableIndex]); + }; + /** + * Drawableの不透明度の変化情報の取得 + * + * 直近のCubismModel.update関数でdrawableの不透明度が変化したかを取得する。 + * + * @param drawableIndex drawableのインデックス + * @return true Drawableの不透明度が直近のCubismModel.update関数で変化した + * @return false Drawableの不透明度が直近のCubismModel.update関数で変化してない + */ + CubismModel.prototype.getDrawableDynamicFlagOpacityDidChange = function (drawableIndex) { + var dynamicFlags = this._model.drawables.dynamicFlags; + return Live2DCubismCore.Utils.hasOpacityDidChangeBit(dynamicFlags[drawableIndex]); + }; + /** + * Drawableの描画順序の変化情報の取得 + * + * 直近のCubismModel.update関数でDrawableの描画の順序が変化したかを取得する。 + * + * @param drawableIndex Drawableのインデックス + * @return true Drawableの描画の順序が直近のCubismModel.update関数で変化した + * @return false Drawableの描画の順序が直近のCubismModel.update関数で変化してない + */ + CubismModel.prototype.getDrawableDynamicFlagRenderOrderDidChange = function (drawableIndex) { + var dynamicFlags = this._model.drawables.dynamicFlags; + return Live2DCubismCore.Utils.hasRenderOrderDidChangeBit(dynamicFlags[drawableIndex]); + }; + /** + * Drawableの乗算色・スクリーン色の変化情報の取得 + * + * 直近のCubismModel.update関数でDrawableの乗算色・スクリーン色が変化したかを取得する。 + * + * @param drawableIndex Drawableのインデックス + * @return true Drawableの乗算色・スクリーン色が直近のCubismModel.update関数で変化した + * @return false Drawableの乗算色・スクリーン色が直近のCubismModel.update関数で変化してない + */ + CubismModel.prototype.getDrawableDynamicFlagBlendColorDidChange = function (drawableIndex) { + var dynamicFlags = this._model.drawables.dynamicFlags; + return Live2DCubismCore.Utils.hasBlendColorDidChangeBit(dynamicFlags[drawableIndex]); + }; + /** + * 保存されたパラメータの読み込み + */ + CubismModel.prototype.loadParameters = function () { + var parameterCount = this._model.parameters.count; + var savedParameterCount = this._savedParameters.getSize(); + if (parameterCount > savedParameterCount) { + parameterCount = savedParameterCount; + } + for (var i = 0; i < parameterCount; ++i) { + this._parameterValues[i] = this._savedParameters.at(i); + } + }; + /** + * 初期化する + */ + CubismModel.prototype.initialize = function () { + (0, cubismdebug_1.CSM_ASSERT)(this._model); + this._parameterValues = this._model.parameters.values; + this._partOpacities = this._model.parts.opacities; + this._parameterMaximumValues = this._model.parameters.maximumValues; + this._parameterMinimumValues = this._model.parameters.minimumValues; + { + var parameterIds = this._model.parameters.ids; + var parameterCount = this._model.parameters.count; + this._parameterIds.prepareCapacity(parameterCount); + for (var i = 0; i < parameterCount; ++i) { + this._parameterIds.pushBack(live2dcubismframework_1.CubismFramework.getIdManager().getId(parameterIds[i])); + } + } + var partCount = this._model.parts.count; + { + var partIds = this._model.parts.ids; + this._partIds.prepareCapacity(partCount); + for (var i = 0; i < partCount; ++i) { + this._partIds.pushBack(live2dcubismframework_1.CubismFramework.getIdManager().getId(partIds[i])); + } + this._userPartMultiplyColors.prepareCapacity(partCount); + this._userPartScreenColors.prepareCapacity(partCount); + this._partChildDrawables.prepareCapacity(partCount); + } + { + var drawableIds = this._model.drawables.ids; + var drawableCount = this._model.drawables.count; + this._userMultiplyColors.prepareCapacity(drawableCount); + this._userScreenColors.prepareCapacity(drawableCount); + // カリング設定 + this._userCullings.prepareCapacity(drawableCount); + var userCulling = new DrawableCullingData(false, false); + // Part + { + for (var i = 0; i < partCount; ++i) { + var multiplyColor = new cubismrenderer_1.CubismTextureColor(1.0, 1.0, 1.0, 1.0); + var screenColor = new cubismrenderer_1.CubismTextureColor(0.0, 0.0, 0.0, 1.0); + var userMultiplyColor = new PartColorData(false, multiplyColor); + var userScreenColor = new PartColorData(false, screenColor); + this._userPartMultiplyColors.pushBack(userMultiplyColor); + this._userPartScreenColors.pushBack(userScreenColor); + this._partChildDrawables.pushBack(new csmvector_1.csmVector()); + this._partChildDrawables.at(i).prepareCapacity(drawableCount); + } + } + // Drawables + { + for (var i = 0; i < drawableCount; ++i) { + var multiplyColor = new cubismrenderer_1.CubismTextureColor(1.0, 1.0, 1.0, 1.0); + var screenColor = new cubismrenderer_1.CubismTextureColor(0.0, 0.0, 0.0, 1.0); + var userMultiplyColor = new DrawableColorData(false, multiplyColor); + var userScreenColor = new DrawableColorData(false, screenColor); + this._drawableIds.pushBack(live2dcubismframework_1.CubismFramework.getIdManager().getId(drawableIds[i])); + this._userMultiplyColors.pushBack(userMultiplyColor); + this._userScreenColors.pushBack(userScreenColor); + this._userCullings.pushBack(userCulling); + var parentIndex = this.getDrawableParentPartIndex(i); + if (parentIndex >= 0) { + this._partChildDrawables.at(parentIndex).pushBack(i); + } + } + } + } + }; + /** + * デストラクタ相当の処理 + */ + CubismModel.prototype.release = function () { + this._model.release(); + this._model = null; + }; + return CubismModel; +}()); +exports.CubismModel = CubismModel; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmodel")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismModel = $.CubismModel; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmodel.js.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodel.js.map b/live2demo/Framework/model/cubismmodel.js.map new file mode 100644 index 0000000..cfb32de --- /dev/null +++ b/live2demo/Framework/model/cubismmodel.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodel.js","sourceRoot":"","sources":["../../src/model/cubismmodel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodeluserdata.d.ts b/live2demo/Framework/model/cubismmodeluserdata.d.ts new file mode 100644 index 0000000..07a6b72 --- /dev/null +++ b/live2demo/Framework/model/cubismmodeluserdata.d.ts @@ -0,0 +1,73 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { csmString } from '../type/csmstring'; +import { csmVector } from '../type/csmvector'; +/** + * ユーザーデータインターフェース + * + * Jsonから読み込んだユーザーデータを記録しておくための構造体 + */ +export declare class CubismModelUserDataNode { + targetType: CubismIdHandle; + targetId: CubismIdHandle; + value: csmString; +} +/** + * ユーザデータの管理クラス + * + * ユーザデータをロード、管理、検索インターフェイス、解放までを行う。 + */ +export declare class CubismModelUserData { + /** + * インスタンスの作成 + * + * @param buffer userdata3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + * @return 作成されたインスタンス + */ + static create(buffer: ArrayBuffer, size: number): CubismModelUserData; + /** + * インスタンスを破棄する + * + * @param modelUserData 破棄するインスタンス + */ + static delete(modelUserData: CubismModelUserData): void; + /** + * ArtMeshのユーザーデータのリストの取得 + * + * @return ユーザーデータリスト + */ + getArtMeshUserDatas(): csmVector; + /** + * userdata3.jsonのパース + * + * @param buffer userdata3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + parseUserData(buffer: ArrayBuffer, size: number): void; + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + * + * ユーザーデータ構造体配列を解放する + */ + release(): void; + private _userDataNodes; + private _artMeshUserDataNode; +} +import * as $ from './cubismmodeluserdata'; +export declare namespace Live2DCubismFramework { + const CubismModelUserData: typeof $.CubismModelUserData; + type CubismModelUserData = $.CubismModelUserData; + const CubismModelUserDataNode: typeof $.CubismModelUserDataNode; + type CubismModelUserDataNode = $.CubismModelUserDataNode; +} +//# sourceMappingURL=cubismmodeluserdata.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodeluserdata.d.ts.map b/live2demo/Framework/model/cubismmodeluserdata.d.ts.map new file mode 100644 index 0000000..6a87e90 --- /dev/null +++ b/live2demo/Framework/model/cubismmodeluserdata.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodeluserdata.d.ts","sourceRoot":"","sources":["../../src/model/cubismmodeluserdata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAK9C;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;OAMG;WACW,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,mBAAmB;IAQ5E;;;;OAIG;WACW,MAAM,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI;IAO9D;;;;OAIG;IACI,mBAAmB,IAAI,SAAS,CAAC,uBAAuB,CAAC;IAIhE;;;;;OAKG;IACI,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IA4B7D;;OAEG;;IAMH;;;;OAIG;IACI,OAAO,IAAI,IAAI;IAQtB,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,oBAAoB,CAAqC;CAClE;AAGD,OAAO,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAE3C,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,mBAAmB,8BAAwB,CAAC;IACzD,KAAY,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;IACjD,MAAM,uBAAuB,kCAA4B,CAAC;IACjE,KAAY,uBAAuB,GAAG,CAAC,CAAC,uBAAuB,CAAC;CACjE"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodeluserdata.js b/live2demo/Framework/model/cubismmodeluserdata.js new file mode 100644 index 0000000..d87b798 --- /dev/null +++ b/live2demo/Framework/model/cubismmodeluserdata.js @@ -0,0 +1,138 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismModelUserData = exports.CubismModelUserDataNode = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var csmstring_1 = require("../type/csmstring"); +var csmvector_1 = require("../type/csmvector"); +var cubismmodeluserdatajson_1 = require("./cubismmodeluserdatajson"); +var ArtMesh = 'ArtMesh'; +/** + * ユーザーデータインターフェース + * + * Jsonから読み込んだユーザーデータを記録しておくための構造体 + */ +var CubismModelUserDataNode = /** @class */ (function () { + function CubismModelUserDataNode() { + } + return CubismModelUserDataNode; +}()); +exports.CubismModelUserDataNode = CubismModelUserDataNode; +/** + * ユーザデータの管理クラス + * + * ユーザデータをロード、管理、検索インターフェイス、解放までを行う。 + */ +var CubismModelUserData = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismModelUserData() { + this._userDataNodes = new csmvector_1.csmVector(); + this._artMeshUserDataNode = new csmvector_1.csmVector(); + } + /** + * インスタンスの作成 + * + * @param buffer userdata3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + * @return 作成されたインスタンス + */ + CubismModelUserData.create = function (buffer, size) { + var ret = new CubismModelUserData(); + ret.parseUserData(buffer, size); + return ret; + }; + /** + * インスタンスを破棄する + * + * @param modelUserData 破棄するインスタンス + */ + CubismModelUserData.delete = function (modelUserData) { + if (modelUserData != null) { + modelUserData.release(); + modelUserData = null; + } + }; + /** + * ArtMeshのユーザーデータのリストの取得 + * + * @return ユーザーデータリスト + */ + CubismModelUserData.prototype.getArtMeshUserDatas = function () { + return this._artMeshUserDataNode; + }; + /** + * userdata3.jsonのパース + * + * @param buffer userdata3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + CubismModelUserData.prototype.parseUserData = function (buffer, size) { + var json = new cubismmodeluserdatajson_1.CubismModelUserDataJson(buffer, size); + var typeOfArtMesh = live2dcubismframework_1.CubismFramework.getIdManager().getId(ArtMesh); + var nodeCount = json.getUserDataCount(); + for (var i = 0; i < nodeCount; i++) { + var addNode = new CubismModelUserDataNode(); + addNode.targetId = json.getUserDataId(i); + addNode.targetType = live2dcubismframework_1.CubismFramework.getIdManager().getId(json.getUserDataTargetType(i)); + addNode.value = new csmstring_1.csmString(json.getUserDataValue(i)); + this._userDataNodes.pushBack(addNode); + if (addNode.targetType == typeOfArtMesh) { + this._artMeshUserDataNode.pushBack(addNode); + } + } + json.release(); + json = void 0; + }; + /** + * デストラクタ相当の処理 + * + * ユーザーデータ構造体配列を解放する + */ + CubismModelUserData.prototype.release = function () { + for (var i = 0; i < this._userDataNodes.getSize(); ++i) { + this._userDataNodes.set(i, null); + } + this._userDataNodes = null; + }; + return CubismModelUserData; +}()); +exports.CubismModelUserData = CubismModelUserData; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmodeluserdata")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismModelUserData = $.CubismModelUserData; + Live2DCubismFramework.CubismModelUserDataNode = $.CubismModelUserDataNode; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmodeluserdata.js.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodeluserdata.js.map b/live2demo/Framework/model/cubismmodeluserdata.js.map new file mode 100644 index 0000000..bbf18a4 --- /dev/null +++ b/live2demo/Framework/model/cubismmodeluserdata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodeluserdata.js","sourceRoot":"","sources":["../../src/model/cubismmodeluserdata.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodeluserdatajson.d.ts b/live2demo/Framework/model/cubismmodeluserdatajson.d.ts new file mode 100644 index 0000000..be742b4 --- /dev/null +++ b/live2demo/Framework/model/cubismmodeluserdatajson.d.ts @@ -0,0 +1,57 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +export declare class CubismModelUserDataJson { + /** + * コンストラクタ + * @param buffer userdata3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + constructor(buffer: ArrayBuffer, size: number); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * ユーザーデータ個数の取得 + * @return ユーザーデータの個数 + */ + getUserDataCount(): number; + /** + * ユーザーデータ総文字列数の取得 + * + * @return ユーザーデータ総文字列数 + */ + getTotalUserDataSize(): number; + /** + * ユーザーデータのタイプの取得 + * + * @return ユーザーデータのタイプ + */ + getUserDataTargetType(i: number): string; + /** + * ユーザーデータのターゲットIDの取得 + * + * @param i インデックス + * @return ユーザーデータターゲットID + */ + getUserDataId(i: number): CubismIdHandle; + /** + * ユーザーデータの文字列の取得 + * + * @param i インデックス + * @return ユーザーデータ + */ + getUserDataValue(i: number): string; + private _json; +} +import * as $ from './cubismmodeluserdatajson'; +export declare namespace Live2DCubismFramework { + const CubismModelUserDataJson: typeof $.CubismModelUserDataJson; + type CubismModelUserDataJson = $.CubismModelUserDataJson; +} +//# sourceMappingURL=cubismmodeluserdatajson.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodeluserdatajson.d.ts.map b/live2demo/Framework/model/cubismmodeluserdatajson.d.ts.map new file mode 100644 index 0000000..4990b9e --- /dev/null +++ b/live2demo/Framework/model/cubismmodeluserdatajson.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodeluserdatajson.d.ts","sourceRoot":"","sources":["../../src/model/cubismmodeluserdatajson.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAYhD,qBAAa,uBAAuB;IAClC;;;;OAIG;gBACgB,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAIpD;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;OAGG;IACI,gBAAgB,IAAI,MAAM;IAQjC;;;;OAIG;IACI,oBAAoB,IAAI,MAAM;IAQrC;;;;OAIG;IACI,qBAAqB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAS/C;;;;;OAKG;IACI,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc;IAW/C;;;;;OAKG;IACI,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAS1C,OAAO,CAAC,KAAK,CAAa;CAC3B;AAGD,OAAO,KAAK,CAAC,MAAM,2BAA2B,CAAC;AAE/C,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,uBAAuB,kCAA4B,CAAC;IACjE,KAAY,uBAAuB,GAAG,CAAC,CAAC,uBAAuB,CAAC;CACjE"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodeluserdatajson.js b/live2demo/Framework/model/cubismmodeluserdatajson.js new file mode 100644 index 0000000..51e09b9 --- /dev/null +++ b/live2demo/Framework/model/cubismmodeluserdatajson.js @@ -0,0 +1,131 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismModelUserDataJson = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var cubismjson_1 = require("../utils/cubismjson"); +var Meta = 'Meta'; +var UserDataCount = 'UserDataCount'; +var TotalUserDataSize = 'TotalUserDataSize'; +var UserData = 'UserData'; +var Target = 'Target'; +var Id = 'Id'; +var Value = 'Value'; +var CubismModelUserDataJson = /** @class */ (function () { + /** + * コンストラクタ + * @param buffer userdata3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + function CubismModelUserDataJson(buffer, size) { + this._json = cubismjson_1.CubismJson.create(buffer, size); + } + /** + * デストラクタ相当の処理 + */ + CubismModelUserDataJson.prototype.release = function () { + cubismjson_1.CubismJson.delete(this._json); + }; + /** + * ユーザーデータ個数の取得 + * @return ユーザーデータの個数 + */ + CubismModelUserDataJson.prototype.getUserDataCount = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(UserDataCount) + .toInt(); + }; + /** + * ユーザーデータ総文字列数の取得 + * + * @return ユーザーデータ総文字列数 + */ + CubismModelUserDataJson.prototype.getTotalUserDataSize = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(TotalUserDataSize) + .toInt(); + }; + /** + * ユーザーデータのタイプの取得 + * + * @return ユーザーデータのタイプ + */ + CubismModelUserDataJson.prototype.getUserDataTargetType = function (i) { + return this._json + .getRoot() + .getValueByString(UserData) + .getValueByIndex(i) + .getValueByString(Target) + .getRawString(); + }; + /** + * ユーザーデータのターゲットIDの取得 + * + * @param i インデックス + * @return ユーザーデータターゲットID + */ + CubismModelUserDataJson.prototype.getUserDataId = function (i) { + return live2dcubismframework_1.CubismFramework.getIdManager().getId(this._json + .getRoot() + .getValueByString(UserData) + .getValueByIndex(i) + .getValueByString(Id) + .getRawString()); + }; + /** + * ユーザーデータの文字列の取得 + * + * @param i インデックス + * @return ユーザーデータ + */ + CubismModelUserDataJson.prototype.getUserDataValue = function (i) { + return this._json + .getRoot() + .getValueByString(UserData) + .getValueByIndex(i) + .getValueByString(Value) + .getRawString(); + }; + return CubismModelUserDataJson; +}()); +exports.CubismModelUserDataJson = CubismModelUserDataJson; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmodeluserdatajson")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismModelUserDataJson = $.CubismModelUserDataJson; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmodeluserdatajson.js.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismmodeluserdatajson.js.map b/live2demo/Framework/model/cubismmodeluserdatajson.js.map new file mode 100644 index 0000000..c19cecc --- /dev/null +++ b/live2demo/Framework/model/cubismmodeluserdatajson.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmodeluserdatajson.js","sourceRoot":"","sources":["../../src/model/cubismmodeluserdatajson.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,kEAA2D;AAC3D,kDAAiD;AAEjD,IAAM,IAAI,GAAG,MAAM,CAAC;AACpB,IAAM,aAAa,GAAG,eAAe,CAAC;AACtC,IAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,IAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,IAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,IAAM,EAAE,GAAG,IAAI,CAAC;AAChB,IAAM,KAAK,GAAG,OAAO,CAAC;AAEtB;IACE;;;;OAIG;IACH,iCAAmB,MAAmB,EAAE,IAAY;QAClD,IAAI,CAAC,KAAK,GAAG,uBAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,yCAAO,GAAd;QACE,uBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACI,kDAAgB,GAAvB;QACE,OAAO,IAAI,CAAC,KAAK;aACd,OAAO,EAAE;aACT,gBAAgB,CAAC,IAAI,CAAC;aACtB,gBAAgB,CAAC,aAAa,CAAC;aAC/B,KAAK,EAAE,CAAC;IACb,CAAC;IAED;;;;OAIG;IACI,sDAAoB,GAA3B;QACE,OAAO,IAAI,CAAC,KAAK;aACd,OAAO,EAAE;aACT,gBAAgB,CAAC,IAAI,CAAC;aACtB,gBAAgB,CAAC,iBAAiB,CAAC;aACnC,KAAK,EAAE,CAAC;IACb,CAAC;IAED;;;;OAIG;IACI,uDAAqB,GAA5B,UAA6B,CAAS;QACpC,OAAO,IAAI,CAAC,KAAK;aACd,OAAO,EAAE;aACT,gBAAgB,CAAC,QAAQ,CAAC;aAC1B,eAAe,CAAC,CAAC,CAAC;aAClB,gBAAgB,CAAC,MAAM,CAAC;aACxB,YAAY,EAAE,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACI,+CAAa,GAApB,UAAqB,CAAS;QAC5B,OAAO,uCAAe,CAAC,YAAY,EAAE,CAAC,KAAK,CACzC,IAAI,CAAC,KAAK;aACP,OAAO,EAAE;aACT,gBAAgB,CAAC,QAAQ,CAAC;aAC1B,eAAe,CAAC,CAAC,CAAC;aAClB,gBAAgB,CAAC,EAAE,CAAC;aACpB,YAAY,EAAE,CAClB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,kDAAgB,GAAvB,UAAwB,CAAS;QAC/B,OAAO,IAAI,CAAC,KAAK;aACd,OAAO,EAAE;aACT,gBAAgB,CAAC,QAAQ,CAAC;aAC1B,eAAe,CAAC,CAAC,CAAC;aAClB,gBAAgB,CAAC,KAAK,CAAC;aACvB,YAAY,EAAE,CAAC;IACpB,CAAC;IAGH,8BAAC;AAAD,CAAC,AAzFD,IAyFC;AAzFY,0DAAuB;AA2FpC,0CAA0C;AAC1C,2DAA+C;AAC/C,2DAA2D;AAC3D,IAAiB,qBAAqB,CAGrC;AAHD,WAAiB,qBAAqB;IACvB,6CAAuB,GAAG,CAAC,CAAC,uBAAuB,CAAC;AAEnE,CAAC,EAHgB,qBAAqB,qCAArB,qBAAqB,QAGrC"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismusermodel.d.ts b/live2demo/Framework/model/cubismusermodel.d.ts new file mode 100644 index 0000000..37579e3 --- /dev/null +++ b/live2demo/Framework/model/cubismusermodel.d.ts @@ -0,0 +1,219 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismBreath } from '../effect/cubismbreath'; +import { CubismEyeBlink } from '../effect/cubismeyeblink'; +import { CubismPose } from '../effect/cubismpose'; +import { CubismIdHandle } from '../id/cubismid'; +import { CubismModelMatrix } from '../math/cubismmodelmatrix'; +import { CubismTargetPoint } from '../math/cubismtargetpoint'; +import { ACubismMotion, FinishedMotionCallback } from '../motion/acubismmotion'; +import { CubismExpressionMotionManager } from '../motion/cubismexpressionmotionmanager'; +import { CubismMotion } from '../motion/cubismmotion'; +import { CubismMotionManager } from '../motion/cubismmotionmanager'; +import { CubismMotionQueueManager } from '../motion/cubismmotionqueuemanager'; +import { CubismPhysics } from '../physics/cubismphysics'; +import { CubismRenderer_WebGL } from '../rendering/cubismrenderer_webgl'; +import { csmString } from '../type/csmstring'; +import { CubismMoc } from './cubismmoc'; +import { CubismModel } from './cubismmodel'; +import { CubismModelUserData } from './cubismmodeluserdata'; +/** + * ユーザーが実際に使用するモデル + * + * ユーザーが実際に使用するモデルの基底クラス。これを継承してユーザーが実装する。 + */ +export declare class CubismUserModel { + /** + * 初期化状態の取得 + * + * 初期化されている状態か? + * + * @return true 初期化されている + * @return false 初期化されていない + */ + isInitialized(): boolean; + /** + * 初期化状態の設定 + * + * 初期化状態を設定する。 + * + * @param v 初期化状態 + */ + setInitialized(v: boolean): void; + /** + * 更新状態の取得 + * + * 更新されている状態か? + * + * @return true 更新されている + * @return false 更新されていない + */ + isUpdating(): boolean; + /** + * 更新状態の設定 + * + * 更新状態を設定する + * + * @param v 更新状態 + */ + setUpdating(v: boolean): void; + /** + * マウスドラッグ情報の設定 + * @param ドラッグしているカーソルのX位置 + * @param ドラッグしているカーソルのY位置 + */ + setDragging(x: number, y: number): void; + /** + * 加速度の情報を設定する + * @param x X軸方向の加速度 + * @param y Y軸方向の加速度 + * @param z Z軸方向の加速度 + */ + setAcceleration(x: number, y: number, z: number): void; + /** + * モデル行列を取得する + * @return モデル行列 + */ + getModelMatrix(): CubismModelMatrix; + /** + * 不透明度の設定 + * @param a 不透明度 + */ + setOpacity(a: number): void; + /** + * 不透明度の取得 + * @return 不透明度 + */ + getOpacity(): number; + /** + * モデルデータを読み込む + * + * @param buffer moc3ファイルが読み込まれているバッファ + */ + loadModel(buffer: ArrayBuffer, shouldCheckMocConsistency?: boolean): void; + /** + * モーションデータを読み込む + * @param buffer motion3.jsonファイルが読み込まれているバッファ + * @param size バッファのサイズ + * @param name モーションの名前 + * @param onFinishedMotionHandler モーション再生終了時に呼び出されるコールバック関数 + * @return モーションクラス + */ + loadMotion: (buffer: ArrayBuffer, size: number, name: string, onFinishedMotionHandler?: FinishedMotionCallback) => CubismMotion; + /** + * 表情データの読み込み + * @param buffer expファイルが読み込まれているバッファ + * @param size バッファのサイズ + * @param name 表情の名前 + */ + loadExpression(buffer: ArrayBuffer, size: number, name: string): ACubismMotion; + /** + * ポーズデータの読み込み + * @param buffer pose3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + loadPose(buffer: ArrayBuffer, size: number): void; + /** + * モデルに付属するユーザーデータを読み込む + * @param buffer userdata3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + loadUserData(buffer: ArrayBuffer, size: number): void; + /** + * 物理演算データの読み込み + * @param buffer physics3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + loadPhysics(buffer: ArrayBuffer, size: number): void; + /** + * 当たり判定の取得 + * @param drawableId 検証したいDrawableのID + * @param pointX X位置 + * @param pointY Y位置 + * @return true ヒットしている + * @return false ヒットしていない + */ + isHit(drawableId: CubismIdHandle, pointX: number, pointY: number): boolean; + /** + * モデルの取得 + * @return モデル + */ + getModel(): CubismModel; + /** + * レンダラの取得 + * @return レンダラ + */ + getRenderer(): CubismRenderer_WebGL; + /** + * レンダラを作成して初期化を実行する + * @param maskBufferCount バッファの生成数 + */ + createRenderer(maskBufferCount?: number): void; + /** + * レンダラの解放 + */ + deleteRenderer(): void; + /** + * イベント発火時の標準処理 + * + * Eventが再生処理時にあった場合の処理をする。 + * 継承で上書きすることを想定している。 + * 上書きしない場合はログ出力をする。 + * + * @param eventValue 発火したイベントの文字列データ + */ + motionEventFired(eventValue: csmString): void; + /** + * イベント用のコールバック + * + * CubismMotionQueueManagerにイベント用に登録するためのCallback。 + * CubismUserModelの継承先のEventFiredを呼ぶ。 + * + * @param caller 発火したイベントを管理していたモーションマネージャー、比較用 + * @param eventValue 発火したイベントの文字列データ + * @param customData CubismUserModelを継承したインスタンスを想定 + */ + static cubismDefaultMotionEventCallback(caller: CubismMotionQueueManager, eventValue: csmString, customData: CubismUserModel): void; + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタに相当する処理 + */ + release(): void; + protected _moc: CubismMoc; + protected _model: CubismModel; + protected _motionManager: CubismMotionManager; + protected _expressionManager: CubismExpressionMotionManager; + protected _eyeBlink: CubismEyeBlink; + protected _breath: CubismBreath; + protected _modelMatrix: CubismModelMatrix; + protected _pose: CubismPose; + protected _dragManager: CubismTargetPoint; + protected _physics: CubismPhysics; + protected _modelUserData: CubismModelUserData; + protected _initialized: boolean; + protected _updating: boolean; + protected _opacity: number; + protected _lipsync: boolean; + protected _lastLipSyncValue: number; + protected _dragX: number; + protected _dragY: number; + protected _accelerationX: number; + protected _accelerationY: number; + protected _accelerationZ: number; + protected _mocConsistency: boolean; + protected _debugMode: boolean; + private _renderer; +} +import * as $ from './cubismusermodel'; +export declare namespace Live2DCubismFramework { + const CubismUserModel: typeof $.CubismUserModel; + type CubismUserModel = $.CubismUserModel; +} +//# sourceMappingURL=cubismusermodel.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismusermodel.d.ts.map b/live2demo/Framework/model/cubismusermodel.d.ts.map new file mode 100644 index 0000000..11dacd4 --- /dev/null +++ b/live2demo/Framework/model/cubismusermodel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismusermodel.d.ts","sourceRoot":"","sources":["../../src/model/cubismusermodel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/model/cubismusermodel.js b/live2demo/Framework/model/cubismusermodel.js new file mode 100644 index 0000000..8955339 --- /dev/null +++ b/live2demo/Framework/model/cubismusermodel.js @@ -0,0 +1,373 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismUserModel = void 0; +var cubismbreath_1 = require("../effect/cubismbreath"); +var cubismeyeblink_1 = require("../effect/cubismeyeblink"); +var cubismpose_1 = require("../effect/cubismpose"); +var live2dcubismframework_1 = require("../live2dcubismframework"); +var cubismmodelmatrix_1 = require("../math/cubismmodelmatrix"); +var cubismtargetpoint_1 = require("../math/cubismtargetpoint"); +var cubismexpressionmotion_1 = require("../motion/cubismexpressionmotion"); +var cubismexpressionmotionmanager_1 = require("../motion/cubismexpressionmotionmanager"); +var cubismmotion_1 = require("../motion/cubismmotion"); +var cubismmotionmanager_1 = require("../motion/cubismmotionmanager"); +var cubismphysics_1 = require("../physics/cubismphysics"); +var cubismrenderer_webgl_1 = require("../rendering/cubismrenderer_webgl"); +var cubismdebug_1 = require("../utils/cubismdebug"); +var cubismmoc_1 = require("./cubismmoc"); +var cubismmodeluserdata_1 = require("./cubismmodeluserdata"); +/** + * ユーザーが実際に使用するモデル + * + * ユーザーが実際に使用するモデルの基底クラス。これを継承してユーザーが実装する。 + */ +var CubismUserModel = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismUserModel() { + /** + * モーションデータを読み込む + * @param buffer motion3.jsonファイルが読み込まれているバッファ + * @param size バッファのサイズ + * @param name モーションの名前 + * @param onFinishedMotionHandler モーション再生終了時に呼び出されるコールバック関数 + * @return モーションクラス + */ + this.loadMotion = function (buffer, size, name, onFinishedMotionHandler) { return cubismmotion_1.CubismMotion.create(buffer, size, onFinishedMotionHandler); }; + // 各変数初期化 + this._moc = null; + this._model = null; + this._motionManager = null; + this._expressionManager = null; + this._eyeBlink = null; + this._breath = null; + this._modelMatrix = null; + this._pose = null; + this._dragManager = null; + this._physics = null; + this._modelUserData = null; + this._initialized = false; + this._updating = false; + this._opacity = 1.0; + this._lipsync = true; + this._lastLipSyncValue = 0.0; + this._dragX = 0.0; + this._dragY = 0.0; + this._accelerationX = 0.0; + this._accelerationY = 0.0; + this._accelerationZ = 0.0; + this._mocConsistency = false; + this._debugMode = false; + this._renderer = null; + // モーションマネージャーを作成 + this._motionManager = new cubismmotionmanager_1.CubismMotionManager(); + this._motionManager.setEventCallback(CubismUserModel.cubismDefaultMotionEventCallback, this); + // 表情マネージャーを作成 + this._expressionManager = new cubismexpressionmotionmanager_1.CubismExpressionMotionManager(); + // ドラッグによるアニメーション + this._dragManager = new cubismtargetpoint_1.CubismTargetPoint(); + } + /** + * 初期化状態の取得 + * + * 初期化されている状態か? + * + * @return true 初期化されている + * @return false 初期化されていない + */ + CubismUserModel.prototype.isInitialized = function () { + return this._initialized; + }; + /** + * 初期化状態の設定 + * + * 初期化状態を設定する。 + * + * @param v 初期化状態 + */ + CubismUserModel.prototype.setInitialized = function (v) { + this._initialized = v; + }; + /** + * 更新状態の取得 + * + * 更新されている状態か? + * + * @return true 更新されている + * @return false 更新されていない + */ + CubismUserModel.prototype.isUpdating = function () { + return this._updating; + }; + /** + * 更新状態の設定 + * + * 更新状態を設定する + * + * @param v 更新状態 + */ + CubismUserModel.prototype.setUpdating = function (v) { + this._updating = v; + }; + /** + * マウスドラッグ情報の設定 + * @param ドラッグしているカーソルのX位置 + * @param ドラッグしているカーソルのY位置 + */ + CubismUserModel.prototype.setDragging = function (x, y) { + this._dragManager.set(x, y); + }; + /** + * 加速度の情報を設定する + * @param x X軸方向の加速度 + * @param y Y軸方向の加速度 + * @param z Z軸方向の加速度 + */ + CubismUserModel.prototype.setAcceleration = function (x, y, z) { + this._accelerationX = x; + this._accelerationY = y; + this._accelerationZ = z; + }; + /** + * モデル行列を取得する + * @return モデル行列 + */ + CubismUserModel.prototype.getModelMatrix = function () { + return this._modelMatrix; + }; + /** + * 不透明度の設定 + * @param a 不透明度 + */ + CubismUserModel.prototype.setOpacity = function (a) { + this._opacity = a; + }; + /** + * 不透明度の取得 + * @return 不透明度 + */ + CubismUserModel.prototype.getOpacity = function () { + return this._opacity; + }; + /** + * モデルデータを読み込む + * + * @param buffer moc3ファイルが読み込まれているバッファ + */ + CubismUserModel.prototype.loadModel = function (buffer, shouldCheckMocConsistency) { + if (shouldCheckMocConsistency === void 0) { shouldCheckMocConsistency = false; } + this._moc = cubismmoc_1.CubismMoc.create(buffer, shouldCheckMocConsistency); + if (this._moc == null) { + (0, cubismdebug_1.CubismLogError)('Failed to CubismMoc.create().'); + return; + } + this._model = this._moc.createModel(); + if (this._model == null) { + (0, cubismdebug_1.CubismLogError)('Failed to CreateModel().'); + return; + } + this._model.saveParameters(); + this._modelMatrix = new cubismmodelmatrix_1.CubismModelMatrix(this._model.getCanvasWidth(), this._model.getCanvasHeight()); + }; + /** + * 表情データの読み込み + * @param buffer expファイルが読み込まれているバッファ + * @param size バッファのサイズ + * @param name 表情の名前 + */ + CubismUserModel.prototype.loadExpression = function (buffer, size, name) { + return cubismexpressionmotion_1.CubismExpressionMotion.create(buffer, size); + }; + /** + * ポーズデータの読み込み + * @param buffer pose3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + CubismUserModel.prototype.loadPose = function (buffer, size) { + this._pose = cubismpose_1.CubismPose.create(buffer, size); + }; + /** + * モデルに付属するユーザーデータを読み込む + * @param buffer userdata3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + CubismUserModel.prototype.loadUserData = function (buffer, size) { + this._modelUserData = cubismmodeluserdata_1.CubismModelUserData.create(buffer, size); + }; + /** + * 物理演算データの読み込み + * @param buffer physics3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + CubismUserModel.prototype.loadPhysics = function (buffer, size) { + this._physics = cubismphysics_1.CubismPhysics.create(buffer, size); + }; + /** + * 当たり判定の取得 + * @param drawableId 検証したいDrawableのID + * @param pointX X位置 + * @param pointY Y位置 + * @return true ヒットしている + * @return false ヒットしていない + */ + CubismUserModel.prototype.isHit = function (drawableId, pointX, pointY) { + var drawIndex = this._model.getDrawableIndex(drawableId); + if (drawIndex < 0) { + return false; // 存在しない場合はfalse + } + var count = this._model.getDrawableVertexCount(drawIndex); + var vertices = this._model.getDrawableVertices(drawIndex); + var left = vertices[0]; + var right = vertices[0]; + var top = vertices[1]; + var bottom = vertices[1]; + for (var j = 1; j < count; ++j) { + var x = vertices[live2dcubismframework_1.Constant.vertexOffset + j * live2dcubismframework_1.Constant.vertexStep]; + var y = vertices[live2dcubismframework_1.Constant.vertexOffset + j * live2dcubismframework_1.Constant.vertexStep + 1]; + if (x < left) { + left = x; // Min x + } + if (x > right) { + right = x; // Max x + } + if (y < top) { + top = y; // Min y + } + if (y > bottom) { + bottom = y; // Max y + } + } + var tx = this._modelMatrix.invertTransformX(pointX); + var ty = this._modelMatrix.invertTransformY(pointY); + return left <= tx && tx <= right && top <= ty && ty <= bottom; + }; + /** + * モデルの取得 + * @return モデル + */ + CubismUserModel.prototype.getModel = function () { + return this._model; + }; + /** + * レンダラの取得 + * @return レンダラ + */ + CubismUserModel.prototype.getRenderer = function () { + return this._renderer; + }; + /** + * レンダラを作成して初期化を実行する + * @param maskBufferCount バッファの生成数 + */ + CubismUserModel.prototype.createRenderer = function (maskBufferCount) { + if (maskBufferCount === void 0) { maskBufferCount = 1; } + if (this._renderer) { + this.deleteRenderer(); + } + this._renderer = new cubismrenderer_webgl_1.CubismRenderer_WebGL(); + this._renderer.initialize(this._model, maskBufferCount); + }; + /** + * レンダラの解放 + */ + CubismUserModel.prototype.deleteRenderer = function () { + if (this._renderer != null) { + this._renderer.release(); + this._renderer = null; + } + }; + /** + * イベント発火時の標準処理 + * + * Eventが再生処理時にあった場合の処理をする。 + * 継承で上書きすることを想定している。 + * 上書きしない場合はログ出力をする。 + * + * @param eventValue 発火したイベントの文字列データ + */ + CubismUserModel.prototype.motionEventFired = function (eventValue) { + (0, cubismdebug_1.CubismLogInfo)('{0}', eventValue.s); + }; + /** + * イベント用のコールバック + * + * CubismMotionQueueManagerにイベント用に登録するためのCallback。 + * CubismUserModelの継承先のEventFiredを呼ぶ。 + * + * @param caller 発火したイベントを管理していたモーションマネージャー、比較用 + * @param eventValue 発火したイベントの文字列データ + * @param customData CubismUserModelを継承したインスタンスを想定 + */ + CubismUserModel.cubismDefaultMotionEventCallback = function (caller, eventValue, customData) { + var model = customData; + if (model != null) { + model.motionEventFired(eventValue); + } + }; + /** + * デストラクタに相当する処理 + */ + CubismUserModel.prototype.release = function () { + if (this._motionManager != null) { + this._motionManager.release(); + this._motionManager = null; + } + if (this._expressionManager != null) { + this._expressionManager.release(); + this._expressionManager = null; + } + if (this._moc != null) { + this._moc.deleteModel(this._model); + this._moc.release(); + this._moc = null; + } + this._modelMatrix = null; + cubismpose_1.CubismPose.delete(this._pose); + cubismeyeblink_1.CubismEyeBlink.delete(this._eyeBlink); + cubismbreath_1.CubismBreath.delete(this._breath); + this._dragManager = null; + cubismphysics_1.CubismPhysics.delete(this._physics); + cubismmodeluserdata_1.CubismModelUserData.delete(this._modelUserData); + this.deleteRenderer(); + }; + return CubismUserModel; +}()); +exports.CubismUserModel = CubismUserModel; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismusermodel")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismUserModel = $.CubismUserModel; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismusermodel.js.map \ No newline at end of file diff --git a/live2demo/Framework/model/cubismusermodel.js.map b/live2demo/Framework/model/cubismusermodel.js.map new file mode 100644 index 0000000..a1651c4 --- /dev/null +++ b/live2demo/Framework/model/cubismusermodel.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismusermodel.js","sourceRoot":"","sources":["../../src/model/cubismusermodel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/motion/acubismmotion.d.ts b/live2demo/Framework/motion/acubismmotion.d.ts new file mode 100644 index 0000000..76f00f3 --- /dev/null +++ b/live2demo/Framework/motion/acubismmotion.d.ts @@ -0,0 +1,182 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismModel } from '../model/cubismmodel'; +import { csmString } from '../type/csmstring'; +import { csmVector } from '../type/csmvector'; +import { CubismMotionQueueEntry } from './cubismmotionqueueentry'; +/** モーション再生終了コールバック関数定義 */ +export type FinishedMotionCallback = (self: ACubismMotion) => void; +/** + * モーションの抽象基底クラス + * + * モーションの抽象基底クラス。MotionQueueManagerによってモーションの再生を管理する。 + */ +export declare abstract class ACubismMotion { + /** + * インスタンスの破棄 + */ + static delete(motion: ACubismMotion): void; + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * モデルのパラメータ + * @param model 対象のモデル + * @param motionQueueEntry CubismMotionQueueManagerで管理されているモーション + * @param userTimeSeconds デルタ時間の積算値[秒] + */ + updateParameters(model: CubismModel, motionQueueEntry: CubismMotionQueueEntry, userTimeSeconds: number): void; + /** + * @brief モデルのウェイト更新 + * + * モーションのウェイトを更新する。 + * + * @param[in] motionQueueEntry CubismMotionQueueManagerで管理されているモーション + * @param[in] userTimeSeconds デルタ時間の積算値[秒] + */ + updateFadeWeight(motionQueueEntry: CubismMotionQueueEntry, userTimeSeconds: number): number; + /** + * フェードインの時間を設定する + * @param fadeInSeconds フェードインにかかる時間[秒] + */ + setFadeInTime(fadeInSeconds: number): void; + /** + * フェードアウトの時間を設定する + * @param fadeOutSeconds フェードアウトにかかる時間[秒] + */ + setFadeOutTime(fadeOutSeconds: number): void; + /** + * フェードアウトにかかる時間の取得 + * @return フェードアウトにかかる時間[秒] + */ + getFadeOutTime(): number; + /** + * フェードインにかかる時間の取得 + * @return フェードインにかかる時間[秒] + */ + getFadeInTime(): number; + /** + * モーション適用の重みの設定 + * @param weight 重み(0.0 - 1.0) + */ + setWeight(weight: number): void; + /** + * モーション適用の重みの取得 + * @return 重み(0.0 - 1.0) + */ + getWeight(): number; + /** + * モーションの長さの取得 + * @return モーションの長さ[秒] + * + * @note ループの時は「-1」。 + * ループでない場合は、オーバーライドする。 + * 正の値の時は取得される時間で終了する。 + * 「-1」の時は外部から停止命令がない限り終わらない処理となる。 + */ + getDuration(): number; + /** + * モーションのループ1回分の長さの取得 + * @return モーションのループ一回分の長さ[秒] + * + * @note ループしない場合は、getDuration()と同じ値を返す + * ループ一回分の長さが定義できない場合(プログラム的に動き続けるサブクラスなど)の場合は「-1」を返す + */ + getLoopDuration(): number; + /** + * モーション再生の開始時刻の設定 + * @param offsetSeconds モーション再生の開始時刻[秒] + */ + setOffsetTime(offsetSeconds: number): void; + /** + * モデルのパラメータ更新 + * + * イベント発火のチェック。 + * 入力する時間は呼ばれるモーションタイミングを0とした秒数で行う。 + * + * @param beforeCheckTimeSeconds 前回のイベントチェック時間[秒] + * @param motionTimeSeconds 今回の再生時間[秒] + */ + getFiredEvent(beforeCheckTimeSeconds: number, motionTimeSeconds: number): csmVector; + /** + * モーションを更新して、モデルにパラメータ値を反映する + * @param model 対象のモデル + * @param userTimeSeconds デルタ時間の積算値[秒] + * @param weight モーションの重み + * @param motionQueueEntry CubismMotionQueueManagerで管理されているモーション + * @return true モデルへパラメータ値の反映あり + * @return false モデルへのパラメータ値の反映なし(モーションの変化なし) + */ + abstract doUpdateParameters(model: CubismModel, userTimeSeconds: number, weight: number, motionQueueEntry: CubismMotionQueueEntry): void; + /** + * モーション再生終了コールバックの登録 + * + * モーション再生終了コールバックを登録する。 + * isFinishedフラグを設定するタイミングで呼び出される。 + * 以下の状態の際には呼び出されない: + * 1. 再生中のモーションが「ループ」として設定されているとき + * 2. コールバックが登録されていない時 + * + * @param onFinishedMotionHandler モーション再生終了コールバック関数 + */ + setFinishedMotionHandler: (onFinishedMotionHandler: FinishedMotionCallback) => FinishedMotionCallback; + /** + * モーション再生終了コールバックの取得 + * + * モーション再生終了コールバックを取得する。 + * + * @return 登録されているモーション再生終了コールバック関数 + */ + getFinishedMotionHandler: () => FinishedMotionCallback; + /** + * 透明度のカーブが存在するかどうかを確認する + * + * @returns true -> キーが存在する + * false -> キーが存在しない + */ + isExistModelOpacity(): boolean; + /** + * 透明度のカーブのインデックスを返す + * + * @returns success:透明度のカーブのインデックス + */ + getModelOpacityIndex(): number; + /** + * 透明度のIdを返す + * + * @param index モーションカーブのインデックス + * @returns success:透明度のId + */ + getModelOpacityId(index: number): CubismIdHandle; + /** + * 指定時間の透明度の値を返す + * + * @returns success:モーションの現在時間におけるOpacityの値 + * + * @note 更新後の値を取るにはUpdateParameters() の後に呼び出す。 + */ + protected getModelOpacityValue(): number; + _fadeInSeconds: number; + _fadeOutSeconds: number; + _weight: number; + _offsetSeconds: number; + _firedEventValues: csmVector; + _onFinishedMotion?: FinishedMotionCallback; +} +import * as $ from './acubismmotion'; +import { CubismIdHandle } from '../id/cubismid'; +export declare namespace Live2DCubismFramework { + const ACubismMotion: typeof $.ACubismMotion; + type ACubismMotion = $.ACubismMotion; + type FinishedMotionCallback = $.FinishedMotionCallback; +} +//# sourceMappingURL=acubismmotion.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/motion/acubismmotion.d.ts.map b/live2demo/Framework/motion/acubismmotion.d.ts.map new file mode 100644 index 0000000..c7dd32d --- /dev/null +++ b/live2demo/Framework/motion/acubismmotion.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"acubismmotion.d.ts","sourceRoot":"","sources":["../../src/motion/acubismmotion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,0BAA0B;AAC1B,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAEnE;;;;GAIG;AACH,8BAAsB,aAAa;IACjC;;OAEG;WACW,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAKjD;;OAEG;;IASH;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;;;OAKG;IACI,gBAAgB,CACrB,KAAK,EAAE,WAAW,EAClB,gBAAgB,EAAE,sBAAsB,EACxC,eAAe,EAAE,MAAM,GACtB,IAAI;IAyCP;;;;;;;OAOG;IACI,gBAAgB,CACrB,gBAAgB,EAAE,sBAAsB,EACxC,eAAe,EAAE,MAAM,GACtB,MAAM;IA8BT;;;OAGG;IACI,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAIjD;;;OAGG;IACI,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAInD;;;OAGG;IACI,cAAc,IAAI,MAAM;IAI/B;;;OAGG;IACI,aAAa,IAAI,MAAM;IAI9B;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAItC;;;OAGG;IACI,SAAS,IAAI,MAAM;IAI1B;;;;;;;;OAQG;IACI,WAAW,IAAI,MAAM;IAI5B;;;;;;OAMG;IACI,eAAe,IAAI,MAAM;IAIhC;;;OAGG;IACI,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAIjD;;;;;;;;OAQG;IACI,aAAa,CAClB,sBAAsB,EAAE,MAAM,EAC9B,iBAAiB,EAAE,MAAM,GACxB,SAAS,CAAC,SAAS,CAAC;IAIvB;;;;;;;;OAQG;aACa,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,sBAAsB,GACvC,IAAI;IAEP;;;;;;;;;;OAUG;IACI,wBAAwB,4BACJ,sBAAsB,4BACO;IAExD;;;;;;OAMG;IACI,wBAAwB,+BAAgC;IAE/D;;;;;OAKG;IACI,mBAAmB,IAAI,OAAO;IAIrC;;;;OAIG;IACI,oBAAoB,IAAI,MAAM;IAIrC;;;;;OAKG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAIvD;;;;;;OAMG;IACH,SAAS,CAAC,oBAAoB,IAAI,MAAM;IAIjC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IAEvB,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAGxC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;CACnD;AAGD,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,aAAa,wBAAkB,CAAC;IAC7C,KAAY,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;IAC5C,KAAY,sBAAsB,GAAG,CAAC,CAAC,sBAAsB,CAAC;CAC/D"} \ No newline at end of file diff --git a/live2demo/Framework/motion/acubismmotion.js b/live2demo/Framework/motion/acubismmotion.js new file mode 100644 index 0000000..478eb84 --- /dev/null +++ b/live2demo/Framework/motion/acubismmotion.js @@ -0,0 +1,271 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.ACubismMotion = void 0; +var cubismmath_1 = require("../math/cubismmath"); +var csmvector_1 = require("../type/csmvector"); +var cubismdebug_1 = require("../utils/cubismdebug"); +/** + * モーションの抽象基底クラス + * + * モーションの抽象基底クラス。MotionQueueManagerによってモーションの再生を管理する。 + */ +var ACubismMotion = /** @class */ (function () { + /** + * コンストラクタ + */ + function ACubismMotion() { + var _this = this; + /** + * モーション再生終了コールバックの登録 + * + * モーション再生終了コールバックを登録する。 + * isFinishedフラグを設定するタイミングで呼び出される。 + * 以下の状態の際には呼び出されない: + * 1. 再生中のモーションが「ループ」として設定されているとき + * 2. コールバックが登録されていない時 + * + * @param onFinishedMotionHandler モーション再生終了コールバック関数 + */ + this.setFinishedMotionHandler = function (onFinishedMotionHandler) { return (_this._onFinishedMotion = onFinishedMotionHandler); }; + /** + * モーション再生終了コールバックの取得 + * + * モーション再生終了コールバックを取得する。 + * + * @return 登録されているモーション再生終了コールバック関数 + */ + this.getFinishedMotionHandler = function () { return _this._onFinishedMotion; }; + this._fadeInSeconds = -1.0; + this._fadeOutSeconds = -1.0; + this._weight = 1.0; + this._offsetSeconds = 0.0; // 再生の開始時刻 + this._firedEventValues = new csmvector_1.csmVector(); + } + /** + * インスタンスの破棄 + */ + ACubismMotion.delete = function (motion) { + motion.release(); + motion = null; + }; + /** + * デストラクタ相当の処理 + */ + ACubismMotion.prototype.release = function () { + this._weight = 0.0; + }; + /** + * モデルのパラメータ + * @param model 対象のモデル + * @param motionQueueEntry CubismMotionQueueManagerで管理されているモーション + * @param userTimeSeconds デルタ時間の積算値[秒] + */ + ACubismMotion.prototype.updateParameters = function (model, motionQueueEntry, userTimeSeconds) { + if (!motionQueueEntry.isAvailable() || motionQueueEntry.isFinished()) { + return; + } + if (!motionQueueEntry.isStarted()) { + motionQueueEntry.setIsStarted(true); + motionQueueEntry.setStartTime(userTimeSeconds - this._offsetSeconds); // モーションの開始時刻を記録 + motionQueueEntry.setFadeInStartTime(userTimeSeconds); // フェードインの開始時刻 + var duration = this.getDuration(); + if (motionQueueEntry.getEndTime() < 0) { + // 開始していないうちに終了設定している場合がある。 + motionQueueEntry.setEndTime(duration <= 0 ? -1 : motionQueueEntry.getStartTime() + duration); + // duration == -1 の場合はループする + } + } + var fadeWeight = this.updateFadeWeight(motionQueueEntry, userTimeSeconds); + //---- 全てのパラメータIDをループする ---- + this.doUpdateParameters(model, userTimeSeconds, fadeWeight, motionQueueEntry); + // 後処理 + // 終了時刻を過ぎたら終了フラグを立てる(CubismMotionQueueManager) + if (motionQueueEntry.getEndTime() > 0 && + motionQueueEntry.getEndTime() < userTimeSeconds) { + motionQueueEntry.setIsFinished(true); // 終了 + } + }; + /** + * @brief モデルのウェイト更新 + * + * モーションのウェイトを更新する。 + * + * @param[in] motionQueueEntry CubismMotionQueueManagerで管理されているモーション + * @param[in] userTimeSeconds デルタ時間の積算値[秒] + */ + ACubismMotion.prototype.updateFadeWeight = function (motionQueueEntry, userTimeSeconds) { + var fadeWeight = this._weight; // 現在の値と掛け合わせる割合 + //---- フェードイン・アウトの処理 ---- + // 単純なサイン関数でイージングする + var fadeIn = this._fadeInSeconds == 0.0 + ? 1.0 + : cubismmath_1.CubismMath.getEasingSine((userTimeSeconds - motionQueueEntry.getFadeInStartTime()) / + this._fadeInSeconds); + var fadeOut = this._fadeOutSeconds == 0.0 || motionQueueEntry.getEndTime() < 0.0 + ? 1.0 + : cubismmath_1.CubismMath.getEasingSine((motionQueueEntry.getEndTime() - userTimeSeconds) / + this._fadeOutSeconds); + fadeWeight = fadeWeight * fadeIn * fadeOut; + motionQueueEntry.setState(userTimeSeconds, fadeWeight); + (0, cubismdebug_1.CSM_ASSERT)(0.0 <= fadeWeight && fadeWeight <= 1.0); + return fadeWeight; + }; + /** + * フェードインの時間を設定する + * @param fadeInSeconds フェードインにかかる時間[秒] + */ + ACubismMotion.prototype.setFadeInTime = function (fadeInSeconds) { + this._fadeInSeconds = fadeInSeconds; + }; + /** + * フェードアウトの時間を設定する + * @param fadeOutSeconds フェードアウトにかかる時間[秒] + */ + ACubismMotion.prototype.setFadeOutTime = function (fadeOutSeconds) { + this._fadeOutSeconds = fadeOutSeconds; + }; + /** + * フェードアウトにかかる時間の取得 + * @return フェードアウトにかかる時間[秒] + */ + ACubismMotion.prototype.getFadeOutTime = function () { + return this._fadeOutSeconds; + }; + /** + * フェードインにかかる時間の取得 + * @return フェードインにかかる時間[秒] + */ + ACubismMotion.prototype.getFadeInTime = function () { + return this._fadeInSeconds; + }; + /** + * モーション適用の重みの設定 + * @param weight 重み(0.0 - 1.0) + */ + ACubismMotion.prototype.setWeight = function (weight) { + this._weight = weight; + }; + /** + * モーション適用の重みの取得 + * @return 重み(0.0 - 1.0) + */ + ACubismMotion.prototype.getWeight = function () { + return this._weight; + }; + /** + * モーションの長さの取得 + * @return モーションの長さ[秒] + * + * @note ループの時は「-1」。 + * ループでない場合は、オーバーライドする。 + * 正の値の時は取得される時間で終了する。 + * 「-1」の時は外部から停止命令がない限り終わらない処理となる。 + */ + ACubismMotion.prototype.getDuration = function () { + return -1.0; + }; + /** + * モーションのループ1回分の長さの取得 + * @return モーションのループ一回分の長さ[秒] + * + * @note ループしない場合は、getDuration()と同じ値を返す + * ループ一回分の長さが定義できない場合(プログラム的に動き続けるサブクラスなど)の場合は「-1」を返す + */ + ACubismMotion.prototype.getLoopDuration = function () { + return -1.0; + }; + /** + * モーション再生の開始時刻の設定 + * @param offsetSeconds モーション再生の開始時刻[秒] + */ + ACubismMotion.prototype.setOffsetTime = function (offsetSeconds) { + this._offsetSeconds = offsetSeconds; + }; + /** + * モデルのパラメータ更新 + * + * イベント発火のチェック。 + * 入力する時間は呼ばれるモーションタイミングを0とした秒数で行う。 + * + * @param beforeCheckTimeSeconds 前回のイベントチェック時間[秒] + * @param motionTimeSeconds 今回の再生時間[秒] + */ + ACubismMotion.prototype.getFiredEvent = function (beforeCheckTimeSeconds, motionTimeSeconds) { + return this._firedEventValues; + }; + /** + * 透明度のカーブが存在するかどうかを確認する + * + * @returns true -> キーが存在する + * false -> キーが存在しない + */ + ACubismMotion.prototype.isExistModelOpacity = function () { + return false; + }; + /** + * 透明度のカーブのインデックスを返す + * + * @returns success:透明度のカーブのインデックス + */ + ACubismMotion.prototype.getModelOpacityIndex = function () { + return -1; + }; + /** + * 透明度のIdを返す + * + * @param index モーションカーブのインデックス + * @returns success:透明度のId + */ + ACubismMotion.prototype.getModelOpacityId = function (index) { + return null; + }; + /** + * 指定時間の透明度の値を返す + * + * @returns success:モーションの現在時間におけるOpacityの値 + * + * @note 更新後の値を取るにはUpdateParameters() の後に呼び出す。 + */ + ACubismMotion.prototype.getModelOpacityValue = function () { + return 1.0; + }; + return ACubismMotion; +}()); +exports.ACubismMotion = ACubismMotion; +// Namespace definition for compatibility. +var $ = __importStar(require("./acubismmotion")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.ACubismMotion = $.ACubismMotion; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=acubismmotion.js.map \ No newline at end of file diff --git a/live2demo/Framework/motion/acubismmotion.js.map b/live2demo/Framework/motion/acubismmotion.js.map new file mode 100644 index 0000000..885b195 --- /dev/null +++ b/live2demo/Framework/motion/acubismmotion.js.map @@ -0,0 +1 @@ +{"version":3,"file":"acubismmotion.js","sourceRoot":"","sources":["../../src/motion/acubismmotion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAAgD;AAGhD,+CAA8C;AAC9C,oDAAkD;AAMlD;;;;GAIG;AACH;IASE;;OAEG;IACH;QAAA,iBAMC;QAqND;;;;;;;;;;WAUG;QACI,6BAAwB,GAAG,UAChC,uBAA+C,IAC5C,OAAA,CAAC,KAAI,CAAC,iBAAiB,GAAG,uBAAuB,CAAC,EAAlD,CAAkD,CAAC;QAExD;;;;;;WAMG;QACI,6BAAwB,GAAG,cAAM,OAAA,KAAI,CAAC,iBAAiB,EAAtB,CAAsB,CAAC;QAhP7D,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,UAAU;QACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,qBAAS,EAAa,CAAC;IACtD,CAAC;IAjBD;;OAEG;IACW,oBAAM,GAApB,UAAqB,MAAqB;QACxC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAaD;;OAEG;IACI,+BAAO,GAAd;QACE,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACI,wCAAgB,GAAvB,UACE,KAAkB,EAClB,gBAAwC,EACxC,eAAuB;QAEvB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,gBAAgB,CAAC,UAAU,EAAE,EAAE;YACpE,OAAO;SACR;QAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE;YACjC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACpC,gBAAgB,CAAC,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB;YACtF,gBAAgB,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc;YAEpE,IAAM,QAAQ,GAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YAE5C,IAAI,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;gBACrC,2BAA2B;gBAC3B,gBAAgB,CAAC,UAAU,CACzB,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,QAAQ,CAChE,CAAC;gBACF,2BAA2B;aAC5B;SACF;QAED,IAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAE5E,4BAA4B;QAC5B,IAAI,CAAC,kBAAkB,CACrB,KAAK,EACL,eAAe,EACf,UAAU,EACV,gBAAgB,CACjB,CAAC;QAEF,MAAM;QACN,+CAA+C;QAC/C,IACE,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC;YACjC,gBAAgB,CAAC,UAAU,EAAE,GAAG,eAAe,EAC/C;YACA,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;SAC5C;IACH,CAAC;IAED;;;;;;;OAOG;IACI,wCAAgB,GAAvB,UACE,gBAAwC,EACxC,eAAuB;QAEvB,IAAI,UAAU,GAAW,IAAI,CAAC,OAAO,CAAC,CAAC,gBAAgB;QAEvD,yBAAyB;QACzB,mBAAmB;QACnB,IAAM,MAAM,GACV,IAAI,CAAC,cAAc,IAAI,GAAG;YACxB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,uBAAU,CAAC,aAAa,CACtB,CAAC,eAAe,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;gBACvD,IAAI,CAAC,cAAc,CACtB,CAAC;QAER,IAAM,OAAO,GACX,IAAI,CAAC,eAAe,IAAI,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAE,GAAG,GAAG;YAChE,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,uBAAU,CAAC,aAAa,CACtB,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,eAAe,CAAC;gBAC/C,IAAI,CAAC,eAAe,CACvB,CAAC;QAER,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;QAE3C,gBAAgB,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAEvD,IAAA,wBAAU,EAAC,GAAG,IAAI,UAAU,IAAI,UAAU,IAAI,GAAG,CAAC,CAAC;QAEnD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,qCAAa,GAApB,UAAqB,aAAqB;QACxC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED;;;OAGG;IACI,sCAAc,GAArB,UAAsB,cAAsB;QAC1C,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED;;;OAGG;IACI,sCAAc,GAArB;QACE,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,qCAAa,GAApB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,iCAAS,GAAhB,UAAiB,MAAc;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,iCAAS,GAAhB;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;;OAQG;IACI,mCAAW,GAAlB;QACE,OAAO,CAAC,GAAG,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACI,uCAAe,GAAtB;QACE,OAAO,CAAC,GAAG,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,qCAAa,GAApB,UAAqB,aAAqB;QACxC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED;;;;;;;;OAQG;IACI,qCAAa,GAApB,UACE,sBAA8B,EAC9B,iBAAyB;QAEzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IA0CD;;;;;OAKG;IACI,2CAAmB,GAA1B;QACE,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,4CAAoB,GAA3B;QACE,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED;;;;;OAKG;IACI,yCAAiB,GAAxB,UAAyB,KAAa;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACO,4CAAoB,GAA9B;QACE,OAAO,GAAG,CAAC;IACb,CAAC;IAWH,oBAAC;AAAD,CAAC,AAhTD,IAgTC;AAhTqB,sCAAa;AAkTnC,0CAA0C;AAC1C,iDAAqC;AAErC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAIrC;AAJD,WAAiB,qBAAqB;IACvB,mCAAa,GAAG,CAAC,CAAC,aAAa,CAAC;AAG/C,CAAC,EAJgB,qBAAqB,qCAArB,qBAAqB,QAIrC"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismexpressionmotion.d.ts b/live2demo/Framework/motion/cubismexpressionmotion.d.ts new file mode 100644 index 0000000..51e051b --- /dev/null +++ b/live2demo/Framework/motion/cubismexpressionmotion.d.ts @@ -0,0 +1,108 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { CubismModel } from '../model/cubismmodel'; +import { csmVector } from '../type/csmvector'; +import { ACubismMotion } from './acubismmotion'; +import { CubismMotionQueueEntry } from './cubismmotionqueueentry'; +/** + * 表情のモーション + * + * 表情のモーションクラス。 + */ +export declare class CubismExpressionMotion extends ACubismMotion { + static readonly DefaultAdditiveValue = 0; + static readonly DefaultMultiplyValue = 1; + /** + * インスタンスを作成する。 + * @param buffer expファイルが読み込まれているバッファ + * @param size バッファのサイズ + * @return 作成されたインスタンス + */ + static create(buffer: ArrayBuffer, size: number): CubismExpressionMotion; + /** + * モデルのパラメータの更新の実行 + * @param model 対象のモデル + * @param userTimeSeconds デルタ時間の積算値[秒] + * @param weight モーションの重み + * @param motionQueueEntry CubismMotionQueueManagerで管理されているモーション + */ + doUpdateParameters(model: CubismModel, userTimeSeconds: number, weight: number, motionQueueEntry: CubismMotionQueueEntry): void; + /** + * @brief 表情によるモデルのパラメータの計算 + * + * モデルの表情に関するパラメータを計算する。 + * + * @param[in] model 対象のモデル + * @param[in] userTimeSeconds デルタ時間の積算値[秒] + * @param[in] motionQueueEntry CubismMotionQueueManagerで管理されているモーション + * @param[in] expressionParameterValues モデルに適用する各パラメータの値 + * @param[in] expressionIndex 表情のインデックス + */ + calculateExpressionParameters(model: CubismModel, userTimeSeconds: number, motionQueueEntry: CubismMotionQueueEntry, expressionParameterValues: csmVector, expressionIndex: number): void; + /** + * @brief 表情が参照しているパラメータを取得 + * + * 表情が参照しているパラメータを取得する + * + * @return 表情パラメータ + */ + getExpressionParameters(): csmVector; + /** + * @brief 表情のフェードの値を取得 + * + * 現在の表情のフェードのウェイト値を取得する + * + * @returns 表情のフェードのウェイト値 + */ + getFadeWeight(): number; + protected parse(buffer: ArrayBuffer, size: number): void; + /** + * @brief ブレンド計算 + * + * 入力された値でブレンド計算をする。 + * + * @param source 現在の値 + * @param destination 適用する値 + * @param weight ウェイト + * @returns 計算結果 + */ + calculateValue(source: number, destination: number): number; + /** + * コンストラクタ + */ + protected constructor(); + private _parameters; + private _fadeWeight; +} +/** + * 表情パラメータ値の計算方式 + */ +export declare enum ExpressionBlendType { + Additive = 0, + Multiply = 1, + Overwrite = 2 +} +/** + * 表情のパラメータ情報 + */ +export declare class ExpressionParameter { + parameterId: CubismIdHandle; + blendType: ExpressionBlendType; + value: number; +} +import * as $ from './cubismexpressionmotion'; +import { ExpressionParameterValue } from './cubismexpressionmotionmanager'; +export declare namespace Live2DCubismFramework { + const CubismExpressionMotion: typeof $.CubismExpressionMotion; + type CubismExpressionMotion = $.CubismExpressionMotion; + const ExpressionBlendType: typeof $.ExpressionBlendType; + type ExpressionBlendType = $.ExpressionBlendType; + const ExpressionParameter: typeof $.ExpressionParameter; + type ExpressionParameter = $.ExpressionParameter; +} +//# sourceMappingURL=cubismexpressionmotion.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismexpressionmotion.d.ts.map b/live2demo/Framework/motion/cubismexpressionmotion.d.ts.map new file mode 100644 index 0000000..c358c51 --- /dev/null +++ b/live2demo/Framework/motion/cubismexpressionmotion.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismexpressionmotion.d.ts","sourceRoot":"","sources":["../../src/motion/cubismexpressionmotion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAclE;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,MAAM,CAAC,QAAQ,CAAC,oBAAoB,KAAO;IAC3C,MAAM,CAAC,QAAQ,CAAC,oBAAoB,KAAO;IAE3C;;;;;OAKG;WACW,MAAM,CAClB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,GACX,sBAAsB;IAMzB;;;;;;OAMG;IACI,kBAAkB,CACvB,KAAK,EAAE,WAAW,EAClB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,sBAAsB,GACvC,IAAI;IAoCP;;;;;;;;;;OAUG;IACI,6BAA6B,CAClC,KAAK,EAAE,WAAW,EAClB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,sBAAsB,EACxC,yBAAyB,EAAE,SAAS,CAAC,wBAAwB,CAAC,EAC9D,eAAe,EAAE,MAAM;IAuHzB;;;;;;OAMG;IACI,uBAAuB;IAI9B;;;;;;OAMG;IACI,aAAa;IAIpB,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAiEjD;;;;;;;;;OASG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAIlE;;OAEG;IACH,SAAS;IAMT,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAAS;CAC7B;AAED;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,SAAS,IAAI;CACd;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,WAAW,EAAE,cAAc,CAAC;IAC5B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,OAAO,KAAK,CAAC,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,sBAAsB,iCAA2B,CAAC;IAC/D,KAAY,sBAAsB,GAAG,CAAC,CAAC,sBAAsB,CAAC;IACvD,MAAM,mBAAmB,8BAAwB,CAAC;IACzD,KAAY,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;IACjD,MAAM,mBAAmB,8BAAwB,CAAC;IACzD,KAAY,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;CACzD"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismexpressionmotion.js b/live2demo/Framework/motion/cubismexpressionmotion.js new file mode 100644 index 0000000..605e04a --- /dev/null +++ b/live2demo/Framework/motion/cubismexpressionmotion.js @@ -0,0 +1,330 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.ExpressionParameter = exports.ExpressionBlendType = exports.CubismExpressionMotion = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var csmvector_1 = require("../type/csmvector"); +var cubismjson_1 = require("../utils/cubismjson"); +var acubismmotion_1 = require("./acubismmotion"); +// exp3.jsonのキーとデフォルト +var ExpressionKeyFadeIn = 'FadeInTime'; +var ExpressionKeyFadeOut = 'FadeOutTime'; +var ExpressionKeyParameters = 'Parameters'; +var ExpressionKeyId = 'Id'; +var ExpressionKeyValue = 'Value'; +var ExpressionKeyBlend = 'Blend'; +var BlendValueAdd = 'Add'; +var BlendValueMultiply = 'Multiply'; +var BlendValueOverwrite = 'Overwrite'; +var DefaultFadeTime = 1.0; +/** + * 表情のモーション + * + * 表情のモーションクラス。 + */ +var CubismExpressionMotion = /** @class */ (function (_super) { + __extends(CubismExpressionMotion, _super); + /** + * コンストラクタ + */ + function CubismExpressionMotion() { + var _this = _super.call(this) || this; + _this._parameters = new csmvector_1.csmVector(); + _this._fadeWeight = 0.0; + return _this; + } + /** + * インスタンスを作成する。 + * @param buffer expファイルが読み込まれているバッファ + * @param size バッファのサイズ + * @return 作成されたインスタンス + */ + CubismExpressionMotion.create = function (buffer, size) { + var expression = new CubismExpressionMotion(); + expression.parse(buffer, size); + return expression; + }; + /** + * モデルのパラメータの更新の実行 + * @param model 対象のモデル + * @param userTimeSeconds デルタ時間の積算値[秒] + * @param weight モーションの重み + * @param motionQueueEntry CubismMotionQueueManagerで管理されているモーション + */ + CubismExpressionMotion.prototype.doUpdateParameters = function (model, userTimeSeconds, weight, motionQueueEntry) { + for (var i = 0; i < this._parameters.getSize(); ++i) { + var parameter = this._parameters.at(i); + switch (parameter.blendType) { + case ExpressionBlendType.Additive: { + model.addParameterValueById(parameter.parameterId, parameter.value, weight); + break; + } + case ExpressionBlendType.Multiply: { + model.multiplyParameterValueById(parameter.parameterId, parameter.value, weight); + break; + } + case ExpressionBlendType.Overwrite: { + model.setParameterValueById(parameter.parameterId, parameter.value, weight); + break; + } + default: + // 仕様にない値を設定した時はすでに加算モードになっている + break; + } + } + }; + /** + * @brief 表情によるモデルのパラメータの計算 + * + * モデルの表情に関するパラメータを計算する。 + * + * @param[in] model 対象のモデル + * @param[in] userTimeSeconds デルタ時間の積算値[秒] + * @param[in] motionQueueEntry CubismMotionQueueManagerで管理されているモーション + * @param[in] expressionParameterValues モデルに適用する各パラメータの値 + * @param[in] expressionIndex 表情のインデックス + */ + CubismExpressionMotion.prototype.calculateExpressionParameters = function (model, userTimeSeconds, motionQueueEntry, expressionParameterValues, expressionIndex) { + if (!motionQueueEntry.isAvailable()) { + return; + } + if (!motionQueueEntry.isStarted()) { + motionQueueEntry.setIsStarted(true); + motionQueueEntry.setStartTime(userTimeSeconds - this._offsetSeconds); // モーションの開始時刻を記録 + motionQueueEntry.setFadeInStartTime(userTimeSeconds); // フェードインの開始時刻 + var duration = this.getDuration(); + if (motionQueueEntry.getEndTime() < 0.0) { + // 開始していないうちに終了設定している場合がある + motionQueueEntry.setEndTime(duration <= 0.0 ? -1 : motionQueueEntry.getStartTime() + duration); + // duration == -1 の場合はループする + } + } + this._fadeWeight = this.updateFadeWeight(motionQueueEntry, userTimeSeconds); + // モデルに適用する値を計算 + for (var i = 0; i < expressionParameterValues.getSize(); ++i) { + var expressionParameterValue = expressionParameterValues.at(i); + if (expressionParameterValue.parameterId == null) { + continue; + } + var currentParameterValue = (expressionParameterValue.overwriteValue = + model.getParameterValueById(expressionParameterValue.parameterId)); + var expressionParameters = this.getExpressionParameters(); + var parameterIndex = -1; + for (var j = 0; j < expressionParameters.getSize(); ++j) { + if (expressionParameterValue.parameterId != + expressionParameters.at(j).parameterId) { + continue; + } + parameterIndex = j; + break; + } + // 再生中のExpressionが参照していないパラメータは初期値を適用 + if (parameterIndex < 0) { + if (expressionIndex == 0) { + expressionParameterValue.additiveValue = + CubismExpressionMotion.DefaultAdditiveValue; + expressionParameterValue.multiplyValue = + CubismExpressionMotion.DefaultMultiplyValue; + expressionParameterValue.overwriteValue = currentParameterValue; + } + else { + expressionParameterValue.additiveValue = this.calculateValue(expressionParameterValue.additiveValue, CubismExpressionMotion.DefaultAdditiveValue); + expressionParameterValue.multiplyValue = this.calculateValue(expressionParameterValue.multiplyValue, CubismExpressionMotion.DefaultMultiplyValue); + expressionParameterValue.overwriteValue = this.calculateValue(expressionParameterValue.overwriteValue, currentParameterValue); + } + continue; + } + // 値を計算 + var value = expressionParameters.at(parameterIndex).value; + var newAdditiveValue = void 0, newMultiplyValue = void 0, newOverwriteValue = void 0; + switch (expressionParameters.at(parameterIndex).blendType) { + case ExpressionBlendType.Additive: + newAdditiveValue = value; + newMultiplyValue = CubismExpressionMotion.DefaultMultiplyValue; + newOverwriteValue = currentParameterValue; + break; + case ExpressionBlendType.Multiply: + newAdditiveValue = CubismExpressionMotion.DefaultAdditiveValue; + newMultiplyValue = value; + newOverwriteValue = currentParameterValue; + break; + case ExpressionBlendType.Overwrite: + newAdditiveValue = CubismExpressionMotion.DefaultAdditiveValue; + newMultiplyValue = CubismExpressionMotion.DefaultMultiplyValue; + newOverwriteValue = value; + break; + default: + return; + } + if (expressionIndex == 0) { + expressionParameterValue.additiveValue = newAdditiveValue; + expressionParameterValue.multiplyValue = newMultiplyValue; + expressionParameterValue.overwriteValue = newOverwriteValue; + } + else { + expressionParameterValue.additiveValue = + expressionParameterValue.additiveValue * (1.0 - this._fadeWeight) + + newAdditiveValue * this._fadeWeight; + expressionParameterValue.multiplyValue = + expressionParameterValue.multiplyValue * (1.0 - this._fadeWeight) + + newMultiplyValue * this._fadeWeight; + expressionParameterValue.overwriteValue = + expressionParameterValue.overwriteValue * (1.0 - this._fadeWeight) + + newOverwriteValue * this._fadeWeight; + } + } + }; + /** + * @brief 表情が参照しているパラメータを取得 + * + * 表情が参照しているパラメータを取得する + * + * @return 表情パラメータ + */ + CubismExpressionMotion.prototype.getExpressionParameters = function () { + return this._parameters; + }; + /** + * @brief 表情のフェードの値を取得 + * + * 現在の表情のフェードのウェイト値を取得する + * + * @returns 表情のフェードのウェイト値 + */ + CubismExpressionMotion.prototype.getFadeWeight = function () { + return this._fadeWeight; + }; + CubismExpressionMotion.prototype.parse = function (buffer, size) { + var json = cubismjson_1.CubismJson.create(buffer, size); + var root = json.getRoot(); + this.setFadeInTime(root.getValueByString(ExpressionKeyFadeIn).toFloat(DefaultFadeTime)); // フェードイン + this.setFadeOutTime(root.getValueByString(ExpressionKeyFadeOut).toFloat(DefaultFadeTime)); // フェードアウト + // 各パラメータについて + var parameterCount = root + .getValueByString(ExpressionKeyParameters) + .getSize(); + this._parameters.prepareCapacity(parameterCount); + for (var i = 0; i < parameterCount; ++i) { + var param = root + .getValueByString(ExpressionKeyParameters) + .getValueByIndex(i); + var parameterId = live2dcubismframework_1.CubismFramework.getIdManager().getId(param.getValueByString(ExpressionKeyId).getRawString()); // パラメータID + var value = param + .getValueByString(ExpressionKeyValue) + .toFloat(); // 値 + // 計算方法の設定 + var blendType = void 0; + if (param.getValueByString(ExpressionKeyBlend).isNull() || + param.getValueByString(ExpressionKeyBlend).getString() == BlendValueAdd) { + blendType = ExpressionBlendType.Additive; + } + else if (param.getValueByString(ExpressionKeyBlend).getString() == + BlendValueMultiply) { + blendType = ExpressionBlendType.Multiply; + } + else if (param.getValueByString(ExpressionKeyBlend).getString() == + BlendValueOverwrite) { + blendType = ExpressionBlendType.Overwrite; + } + else { + // その他 仕様にない値を設定した時は加算モードにすることで復旧 + blendType = ExpressionBlendType.Additive; + } + // 設定オブジェクトを作成してリストに追加する + var item = new ExpressionParameter(); + item.parameterId = parameterId; + item.blendType = blendType; + item.value = value; + this._parameters.pushBack(item); + } + cubismjson_1.CubismJson.delete(json); // JSONデータは不要になったら削除する + }; + /** + * @brief ブレンド計算 + * + * 入力された値でブレンド計算をする。 + * + * @param source 現在の値 + * @param destination 適用する値 + * @param weight ウェイト + * @returns 計算結果 + */ + CubismExpressionMotion.prototype.calculateValue = function (source, destination) { + return source * (1.0 - this._fadeWeight) + destination * this._fadeWeight; + }; + CubismExpressionMotion.DefaultAdditiveValue = 0.0; // 加算適用の初期値 + CubismExpressionMotion.DefaultMultiplyValue = 1.0; // 乗算適用の初期値 + return CubismExpressionMotion; +}(acubismmotion_1.ACubismMotion)); +exports.CubismExpressionMotion = CubismExpressionMotion; +/** + * 表情パラメータ値の計算方式 + */ +var ExpressionBlendType; +(function (ExpressionBlendType) { + ExpressionBlendType[ExpressionBlendType["Additive"] = 0] = "Additive"; + ExpressionBlendType[ExpressionBlendType["Multiply"] = 1] = "Multiply"; + ExpressionBlendType[ExpressionBlendType["Overwrite"] = 2] = "Overwrite"; // 上書き +})(ExpressionBlendType || (exports.ExpressionBlendType = ExpressionBlendType = {})); +/** + * 表情のパラメータ情報 + */ +var ExpressionParameter = /** @class */ (function () { + function ExpressionParameter() { + } + return ExpressionParameter; +}()); +exports.ExpressionParameter = ExpressionParameter; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismexpressionmotion")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismExpressionMotion = $.CubismExpressionMotion; + Live2DCubismFramework.ExpressionBlendType = $.ExpressionBlendType; + Live2DCubismFramework.ExpressionParameter = $.ExpressionParameter; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismexpressionmotion.js.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismexpressionmotion.js.map b/live2demo/Framework/motion/cubismexpressionmotion.js.map new file mode 100644 index 0000000..8cf2a9c --- /dev/null +++ b/live2demo/Framework/motion/cubismexpressionmotion.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismexpressionmotion.js","sourceRoot":"","sources":["../../src/motion/cubismexpressionmotion.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismexpressionmotionmanager.d.ts b/live2demo/Framework/motion/cubismexpressionmotionmanager.d.ts new file mode 100644 index 0000000..bb59a35 --- /dev/null +++ b/live2demo/Framework/motion/cubismexpressionmotionmanager.d.ts @@ -0,0 +1,84 @@ +import { CubismIdHandle } from '../id/cubismid'; +import { CubismModel } from '../model/cubismmodel'; +import { ACubismMotion } from './acubismmotion'; +import { CubismMotionQueueEntryHandle, CubismMotionQueueManager } from './cubismmotionqueuemanager'; +/** + * @brief パラメータに適用する表情の値を持たせる構造体 + */ +export declare class ExpressionParameterValue { + parameterId: CubismIdHandle; + additiveValue: number; + multiplyValue: number; + overwriteValue: number; +} +/** + * @brief 表情モーションの管理 + * + * 表情モーションの管理をおこなうクラス。 + */ +export declare class CubismExpressionMotionManager extends CubismMotionQueueManager { + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * @brief 再生中のモーションの優先度の取得 + * + * 再生中のモーションの優先度を取得する。 + * + * @returns モーションの優先度 + */ + getCurrentPriority(): number; + /** + * @brief 予約中のモーションの優先度の取得 + * + * 予約中のモーションの優先度を取得する。 + * + * @return モーションの優先度 + */ + getReservePriority(): number; + /** + * @brief 予約中のモーションの優先度の設定 + * + * 予約中のモーションの優先度を設定する。 + * + * @param[in] priority 優先度 + */ + setReservePriority(priority: number): void; + /** + * @brief 優先度を設定してモーションの開始 + * + * 優先度を設定してモーションを開始する。 + * + * @param[in] motion モーション + * @param[in] autoDelete 再生が終了したモーションのインスタンスを削除するならtrue + * @param[in] priority 優先度 + * @return 開始したモーションの識別番号を返す。個別のモーションが終了したか否かを判定するIsFinished()の引数で使用する。開始できない時は「-1」 + */ + startMotionPriority(motion: ACubismMotion, autoDelete: boolean, priority: number): CubismMotionQueueEntryHandle; + /** + * @brief モーションの更新 + * + * モーションを更新して、モデルにパラメータ値を反映する。 + * + * @param[in] model 対象のモデル + * @param[in] deltaTimeSeconds デルタ時間[秒] + * @retval true 更新されている + * @retval false 更新されていない + */ + updateMotion(model: CubismModel, deltaTimeSeconds: number): boolean; + private _expressionParameterValues; + private _currentPriority; + private _reservePriority; + private _startExpressionTime; +} +import * as $ from './cubismexpressionmotionmanager'; +export declare namespace Live2DCubismFramework { + const CubismExpressionMotionManager: typeof $.CubismExpressionMotionManager; + type CubismExpressionMotionManager = $.CubismExpressionMotionManager; +} +//# sourceMappingURL=cubismexpressionmotionmanager.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismexpressionmotionmanager.d.ts.map b/live2demo/Framework/motion/cubismexpressionmotionmanager.d.ts.map new file mode 100644 index 0000000..df9172d --- /dev/null +++ b/live2demo/Framework/motion/cubismexpressionmotionmanager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismexpressionmotionmanager.d.ts","sourceRoot":"","sources":["../../src/motion/cubismexpressionmotionmanager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,qBAAa,wBAAwB;IACnC,WAAW,EAAE,cAAc,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,qBAAa,6BAA8B,SAAQ,wBAAwB;IACzE;;OAEG;;IAQH;;OAEG;IACI,OAAO,IAAI,IAAI;IAOtB;;;;;;OAMG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;;;;OAMG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;;;;OAMG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM;IAI1C;;;;;;;;;OASG;IACI,mBAAmB,CACxB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,MAAM,GACf,4BAA4B;IAS/B;;;;;;;;;OASG;IACI,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO;IA2I1E,OAAO,CAAC,0BAA0B,CAAsC;IACxE,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,oBAAoB,CAAS;CACtC;AAGD,OAAO,KAAK,CAAC,MAAM,iCAAiC,CAAC;AAGrD,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,6BAA6B,wCAAkC,CAAC;IAC7E,KAAY,6BAA6B,GAAG,CAAC,CAAC,6BAA6B,CAAC;CAC7E"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismexpressionmotionmanager.js b/live2demo/Framework/motion/cubismexpressionmotionmanager.js new file mode 100644 index 0000000..e329541 --- /dev/null +++ b/live2demo/Framework/motion/cubismexpressionmotionmanager.js @@ -0,0 +1,241 @@ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismExpressionMotionManager = exports.ExpressionParameterValue = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var csmvector_1 = require("../type/csmvector"); +var cubismexpressionmotion_1 = require("./cubismexpressionmotion"); +var cubismmotionqueuemanager_1 = require("./cubismmotionqueuemanager"); +/** + * @brief パラメータに適用する表情の値を持たせる構造体 + */ +var ExpressionParameterValue = /** @class */ (function () { + function ExpressionParameterValue() { + } + return ExpressionParameterValue; +}()); +exports.ExpressionParameterValue = ExpressionParameterValue; +/** + * @brief 表情モーションの管理 + * + * 表情モーションの管理をおこなうクラス。 + */ +var CubismExpressionMotionManager = /** @class */ (function (_super) { + __extends(CubismExpressionMotionManager, _super); + /** + * コンストラクタ + */ + function CubismExpressionMotionManager() { + var _this = _super.call(this) || this; + _this._currentPriority = 0; + _this._reservePriority = 0; + _this._expressionParameterValues = new csmvector_1.csmVector(); + return _this; + } + /** + * デストラクタ相当の処理 + */ + CubismExpressionMotionManager.prototype.release = function () { + if (this._expressionParameterValues) { + (0, live2dcubismframework_1.csmDelete)(this._expressionParameterValues); + this._expressionParameterValues = null; + } + }; + /** + * @brief 再生中のモーションの優先度の取得 + * + * 再生中のモーションの優先度を取得する。 + * + * @returns モーションの優先度 + */ + CubismExpressionMotionManager.prototype.getCurrentPriority = function () { + return this._currentPriority; + }; + /** + * @brief 予約中のモーションの優先度の取得 + * + * 予約中のモーションの優先度を取得する。 + * + * @return モーションの優先度 + */ + CubismExpressionMotionManager.prototype.getReservePriority = function () { + return this._reservePriority; + }; + /** + * @brief 予約中のモーションの優先度の設定 + * + * 予約中のモーションの優先度を設定する。 + * + * @param[in] priority 優先度 + */ + CubismExpressionMotionManager.prototype.setReservePriority = function (priority) { + this._reservePriority = priority; + }; + /** + * @brief 優先度を設定してモーションの開始 + * + * 優先度を設定してモーションを開始する。 + * + * @param[in] motion モーション + * @param[in] autoDelete 再生が終了したモーションのインスタンスを削除するならtrue + * @param[in] priority 優先度 + * @return 開始したモーションの識別番号を返す。個別のモーションが終了したか否かを判定するIsFinished()の引数で使用する。開始できない時は「-1」 + */ + CubismExpressionMotionManager.prototype.startMotionPriority = function (motion, autoDelete, priority) { + if (priority == this.getReservePriority()) { + this.setReservePriority(0); + } + this._currentPriority = priority; + return this.startMotion(motion, autoDelete, this._userTimeSeconds); + }; + /** + * @brief モーションの更新 + * + * モーションを更新して、モデルにパラメータ値を反映する。 + * + * @param[in] model 対象のモデル + * @param[in] deltaTimeSeconds デルタ時間[秒] + * @retval true 更新されている + * @retval false 更新されていない + */ + CubismExpressionMotionManager.prototype.updateMotion = function (model, deltaTimeSeconds) { + this._userTimeSeconds += deltaTimeSeconds; + var updated = false; + var motions = this.getCubismMotionQueueEntries(); + var expressionWeight = 0.0; + var expressionIndex = 0; + // ------- 処理を行う -------- + // 既にモーションがあれば終了フラグを立てる + for (var ite = this._motions.begin(); ite.notEqual(this._motions.end());) { + var motionQueueEntry = ite.ptr(); + if (motionQueueEntry == null) { + ite = motions.erase(ite); //削除 + continue; + } + var expressionMotion = (motionQueueEntry.getCubismMotion()); + if (expressionMotion == null) { + (0, live2dcubismframework_1.csmDelete)(motionQueueEntry); + ite = motions.erase(ite); //削除 + continue; + } + var expressionParameters = expressionMotion.getExpressionParameters(); + if (motionQueueEntry.isAvailable()) { + // 再生中のExpressionが参照しているパラメータをすべてリストアップ + for (var i = 0; i < expressionParameters.getSize(); ++i) { + if (expressionParameters.at(i).parameterId == null) { + continue; + } + var index = -1; + // リストにパラメータIDが存在するか検索 + for (var j = 0; j < this._expressionParameterValues.getSize(); ++j) { + if (this._expressionParameterValues.at(j).parameterId != + expressionParameters.at(i).parameterId) { + continue; + } + index = j; + break; + } + if (index >= 0) { + continue; + } + // パラメータがリストに存在しないなら新規追加 + var item = new ExpressionParameterValue(); + item.parameterId = expressionParameters.at(i).parameterId; + item.additiveValue = cubismexpressionmotion_1.CubismExpressionMotion.DefaultAdditiveValue; + item.multiplyValue = cubismexpressionmotion_1.CubismExpressionMotion.DefaultMultiplyValue; + item.overwriteValue = model.getParameterValueById(item.parameterId); + this._expressionParameterValues.pushBack(item); + } + } + // ------ 値を計算する ------ + expressionMotion.calculateExpressionParameters(model, this._userTimeSeconds, motionQueueEntry, this._expressionParameterValues, expressionIndex); + expressionWeight += + expressionMotion.getFadeInTime() == 0.0 + ? 1.0 + : cubismmath_1.CubismMath.getEasingSine((this._userTimeSeconds - motionQueueEntry.getFadeInStartTime()) / + expressionMotion.getFadeInTime()); + updated = true; + if (motionQueueEntry.isTriggeredFadeOut()) { + // フェードアウト開始 + motionQueueEntry.startFadeOut(motionQueueEntry.getFadeOutSeconds(), this._userTimeSeconds); + } + ite.preIncrement(); + ++expressionIndex; + } + // ----- 最新のExpressionのフェードが完了していればそれ以前を削除する ------ + if (motions.getSize() > 1) { + var expressionMotion = (motions.at(motions.getSize() - 1).getCubismMotion()); + if (expressionMotion.getFadeWeight() >= 1.0) { + // 配列の最後の要素は削除しない + for (var i = motions.getSize() - 2; i >= 0; --i) { + var motionQueueEntry = motions.at(i); + (0, live2dcubismframework_1.csmDelete)(motionQueueEntry); + motions.remove(i); + } + } + } + if (expressionWeight > 1.0) { + expressionWeight = 1.0; + } + // モデルに各値を適用 + for (var i = 0; i < this._expressionParameterValues.getSize(); ++i) { + var expressionParameterValue = this._expressionParameterValues.at(i); + model.setParameterValueById(expressionParameterValue.parameterId, (expressionParameterValue.overwriteValue + + expressionParameterValue.additiveValue) * + expressionParameterValue.multiplyValue, expressionWeight); + expressionParameterValue.additiveValue = + cubismexpressionmotion_1.CubismExpressionMotion.DefaultAdditiveValue; + expressionParameterValue.multiplyValue = + cubismexpressionmotion_1.CubismExpressionMotion.DefaultMultiplyValue; + } + return updated; + }; + return CubismExpressionMotionManager; +}(cubismmotionqueuemanager_1.CubismMotionQueueManager)); +exports.CubismExpressionMotionManager = CubismExpressionMotionManager; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismexpressionmotionmanager")); +var cubismmath_1 = require("../math/cubismmath"); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismExpressionMotionManager = $.CubismExpressionMotionManager; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismexpressionmotionmanager.js.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismexpressionmotionmanager.js.map b/live2demo/Framework/motion/cubismexpressionmotionmanager.js.map new file mode 100644 index 0000000..c06d4db --- /dev/null +++ b/live2demo/Framework/motion/cubismexpressionmotionmanager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismexpressionmotionmanager.js","sourceRoot":"","sources":["../../src/motion/cubismexpressionmotionmanager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotion.d.ts b/live2demo/Framework/motion/cubismmotion.d.ts new file mode 100644 index 0000000..ba74268 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotion.d.ts @@ -0,0 +1,173 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { CubismModel } from '../model/cubismmodel'; +import { csmString } from '../type/csmstring'; +import { csmVector } from '../type/csmvector'; +import { ACubismMotion, FinishedMotionCallback } from './acubismmotion'; +import { CubismMotionData } from './cubismmotioninternal'; +import { CubismMotionQueueEntry } from './cubismmotionqueueentry'; +/** + * モーションクラス + * + * モーションのクラス。 + */ +export declare class CubismMotion extends ACubismMotion { + /** + * インスタンスを作成する + * + * @param buffer motion3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + * @param onFinishedMotionHandler モーション再生終了時に呼び出されるコールバック関数 + * @return 作成されたインスタンス + */ + static create(buffer: ArrayBuffer, size: number, onFinishedMotionHandler?: FinishedMotionCallback): CubismMotion; + /** + * モデルのパラメータの更新の実行 + * @param model 対象のモデル + * @param userTimeSeconds 現在の時刻[秒] + * @param fadeWeight モーションの重み + * @param motionQueueEntry CubismMotionQueueManagerで管理されているモーション + */ + doUpdateParameters(model: CubismModel, userTimeSeconds: number, fadeWeight: number, motionQueueEntry: CubismMotionQueueEntry): void; + /** + * ループ情報の設定 + * @param loop ループ情報 + */ + setIsLoop(loop: boolean): void; + /** + * ループ情報の取得 + * @return true ループする + * @return false ループしない + */ + isLoop(): boolean; + /** + * ループ時のフェードイン情報の設定 + * @param loopFadeIn ループ時のフェードイン情報 + */ + setIsLoopFadeIn(loopFadeIn: boolean): void; + /** + * ループ時のフェードイン情報の取得 + * + * @return true する + * @return false しない + */ + isLoopFadeIn(): boolean; + /** + * モーションの長さを取得する。 + * + * @return モーションの長さ[秒] + */ + getDuration(): number; + /** + * モーションのループ時の長さを取得する。 + * + * @return モーションのループ時の長さ[秒] + */ + getLoopDuration(): number; + /** + * パラメータに対するフェードインの時間を設定する。 + * + * @param parameterId パラメータID + * @param value フェードインにかかる時間[秒] + */ + setParameterFadeInTime(parameterId: CubismIdHandle, value: number): void; + /** + * パラメータに対するフェードアウトの時間の設定 + * @param parameterId パラメータID + * @param value フェードアウトにかかる時間[秒] + */ + setParameterFadeOutTime(parameterId: CubismIdHandle, value: number): void; + /** + * パラメータに対するフェードインの時間の取得 + * @param parameterId パラメータID + * @return フェードインにかかる時間[秒] + */ + getParameterFadeInTime(parameterId: CubismIdHandle): number; + /** + * パラメータに対するフェードアウトの時間を取得 + * + * @param parameterId パラメータID + * @return フェードアウトにかかる時間[秒] + */ + getParameterFadeOutTime(parameterId: CubismIdHandle): number; + /** + * 自動エフェクトがかかっているパラメータIDリストの設定 + * @param eyeBlinkParameterIds 自動まばたきがかかっているパラメータIDのリスト + * @param lipSyncParameterIds リップシンクがかかっているパラメータIDのリスト + */ + setEffectIds(eyeBlinkParameterIds: csmVector, lipSyncParameterIds: csmVector): void; + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * motion3.jsonをパースする。 + * + * @param motionJson motion3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + parse(motionJson: ArrayBuffer, size: number): void; + /** + * モデルのパラメータ更新 + * + * イベント発火のチェック。 + * 入力する時間は呼ばれるモーションタイミングを0とした秒数で行う。 + * + * @param beforeCheckTimeSeconds 前回のイベントチェック時間[秒] + * @param motionTimeSeconds 今回の再生時間[秒] + */ + getFiredEvent(beforeCheckTimeSeconds: number, motionTimeSeconds: number): csmVector; + /** + * 透明度のカーブが存在するかどうかを確認する + * + * @returns true -> キーが存在する + * false -> キーが存在しない + */ + isExistModelOpacity(): boolean; + /** + * 透明度のカーブのインデックスを返す + * + * @returns success:透明度のカーブのインデックス + */ + getModelOpacityIndex(): number; + /** + * 透明度のIdを返す + * + * @param index モーションカーブのインデックス + * @returns success:透明度のカーブのインデックス + */ + getModelOpacityId(index: number): CubismIdHandle; + /** + * 現在時間の透明度の値を返す + * + * @returns success:モーションの当該時間におけるOpacityの値 + */ + getModelOpacityValue(): number; + _sourceFrameRate: number; + _loopDurationSeconds: number; + _isLoop: boolean; + _isLoopFadeIn: boolean; + _lastWeight: number; + _motionData: CubismMotionData; + _eyeBlinkParameterIds: csmVector; + _lipSyncParameterIds: csmVector; + _modelCurveIdEyeBlink: CubismIdHandle; + _modelCurveIdLipSync: CubismIdHandle; + _modelCurveIdOpacity: CubismIdHandle; + _modelOpacity: number; +} +import * as $ from './cubismmotion'; +export declare namespace Live2DCubismFramework { + const CubismMotion: typeof $.CubismMotion; + type CubismMotion = $.CubismMotion; +} +//# sourceMappingURL=cubismmotion.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotion.d.ts.map b/live2demo/Framework/motion/cubismmotion.d.ts.map new file mode 100644 index 0000000..33a63dc --- /dev/null +++ b/live2demo/Framework/motion/cubismmotion.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotion.d.ts","sourceRoot":"","sources":["../../src/motion/cubismmotion.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotion.js b/live2demo/Framework/motion/cubismmotion.js new file mode 100644 index 0000000..9d29ecc --- /dev/null +++ b/live2demo/Framework/motion/cubismmotion.js @@ -0,0 +1,821 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismMotion = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var cubismmath_1 = require("../math/cubismmath"); +var csmstring_1 = require("../type/csmstring"); +var cubismdebug_1 = require("../utils/cubismdebug"); +var acubismmotion_1 = require("./acubismmotion"); +var cubismmotioninternal_1 = require("./cubismmotioninternal"); +var cubismmotionjson_1 = require("./cubismmotionjson"); +var EffectNameEyeBlink = 'EyeBlink'; +var EffectNameLipSync = 'LipSync'; +var TargetNameModel = 'Model'; +var TargetNameParameter = 'Parameter'; +var TargetNamePartOpacity = 'PartOpacity'; +// Id +var IdNameOpacity = 'Opacity'; +/** + * Cubism SDK R2 以前のモーションを再現させるなら true 、アニメータのモーションを正しく再現するなら false 。 + */ +var UseOldBeziersCurveMotion = false; +function lerpPoints(a, b, t) { + var result = new cubismmotioninternal_1.CubismMotionPoint(); + result.time = a.time + (b.time - a.time) * t; + result.value = a.value + (b.value - a.value) * t; + return result; +} +function linearEvaluate(points, time) { + var t = (time - points[0].time) / (points[1].time - points[0].time); + if (t < 0.0) { + t = 0.0; + } + return points[0].value + (points[1].value - points[0].value) * t; +} +function bezierEvaluate(points, time) { + var t = (time - points[0].time) / (points[3].time - points[0].time); + if (t < 0.0) { + t = 0.0; + } + var p01 = lerpPoints(points[0], points[1], t); + var p12 = lerpPoints(points[1], points[2], t); + var p23 = lerpPoints(points[2], points[3], t); + var p012 = lerpPoints(p01, p12, t); + var p123 = lerpPoints(p12, p23, t); + return lerpPoints(p012, p123, t).value; +} +function bezierEvaluateBinarySearch(points, time) { + var x_error = 0.01; + var x = time; + var x1 = points[0].time; + var x2 = points[3].time; + var cx1 = points[1].time; + var cx2 = points[2].time; + var ta = 0.0; + var tb = 1.0; + var t = 0.0; + var i = 0; + for (var var33 = true; i < 20; ++i) { + if (x < x1 + x_error) { + t = ta; + break; + } + if (x2 - x_error < x) { + t = tb; + break; + } + var centerx = (cx1 + cx2) * 0.5; + cx1 = (x1 + cx1) * 0.5; + cx2 = (x2 + cx2) * 0.5; + var ctrlx12 = (cx1 + centerx) * 0.5; + var ctrlx21 = (cx2 + centerx) * 0.5; + centerx = (ctrlx12 + ctrlx21) * 0.5; + if (x < centerx) { + tb = (ta + tb) * 0.5; + if (centerx - x_error < x) { + t = tb; + break; + } + x2 = centerx; + cx2 = ctrlx12; + } + else { + ta = (ta + tb) * 0.5; + if (x < centerx + x_error) { + t = ta; + break; + } + x1 = centerx; + cx1 = ctrlx21; + } + } + if (i == 20) { + t = (ta + tb) * 0.5; + } + if (t < 0.0) { + t = 0.0; + } + if (t > 1.0) { + t = 1.0; + } + var p01 = lerpPoints(points[0], points[1], t); + var p12 = lerpPoints(points[1], points[2], t); + var p23 = lerpPoints(points[2], points[3], t); + var p012 = lerpPoints(p01, p12, t); + var p123 = lerpPoints(p12, p23, t); + return lerpPoints(p012, p123, t).value; +} +function bezierEvaluateCardanoInterpretation(points, time) { + var x = time; + var x1 = points[0].time; + var x2 = points[3].time; + var cx1 = points[1].time; + var cx2 = points[2].time; + var a = x2 - 3.0 * cx2 + 3.0 * cx1 - x1; + var b = 3.0 * cx2 - 6.0 * cx1 + 3.0 * x1; + var c = 3.0 * cx1 - 3.0 * x1; + var d = x1 - x; + var t = cubismmath_1.CubismMath.cardanoAlgorithmForBezier(a, b, c, d); + var p01 = lerpPoints(points[0], points[1], t); + var p12 = lerpPoints(points[1], points[2], t); + var p23 = lerpPoints(points[2], points[3], t); + var p012 = lerpPoints(p01, p12, t); + var p123 = lerpPoints(p12, p23, t); + return lerpPoints(p012, p123, t).value; +} +function steppedEvaluate(points, time) { + return points[0].value; +} +function inverseSteppedEvaluate(points, time) { + return points[1].value; +} +function evaluateCurve(motionData, index, time) { + // Find segment to evaluate. + var curve = motionData.curves.at(index); + var target = -1; + var totalSegmentCount = curve.baseSegmentIndex + curve.segmentCount; + var pointPosition = 0; + for (var i = curve.baseSegmentIndex; i < totalSegmentCount; ++i) { + // Get first point of next segment. + pointPosition = + motionData.segments.at(i).basePointIndex + + (motionData.segments.at(i).segmentType == + cubismmotioninternal_1.CubismMotionSegmentType.CubismMotionSegmentType_Bezier + ? 3 + : 1); + // Break if time lies within current segment. + if (motionData.points.at(pointPosition).time > time) { + target = i; + break; + } + } + if (target == -1) { + return motionData.points.at(pointPosition).value; + } + var segment = motionData.segments.at(target); + return segment.evaluate(motionData.points.get(segment.basePointIndex), time); +} +/** + * モーションクラス + * + * モーションのクラス。 + */ +var CubismMotion = /** @class */ (function (_super) { + __extends(CubismMotion, _super); + /** + * コンストラクタ + */ + function CubismMotion() { + var _this = _super.call(this) || this; + _this._sourceFrameRate = 30.0; + _this._loopDurationSeconds = -1.0; + _this._isLoop = false; // trueから false へデフォルトを変更 + _this._isLoopFadeIn = true; // ループ時にフェードインが有効かどうかのフラグ + _this._lastWeight = 0.0; + _this._motionData = null; + _this._modelCurveIdEyeBlink = null; + _this._modelCurveIdLipSync = null; + _this._modelCurveIdOpacity = null; + _this._eyeBlinkParameterIds = null; + _this._lipSyncParameterIds = null; + _this._modelOpacity = 1.0; + return _this; + } + /** + * インスタンスを作成する + * + * @param buffer motion3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + * @param onFinishedMotionHandler モーション再生終了時に呼び出されるコールバック関数 + * @return 作成されたインスタンス + */ + CubismMotion.create = function (buffer, size, onFinishedMotionHandler) { + var ret = new CubismMotion(); + ret.parse(buffer, size); + ret._sourceFrameRate = ret._motionData.fps; + ret._loopDurationSeconds = ret._motionData.duration; + ret._onFinishedMotion = onFinishedMotionHandler; + // NOTE: Editorではループありのモーション書き出しは非対応 + // ret->_loop = (ret->_motionData->Loop > 0); + return ret; + }; + /** + * モデルのパラメータの更新の実行 + * @param model 対象のモデル + * @param userTimeSeconds 現在の時刻[秒] + * @param fadeWeight モーションの重み + * @param motionQueueEntry CubismMotionQueueManagerで管理されているモーション + */ + CubismMotion.prototype.doUpdateParameters = function (model, userTimeSeconds, fadeWeight, motionQueueEntry) { + if (this._modelCurveIdEyeBlink == null) { + this._modelCurveIdEyeBlink = + live2dcubismframework_1.CubismFramework.getIdManager().getId(EffectNameEyeBlink); + } + if (this._modelCurveIdLipSync == null) { + this._modelCurveIdLipSync = + live2dcubismframework_1.CubismFramework.getIdManager().getId(EffectNameLipSync); + } + if (this._modelCurveIdOpacity == null) { + this._modelCurveIdOpacity = + live2dcubismframework_1.CubismFramework.getIdManager().getId(IdNameOpacity); + } + var timeOffsetSeconds = userTimeSeconds - motionQueueEntry.getStartTime(); + if (timeOffsetSeconds < 0.0) { + timeOffsetSeconds = 0.0; // エラー回避 + } + var lipSyncValue = Number.MAX_VALUE; + var eyeBlinkValue = Number.MAX_VALUE; + //まばたき、リップシンクのうちモーションの適用を検出するためのビット(maxFlagCount個まで + var MaxTargetSize = 64; + var lipSyncFlags = 0; + var eyeBlinkFlags = 0; + //瞬き、リップシンクのターゲット数が上限を超えている場合 + if (this._eyeBlinkParameterIds.getSize() > MaxTargetSize) { + (0, cubismdebug_1.CubismLogDebug)('too many eye blink targets : {0}', this._eyeBlinkParameterIds.getSize()); + } + if (this._lipSyncParameterIds.getSize() > MaxTargetSize) { + (0, cubismdebug_1.CubismLogDebug)('too many lip sync targets : {0}', this._lipSyncParameterIds.getSize()); + } + var tmpFadeIn = this._fadeInSeconds <= 0.0 + ? 1.0 + : cubismmath_1.CubismMath.getEasingSine((userTimeSeconds - motionQueueEntry.getFadeInStartTime()) / + this._fadeInSeconds); + var tmpFadeOut = this._fadeOutSeconds <= 0.0 || motionQueueEntry.getEndTime() < 0.0 + ? 1.0 + : cubismmath_1.CubismMath.getEasingSine((motionQueueEntry.getEndTime() - userTimeSeconds) / + this._fadeOutSeconds); + var value; + var c, parameterIndex; + // 'Repeat' time as necessary. + var time = timeOffsetSeconds; + if (this._isLoop) { + while (time > this._motionData.duration) { + time -= this._motionData.duration; + } + } + var curves = this._motionData.curves; + // Evaluate model curves. + for (c = 0; c < this._motionData.curveCount && + curves.at(c).type == + cubismmotioninternal_1.CubismMotionCurveTarget.CubismMotionCurveTarget_Model; ++c) { + // Evaluate curve and call handler. + value = evaluateCurve(this._motionData, c, time); + if (curves.at(c).id == this._modelCurveIdEyeBlink) { + eyeBlinkValue = value; + } + else if (curves.at(c).id == this._modelCurveIdLipSync) { + lipSyncValue = value; + } + else if (curves.at(c).id == this._modelCurveIdOpacity) { + this._modelOpacity = value; + model.setModelOapcity(this.getModelOpacityValue()); + } + } + var parameterMotionCurveCount = 0; + for (; c < this._motionData.curveCount && + curves.at(c).type == + cubismmotioninternal_1.CubismMotionCurveTarget.CubismMotionCurveTarget_Parameter; ++c) { + parameterMotionCurveCount++; + // Find parameter index. + parameterIndex = model.getParameterIndex(curves.at(c).id); + // Skip curve evaluation if no value in sink. + if (parameterIndex == -1) { + continue; + } + var sourceValue = model.getParameterValueByIndex(parameterIndex); + // Evaluate curve and apply value. + value = evaluateCurve(this._motionData, c, time); + if (eyeBlinkValue != Number.MAX_VALUE) { + for (var i = 0; i < this._eyeBlinkParameterIds.getSize() && i < MaxTargetSize; ++i) { + if (this._eyeBlinkParameterIds.at(i) == curves.at(c).id) { + value *= eyeBlinkValue; + eyeBlinkFlags |= 1 << i; + break; + } + } + } + if (lipSyncValue != Number.MAX_VALUE) { + for (var i = 0; i < this._lipSyncParameterIds.getSize() && i < MaxTargetSize; ++i) { + if (this._lipSyncParameterIds.at(i) == curves.at(c).id) { + value += lipSyncValue; + lipSyncFlags |= 1 << i; + break; + } + } + } + var v = void 0; + // パラメータごとのフェード + if (curves.at(c).fadeInTime < 0.0 && curves.at(c).fadeOutTime < 0.0) { + // モーションのフェードを適用 + v = sourceValue + (value - sourceValue) * fadeWeight; + } + else { + // パラメータに対してフェードインかフェードアウトが設定してある場合はそちらを適用 + var fin = void 0; + var fout = void 0; + if (curves.at(c).fadeInTime < 0.0) { + fin = tmpFadeIn; + } + else { + fin = + curves.at(c).fadeInTime == 0.0 + ? 1.0 + : cubismmath_1.CubismMath.getEasingSine((userTimeSeconds - motionQueueEntry.getFadeInStartTime()) / + curves.at(c).fadeInTime); + } + if (curves.at(c).fadeOutTime < 0.0) { + fout = tmpFadeOut; + } + else { + fout = + curves.at(c).fadeOutTime == 0.0 || + motionQueueEntry.getEndTime() < 0.0 + ? 1.0 + : cubismmath_1.CubismMath.getEasingSine((motionQueueEntry.getEndTime() - userTimeSeconds) / + curves.at(c).fadeOutTime); + } + var paramWeight = this._weight * fin * fout; + // パラメータごとのフェードを適用 + v = sourceValue + (value - sourceValue) * paramWeight; + } + model.setParameterValueByIndex(parameterIndex, v, 1.0); + } + { + if (eyeBlinkValue != Number.MAX_VALUE) { + for (var i = 0; i < this._eyeBlinkParameterIds.getSize() && i < MaxTargetSize; ++i) { + var sourceValue = model.getParameterValueById(this._eyeBlinkParameterIds.at(i)); + // モーションでの上書きがあった時にはまばたきは適用しない + if ((eyeBlinkFlags >> i) & 0x01) { + continue; + } + var v = sourceValue + (eyeBlinkValue - sourceValue) * fadeWeight; + model.setParameterValueById(this._eyeBlinkParameterIds.at(i), v); + } + } + if (lipSyncValue != Number.MAX_VALUE) { + for (var i = 0; i < this._lipSyncParameterIds.getSize() && i < MaxTargetSize; ++i) { + var sourceValue = model.getParameterValueById(this._lipSyncParameterIds.at(i)); + // モーションでの上書きがあった時にはリップシンクは適用しない + if ((lipSyncFlags >> i) & 0x01) { + continue; + } + var v = sourceValue + (lipSyncValue - sourceValue) * fadeWeight; + model.setParameterValueById(this._lipSyncParameterIds.at(i), v); + } + } + } + for (; c < this._motionData.curveCount && + curves.at(c).type == + cubismmotioninternal_1.CubismMotionCurveTarget.CubismMotionCurveTarget_PartOpacity; ++c) { + // Find parameter index. + parameterIndex = model.getParameterIndex(curves.at(c).id); + // Skip curve evaluation if no value in sink. + if (parameterIndex == -1) { + continue; + } + // Evaluate curve and apply value. + value = evaluateCurve(this._motionData, c, time); + model.setParameterValueByIndex(parameterIndex, value); + } + if (timeOffsetSeconds >= this._motionData.duration) { + if (this._isLoop) { + motionQueueEntry.setStartTime(userTimeSeconds); // 最初の状態へ + if (this._isLoopFadeIn) { + // ループ内でループ用フェードインが有効の時は、フェードイン設定し直し + motionQueueEntry.setFadeInStartTime(userTimeSeconds); + } + } + else { + if (this._onFinishedMotion) { + this._onFinishedMotion(this); + } + motionQueueEntry.setIsFinished(true); + } + } + this._lastWeight = fadeWeight; + }; + /** + * ループ情報の設定 + * @param loop ループ情報 + */ + CubismMotion.prototype.setIsLoop = function (loop) { + this._isLoop = loop; + }; + /** + * ループ情報の取得 + * @return true ループする + * @return false ループしない + */ + CubismMotion.prototype.isLoop = function () { + return this._isLoop; + }; + /** + * ループ時のフェードイン情報の設定 + * @param loopFadeIn ループ時のフェードイン情報 + */ + CubismMotion.prototype.setIsLoopFadeIn = function (loopFadeIn) { + this._isLoopFadeIn = loopFadeIn; + }; + /** + * ループ時のフェードイン情報の取得 + * + * @return true する + * @return false しない + */ + CubismMotion.prototype.isLoopFadeIn = function () { + return this._isLoopFadeIn; + }; + /** + * モーションの長さを取得する。 + * + * @return モーションの長さ[秒] + */ + CubismMotion.prototype.getDuration = function () { + return this._isLoop ? -1.0 : this._loopDurationSeconds; + }; + /** + * モーションのループ時の長さを取得する。 + * + * @return モーションのループ時の長さ[秒] + */ + CubismMotion.prototype.getLoopDuration = function () { + return this._loopDurationSeconds; + }; + /** + * パラメータに対するフェードインの時間を設定する。 + * + * @param parameterId パラメータID + * @param value フェードインにかかる時間[秒] + */ + CubismMotion.prototype.setParameterFadeInTime = function (parameterId, value) { + var curves = this._motionData.curves; + for (var i = 0; i < this._motionData.curveCount; ++i) { + if (parameterId == curves.at(i).id) { + curves.at(i).fadeInTime = value; + return; + } + } + }; + /** + * パラメータに対するフェードアウトの時間の設定 + * @param parameterId パラメータID + * @param value フェードアウトにかかる時間[秒] + */ + CubismMotion.prototype.setParameterFadeOutTime = function (parameterId, value) { + var curves = this._motionData.curves; + for (var i = 0; i < this._motionData.curveCount; ++i) { + if (parameterId == curves.at(i).id) { + curves.at(i).fadeOutTime = value; + return; + } + } + }; + /** + * パラメータに対するフェードインの時間の取得 + * @param parameterId パラメータID + * @return フェードインにかかる時間[秒] + */ + CubismMotion.prototype.getParameterFadeInTime = function (parameterId) { + var curves = this._motionData.curves; + for (var i = 0; i < this._motionData.curveCount; ++i) { + if (parameterId == curves.at(i).id) { + return curves.at(i).fadeInTime; + } + } + return -1; + }; + /** + * パラメータに対するフェードアウトの時間を取得 + * + * @param parameterId パラメータID + * @return フェードアウトにかかる時間[秒] + */ + CubismMotion.prototype.getParameterFadeOutTime = function (parameterId) { + var curves = this._motionData.curves; + for (var i = 0; i < this._motionData.curveCount; ++i) { + if (parameterId == curves.at(i).id) { + return curves.at(i).fadeOutTime; + } + } + return -1; + }; + /** + * 自動エフェクトがかかっているパラメータIDリストの設定 + * @param eyeBlinkParameterIds 自動まばたきがかかっているパラメータIDのリスト + * @param lipSyncParameterIds リップシンクがかかっているパラメータIDのリスト + */ + CubismMotion.prototype.setEffectIds = function (eyeBlinkParameterIds, lipSyncParameterIds) { + this._eyeBlinkParameterIds = eyeBlinkParameterIds; + this._lipSyncParameterIds = lipSyncParameterIds; + }; + /** + * デストラクタ相当の処理 + */ + CubismMotion.prototype.release = function () { + this._motionData = void 0; + this._motionData = null; + }; + /** + * motion3.jsonをパースする。 + * + * @param motionJson motion3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + CubismMotion.prototype.parse = function (motionJson, size) { + this._motionData = new cubismmotioninternal_1.CubismMotionData(); + var json = new cubismmotionjson_1.CubismMotionJson(motionJson, size); + this._motionData.duration = json.getMotionDuration(); + this._motionData.loop = json.isMotionLoop(); + this._motionData.curveCount = json.getMotionCurveCount(); + this._motionData.fps = json.getMotionFps(); + this._motionData.eventCount = json.getEventCount(); + var areBeziersRestructed = json.getEvaluationOptionFlag(cubismmotionjson_1.EvaluationOptionFlag.EvaluationOptionFlag_AreBeziersRistricted); + if (json.isExistMotionFadeInTime()) { + this._fadeInSeconds = + json.getMotionFadeInTime() < 0.0 ? 1.0 : json.getMotionFadeInTime(); + } + else { + this._fadeInSeconds = 1.0; + } + if (json.isExistMotionFadeOutTime()) { + this._fadeOutSeconds = + json.getMotionFadeOutTime() < 0.0 ? 1.0 : json.getMotionFadeOutTime(); + } + else { + this._fadeOutSeconds = 1.0; + } + this._motionData.curves.updateSize(this._motionData.curveCount, cubismmotioninternal_1.CubismMotionCurve, true); + this._motionData.segments.updateSize(json.getMotionTotalSegmentCount(), cubismmotioninternal_1.CubismMotionSegment, true); + this._motionData.points.updateSize(json.getMotionTotalPointCount(), cubismmotioninternal_1.CubismMotionPoint, true); + this._motionData.events.updateSize(this._motionData.eventCount, cubismmotioninternal_1.CubismMotionEvent, true); + var totalPointCount = 0; + var totalSegmentCount = 0; + // Curves + for (var curveCount = 0; curveCount < this._motionData.curveCount; ++curveCount) { + if (json.getMotionCurveTarget(curveCount) == TargetNameModel) { + this._motionData.curves.at(curveCount).type = + cubismmotioninternal_1.CubismMotionCurveTarget.CubismMotionCurveTarget_Model; + } + else if (json.getMotionCurveTarget(curveCount) == TargetNameParameter) { + this._motionData.curves.at(curveCount).type = + cubismmotioninternal_1.CubismMotionCurveTarget.CubismMotionCurveTarget_Parameter; + } + else if (json.getMotionCurveTarget(curveCount) == TargetNamePartOpacity) { + this._motionData.curves.at(curveCount).type = + cubismmotioninternal_1.CubismMotionCurveTarget.CubismMotionCurveTarget_PartOpacity; + } + else { + (0, cubismdebug_1.CubismLogWarning)('Warning : Unable to get segment type from Curve! The number of "CurveCount" may be incorrect!'); + } + this._motionData.curves.at(curveCount).id = + json.getMotionCurveId(curveCount); + this._motionData.curves.at(curveCount).baseSegmentIndex = + totalSegmentCount; + this._motionData.curves.at(curveCount).fadeInTime = + json.isExistMotionCurveFadeInTime(curveCount) + ? json.getMotionCurveFadeInTime(curveCount) + : -1.0; + this._motionData.curves.at(curveCount).fadeOutTime = + json.isExistMotionCurveFadeOutTime(curveCount) + ? json.getMotionCurveFadeOutTime(curveCount) + : -1.0; + // Segments + for (var segmentPosition = 0; segmentPosition < json.getMotionCurveSegmentCount(curveCount);) { + if (segmentPosition == 0) { + this._motionData.segments.at(totalSegmentCount).basePointIndex = + totalPointCount; + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); + totalPointCount += 1; + segmentPosition += 2; + } + else { + this._motionData.segments.at(totalSegmentCount).basePointIndex = + totalPointCount - 1; + } + var segment = json.getMotionCurveSegment(curveCount, segmentPosition); + switch (segment) { + case cubismmotioninternal_1.CubismMotionSegmentType.CubismMotionSegmentType_Linear: { + this._motionData.segments.at(totalSegmentCount).segmentType = + cubismmotioninternal_1.CubismMotionSegmentType.CubismMotionSegmentType_Linear; + this._motionData.segments.at(totalSegmentCount).evaluate = + linearEvaluate; + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 2); + totalPointCount += 1; + segmentPosition += 3; + break; + } + case cubismmotioninternal_1.CubismMotionSegmentType.CubismMotionSegmentType_Bezier: { + this._motionData.segments.at(totalSegmentCount).segmentType = + cubismmotioninternal_1.CubismMotionSegmentType.CubismMotionSegmentType_Bezier; + if (areBeziersRestructed || UseOldBeziersCurveMotion) { + this._motionData.segments.at(totalSegmentCount).evaluate = + bezierEvaluate; + } + else { + this._motionData.segments.at(totalSegmentCount).evaluate = + bezierEvaluateCardanoInterpretation; + } + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 2); + this._motionData.points.at(totalPointCount + 1).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 3); + this._motionData.points.at(totalPointCount + 1).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 4); + this._motionData.points.at(totalPointCount + 2).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 5); + this._motionData.points.at(totalPointCount + 2).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 6); + totalPointCount += 3; + segmentPosition += 7; + break; + } + case cubismmotioninternal_1.CubismMotionSegmentType.CubismMotionSegmentType_Stepped: { + this._motionData.segments.at(totalSegmentCount).segmentType = + cubismmotioninternal_1.CubismMotionSegmentType.CubismMotionSegmentType_Stepped; + this._motionData.segments.at(totalSegmentCount).evaluate = + steppedEvaluate; + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 2); + totalPointCount += 1; + segmentPosition += 3; + break; + } + case cubismmotioninternal_1.CubismMotionSegmentType.CubismMotionSegmentType_InverseStepped: { + this._motionData.segments.at(totalSegmentCount).segmentType = + cubismmotioninternal_1.CubismMotionSegmentType.CubismMotionSegmentType_InverseStepped; + this._motionData.segments.at(totalSegmentCount).evaluate = + inverseSteppedEvaluate; + this._motionData.points.at(totalPointCount).time = + json.getMotionCurveSegment(curveCount, segmentPosition + 1); + this._motionData.points.at(totalPointCount).value = + json.getMotionCurveSegment(curveCount, segmentPosition + 2); + totalPointCount += 1; + segmentPosition += 3; + break; + } + default: { + (0, cubismdebug_1.CSM_ASSERT)(0); + break; + } + } + ++this._motionData.curves.at(curveCount).segmentCount; + ++totalSegmentCount; + } + } + for (var userdatacount = 0; userdatacount < json.getEventCount(); ++userdatacount) { + this._motionData.events.at(userdatacount).fireTime = + json.getEventTime(userdatacount); + this._motionData.events.at(userdatacount).value = + json.getEventValue(userdatacount); + } + json.release(); + json = void 0; + json = null; + }; + /** + * モデルのパラメータ更新 + * + * イベント発火のチェック。 + * 入力する時間は呼ばれるモーションタイミングを0とした秒数で行う。 + * + * @param beforeCheckTimeSeconds 前回のイベントチェック時間[秒] + * @param motionTimeSeconds 今回の再生時間[秒] + */ + CubismMotion.prototype.getFiredEvent = function (beforeCheckTimeSeconds, motionTimeSeconds) { + this._firedEventValues.updateSize(0); + // イベントの発火チェック + for (var u = 0; u < this._motionData.eventCount; ++u) { + if (this._motionData.events.at(u).fireTime > beforeCheckTimeSeconds && + this._motionData.events.at(u).fireTime <= motionTimeSeconds) { + this._firedEventValues.pushBack(new csmstring_1.csmString(this._motionData.events.at(u).value.s)); + } + } + return this._firedEventValues; + }; + /** + * 透明度のカーブが存在するかどうかを確認する + * + * @returns true -> キーが存在する + * false -> キーが存在しない + */ + CubismMotion.prototype.isExistModelOpacity = function () { + for (var i = 0; i < this._motionData.curveCount; i++) { + var curve = this._motionData.curves.at(i); + if (curve.type != cubismmotioninternal_1.CubismMotionCurveTarget.CubismMotionCurveTarget_Model) { + continue; + } + if (curve.id.getString().s.localeCompare(IdNameOpacity) == 0) { + return true; + } + } + return false; + }; + /** + * 透明度のカーブのインデックスを返す + * + * @returns success:透明度のカーブのインデックス + */ + CubismMotion.prototype.getModelOpacityIndex = function () { + if (this.isExistModelOpacity()) { + for (var i = 0; i < this._motionData.curveCount; i++) { + var curve = this._motionData.curves.at(i); + if (curve.type != cubismmotioninternal_1.CubismMotionCurveTarget.CubismMotionCurveTarget_Model) { + continue; + } + if (curve.id.getString().s.localeCompare(IdNameOpacity) == 0) { + return i; + } + } + } + return -1; + }; + /** + * 透明度のIdを返す + * + * @param index モーションカーブのインデックス + * @returns success:透明度のカーブのインデックス + */ + CubismMotion.prototype.getModelOpacityId = function (index) { + if (index != -1) { + var curve = this._motionData.curves.at(index); + if (curve.type == cubismmotioninternal_1.CubismMotionCurveTarget.CubismMotionCurveTarget_Model) { + if (curve.id.getString().s.localeCompare(IdNameOpacity) == 0) { + return live2dcubismframework_1.CubismFramework.getIdManager().getId(curve.id.getString().s); + } + } + } + return null; + }; + /** + * 現在時間の透明度の値を返す + * + * @returns success:モーションの当該時間におけるOpacityの値 + */ + CubismMotion.prototype.getModelOpacityValue = function () { + return this._modelOpacity; + }; + return CubismMotion; +}(acubismmotion_1.ACubismMotion)); +exports.CubismMotion = CubismMotion; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmotion")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismMotion = $.CubismMotion; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmotion.js.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotion.js.map b/live2demo/Framework/motion/cubismmotion.js.map new file mode 100644 index 0000000..57a6528 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotion.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotion.js","sourceRoot":"","sources":["../../src/motion/cubismmotion.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotioninternal.d.ts b/live2demo/Framework/motion/cubismmotioninternal.d.ts new file mode 100644 index 0000000..953f8ab --- /dev/null +++ b/live2demo/Framework/motion/cubismmotioninternal.d.ts @@ -0,0 +1,121 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { csmString } from '../type/csmstring'; +import { csmVector } from '../type/csmvector'; +/** + * @brief モーションカーブの種類 + * + * モーションカーブの種類。 + */ +export declare enum CubismMotionCurveTarget { + CubismMotionCurveTarget_Model = 0, + CubismMotionCurveTarget_Parameter = 1, + CubismMotionCurveTarget_PartOpacity = 2 +} +/** + * @brief モーションカーブのセグメントの種類 + * + * モーションカーブのセグメントの種類。 + */ +export declare enum CubismMotionSegmentType { + CubismMotionSegmentType_Linear = 0, + CubismMotionSegmentType_Bezier = 1, + CubismMotionSegmentType_Stepped = 2, + CubismMotionSegmentType_InverseStepped = 3 +} +/** + * @brief モーションカーブの制御点 + * + * モーションカーブの制御点。 + */ +export declare class CubismMotionPoint { + time: number; + value: number; +} +/** + * モーションカーブのセグメントの評価関数 + * + * @param points モーションカーブの制御点リスト + * @param time 評価する時間[秒] + */ +export interface csmMotionSegmentEvaluationFunction { + (points: CubismMotionPoint[], time: number): number; +} +/** + * @brief モーションカーブのセグメント + * + * モーションカーブのセグメント。 + */ +export declare class CubismMotionSegment { + /** + * @brief コンストラクタ + * + * コンストラクタ。 + */ + constructor(); + evaluate: csmMotionSegmentEvaluationFunction; + basePointIndex: number; + segmentType: number; +} +/** + * @brief モーションカーブ + * + * モーションカーブ。 + */ +export declare class CubismMotionCurve { + constructor(); + type: CubismMotionCurveTarget; + id: CubismIdHandle; + segmentCount: number; + baseSegmentIndex: number; + fadeInTime: number; + fadeOutTime: number; +} +/** + * イベント。 + */ +export declare class CubismMotionEvent { + fireTime: number; + value: csmString; +} +/** + * @brief モーションデータ + * + * モーションデータ。 + */ +export declare class CubismMotionData { + constructor(); + duration: number; + loop: boolean; + curveCount: number; + eventCount: number; + fps: number; + curves: csmVector; + segments: csmVector; + points: csmVector; + events: csmVector; +} +import * as $ from './cubismmotioninternal'; +export declare namespace Live2DCubismFramework { + const CubismMotionCurve: typeof $.CubismMotionCurve; + type CubismMotionCurve = $.CubismMotionCurve; + const CubismMotionCurveTarget: typeof $.CubismMotionCurveTarget; + type CubismMotionCurveTarget = $.CubismMotionCurveTarget; + const CubismMotionData: typeof $.CubismMotionData; + type CubismMotionData = $.CubismMotionData; + const CubismMotionEvent: typeof $.CubismMotionEvent; + type CubismMotionEvent = $.CubismMotionEvent; + const CubismMotionPoint: typeof $.CubismMotionPoint; + type CubismMotionPoint = $.CubismMotionPoint; + const CubismMotionSegment: typeof $.CubismMotionSegment; + type CubismMotionSegment = $.CubismMotionSegment; + const CubismMotionSegmentType: typeof $.CubismMotionSegmentType; + type CubismMotionSegmentType = $.CubismMotionSegmentType; + type csmMotionSegmentEvaluationFunction = $.csmMotionSegmentEvaluationFunction; +} +//# sourceMappingURL=cubismmotioninternal.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotioninternal.d.ts.map b/live2demo/Framework/motion/cubismmotioninternal.d.ts.map new file mode 100644 index 0000000..6b2abe3 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotioninternal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotioninternal.d.ts","sourceRoot":"","sources":["../../src/motion/cubismmotioninternal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;;;GAIG;AACH,oBAAY,uBAAuB;IACjC,6BAA6B,IAAA;IAC7B,iCAAiC,IAAA;IACjC,mCAAmC,IAAA;CACpC;AAED;;;;GAIG;AACH,oBAAY,uBAAuB;IACjC,8BAA8B,IAAI;IAClC,8BAA8B,IAAI;IAClC,+BAA+B,IAAI;IACnC,sCAAsC,IAAI;CAC3C;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,IAAI,SAAO;IACX,KAAK,SAAO;CACb;AAED;;;;;GAKG;AACH,MAAM,WAAW,kCAAkC;IACjD,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACrD;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B;;;;OAIG;;IAOH,QAAQ,EAAE,kCAAkC,CAAC;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;;IAS5B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,EAAE,EAAE,cAAc,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,QAAQ,SAAO;IACf,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;;IAc3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACzC,MAAM,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACrC,MAAM,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;CACtC;AAGD,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAC;AAE5C,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,iBAAiB,4BAAsB,CAAC;IACrD,KAAY,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAC7C,MAAM,uBAAuB,kCAA4B,CAAC;IACjE,KAAY,uBAAuB,GAAG,CAAC,CAAC,uBAAuB,CAAC;IACzD,MAAM,gBAAgB,2BAAqB,CAAC;IACnD,KAAY,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;IAC3C,MAAM,iBAAiB,4BAAsB,CAAC;IACrD,KAAY,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAC7C,MAAM,iBAAiB,4BAAsB,CAAC;IACrD,KAAY,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAC7C,MAAM,mBAAmB,8BAAwB,CAAC;IACzD,KAAY,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;IACjD,MAAM,uBAAuB,kCAA4B,CAAC;IACjE,KAAY,uBAAuB,GAAG,CAAC,CAAC,uBAAuB,CAAC;IAChE,KAAY,kCAAkC,GAC5C,CAAC,CAAC,kCAAkC,CAAC;CACxC"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotioninternal.js b/live2demo/Framework/motion/cubismmotioninternal.js new file mode 100644 index 0000000..ba84ee1 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotioninternal.js @@ -0,0 +1,148 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismMotionData = exports.CubismMotionEvent = exports.CubismMotionCurve = exports.CubismMotionSegment = exports.CubismMotionPoint = exports.CubismMotionSegmentType = exports.CubismMotionCurveTarget = void 0; +var csmvector_1 = require("../type/csmvector"); +/** + * @brief モーションカーブの種類 + * + * モーションカーブの種類。 + */ +var CubismMotionCurveTarget; +(function (CubismMotionCurveTarget) { + CubismMotionCurveTarget[CubismMotionCurveTarget["CubismMotionCurveTarget_Model"] = 0] = "CubismMotionCurveTarget_Model"; + CubismMotionCurveTarget[CubismMotionCurveTarget["CubismMotionCurveTarget_Parameter"] = 1] = "CubismMotionCurveTarget_Parameter"; + CubismMotionCurveTarget[CubismMotionCurveTarget["CubismMotionCurveTarget_PartOpacity"] = 2] = "CubismMotionCurveTarget_PartOpacity"; // パーツの不透明度に対して +})(CubismMotionCurveTarget || (exports.CubismMotionCurveTarget = CubismMotionCurveTarget = {})); +/** + * @brief モーションカーブのセグメントの種類 + * + * モーションカーブのセグメントの種類。 + */ +var CubismMotionSegmentType; +(function (CubismMotionSegmentType) { + CubismMotionSegmentType[CubismMotionSegmentType["CubismMotionSegmentType_Linear"] = 0] = "CubismMotionSegmentType_Linear"; + CubismMotionSegmentType[CubismMotionSegmentType["CubismMotionSegmentType_Bezier"] = 1] = "CubismMotionSegmentType_Bezier"; + CubismMotionSegmentType[CubismMotionSegmentType["CubismMotionSegmentType_Stepped"] = 2] = "CubismMotionSegmentType_Stepped"; + CubismMotionSegmentType[CubismMotionSegmentType["CubismMotionSegmentType_InverseStepped"] = 3] = "CubismMotionSegmentType_InverseStepped"; // インバースステップ +})(CubismMotionSegmentType || (exports.CubismMotionSegmentType = CubismMotionSegmentType = {})); +/** + * @brief モーションカーブの制御点 + * + * モーションカーブの制御点。 + */ +var CubismMotionPoint = /** @class */ (function () { + function CubismMotionPoint() { + this.time = 0.0; // 時間[秒] + this.value = 0.0; // 値 + } + return CubismMotionPoint; +}()); +exports.CubismMotionPoint = CubismMotionPoint; +/** + * @brief モーションカーブのセグメント + * + * モーションカーブのセグメント。 + */ +var CubismMotionSegment = /** @class */ (function () { + /** + * @brief コンストラクタ + * + * コンストラクタ。 + */ + function CubismMotionSegment() { + this.evaluate = null; + this.basePointIndex = 0; + this.segmentType = 0; + } + return CubismMotionSegment; +}()); +exports.CubismMotionSegment = CubismMotionSegment; +/** + * @brief モーションカーブ + * + * モーションカーブ。 + */ +var CubismMotionCurve = /** @class */ (function () { + function CubismMotionCurve() { + this.type = CubismMotionCurveTarget.CubismMotionCurveTarget_Model; + this.segmentCount = 0; + this.baseSegmentIndex = 0; + this.fadeInTime = 0.0; + this.fadeOutTime = 0.0; + } + return CubismMotionCurve; +}()); +exports.CubismMotionCurve = CubismMotionCurve; +/** + * イベント。 + */ +var CubismMotionEvent = /** @class */ (function () { + function CubismMotionEvent() { + this.fireTime = 0.0; + } + return CubismMotionEvent; +}()); +exports.CubismMotionEvent = CubismMotionEvent; +/** + * @brief モーションデータ + * + * モーションデータ。 + */ +var CubismMotionData = /** @class */ (function () { + function CubismMotionData() { + this.duration = 0.0; + this.loop = false; + this.curveCount = 0; + this.eventCount = 0; + this.fps = 0.0; + this.curves = new csmvector_1.csmVector(); + this.segments = new csmvector_1.csmVector(); + this.points = new csmvector_1.csmVector(); + this.events = new csmvector_1.csmVector(); + } + return CubismMotionData; +}()); +exports.CubismMotionData = CubismMotionData; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmotioninternal")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismMotionCurve = $.CubismMotionCurve; + Live2DCubismFramework.CubismMotionCurveTarget = $.CubismMotionCurveTarget; + Live2DCubismFramework.CubismMotionData = $.CubismMotionData; + Live2DCubismFramework.CubismMotionEvent = $.CubismMotionEvent; + Live2DCubismFramework.CubismMotionPoint = $.CubismMotionPoint; + Live2DCubismFramework.CubismMotionSegment = $.CubismMotionSegment; + Live2DCubismFramework.CubismMotionSegmentType = $.CubismMotionSegmentType; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmotioninternal.js.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotioninternal.js.map b/live2demo/Framework/motion/cubismmotioninternal.js.map new file mode 100644 index 0000000..f96805f --- /dev/null +++ b/live2demo/Framework/motion/cubismmotioninternal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotioninternal.js","sourceRoot":"","sources":["../../src/motion/cubismmotioninternal.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAIH,+CAA8C;AAE9C;;;;GAIG;AACH,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,uHAA6B,CAAA;IAC7B,+HAAiC,CAAA;IACjC,mIAAmC,CAAA,CAAC,eAAe;AACrD,CAAC,EAJW,uBAAuB,uCAAvB,uBAAuB,QAIlC;AAED;;;;GAIG;AACH,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,yHAAkC,CAAA;IAClC,yHAAkC,CAAA;IAClC,2HAAmC,CAAA;IACnC,yIAA0C,CAAA,CAAC,YAAY;AACzD,CAAC,EALW,uBAAuB,uCAAvB,uBAAuB,QAKlC;AAED;;;;GAIG;AACH;IAAA;QACE,SAAI,GAAG,GAAG,CAAC,CAAC,QAAQ;QACpB,UAAK,GAAG,GAAG,CAAC,CAAC,IAAI;IACnB,CAAC;IAAD,wBAAC;AAAD,CAAC,AAHD,IAGC;AAHY,8CAAiB;AAe9B;;;;GAIG;AACH;IACE;;;;OAIG;IACH;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAKH,0BAAC;AAAD,CAAC,AAfD,IAeC;AAfY,kDAAmB;AAiBhC;;;;GAIG;AACH;IACE;QACE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC,6BAA6B,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;IACzB,CAAC;IAQH,wBAAC;AAAD,CAAC,AAfD,IAeC;AAfY,8CAAiB;AAiB9B;;GAEG;AACH;IAAA;QACE,aAAQ,GAAG,GAAG,CAAC;IAEjB,CAAC;IAAD,wBAAC;AAAD,CAAC,AAHD,IAGC;AAHY,8CAAiB;AAK9B;;;;GAIG;AACH;IACE;QACE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,EAAqB,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAS,EAAuB,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,EAAqB,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,EAAqB,CAAC;IACnD,CAAC;IAWH,uBAAC;AAAD,CAAC,AAvBD,IAuBC;AAvBY,4CAAgB;AAyB7B,0CAA0C;AAC1C,wDAA4C;AAC5C,2DAA2D;AAC3D,IAAiB,qBAAqB,CAiBrC;AAjBD,WAAiB,qBAAqB;IACvB,uCAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAExC,6CAAuB,GAAG,CAAC,CAAC,uBAAuB,CAAC;IAEpD,sCAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;IAEtC,uCAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAExC,uCAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAExC,yCAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;IAE5C,6CAAuB,GAAG,CAAC,CAAC,uBAAuB,CAAC;AAInE,CAAC,EAjBgB,qBAAqB,qCAArB,qBAAqB,QAiBrC"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionjson.d.ts b/live2demo/Framework/motion/cubismmotionjson.d.ts new file mode 100644 index 0000000..1dda6b4 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionjson.d.ts @@ -0,0 +1,164 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { csmString } from '../type/csmstring'; +import { CubismJson } from '../utils/cubismjson'; +/** + * motion3.jsonのコンテナ。 + */ +export declare class CubismMotionJson { + /** + * コンストラクタ + * @param buffer motion3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + constructor(buffer: ArrayBuffer, size: number); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * モーションの長さを取得する + * @return モーションの長さ[秒] + */ + getMotionDuration(): number; + /** + * モーションのループ情報の取得 + * @return true ループする + * @return false ループしない + */ + isMotionLoop(): boolean; + getEvaluationOptionFlag(flagType: EvaluationOptionFlag): boolean; + /** + * モーションカーブの個数の取得 + * @return モーションカーブの個数 + */ + getMotionCurveCount(): number; + /** + * モーションのフレームレートの取得 + * @return フレームレート[FPS] + */ + getMotionFps(): number; + /** + * モーションのセグメントの総合計の取得 + * @return モーションのセグメントの取得 + */ + getMotionTotalSegmentCount(): number; + /** + * モーションのカーブの制御店の総合計の取得 + * @return モーションのカーブの制御点の総合計 + */ + getMotionTotalPointCount(): number; + /** + * モーションのフェードイン時間の存在 + * @return true 存在する + * @return false 存在しない + */ + isExistMotionFadeInTime(): boolean; + /** + * モーションのフェードアウト時間の存在 + * @return true 存在する + * @return false 存在しない + */ + isExistMotionFadeOutTime(): boolean; + /** + * モーションのフェードイン時間の取得 + * @return フェードイン時間[秒] + */ + getMotionFadeInTime(): number; + /** + * モーションのフェードアウト時間の取得 + * @return フェードアウト時間[秒] + */ + getMotionFadeOutTime(): number; + /** + * モーションのカーブの種類の取得 + * @param curveIndex カーブのインデックス + * @return カーブの種類 + */ + getMotionCurveTarget(curveIndex: number): string; + /** + * モーションのカーブのIDの取得 + * @param curveIndex カーブのインデックス + * @return カーブのID + */ + getMotionCurveId(curveIndex: number): CubismIdHandle; + /** + * モーションのカーブのフェードイン時間の存在 + * @param curveIndex カーブのインデックス + * @return true 存在する + * @return false 存在しない + */ + isExistMotionCurveFadeInTime(curveIndex: number): boolean; + /** + * モーションのカーブのフェードアウト時間の存在 + * @param curveIndex カーブのインデックス + * @return true 存在する + * @return false 存在しない + */ + isExistMotionCurveFadeOutTime(curveIndex: number): boolean; + /** + * モーションのカーブのフェードイン時間の取得 + * @param curveIndex カーブのインデックス + * @return フェードイン時間[秒] + */ + getMotionCurveFadeInTime(curveIndex: number): number; + /** + * モーションのカーブのフェードアウト時間の取得 + * @param curveIndex カーブのインデックス + * @return フェードアウト時間[秒] + */ + getMotionCurveFadeOutTime(curveIndex: number): number; + /** + * モーションのカーブのセグメントの個数を取得する + * @param curveIndex カーブのインデックス + * @return モーションのカーブのセグメントの個数 + */ + getMotionCurveSegmentCount(curveIndex: number): number; + /** + * モーションのカーブのセグメントの値の取得 + * @param curveIndex カーブのインデックス + * @param segmentIndex セグメントのインデックス + * @return セグメントの値 + */ + getMotionCurveSegment(curveIndex: number, segmentIndex: number): number; + /** + * イベントの個数の取得 + * @return イベントの個数 + */ + getEventCount(): number; + /** + * イベントの総文字数の取得 + * @return イベントの総文字数 + */ + getTotalEventValueSize(): number; + /** + * イベントの時間の取得 + * @param userDataIndex イベントのインデックス + * @return イベントの時間[秒] + */ + getEventTime(userDataIndex: number): number; + /** + * イベントの取得 + * @param userDataIndex イベントのインデックス + * @return イベントの文字列 + */ + getEventValue(userDataIndex: number): csmString; + _json: CubismJson; +} +/** + * @brief ベジェカーブの解釈方法のフラグタイプ + */ +export declare enum EvaluationOptionFlag { + EvaluationOptionFlag_AreBeziersRistricted = 0 +} +import * as $ from './cubismmotionjson'; +export declare namespace Live2DCubismFramework { + const CubismMotionJson: typeof $.CubismMotionJson; + type CubismMotionJson = $.CubismMotionJson; +} +//# sourceMappingURL=cubismmotionjson.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionjson.d.ts.map b/live2demo/Framework/motion/cubismmotionjson.d.ts.map new file mode 100644 index 0000000..fb65843 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionjson.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotionjson.d.ts","sourceRoot":"","sources":["../../src/motion/cubismmotionjson.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAW,MAAM,qBAAqB,CAAC;AAuB1D;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;OAIG;gBACgB,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAIpD;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;OAGG;IACI,iBAAiB,IAAI,MAAM;IAQlC;;;;OAIG;IACI,YAAY,IAAI,OAAO;IAQvB,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO;IAcvE;;;OAGG;IACI,mBAAmB,IAAI,MAAM;IAQpC;;;OAGG;IACI,YAAY,IAAI,MAAM;IAQ7B;;;OAGG;IACI,0BAA0B,IAAI,MAAM;IAQ3C;;;OAGG;IACI,wBAAwB,IAAI,MAAM;IAQzC;;;;OAIG;IACI,uBAAuB,IAAI,OAAO;IAQzC;;;;OAIG;IACI,wBAAwB,IAAI,OAAO;IAQ1C;;;OAGG;IACI,mBAAmB,IAAI,MAAM;IAQpC;;;OAGG;IACI,oBAAoB,IAAI,MAAM;IAQrC;;;;OAIG;IACI,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IASvD;;;;OAIG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc;IAW3D;;;;;OAKG;IACI,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAShE;;;;;OAKG;IACI,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IASjE;;;;OAIG;IACI,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAS3D;;;;OAIG;IACI,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAS5D;;;;OAIG;IACI,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAU7D;;;;;OAKG;IACI,qBAAqB,CAC1B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM;IAUT;;;OAGG;IACI,aAAa,IAAI,MAAM;IAQ9B;;;OAGG;IACI,sBAAsB,IAAI,MAAM;IAQvC;;;;OAIG;IACI,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IASlD;;;;OAIG;IACI,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS;IAWtD,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,yCAAyC,IAAI;CAC9C;AAGD,OAAO,KAAK,CAAC,MAAM,oBAAoB,CAAC;AAExC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,gBAAgB,2BAAqB,CAAC;IACnD,KAAY,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;CACnD"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionjson.js b/live2demo/Framework/motion/cubismmotionjson.js new file mode 100644 index 0000000..76d3309 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionjson.js @@ -0,0 +1,371 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.EvaluationOptionFlag = exports.CubismMotionJson = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var csmstring_1 = require("../type/csmstring"); +var cubismjson_1 = require("../utils/cubismjson"); +// JSON keys +var Meta = 'Meta'; +var Duration = 'Duration'; +var Loop = 'Loop'; +var AreBeziersRestricted = 'AreBeziersRestricted'; +var CurveCount = 'CurveCount'; +var Fps = 'Fps'; +var TotalSegmentCount = 'TotalSegmentCount'; +var TotalPointCount = 'TotalPointCount'; +var Curves = 'Curves'; +var Target = 'Target'; +var Id = 'Id'; +var FadeInTime = 'FadeInTime'; +var FadeOutTime = 'FadeOutTime'; +var Segments = 'Segments'; +var UserData = 'UserData'; +var UserDataCount = 'UserDataCount'; +var TotalUserDataSize = 'TotalUserDataSize'; +var Time = 'Time'; +var Value = 'Value'; +/** + * motion3.jsonのコンテナ。 + */ +var CubismMotionJson = /** @class */ (function () { + /** + * コンストラクタ + * @param buffer motion3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + function CubismMotionJson(buffer, size) { + this._json = cubismjson_1.CubismJson.create(buffer, size); + } + /** + * デストラクタ相当の処理 + */ + CubismMotionJson.prototype.release = function () { + cubismjson_1.CubismJson.delete(this._json); + }; + /** + * モーションの長さを取得する + * @return モーションの長さ[秒] + */ + CubismMotionJson.prototype.getMotionDuration = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(Duration) + .toFloat(); + }; + /** + * モーションのループ情報の取得 + * @return true ループする + * @return false ループしない + */ + CubismMotionJson.prototype.isMotionLoop = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(Loop) + .toBoolean(); + }; + CubismMotionJson.prototype.getEvaluationOptionFlag = function (flagType) { + if (EvaluationOptionFlag.EvaluationOptionFlag_AreBeziersRistricted == flagType) { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(AreBeziersRestricted) + .toBoolean(); + } + return false; + }; + /** + * モーションカーブの個数の取得 + * @return モーションカーブの個数 + */ + CubismMotionJson.prototype.getMotionCurveCount = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(CurveCount) + .toInt(); + }; + /** + * モーションのフレームレートの取得 + * @return フレームレート[FPS] + */ + CubismMotionJson.prototype.getMotionFps = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(Fps) + .toFloat(); + }; + /** + * モーションのセグメントの総合計の取得 + * @return モーションのセグメントの取得 + */ + CubismMotionJson.prototype.getMotionTotalSegmentCount = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(TotalSegmentCount) + .toInt(); + }; + /** + * モーションのカーブの制御店の総合計の取得 + * @return モーションのカーブの制御点の総合計 + */ + CubismMotionJson.prototype.getMotionTotalPointCount = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(TotalPointCount) + .toInt(); + }; + /** + * モーションのフェードイン時間の存在 + * @return true 存在する + * @return false 存在しない + */ + CubismMotionJson.prototype.isExistMotionFadeInTime = function () { + return !this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(FadeInTime) + .isNull(); + }; + /** + * モーションのフェードアウト時間の存在 + * @return true 存在する + * @return false 存在しない + */ + CubismMotionJson.prototype.isExistMotionFadeOutTime = function () { + return !this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(FadeOutTime) + .isNull(); + }; + /** + * モーションのフェードイン時間の取得 + * @return フェードイン時間[秒] + */ + CubismMotionJson.prototype.getMotionFadeInTime = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(FadeInTime) + .toFloat(); + }; + /** + * モーションのフェードアウト時間の取得 + * @return フェードアウト時間[秒] + */ + CubismMotionJson.prototype.getMotionFadeOutTime = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(FadeOutTime) + .toFloat(); + }; + /** + * モーションのカーブの種類の取得 + * @param curveIndex カーブのインデックス + * @return カーブの種類 + */ + CubismMotionJson.prototype.getMotionCurveTarget = function (curveIndex) { + return this._json + .getRoot() + .getValueByString(Curves) + .getValueByIndex(curveIndex) + .getValueByString(Target) + .getRawString(); + }; + /** + * モーションのカーブのIDの取得 + * @param curveIndex カーブのインデックス + * @return カーブのID + */ + CubismMotionJson.prototype.getMotionCurveId = function (curveIndex) { + return live2dcubismframework_1.CubismFramework.getIdManager().getId(this._json + .getRoot() + .getValueByString(Curves) + .getValueByIndex(curveIndex) + .getValueByString(Id) + .getRawString()); + }; + /** + * モーションのカーブのフェードイン時間の存在 + * @param curveIndex カーブのインデックス + * @return true 存在する + * @return false 存在しない + */ + CubismMotionJson.prototype.isExistMotionCurveFadeInTime = function (curveIndex) { + return !this._json + .getRoot() + .getValueByString(Curves) + .getValueByIndex(curveIndex) + .getValueByString(FadeInTime) + .isNull(); + }; + /** + * モーションのカーブのフェードアウト時間の存在 + * @param curveIndex カーブのインデックス + * @return true 存在する + * @return false 存在しない + */ + CubismMotionJson.prototype.isExistMotionCurveFadeOutTime = function (curveIndex) { + return !this._json + .getRoot() + .getValueByString(Curves) + .getValueByIndex(curveIndex) + .getValueByString(FadeOutTime) + .isNull(); + }; + /** + * モーションのカーブのフェードイン時間の取得 + * @param curveIndex カーブのインデックス + * @return フェードイン時間[秒] + */ + CubismMotionJson.prototype.getMotionCurveFadeInTime = function (curveIndex) { + return this._json + .getRoot() + .getValueByString(Curves) + .getValueByIndex(curveIndex) + .getValueByString(FadeInTime) + .toFloat(); + }; + /** + * モーションのカーブのフェードアウト時間の取得 + * @param curveIndex カーブのインデックス + * @return フェードアウト時間[秒] + */ + CubismMotionJson.prototype.getMotionCurveFadeOutTime = function (curveIndex) { + return this._json + .getRoot() + .getValueByString(Curves) + .getValueByIndex(curveIndex) + .getValueByString(FadeOutTime) + .toFloat(); + }; + /** + * モーションのカーブのセグメントの個数を取得する + * @param curveIndex カーブのインデックス + * @return モーションのカーブのセグメントの個数 + */ + CubismMotionJson.prototype.getMotionCurveSegmentCount = function (curveIndex) { + return this._json + .getRoot() + .getValueByString(Curves) + .getValueByIndex(curveIndex) + .getValueByString(Segments) + .getVector() + .getSize(); + }; + /** + * モーションのカーブのセグメントの値の取得 + * @param curveIndex カーブのインデックス + * @param segmentIndex セグメントのインデックス + * @return セグメントの値 + */ + CubismMotionJson.prototype.getMotionCurveSegment = function (curveIndex, segmentIndex) { + return this._json + .getRoot() + .getValueByString(Curves) + .getValueByIndex(curveIndex) + .getValueByString(Segments) + .getValueByIndex(segmentIndex) + .toFloat(); + }; + /** + * イベントの個数の取得 + * @return イベントの個数 + */ + CubismMotionJson.prototype.getEventCount = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(UserDataCount) + .toInt(); + }; + /** + * イベントの総文字数の取得 + * @return イベントの総文字数 + */ + CubismMotionJson.prototype.getTotalEventValueSize = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(TotalUserDataSize) + .toInt(); + }; + /** + * イベントの時間の取得 + * @param userDataIndex イベントのインデックス + * @return イベントの時間[秒] + */ + CubismMotionJson.prototype.getEventTime = function (userDataIndex) { + return this._json + .getRoot() + .getValueByString(UserData) + .getValueByIndex(userDataIndex) + .getValueByString(Time) + .toFloat(); + }; + /** + * イベントの取得 + * @param userDataIndex イベントのインデックス + * @return イベントの文字列 + */ + CubismMotionJson.prototype.getEventValue = function (userDataIndex) { + return new csmstring_1.csmString(this._json + .getRoot() + .getValueByString(UserData) + .getValueByIndex(userDataIndex) + .getValueByString(Value) + .getRawString()); + }; + return CubismMotionJson; +}()); +exports.CubismMotionJson = CubismMotionJson; +/** + * @brief ベジェカーブの解釈方法のフラグタイプ + */ +var EvaluationOptionFlag; +(function (EvaluationOptionFlag) { + EvaluationOptionFlag[EvaluationOptionFlag["EvaluationOptionFlag_AreBeziersRistricted"] = 0] = "EvaluationOptionFlag_AreBeziersRistricted"; ///< ベジェハンドルの規制状態 +})(EvaluationOptionFlag || (exports.EvaluationOptionFlag = EvaluationOptionFlag = {})); +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmotionjson")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismMotionJson = $.CubismMotionJson; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmotionjson.js.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionjson.js.map b/live2demo/Framework/motion/cubismmotionjson.js.map new file mode 100644 index 0000000..1709541 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionjson.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotionjson.js","sourceRoot":"","sources":["../../src/motion/cubismmotionjson.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionmanager.d.ts b/live2demo/Framework/motion/cubismmotionmanager.d.ts new file mode 100644 index 0000000..462228f --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionmanager.d.ts @@ -0,0 +1,69 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismModel } from '../model/cubismmodel'; +import { ACubismMotion } from './acubismmotion'; +import { CubismMotionQueueEntryHandle, CubismMotionQueueManager } from './cubismmotionqueuemanager'; +/** + * モーションの管理 + * + * モーションの管理を行うクラス + */ +export declare class CubismMotionManager extends CubismMotionQueueManager { + /** + * コンストラクタ + */ + constructor(); + /** + * 再生中のモーションの優先度の取得 + * @return モーションの優先度 + */ + getCurrentPriority(): number; + /** + * 予約中のモーションの優先度を取得する。 + * @return モーションの優先度 + */ + getReservePriority(): number; + /** + * 予約中のモーションの優先度を設定する。 + * @param val 優先度 + */ + setReservePriority(val: number): void; + /** + * 優先度を設定してモーションを開始する。 + * + * @param motion モーション + * @param autoDelete 再生が狩猟したモーションのインスタンスを削除するならtrue + * @param priority 優先度 + * @return 開始したモーションの識別番号を返す。個別のモーションが終了したか否かを判定するIsFinished()の引数で使用する。開始できない時は「-1」 + */ + startMotionPriority(motion: ACubismMotion, autoDelete: boolean, priority: number): CubismMotionQueueEntryHandle; + /** + * モーションを更新して、モデルにパラメータ値を反映する。 + * + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + * @return true 更新されている + * @return false 更新されていない + */ + updateMotion(model: CubismModel, deltaTimeSeconds: number): boolean; + /** + * モーションを予約する。 + * + * @param priority 優先度 + * @return true 予約できた + * @return false 予約できなかった + */ + reserveMotion(priority: number): boolean; + _currentPriority: number; + _reservePriority: number; +} +import * as $ from './cubismmotionmanager'; +export declare namespace Live2DCubismFramework { + const CubismMotionManager: typeof $.CubismMotionManager; + type CubismMotionManager = $.CubismMotionManager; +} +//# sourceMappingURL=cubismmotionmanager.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionmanager.d.ts.map b/live2demo/Framework/motion/cubismmotionmanager.d.ts.map new file mode 100644 index 0000000..5ff2d41 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionmanager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotionmanager.d.ts","sourceRoot":"","sources":["../../src/motion/cubismmotionmanager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAEpC;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,wBAAwB;IAC/D;;OAEG;;IAOH;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;OAGG;IACI,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5C;;;;;;;OAOG;IACI,mBAAmB,CACxB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,MAAM,GACf,4BAA4B;IAU/B;;;;;;;OAOG;IACI,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO;IAY1E;;;;;;OAMG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAa/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAGD,OAAO,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAE3C,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,mBAAmB,8BAAwB,CAAC;IACzD,KAAY,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;CACzD"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionmanager.js b/live2demo/Framework/motion/cubismmotionmanager.js new file mode 100644 index 0000000..e603a57 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionmanager.js @@ -0,0 +1,142 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismMotionManager = void 0; +var cubismmotionqueuemanager_1 = require("./cubismmotionqueuemanager"); +/** + * モーションの管理 + * + * モーションの管理を行うクラス + */ +var CubismMotionManager = /** @class */ (function (_super) { + __extends(CubismMotionManager, _super); + /** + * コンストラクタ + */ + function CubismMotionManager() { + var _this = _super.call(this) || this; + _this._currentPriority = 0; + _this._reservePriority = 0; + return _this; + } + /** + * 再生中のモーションの優先度の取得 + * @return モーションの優先度 + */ + CubismMotionManager.prototype.getCurrentPriority = function () { + return this._currentPriority; + }; + /** + * 予約中のモーションの優先度を取得する。 + * @return モーションの優先度 + */ + CubismMotionManager.prototype.getReservePriority = function () { + return this._reservePriority; + }; + /** + * 予約中のモーションの優先度を設定する。 + * @param val 優先度 + */ + CubismMotionManager.prototype.setReservePriority = function (val) { + this._reservePriority = val; + }; + /** + * 優先度を設定してモーションを開始する。 + * + * @param motion モーション + * @param autoDelete 再生が狩猟したモーションのインスタンスを削除するならtrue + * @param priority 優先度 + * @return 開始したモーションの識別番号を返す。個別のモーションが終了したか否かを判定するIsFinished()の引数で使用する。開始できない時は「-1」 + */ + CubismMotionManager.prototype.startMotionPriority = function (motion, autoDelete, priority) { + if (priority == this._reservePriority) { + this._reservePriority = 0; // 予約を解除 + } + this._currentPriority = priority; // 再生中モーションの優先度を設定 + return _super.prototype.startMotion.call(this, motion, autoDelete, this._userTimeSeconds); + }; + /** + * モーションを更新して、モデルにパラメータ値を反映する。 + * + * @param model 対象のモデル + * @param deltaTimeSeconds デルタ時間[秒] + * @return true 更新されている + * @return false 更新されていない + */ + CubismMotionManager.prototype.updateMotion = function (model, deltaTimeSeconds) { + this._userTimeSeconds += deltaTimeSeconds; + var updated = _super.prototype.doUpdateMotion.call(this, model, this._userTimeSeconds); + if (this.isFinished()) { + this._currentPriority = 0; // 再生中のモーションの優先度を解除 + } + return updated; + }; + /** + * モーションを予約する。 + * + * @param priority 優先度 + * @return true 予約できた + * @return false 予約できなかった + */ + CubismMotionManager.prototype.reserveMotion = function (priority) { + if (priority <= this._reservePriority || + priority <= this._currentPriority) { + return false; + } + this._reservePriority = priority; + return true; + }; + return CubismMotionManager; +}(cubismmotionqueuemanager_1.CubismMotionQueueManager)); +exports.CubismMotionManager = CubismMotionManager; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmotionmanager")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismMotionManager = $.CubismMotionManager; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmotionmanager.js.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionmanager.js.map b/live2demo/Framework/motion/cubismmotionmanager.js.map new file mode 100644 index 0000000..227e2f8 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionmanager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotionmanager.js","sourceRoot":"","sources":["../../src/motion/cubismmotionmanager.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIH,uEAGoC;AAEpC;;;;GAIG;AACH;IAAyC,uCAAwB;IAC/D;;OAEG;IACH;QAAA,YACE,iBAAO,SAGR;QAFC,KAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,KAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;;IAC5B,CAAC;IAED;;;OAGG;IACI,gDAAkB,GAAzB;QACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,gDAAkB,GAAzB;QACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,gDAAkB,GAAzB,UAA0B,GAAW;QACnC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACI,iDAAmB,GAA1B,UACE,MAAqB,EACrB,UAAmB,EACnB,QAAgB;QAEhB,IAAI,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACrC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,QAAQ;SACpC;QAED,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,CAAC,kBAAkB;QAEpD,OAAO,iBAAM,WAAW,YAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;OAOG;IACI,0CAAY,GAAnB,UAAoB,KAAkB,EAAE,gBAAwB;QAC9D,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;QAE1C,IAAM,OAAO,GAAY,iBAAM,cAAc,YAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,mBAAmB;SAC/C;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACI,2CAAa,GAApB,UAAqB,QAAgB;QACnC,IACE,QAAQ,IAAI,IAAI,CAAC,gBAAgB;YACjC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EACjC;YACA,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QAEjC,OAAO,IAAI,CAAC;IACd,CAAC;IAIH,0BAAC;AAAD,CAAC,AAlGD,CAAyC,mDAAwB,GAkGhE;AAlGY,kDAAmB;AAoGhC,0CAA0C;AAC1C,uDAA2C;AAC3C,2DAA2D;AAC3D,IAAiB,qBAAqB,CAGrC;AAHD,WAAiB,qBAAqB;IACvB,yCAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC;AAE3D,CAAC,EAHgB,qBAAqB,qCAArB,qBAAqB,QAGrC"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionqueueentry.d.ts b/live2demo/Framework/motion/cubismmotionqueueentry.d.ts new file mode 100644 index 0000000..84aad88 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionqueueentry.d.ts @@ -0,0 +1,159 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { ACubismMotion } from './acubismmotion'; +import { CubismMotionQueueEntryHandle } from './cubismmotionqueuemanager'; +/** + * CubismMotionQueueManagerで再生している各モーションの管理クラス。 + */ +export declare class CubismMotionQueueEntry { + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * フェードアウト時間と開始判定の設定 + * @param fadeOutSeconds フェードアウトにかかる時間[秒] + */ + setFadeOut(fadeOutSeconds: number): void; + /** + * フェードアウトの開始 + * @param fadeOutSeconds フェードアウトにかかる時間[秒] + * @param userTimeSeconds デルタ時間の積算値[秒] + */ + startFadeOut(fadeOutSeconds: number, userTimeSeconds: number): void; + /** + * モーションの終了の確認 + * + * @return true モーションが終了した + * @return false 終了していない + */ + isFinished(): boolean; + /** + * モーションの開始の確認 + * @return true モーションが開始した + * @return false 開始していない + */ + isStarted(): boolean; + /** + * モーションの開始時刻の取得 + * @return モーションの開始時刻[秒] + */ + getStartTime(): number; + /** + * フェードインの開始時刻の取得 + * @return フェードインの開始時刻[秒] + */ + getFadeInStartTime(): number; + /** + * フェードインの終了時刻の取得 + * @return フェードインの終了時刻の取得 + */ + getEndTime(): number; + /** + * モーションの開始時刻の設定 + * @param startTime モーションの開始時刻 + */ + setStartTime(startTime: number): void; + /** + * フェードインの開始時刻の設定 + * @param startTime フェードインの開始時刻[秒] + */ + setFadeInStartTime(startTime: number): void; + /** + * フェードインの終了時刻の設定 + * @param endTime フェードインの終了時刻[秒] + */ + setEndTime(endTime: number): void; + /** + * モーションの終了の設定 + * @param f trueならモーションの終了 + */ + setIsFinished(f: boolean): void; + /** + * モーション開始の設定 + * @param f trueならモーションの開始 + */ + setIsStarted(f: boolean): void; + /** + * モーションの有効性の確認 + * @return true モーションは有効 + * @return false モーションは無効 + */ + isAvailable(): boolean; + /** + * モーションの有効性の設定 + * @param v trueならモーションは有効 + */ + setIsAvailable(v: boolean): void; + /** + * モーションの状態の設定 + * @param timeSeconds 現在時刻[秒] + * @param weight モーション尾重み + */ + setState(timeSeconds: number, weight: number): void; + /** + * モーションの現在時刻の取得 + * @return モーションの現在時刻[秒] + */ + getStateTime(): number; + /** + * モーションの重みの取得 + * @return モーションの重み + */ + getStateWeight(): number; + /** + * 最後にイベントの発火をチェックした時間を取得 + * + * @return 最後にイベントの発火をチェックした時間[秒] + */ + getLastCheckEventSeconds(): number; + /** + * 最後にイベントをチェックした時間を設定 + * @param checkSeconds 最後にイベントをチェックした時間[秒] + */ + setLastCheckEventSeconds(checkSeconds: number): void; + /** + * フェードアウト開始判定の取得 + * @return フェードアウト開始するかどうか + */ + isTriggeredFadeOut(): boolean; + /** + * フェードアウト時間の取得 + * @return フェードアウト時間[秒] + */ + getFadeOutSeconds(): number; + /** + * モーションの取得 + * + * @return モーション + */ + getCubismMotion(): ACubismMotion; + _autoDelete: boolean; + _motion: ACubismMotion; + _available: boolean; + _finished: boolean; + _started: boolean; + _startTimeSeconds: number; + _fadeInStartTimeSeconds: number; + _endTimeSeconds: number; + _stateTimeSeconds: number; + _stateWeight: number; + _lastEventCheckSeconds: number; + private _fadeOutSeconds; + private _isTriggeredFadeOut; + _motionQueueEntryHandle: CubismMotionQueueEntryHandle; +} +import * as $ from './cubismmotionqueueentry'; +export declare namespace Live2DCubismFramework { + const CubismMotionQueueEntry: typeof $.CubismMotionQueueEntry; + type CubismMotionQueueEntry = $.CubismMotionQueueEntry; +} +//# sourceMappingURL=cubismmotionqueueentry.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionqueueentry.d.ts.map b/live2demo/Framework/motion/cubismmotionqueueentry.d.ts.map new file mode 100644 index 0000000..fde8b22 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionqueueentry.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotionqueueentry.d.ts","sourceRoot":"","sources":["../../src/motion/cubismmotionqueueentry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;;IAkBH;;OAEG;IACI,OAAO,IAAI,IAAI;IAMtB;;;OAGG;IACI,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAK/C;;;;OAIG;IACI,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAY1E;;;;;OAKG;IACI,UAAU,IAAI,OAAO;IAI5B;;;;OAIG;IACI,SAAS,IAAI,OAAO;IAI3B;;;OAGG;IACI,YAAY,IAAI,MAAM;IAI7B;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;OAGG;IACI,UAAU,IAAI,MAAM;IAI3B;;;OAGG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI5C;;;OAGG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIlD;;;OAGG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC;;;OAGG;IACI,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAItC;;;OAGG;IACI,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAIrC;;;;OAIG;IACI,WAAW,IAAI,OAAO;IAI7B;;;OAGG;IACI,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAIvC;;;;OAIG;IACI,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK1D;;;OAGG;IACI,YAAY,IAAI,MAAM;IAI7B;;;OAGG;IACI,cAAc,IAAI,MAAM;IAI/B;;;;OAIG;IACI,wBAAwB,IAAI,MAAM;IAIzC;;;OAGG;IACI,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI3D;;;OAGG;IACI,kBAAkB,IAAI,OAAO;IAIpC;;;OAGG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;;;OAIG;IACI,eAAe,IAAI,aAAa;IAIvC,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IAEvB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,mBAAmB,CAAU;IAErC,uBAAuB,EAAE,4BAA4B,CAAC;CACvD;AAGD,OAAO,KAAK,CAAC,MAAM,0BAA0B,CAAC;AAE9C,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,sBAAsB,iCAA2B,CAAC;IAC/D,KAAY,sBAAsB,GAAG,CAAC,CAAC,sBAAsB,CAAC;CAC/D"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionqueueentry.js b/live2demo/Framework/motion/cubismmotionqueueentry.js new file mode 100644 index 0000000..e08a592 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionqueueentry.js @@ -0,0 +1,244 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismMotionQueueEntry = void 0; +var acubismmotion_1 = require("./acubismmotion"); +/** + * CubismMotionQueueManagerで再生している各モーションの管理クラス。 + */ +var CubismMotionQueueEntry = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismMotionQueueEntry() { + this._autoDelete = false; + this._motion = null; + this._available = true; + this._finished = false; + this._started = false; + this._startTimeSeconds = -1.0; + this._fadeInStartTimeSeconds = 0.0; + this._endTimeSeconds = -1.0; + this._stateTimeSeconds = 0.0; + this._stateWeight = 0.0; + this._lastEventCheckSeconds = 0.0; + this._motionQueueEntryHandle = this; + this._fadeOutSeconds = 0.0; + this._isTriggeredFadeOut = false; + } + /** + * デストラクタ相当の処理 + */ + CubismMotionQueueEntry.prototype.release = function () { + if (this._autoDelete && this._motion) { + acubismmotion_1.ACubismMotion.delete(this._motion); // + } + }; + /** + * フェードアウト時間と開始判定の設定 + * @param fadeOutSeconds フェードアウトにかかる時間[秒] + */ + CubismMotionQueueEntry.prototype.setFadeOut = function (fadeOutSeconds) { + this._fadeOutSeconds = fadeOutSeconds; + this._isTriggeredFadeOut = true; + }; + /** + * フェードアウトの開始 + * @param fadeOutSeconds フェードアウトにかかる時間[秒] + * @param userTimeSeconds デルタ時間の積算値[秒] + */ + CubismMotionQueueEntry.prototype.startFadeOut = function (fadeOutSeconds, userTimeSeconds) { + var newEndTimeSeconds = userTimeSeconds + fadeOutSeconds; + this._isTriggeredFadeOut = true; + if (this._endTimeSeconds < 0.0 || + newEndTimeSeconds < this._endTimeSeconds) { + this._endTimeSeconds = newEndTimeSeconds; + } + }; + /** + * モーションの終了の確認 + * + * @return true モーションが終了した + * @return false 終了していない + */ + CubismMotionQueueEntry.prototype.isFinished = function () { + return this._finished; + }; + /** + * モーションの開始の確認 + * @return true モーションが開始した + * @return false 開始していない + */ + CubismMotionQueueEntry.prototype.isStarted = function () { + return this._started; + }; + /** + * モーションの開始時刻の取得 + * @return モーションの開始時刻[秒] + */ + CubismMotionQueueEntry.prototype.getStartTime = function () { + return this._startTimeSeconds; + }; + /** + * フェードインの開始時刻の取得 + * @return フェードインの開始時刻[秒] + */ + CubismMotionQueueEntry.prototype.getFadeInStartTime = function () { + return this._fadeInStartTimeSeconds; + }; + /** + * フェードインの終了時刻の取得 + * @return フェードインの終了時刻の取得 + */ + CubismMotionQueueEntry.prototype.getEndTime = function () { + return this._endTimeSeconds; + }; + /** + * モーションの開始時刻の設定 + * @param startTime モーションの開始時刻 + */ + CubismMotionQueueEntry.prototype.setStartTime = function (startTime) { + this._startTimeSeconds = startTime; + }; + /** + * フェードインの開始時刻の設定 + * @param startTime フェードインの開始時刻[秒] + */ + CubismMotionQueueEntry.prototype.setFadeInStartTime = function (startTime) { + this._fadeInStartTimeSeconds = startTime; + }; + /** + * フェードインの終了時刻の設定 + * @param endTime フェードインの終了時刻[秒] + */ + CubismMotionQueueEntry.prototype.setEndTime = function (endTime) { + this._endTimeSeconds = endTime; + }; + /** + * モーションの終了の設定 + * @param f trueならモーションの終了 + */ + CubismMotionQueueEntry.prototype.setIsFinished = function (f) { + this._finished = f; + }; + /** + * モーション開始の設定 + * @param f trueならモーションの開始 + */ + CubismMotionQueueEntry.prototype.setIsStarted = function (f) { + this._started = f; + }; + /** + * モーションの有効性の確認 + * @return true モーションは有効 + * @return false モーションは無効 + */ + CubismMotionQueueEntry.prototype.isAvailable = function () { + return this._available; + }; + /** + * モーションの有効性の設定 + * @param v trueならモーションは有効 + */ + CubismMotionQueueEntry.prototype.setIsAvailable = function (v) { + this._available = v; + }; + /** + * モーションの状態の設定 + * @param timeSeconds 現在時刻[秒] + * @param weight モーション尾重み + */ + CubismMotionQueueEntry.prototype.setState = function (timeSeconds, weight) { + this._stateTimeSeconds = timeSeconds; + this._stateWeight = weight; + }; + /** + * モーションの現在時刻の取得 + * @return モーションの現在時刻[秒] + */ + CubismMotionQueueEntry.prototype.getStateTime = function () { + return this._stateTimeSeconds; + }; + /** + * モーションの重みの取得 + * @return モーションの重み + */ + CubismMotionQueueEntry.prototype.getStateWeight = function () { + return this._stateWeight; + }; + /** + * 最後にイベントの発火をチェックした時間を取得 + * + * @return 最後にイベントの発火をチェックした時間[秒] + */ + CubismMotionQueueEntry.prototype.getLastCheckEventSeconds = function () { + return this._lastEventCheckSeconds; + }; + /** + * 最後にイベントをチェックした時間を設定 + * @param checkSeconds 最後にイベントをチェックした時間[秒] + */ + CubismMotionQueueEntry.prototype.setLastCheckEventSeconds = function (checkSeconds) { + this._lastEventCheckSeconds = checkSeconds; + }; + /** + * フェードアウト開始判定の取得 + * @return フェードアウト開始するかどうか + */ + CubismMotionQueueEntry.prototype.isTriggeredFadeOut = function () { + return this._isTriggeredFadeOut; + }; + /** + * フェードアウト時間の取得 + * @return フェードアウト時間[秒] + */ + CubismMotionQueueEntry.prototype.getFadeOutSeconds = function () { + return this._fadeOutSeconds; + }; + /** + * モーションの取得 + * + * @return モーション + */ + CubismMotionQueueEntry.prototype.getCubismMotion = function () { + return this._motion; + }; + return CubismMotionQueueEntry; +}()); +exports.CubismMotionQueueEntry = CubismMotionQueueEntry; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmotionqueueentry")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismMotionQueueEntry = $.CubismMotionQueueEntry; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmotionqueueentry.js.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionqueueentry.js.map b/live2demo/Framework/motion/cubismmotionqueueentry.js.map new file mode 100644 index 0000000..f439d2b --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionqueueentry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotionqueueentry.js","sourceRoot":"","sources":["../../src/motion/cubismmotionqueueentry.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionqueuemanager.d.ts b/live2demo/Framework/motion/cubismmotionqueuemanager.d.ts new file mode 100644 index 0000000..71dddd7 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionqueuemanager.d.ts @@ -0,0 +1,122 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { ACubismMotion } from './acubismmotion'; +import { CubismMotionQueueEntry } from './cubismmotionqueueentry'; +import { csmVector } from '../type/csmvector'; +import { CubismModel } from '../model/cubismmodel'; +import { csmString } from '../type/csmstring'; +/** + * モーション再生の管理 + * + * モーション再生の管理用クラス。CubismMotionモーションなどACubismMotionのサブクラスを再生するために使用する。 + * + * @note 再生中に別のモーションが StartMotion()された場合は、新しいモーションに滑らかに変化し旧モーションは中断する。 + * 表情用モーション、体用モーションなどを分けてモーション化した場合など、 + * 複数のモーションを同時に再生させる場合は、複数のCubismMotionQueueManagerインスタンスを使用する。 + */ +export declare class CubismMotionQueueManager { + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ + */ + release(): void; + /** + * 指定したモーションの開始 + * + * 指定したモーションを開始する。同じタイプのモーションが既にある場合は、既存のモーションに終了フラグを立て、フェードアウトを開始させる。 + * + * @param motion 開始するモーション + * @param autoDelete 再生が終了したモーションのインスタンスを削除するなら true + * @param userTimeSeconds デルタ時間の積算値[秒] + * @return 開始したモーションの識別番号を返す。個別のモーションが終了したか否かを判定するIsFinished()の引数で使用する。開始できない時は「-1」 + */ + startMotion(motion: ACubismMotion, autoDelete: boolean, userTimeSeconds: number): CubismMotionQueueEntryHandle; + /** + * 全てのモーションの終了の確認 + * @return true 全て終了している + * @return false 終了していない + */ + isFinished(): boolean; + /** + * 指定したモーションの終了の確認 + * @param motionQueueEntryNumber モーションの識別番号 + * @return true 全て終了している + * @return false 終了していない + */ + isFinishedByHandle(motionQueueEntryNumber: CubismMotionQueueEntryHandle): boolean; + /** + * 全てのモーションを停止する + */ + stopAllMotions(): void; + /** + * @brief CubismMotionQueueEntryの配列の取得 + * + * CubismMotionQueueEntryの配列を取得する。 + * + * @return CubismMotionQueueEntryの配列へのポインタ + * @retval NULL 見つからなかった + */ + getCubismMotionQueueEntries(): csmVector; + /** + * 指定したCubismMotionQueueEntryの取得 + + * @param motionQueueEntryNumber モーションの識別番号 + * @return 指定したCubismMotionQueueEntry + * @return null 見つからなかった + */ + getCubismMotionQueueEntry(motionQueueEntryNumber: any): CubismMotionQueueEntry; + /** + * イベントを受け取るCallbackの登録 + * + * @param callback コールバック関数 + * @param customData コールバックに返されるデータ + */ + setEventCallback(callback: CubismMotionEventFunction, customData?: any): void; + /** + * モーションを更新して、モデルにパラメータ値を反映する。 + * + * @param model 対象のモデル + * @param userTimeSeconds デルタ時間の積算値[秒] + * @return true モデルへパラメータ値の反映あり + * @return false モデルへパラメータ値の反映なし(モーションの変化なし) + */ + doUpdateMotion(model: CubismModel, userTimeSeconds: number): boolean; + _userTimeSeconds: number; + _motions: csmVector; + _eventCallBack: CubismMotionEventFunction; + _eventCustomData: any; +} +/** + * イベントのコールバック関数を定義 + * + * イベントのコールバックに登録できる関数の型情報 + * @param caller 発火したイベントを再生させたCubismMotionQueueManager + * @param eventValue 発火したイベントの文字列データ + * @param customData コールバックに返される登録時に指定されたデータ + */ +export interface CubismMotionEventFunction { + (caller: CubismMotionQueueManager, eventValue: csmString, customData: any): void; +} +/** + * モーションの識別番号 + * + * モーションの識別番号の定義 + */ +export declare type CubismMotionQueueEntryHandle = any; +export declare const InvalidMotionQueueEntryHandleValue: CubismMotionQueueEntryHandle; +import * as $ from './cubismmotionqueuemanager'; +export declare namespace Live2DCubismFramework { + const CubismMotionQueueManager: typeof $.CubismMotionQueueManager; + type CubismMotionQueueManager = $.CubismMotionQueueManager; + const InvalidMotionQueueEntryHandleValue: any; + type CubismMotionQueueEntryHandle = $.CubismMotionQueueEntryHandle; + type CubismMotionEventFunction = $.CubismMotionEventFunction; +} +//# sourceMappingURL=cubismmotionqueuemanager.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionqueuemanager.d.ts.map b/live2demo/Framework/motion/cubismmotionqueuemanager.d.ts.map new file mode 100644 index 0000000..1a9014c --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionqueuemanager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotionqueuemanager.d.ts","sourceRoot":"","sources":["../../src/motion/cubismmotionqueuemanager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAY,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;;;;;;;GAQG;AACH,qBAAa,wBAAwB;IACnC;;OAEG;;IAQH;;OAEG;IACI,OAAO,IAAI,IAAI;IAWtB;;;;;;;;;OASG;IACI,WAAW,CAChB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,OAAO,EACnB,eAAe,EAAE,MAAM,GACtB,4BAA4B;IA0B/B;;;;OAIG;IACI,UAAU,IAAI,OAAO;IAoC5B;;;;;OAKG;IACI,kBAAkB,CACvB,sBAAsB,EAAE,4BAA4B,GACnD,OAAO;IAsBV;;OAEG;IACI,cAAc,IAAI,IAAI;IAwB7B;;;;;;;OAOG;IACI,2BAA2B,IAAI,SAAS,CAAC,sBAAsB,CAAC;IAIvE;;;;;;OAMG;IACI,yBAAyB,CAC9B,sBAAsB,EAAE,GAAG,GAC1B,sBAAsB;IAqBzB;;;;;OAKG;IACI,gBAAgB,CACrB,QAAQ,EAAE,yBAAyB,EACnC,UAAU,GAAE,GAAU,GACrB,IAAI;IAKP;;;;;;;OAOG;IACI,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO;IA+D3E,gBAAgB,EAAE,MAAM,CAAC;IAEzB,QAAQ,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC5C,cAAc,EAAE,yBAAyB,CAAC;IAC1C,gBAAgB,EAAE,GAAG,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,CACE,MAAM,EAAE,wBAAwB,EAChC,UAAU,EAAE,SAAS,EACrB,UAAU,EAAE,GAAG,GACd,IAAI,CAAC;CACT;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,MAAM,4BAA4B,GAAG,GAAG,CAAC;AACvD,eAAO,MAAM,kCAAkC,EAAE,4BAC7C,CAAC;AAGL,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAEhD,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,wBAAwB,mCAA6B,CAAC;IACnE,KAAY,wBAAwB,GAAG,CAAC,CAAC,wBAAwB,CAAC;IAC3D,MAAM,kCAAkC,KACT,CAAC;IACvC,KAAY,4BAA4B,GAAG,CAAC,CAAC,4BAA4B,CAAC;IAC1E,KAAY,yBAAyB,GAAG,CAAC,CAAC,yBAAyB,CAAC;CACrE"} \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionqueuemanager.js b/live2demo/Framework/motion/cubismmotionqueuemanager.js new file mode 100644 index 0000000..89b03b6 --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionqueuemanager.js @@ -0,0 +1,267 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.InvalidMotionQueueEntryHandleValue = exports.CubismMotionQueueManager = void 0; +var cubismmotionqueueentry_1 = require("./cubismmotionqueueentry"); +var csmvector_1 = require("../type/csmvector"); +/** + * モーション再生の管理 + * + * モーション再生の管理用クラス。CubismMotionモーションなどACubismMotionのサブクラスを再生するために使用する。 + * + * @note 再生中に別のモーションが StartMotion()された場合は、新しいモーションに滑らかに変化し旧モーションは中断する。 + * 表情用モーション、体用モーションなどを分けてモーション化した場合など、 + * 複数のモーションを同時に再生させる場合は、複数のCubismMotionQueueManagerインスタンスを使用する。 + */ +var CubismMotionQueueManager = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismMotionQueueManager() { + this._userTimeSeconds = 0.0; + this._eventCallBack = null; + this._eventCustomData = null; + this._motions = new csmvector_1.csmVector(); + } + /** + * デストラクタ + */ + CubismMotionQueueManager.prototype.release = function () { + for (var i = 0; i < this._motions.getSize(); ++i) { + if (this._motions.at(i)) { + this._motions.at(i).release(); + this._motions.set(i, null); + } + } + this._motions = null; + }; + /** + * 指定したモーションの開始 + * + * 指定したモーションを開始する。同じタイプのモーションが既にある場合は、既存のモーションに終了フラグを立て、フェードアウトを開始させる。 + * + * @param motion 開始するモーション + * @param autoDelete 再生が終了したモーションのインスタンスを削除するなら true + * @param userTimeSeconds デルタ時間の積算値[秒] + * @return 開始したモーションの識別番号を返す。個別のモーションが終了したか否かを判定するIsFinished()の引数で使用する。開始できない時は「-1」 + */ + CubismMotionQueueManager.prototype.startMotion = function (motion, autoDelete, userTimeSeconds) { + if (motion == null) { + return exports.InvalidMotionQueueEntryHandleValue; + } + var motionQueueEntry = null; + // 既にモーションがあれば終了フラグを立てる + for (var i = 0; i < this._motions.getSize(); ++i) { + motionQueueEntry = this._motions.at(i); + if (motionQueueEntry == null) { + continue; + } + motionQueueEntry.setFadeOut(motionQueueEntry._motion.getFadeOutTime()); // フェードアウト設定 + } + motionQueueEntry = new cubismmotionqueueentry_1.CubismMotionQueueEntry(); // 終了時に破棄する + motionQueueEntry._autoDelete = autoDelete; + motionQueueEntry._motion = motion; + this._motions.pushBack(motionQueueEntry); + return motionQueueEntry._motionQueueEntryHandle; + }; + /** + * 全てのモーションの終了の確認 + * @return true 全て終了している + * @return false 終了していない + */ + CubismMotionQueueManager.prototype.isFinished = function () { + // ------- 処理を行う ------- + // 既にモーションがあれば終了フラグを立てる + for (var ite = this._motions.begin(); ite.notEqual(this._motions.end());) { + var motionQueueEntry = ite.ptr(); + if (motionQueueEntry == null) { + ite = this._motions.erase(ite); // 削除 + continue; + } + var motion = motionQueueEntry._motion; + if (motion == null) { + motionQueueEntry.release(); + motionQueueEntry = null; + ite = this._motions.erase(ite); // 削除 + continue; + } + // ----- 終了済みの処理があれば削除する ------ + if (!motionQueueEntry.isFinished()) { + return false; + } + else { + ite.preIncrement(); + } + } + return true; + }; + /** + * 指定したモーションの終了の確認 + * @param motionQueueEntryNumber モーションの識別番号 + * @return true 全て終了している + * @return false 終了していない + */ + CubismMotionQueueManager.prototype.isFinishedByHandle = function (motionQueueEntryNumber) { + for (var ite = this._motions.begin(); ite.notEqual(this._motions.end()); ite.increment()) { + var motionQueueEntry = ite.ptr(); + if (motionQueueEntry == null) { + continue; + } + if (motionQueueEntry._motionQueueEntryHandle == motionQueueEntryNumber && + !motionQueueEntry.isFinished()) { + return false; + } + } + return true; + }; + /** + * 全てのモーションを停止する + */ + CubismMotionQueueManager.prototype.stopAllMotions = function () { + // ------- 処理を行う ------- + // 既にモーションがあれば終了フラグを立てる + for (var ite = this._motions.begin(); ite.notEqual(this._motions.end());) { + var motionQueueEntry = ite.ptr(); + if (motionQueueEntry == null) { + ite = this._motions.erase(ite); + continue; + } + // ----- 終了済みの処理があれば削除する ------ + motionQueueEntry.release(); + motionQueueEntry = null; + ite = this._motions.erase(ite); // 削除 + } + }; + /** + * @brief CubismMotionQueueEntryの配列の取得 + * + * CubismMotionQueueEntryの配列を取得する。 + * + * @return CubismMotionQueueEntryの配列へのポインタ + * @retval NULL 見つからなかった + */ + CubismMotionQueueManager.prototype.getCubismMotionQueueEntries = function () { + return this._motions; + }; + /** + * 指定したCubismMotionQueueEntryの取得 + + * @param motionQueueEntryNumber モーションの識別番号 + * @return 指定したCubismMotionQueueEntry + * @return null 見つからなかった + */ + CubismMotionQueueManager.prototype.getCubismMotionQueueEntry = function (motionQueueEntryNumber) { + //------- 処理を行う ------- + for (var ite = this._motions.begin(); ite.notEqual(this._motions.end()); ite.preIncrement()) { + var motionQueueEntry = ite.ptr(); + if (motionQueueEntry == null) { + continue; + } + if (motionQueueEntry._motionQueueEntryHandle == motionQueueEntryNumber) { + return motionQueueEntry; + } + } + return null; + }; + /** + * イベントを受け取るCallbackの登録 + * + * @param callback コールバック関数 + * @param customData コールバックに返されるデータ + */ + CubismMotionQueueManager.prototype.setEventCallback = function (callback, customData) { + if (customData === void 0) { customData = null; } + this._eventCallBack = callback; + this._eventCustomData = customData; + }; + /** + * モーションを更新して、モデルにパラメータ値を反映する。 + * + * @param model 対象のモデル + * @param userTimeSeconds デルタ時間の積算値[秒] + * @return true モデルへパラメータ値の反映あり + * @return false モデルへパラメータ値の反映なし(モーションの変化なし) + */ + CubismMotionQueueManager.prototype.doUpdateMotion = function (model, userTimeSeconds) { + var updated = false; + // ------- 処理を行う -------- + // 既にモーションがあれば終了フラグを立てる + for (var ite = this._motions.begin(); ite.notEqual(this._motions.end());) { + var motionQueueEntry = ite.ptr(); + if (motionQueueEntry == null) { + ite = this._motions.erase(ite); // 削除 + continue; + } + var motion = motionQueueEntry._motion; + if (motion == null) { + motionQueueEntry.release(); + motionQueueEntry = null; + ite = this._motions.erase(ite); // 削除 + continue; + } + // ------ 値を反映する ------ + motion.updateParameters(model, motionQueueEntry, userTimeSeconds); + updated = true; + // ------ ユーザトリガーイベントを検査する ---- + var firedList = motion.getFiredEvent(motionQueueEntry.getLastCheckEventSeconds() - + motionQueueEntry.getStartTime(), userTimeSeconds - motionQueueEntry.getStartTime()); + for (var i = 0; i < firedList.getSize(); ++i) { + this._eventCallBack(this, firedList.at(i), this._eventCustomData); + } + motionQueueEntry.setLastCheckEventSeconds(userTimeSeconds); + // ------ 終了済みの処理があれば削除する ------ + if (motionQueueEntry.isFinished()) { + motionQueueEntry.release(); + motionQueueEntry = null; + ite = this._motions.erase(ite); // 削除 + } + else { + if (motionQueueEntry.isTriggeredFadeOut()) { + motionQueueEntry.startFadeOut(motionQueueEntry.getFadeOutSeconds(), userTimeSeconds); + } + ite.preIncrement(); + } + } + return updated; + }; + return CubismMotionQueueManager; +}()); +exports.CubismMotionQueueManager = CubismMotionQueueManager; +exports.InvalidMotionQueueEntryHandleValue = -1; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismmotionqueuemanager")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismMotionQueueManager = $.CubismMotionQueueManager; + Live2DCubismFramework.InvalidMotionQueueEntryHandleValue = $.InvalidMotionQueueEntryHandleValue; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismmotionqueuemanager.js.map \ No newline at end of file diff --git a/live2demo/Framework/motion/cubismmotionqueuemanager.js.map b/live2demo/Framework/motion/cubismmotionqueuemanager.js.map new file mode 100644 index 0000000..b0d761b --- /dev/null +++ b/live2demo/Framework/motion/cubismmotionqueuemanager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismmotionqueuemanager.js","sourceRoot":"","sources":["../../src/motion/cubismmotionqueuemanager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysics.d.ts b/live2demo/Framework/physics/cubismphysics.d.ts new file mode 100644 index 0000000..b98123f --- /dev/null +++ b/live2demo/Framework/physics/cubismphysics.d.ts @@ -0,0 +1,139 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismVector2 } from '../math/cubismvector2'; +import { csmVector } from '../type/csmvector'; +import { CubismModel } from '../model/cubismmodel'; +import { CubismPhysicsRig } from './cubismphysicsinternal'; +/** + * 物理演算クラス + */ +export declare class CubismPhysics { + /** + * インスタンスの作成 + * @param buffer physics3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + * @return 作成されたインスタンス + */ + static create(buffer: ArrayBuffer, size: number): CubismPhysics; + /** + * インスタンスを破棄する + * @param physics 破棄するインスタンス + */ + static delete(physics: CubismPhysics): void; + /** + * physics3.jsonをパースする。 + * @param physicsJson physics3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + parse(physicsJson: ArrayBuffer, size: number): void; + /** + * 現在のパラメータ値で物理演算が安定化する状態を演算する。 + * @param model 物理演算の結果を適用するモデル + */ + stabilization(model: CubismModel): void; + /** + * 物理演算の評価 + * + * Pendulum interpolation weights + * + * 振り子の計算結果は保存され、パラメータへの出力は保存された前回の結果で補間されます。 + * The result of the pendulum calculation is saved and + * the output to the parameters is interpolated with the saved previous result of the pendulum calculation. + * + * 図で示すと[1]と[2]で補間されます。 + * The figure shows the interpolation between [1] and [2]. + * + * 補間の重みは最新の振り子計算タイミングと次回のタイミングの間で見た現在時間で決定する。 + * The weight of the interpolation are determined by the current time seen between + * the latest pendulum calculation timing and the next timing. + * + * 図で示すと[2]と[4]の間でみた(3)の位置の重みになる。 + * Figure shows the weight of position (3) as seen between [2] and [4]. + * + * 解釈として振り子計算のタイミングと重み計算のタイミングがズレる。 + * As an interpretation, the pendulum calculation and weights are misaligned. + * + * physics3.jsonにFPS情報が存在しない場合は常に前の振り子状態で設定される。 + * If there is no FPS information in physics3.json, it is always set in the previous pendulum state. + * + * この仕様は補間範囲を逸脱したことが原因の震えたような見た目を回避を目的にしている。 + * The purpose of this specification is to avoid the quivering appearance caused by deviations from the interpolation range. + * + * ------------ time --------------> + * + * |+++++|------| <- weight + * ==[1]====#=====[2]---(3)----(4) + * ^ output contents + * + * 1:_previousRigOutputs + * 2:_currentRigOutputs + * 3:_currentRemainTime (now rendering) + * 4:next particles timing + * @param model 物理演算の結果を適用するモデル + * @param deltaTimeSeconds デルタ時間[秒] + */ + evaluate(model: CubismModel, deltaTimeSeconds: number): void; + /** + * 物理演算結果の適用 + * 振り子演算の最新の結果と一つ前の結果から指定した重みで適用する。 + * @param model 物理演算の結果を適用するモデル + * @param weight 最新結果の重み + */ + interpolate(model: CubismModel, weight: number): void; + /** + * オプションの設定 + * @param options オプション + */ + setOptions(options: Options): void; + /** + * オプションの取得 + * @return オプション + */ + getOption(): Options; + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * 初期化する + */ + initialize(): void; + _physicsRig: CubismPhysicsRig; + _options: Options; + _currentRigOutputs: csmVector; + _previousRigOutputs: csmVector; + _currentRemainTime: number; + _parameterCaches: Float32Array; + _parameterInputCaches: Float32Array; +} +/** + * 物理演算のオプション + */ +export declare class Options { + constructor(); + gravity: CubismVector2; + wind: CubismVector2; +} +/** + * パラメータに適用する前の物理演算の出力結果 + */ +export declare class PhysicsOutput { + constructor(); + outputs: csmVector; +} +import * as $ from './cubismphysics'; +export declare namespace Live2DCubismFramework { + const CubismPhysics: typeof $.CubismPhysics; + type CubismPhysics = $.CubismPhysics; + const Options: typeof $.Options; + type Options = $.Options; +} +//# sourceMappingURL=cubismphysics.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysics.d.ts.map b/live2demo/Framework/physics/cubismphysics.d.ts.map new file mode 100644 index 0000000..2e5f364 --- /dev/null +++ b/live2demo/Framework/physics/cubismphysics.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismphysics.d.ts","sourceRoot":"","sources":["../../src/physics/cubismphysics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAKL,gBAAgB,EAIjB,MAAM,yBAAyB,CAAC;AAoBjC;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;;OAKG;WACW,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa;IAStE;;;OAGG;WACW,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAOlD;;;;OAIG;IACI,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IA6L1D;;;OAGG;IACI,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAqK9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACI,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAwNnE;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA4D5D;;;OAGG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC;;;OAGG;IACI,SAAS,IAAI,OAAO;IAI3B;;OAEG;;IAiBH;;OAEG;IACI,OAAO,IAAI,IAAI;IAKtB;;OAEG;IACI,UAAU,IAAI,IAAI;IAgDzB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAElB,kBAAkB,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAC7C,mBAAmB,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAE9C,kBAAkB,EAAE,MAAM,CAAC;IAE3B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,qBAAqB,EAAE,YAAY,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,OAAO;;IAMlB,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,aAAa;;IAKxB,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAC5B;AAidD,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAC;AAErC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,aAAa,wBAAkB,CAAC;IAC7C,KAAY,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;IACrC,MAAM,OAAO,kBAAY,CAAC;IACjC,KAAY,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysics.js b/live2demo/Framework/physics/cubismphysics.js new file mode 100644 index 0000000..7a63643 --- /dev/null +++ b/live2demo/Framework/physics/cubismphysics.js @@ -0,0 +1,856 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.PhysicsOutput = exports.Options = exports.CubismPhysics = void 0; +var cubismmath_1 = require("../math/cubismmath"); +var cubismvector2_1 = require("../math/cubismvector2"); +var csmvector_1 = require("../type/csmvector"); +var cubismphysicsinternal_1 = require("./cubismphysicsinternal"); +var cubismphysicsjson_1 = require("./cubismphysicsjson"); +// physics types tags. +var PhysicsTypeTagX = 'X'; +var PhysicsTypeTagY = 'Y'; +var PhysicsTypeTagAngle = 'Angle'; +// Constant of air resistance. +var AirResistance = 5.0; +// Constant of maximum weight of input and output ratio. +var MaximumWeight = 100.0; +// Constant of threshold of movement. +var MovementThreshold = 0.001; +// Constant of maximum allowed delta time +var MaxDeltaTime = 5.0; +/** + * 物理演算クラス + */ +var CubismPhysics = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismPhysics() { + this._physicsRig = null; + // set default options + this._options = new Options(); + this._options.gravity.y = -1.0; + this._options.gravity.x = 0.0; + this._options.wind.x = 0.0; + this._options.wind.y = 0.0; + this._currentRigOutputs = new csmvector_1.csmVector(); + this._previousRigOutputs = new csmvector_1.csmVector(); + this._currentRemainTime = 0.0; + this._parameterCaches = null; + this._parameterInputCaches = null; + } + /** + * インスタンスの作成 + * @param buffer physics3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + * @return 作成されたインスタンス + */ + CubismPhysics.create = function (buffer, size) { + var ret = new CubismPhysics(); + ret.parse(buffer, size); + ret._physicsRig.gravity.y = 0; + return ret; + }; + /** + * インスタンスを破棄する + * @param physics 破棄するインスタンス + */ + CubismPhysics.delete = function (physics) { + if (physics != null) { + physics.release(); + physics = null; + } + }; + /** + * physics3.jsonをパースする。 + * @param physicsJson physics3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + CubismPhysics.prototype.parse = function (physicsJson, size) { + this._physicsRig = new cubismphysicsinternal_1.CubismPhysicsRig(); + var json = new cubismphysicsjson_1.CubismPhysicsJson(physicsJson, size); + this._physicsRig.gravity = json.getGravity(); + this._physicsRig.wind = json.getWind(); + this._physicsRig.subRigCount = json.getSubRigCount(); + this._physicsRig.fps = json.getFps(); + this._physicsRig.settings.updateSize(this._physicsRig.subRigCount, cubismphysicsinternal_1.CubismPhysicsSubRig, true); + this._physicsRig.inputs.updateSize(json.getTotalInputCount(), cubismphysicsinternal_1.CubismPhysicsInput, true); + this._physicsRig.outputs.updateSize(json.getTotalOutputCount(), cubismphysicsinternal_1.CubismPhysicsOutput, true); + this._physicsRig.particles.updateSize(json.getVertexCount(), cubismphysicsinternal_1.CubismPhysicsParticle, true); + this._currentRigOutputs.clear(); + this._previousRigOutputs.clear(); + var inputIndex = 0, outputIndex = 0, particleIndex = 0; + for (var i = 0; i < this._physicsRig.settings.getSize(); ++i) { + this._physicsRig.settings.at(i).normalizationPosition.minimum = + json.getNormalizationPositionMinimumValue(i); + this._physicsRig.settings.at(i).normalizationPosition.maximum = + json.getNormalizationPositionMaximumValue(i); + this._physicsRig.settings.at(i).normalizationPosition.defalut = + json.getNormalizationPositionDefaultValue(i); + this._physicsRig.settings.at(i).normalizationAngle.minimum = + json.getNormalizationAngleMinimumValue(i); + this._physicsRig.settings.at(i).normalizationAngle.maximum = + json.getNormalizationAngleMaximumValue(i); + this._physicsRig.settings.at(i).normalizationAngle.defalut = + json.getNormalizationAngleDefaultValue(i); + // Input + this._physicsRig.settings.at(i).inputCount = json.getInputCount(i); + this._physicsRig.settings.at(i).baseInputIndex = inputIndex; + for (var j = 0; j < this._physicsRig.settings.at(i).inputCount; ++j) { + this._physicsRig.inputs.at(inputIndex + j).sourceParameterIndex = -1; + this._physicsRig.inputs.at(inputIndex + j).weight = json.getInputWeight(i, j); + this._physicsRig.inputs.at(inputIndex + j).reflect = + json.getInputReflect(i, j); + if (json.getInputType(i, j) == PhysicsTypeTagX) { + this._physicsRig.inputs.at(inputIndex + j).type = + cubismphysicsinternal_1.CubismPhysicsSource.CubismPhysicsSource_X; + this._physicsRig.inputs.at(inputIndex + j).getNormalizedParameterValue = + getInputTranslationXFromNormalizedParameterValue; + } + else if (json.getInputType(i, j) == PhysicsTypeTagY) { + this._physicsRig.inputs.at(inputIndex + j).type = + cubismphysicsinternal_1.CubismPhysicsSource.CubismPhysicsSource_Y; + this._physicsRig.inputs.at(inputIndex + j).getNormalizedParameterValue = + getInputTranslationYFromNormalizedParamterValue; + } + else if (json.getInputType(i, j) == PhysicsTypeTagAngle) { + this._physicsRig.inputs.at(inputIndex + j).type = + cubismphysicsinternal_1.CubismPhysicsSource.CubismPhysicsSource_Angle; + this._physicsRig.inputs.at(inputIndex + j).getNormalizedParameterValue = + getInputAngleFromNormalizedParameterValue; + } + this._physicsRig.inputs.at(inputIndex + j).source.targetType = + cubismphysicsinternal_1.CubismPhysicsTargetType.CubismPhysicsTargetType_Parameter; + this._physicsRig.inputs.at(inputIndex + j).source.id = + json.getInputSourceId(i, j); + } + inputIndex += this._physicsRig.settings.at(i).inputCount; + // Output + this._physicsRig.settings.at(i).outputCount = json.getOutputCount(i); + this._physicsRig.settings.at(i).baseOutputIndex = outputIndex; + var currentRigOutput = new PhysicsOutput(); + currentRigOutput.outputs.resize(this._physicsRig.settings.at(i).outputCount); + var previousRigOutput = new PhysicsOutput(); + previousRigOutput.outputs.resize(this._physicsRig.settings.at(i).outputCount); + for (var j = 0; j < this._physicsRig.settings.at(i).outputCount; ++j) { + // initialize + currentRigOutput.outputs.set(j, 0.0); + previousRigOutput.outputs.set(j, 0.0); + this._physicsRig.outputs.at(outputIndex + j).destinationParameterIndex = + -1; + this._physicsRig.outputs.at(outputIndex + j).vertexIndex = + json.getOutputVertexIndex(i, j); + this._physicsRig.outputs.at(outputIndex + j).angleScale = + json.getOutputAngleScale(i, j); + this._physicsRig.outputs.at(outputIndex + j).weight = + json.getOutputWeight(i, j); + this._physicsRig.outputs.at(outputIndex + j).destination.targetType = + cubismphysicsinternal_1.CubismPhysicsTargetType.CubismPhysicsTargetType_Parameter; + this._physicsRig.outputs.at(outputIndex + j).destination.id = + json.getOutputDestinationId(i, j); + if (json.getOutputType(i, j) == PhysicsTypeTagX) { + this._physicsRig.outputs.at(outputIndex + j).type = + cubismphysicsinternal_1.CubismPhysicsSource.CubismPhysicsSource_X; + this._physicsRig.outputs.at(outputIndex + j).getValue = + getOutputTranslationX; + this._physicsRig.outputs.at(outputIndex + j).getScale = + getOutputScaleTranslationX; + } + else if (json.getOutputType(i, j) == PhysicsTypeTagY) { + this._physicsRig.outputs.at(outputIndex + j).type = + cubismphysicsinternal_1.CubismPhysicsSource.CubismPhysicsSource_Y; + this._physicsRig.outputs.at(outputIndex + j).getValue = + getOutputTranslationY; + this._physicsRig.outputs.at(outputIndex + j).getScale = + getOutputScaleTranslationY; + } + else if (json.getOutputType(i, j) == PhysicsTypeTagAngle) { + this._physicsRig.outputs.at(outputIndex + j).type = + cubismphysicsinternal_1.CubismPhysicsSource.CubismPhysicsSource_Angle; + this._physicsRig.outputs.at(outputIndex + j).getValue = + getOutputAngle; + this._physicsRig.outputs.at(outputIndex + j).getScale = + getOutputScaleAngle; + } + this._physicsRig.outputs.at(outputIndex + j).reflect = + json.getOutputReflect(i, j); + } + this._currentRigOutputs.pushBack(currentRigOutput); + this._previousRigOutputs.pushBack(previousRigOutput); + outputIndex += this._physicsRig.settings.at(i).outputCount; + // Particle + this._physicsRig.settings.at(i).particleCount = json.getParticleCount(i); + this._physicsRig.settings.at(i).baseParticleIndex = particleIndex; + for (var j = 0; j < this._physicsRig.settings.at(i).particleCount; ++j) { + this._physicsRig.particles.at(particleIndex + j).mobility = + json.getParticleMobility(i, j); + this._physicsRig.particles.at(particleIndex + j).delay = + json.getParticleDelay(i, j); + this._physicsRig.particles.at(particleIndex + j).acceleration = + json.getParticleAcceleration(i, j); + this._physicsRig.particles.at(particleIndex + j).radius = + json.getParticleRadius(i, j); + this._physicsRig.particles.at(particleIndex + j).position = + json.getParticlePosition(i, j); + } + particleIndex += this._physicsRig.settings.at(i).particleCount; + } + this.initialize(); + json.release(); + json = void 0; + json = null; + }; + /** + * 現在のパラメータ値で物理演算が安定化する状態を演算する。 + * @param model 物理演算の結果を適用するモデル + */ + CubismPhysics.prototype.stabilization = function (model) { + var _a, _b, _c, _d; + var totalAngle; + var weight; + var radAngle; + var outputValue; + var totalTranslation = new cubismvector2_1.CubismVector2(); + var currentSetting; + var currentInputs; + var currentOutputs; + var currentParticles; + var parameterValues; + var parameterMaximumValues; + var parameterMinimumValues; + var parameterDefaultValues; + parameterValues = model.getModel().parameters.values; + parameterMaximumValues = model.getModel().parameters.maximumValues; + parameterMinimumValues = model.getModel().parameters.minimumValues; + parameterDefaultValues = model.getModel().parameters.defaultValues; + if (((_b = (_a = this._parameterCaches) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) < model.getParameterCount()) { + this._parameterCaches = new Float32Array(model.getParameterCount()); + } + if (((_d = (_c = this._parameterInputCaches) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) < model.getParameterCount()) { + this._parameterInputCaches = new Float32Array(model.getParameterCount()); + } + for (var j = 0; j < model.getParameterCount(); ++j) { + this._parameterCaches[j] = parameterValues[j]; + this._parameterInputCaches[j] = parameterValues[j]; + } + for (var settingIndex = 0; settingIndex < this._physicsRig.subRigCount; ++settingIndex) { + totalAngle = { angle: 0.0 }; + totalTranslation.x = 0.0; + totalTranslation.y = 0.0; + currentSetting = this._physicsRig.settings.at(settingIndex); + currentInputs = this._physicsRig.inputs.get(currentSetting.baseInputIndex); + currentOutputs = this._physicsRig.outputs.get(currentSetting.baseOutputIndex); + currentParticles = this._physicsRig.particles.get(currentSetting.baseParticleIndex); + // Load input parameters + for (var i = 0; i < currentSetting.inputCount; ++i) { + weight = currentInputs[i].weight / MaximumWeight; + if (currentInputs[i].sourceParameterIndex == -1) { + currentInputs[i].sourceParameterIndex = model.getParameterIndex(currentInputs[i].source.id); + } + currentInputs[i].getNormalizedParameterValue(totalTranslation, totalAngle, parameterValues[currentInputs[i].sourceParameterIndex], parameterMinimumValues[currentInputs[i].sourceParameterIndex], parameterMaximumValues[currentInputs[i].sourceParameterIndex], parameterDefaultValues[currentInputs[i].sourceParameterIndex], currentSetting.normalizationPosition, currentSetting.normalizationAngle, currentInputs[i].reflect, weight); + this._parameterCaches[currentInputs[i].sourceParameterIndex] = + parameterValues[currentInputs[i].sourceParameterIndex]; + } + radAngle = cubismmath_1.CubismMath.degreesToRadian(-totalAngle.angle); + totalTranslation.x = + totalTranslation.x * cubismmath_1.CubismMath.cos(radAngle) - + totalTranslation.y * cubismmath_1.CubismMath.sin(radAngle); + totalTranslation.y = + totalTranslation.x * cubismmath_1.CubismMath.sin(radAngle) + + totalTranslation.y * cubismmath_1.CubismMath.cos(radAngle); + // Calculate particles position. + updateParticlesForStabilization(currentParticles, currentSetting.particleCount, totalTranslation, totalAngle.angle, this._options.wind, MovementThreshold * currentSetting.normalizationPosition.maximum); + // Update output parameters. + for (var i = 0; i < currentSetting.outputCount; ++i) { + var particleIndex = currentOutputs[i].vertexIndex; + if (currentOutputs[i].destinationParameterIndex == -1) { + currentOutputs[i].destinationParameterIndex = model.getParameterIndex(currentOutputs[i].destination.id); + } + if (particleIndex < 1 || + particleIndex >= currentSetting.particleCount) { + continue; + } + var translation = new cubismvector2_1.CubismVector2(); + translation = currentParticles[particleIndex].position.substract(currentParticles[particleIndex - 1].position); + outputValue = currentOutputs[i].getValue(translation, currentParticles, particleIndex, currentOutputs[i].reflect, this._options.gravity); + this._currentRigOutputs.at(settingIndex).outputs.set(i, outputValue); + this._previousRigOutputs.at(settingIndex).outputs.set(i, outputValue); + var destinationParameterIndex = currentOutputs[i].destinationParameterIndex; + var outParameterCaches = !Float32Array.prototype.slice && 'subarray' in Float32Array.prototype + ? JSON.parse(JSON.stringify(parameterValues.subarray(destinationParameterIndex))) // 値渡しするため、JSON.parse, JSON.stringify + : parameterValues.slice(destinationParameterIndex); + updateOutputParameterValue(outParameterCaches, parameterMinimumValues[destinationParameterIndex], parameterMaximumValues[destinationParameterIndex], outputValue, currentOutputs[i]); + // 値を反映 + for (var offset = destinationParameterIndex, outParamIndex = 0; offset < this._parameterCaches.length; offset++, outParamIndex++) { + parameterValues[offset] = this._parameterCaches[offset] = + outParameterCaches[outParamIndex]; + } + } + } + }; + /** + * 物理演算の評価 + * + * Pendulum interpolation weights + * + * 振り子の計算結果は保存され、パラメータへの出力は保存された前回の結果で補間されます。 + * The result of the pendulum calculation is saved and + * the output to the parameters is interpolated with the saved previous result of the pendulum calculation. + * + * 図で示すと[1]と[2]で補間されます。 + * The figure shows the interpolation between [1] and [2]. + * + * 補間の重みは最新の振り子計算タイミングと次回のタイミングの間で見た現在時間で決定する。 + * The weight of the interpolation are determined by the current time seen between + * the latest pendulum calculation timing and the next timing. + * + * 図で示すと[2]と[4]の間でみた(3)の位置の重みになる。 + * Figure shows the weight of position (3) as seen between [2] and [4]. + * + * 解釈として振り子計算のタイミングと重み計算のタイミングがズレる。 + * As an interpretation, the pendulum calculation and weights are misaligned. + * + * physics3.jsonにFPS情報が存在しない場合は常に前の振り子状態で設定される。 + * If there is no FPS information in physics3.json, it is always set in the previous pendulum state. + * + * この仕様は補間範囲を逸脱したことが原因の震えたような見た目を回避を目的にしている。 + * The purpose of this specification is to avoid the quivering appearance caused by deviations from the interpolation range. + * + * ------------ time --------------> + * + * |+++++|------| <- weight + * ==[1]====#=====[2]---(3)----(4) + * ^ output contents + * + * 1:_previousRigOutputs + * 2:_currentRigOutputs + * 3:_currentRemainTime (now rendering) + * 4:next particles timing + * @param model 物理演算の結果を適用するモデル + * @param deltaTimeSeconds デルタ時間[秒] + */ + CubismPhysics.prototype.evaluate = function (model, deltaTimeSeconds) { + var _a, _b, _c, _d; + var totalAngle; + var weight; + var radAngle; + var outputValue; + var totalTranslation = new cubismvector2_1.CubismVector2(); + var currentSetting; + var currentInputs; + var currentOutputs; + var currentParticles; + if (0.0 >= deltaTimeSeconds) { + return; + } + var parameterValues; + var parameterMaximumValues; + var parameterMinimumValues; + var parameterDefaultValues; + var physicsDeltaTime; + this._currentRemainTime += deltaTimeSeconds; + if (this._currentRemainTime > MaxDeltaTime) { + this._currentRemainTime = 0.0; + } + parameterValues = model.getModel().parameters.values; + parameterMaximumValues = model.getModel().parameters.maximumValues; + parameterMinimumValues = model.getModel().parameters.minimumValues; + parameterDefaultValues = model.getModel().parameters.defaultValues; + if (((_b = (_a = this._parameterCaches) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) < model.getParameterCount()) { + this._parameterCaches = new Float32Array(model.getParameterCount()); + } + if (((_d = (_c = this._parameterInputCaches) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) < model.getParameterCount()) { + this._parameterInputCaches = new Float32Array(model.getParameterCount()); + for (var j = 0; j < model.getParameterCount(); ++j) { + this._parameterInputCaches[j] = parameterValues[j]; + } + } + if (this._physicsRig.fps > 0.0) { + physicsDeltaTime = 1.0 / this._physicsRig.fps; + } + else { + physicsDeltaTime = deltaTimeSeconds; + } + while (this._currentRemainTime >= physicsDeltaTime) { + // copyRigOutputs _currentRigOutputs to _previousRigOutputs + for (var settingIndex = 0; settingIndex < this._physicsRig.subRigCount; ++settingIndex) { + currentSetting = this._physicsRig.settings.at(settingIndex); + currentOutputs = this._physicsRig.outputs.get(currentSetting.baseOutputIndex); + for (var i = 0; i < currentSetting.outputCount; ++i) { + this._previousRigOutputs + .at(settingIndex) + .outputs.set(i, this._currentRigOutputs.at(settingIndex).outputs.at(i)); + } + } + // 入力キャッシュとパラメータで線形補間してUpdateParticlesするタイミングでの入力を計算する。 + // Calculate the input at the timing to UpdateParticles by linear interpolation with the _parameterInputCache and parameterValue. + // _parameterCacheはグループ間での値の伝搬の役割があるので_parameterInputCacheとの分離が必要。 + // _parameterCache needs to be separated from _parameterInputCache because of its role in propagating values between groups. + var inputWeight = physicsDeltaTime / this._currentRemainTime; + for (var j = 0; j < model.getParameterCount(); ++j) { + this._parameterCaches[j] = + this._parameterInputCaches[j] * (1.0 - inputWeight) + + parameterValues[j] * inputWeight; + this._parameterInputCaches[j] = this._parameterCaches[j]; + } + for (var settingIndex = 0; settingIndex < this._physicsRig.subRigCount; ++settingIndex) { + totalAngle = { angle: 0.0 }; + totalTranslation.x = 0.0; + totalTranslation.y = 0.0; + currentSetting = this._physicsRig.settings.at(settingIndex); + currentInputs = this._physicsRig.inputs.get(currentSetting.baseInputIndex); + currentOutputs = this._physicsRig.outputs.get(currentSetting.baseOutputIndex); + currentParticles = this._physicsRig.particles.get(currentSetting.baseParticleIndex); + // Load input parameters + for (var i = 0; i < currentSetting.inputCount; ++i) { + weight = currentInputs[i].weight / MaximumWeight; + if (currentInputs[i].sourceParameterIndex == -1) { + currentInputs[i].sourceParameterIndex = model.getParameterIndex(currentInputs[i].source.id); + } + currentInputs[i].getNormalizedParameterValue(totalTranslation, totalAngle, this._parameterCaches[currentInputs[i].sourceParameterIndex], parameterMinimumValues[currentInputs[i].sourceParameterIndex], parameterMaximumValues[currentInputs[i].sourceParameterIndex], parameterDefaultValues[currentInputs[i].sourceParameterIndex], currentSetting.normalizationPosition, currentSetting.normalizationAngle, currentInputs[i].reflect, weight); + } + radAngle = cubismmath_1.CubismMath.degreesToRadian(-totalAngle.angle); + totalTranslation.x = + totalTranslation.x * cubismmath_1.CubismMath.cos(radAngle) - + totalTranslation.y * cubismmath_1.CubismMath.sin(radAngle); + totalTranslation.y = + totalTranslation.x * cubismmath_1.CubismMath.sin(radAngle) + + totalTranslation.y * cubismmath_1.CubismMath.cos(radAngle); + // Calculate particles position. + updateParticles(currentParticles, currentSetting.particleCount, totalTranslation, totalAngle.angle, this._options.wind, MovementThreshold * currentSetting.normalizationPosition.maximum, physicsDeltaTime, AirResistance); + // Update output parameters. + for (var i = 0; i < currentSetting.outputCount; ++i) { + var particleIndex = currentOutputs[i].vertexIndex; + if (currentOutputs[i].destinationParameterIndex == -1) { + currentOutputs[i].destinationParameterIndex = + model.getParameterIndex(currentOutputs[i].destination.id); + } + if (particleIndex < 1 || + particleIndex >= currentSetting.particleCount) { + continue; + } + var translation = new cubismvector2_1.CubismVector2(); + translation.x = + currentParticles[particleIndex].position.x - + currentParticles[particleIndex - 1].position.x; + translation.y = + currentParticles[particleIndex].position.y - + currentParticles[particleIndex - 1].position.y; + outputValue = currentOutputs[i].getValue(translation, currentParticles, particleIndex, currentOutputs[i].reflect, this._options.gravity); + this._currentRigOutputs.at(settingIndex).outputs.set(i, outputValue); + var destinationParameterIndex = currentOutputs[i].destinationParameterIndex; + var outParameterCaches = !Float32Array.prototype.slice && + 'subarray' in Float32Array.prototype + ? JSON.parse(JSON.stringify(this._parameterCaches.subarray(destinationParameterIndex))) // 値渡しするため、JSON.parse, JSON.stringify + : this._parameterCaches.slice(destinationParameterIndex); + updateOutputParameterValue(outParameterCaches, parameterMinimumValues[destinationParameterIndex], parameterMaximumValues[destinationParameterIndex], outputValue, currentOutputs[i]); + // 値を反映 + for (var offset = destinationParameterIndex, outParamIndex = 0; offset < this._parameterCaches.length; offset++, outParamIndex++) { + this._parameterCaches[offset] = outParameterCaches[outParamIndex]; + } + } + } + this._currentRemainTime -= physicsDeltaTime; + } + var alpha = this._currentRemainTime / physicsDeltaTime; + this.interpolate(model, alpha); + }; + /** + * 物理演算結果の適用 + * 振り子演算の最新の結果と一つ前の結果から指定した重みで適用する。 + * @param model 物理演算の結果を適用するモデル + * @param weight 最新結果の重み + */ + CubismPhysics.prototype.interpolate = function (model, weight) { + var currentOutputs; + var currentSetting; + var parameterValues; + var parameterMaximumValues; + var parameterMinimumValues; + parameterValues = model.getModel().parameters.values; + parameterMaximumValues = model.getModel().parameters.maximumValues; + parameterMinimumValues = model.getModel().parameters.minimumValues; + for (var settingIndex = 0; settingIndex < this._physicsRig.subRigCount; ++settingIndex) { + currentSetting = this._physicsRig.settings.at(settingIndex); + currentOutputs = this._physicsRig.outputs.get(currentSetting.baseOutputIndex); + // Load input parameters. + for (var i = 0; i < currentSetting.outputCount; ++i) { + if (currentOutputs[i].destinationParameterIndex == -1) { + continue; + } + var destinationParameterIndex = currentOutputs[i].destinationParameterIndex; + var outParameterValues = !Float32Array.prototype.slice && 'subarray' in Float32Array.prototype + ? JSON.parse(JSON.stringify(parameterValues.subarray(destinationParameterIndex))) // 値渡しするため、JSON.parse, JSON.stringify + : parameterValues.slice(destinationParameterIndex); + updateOutputParameterValue(outParameterValues, parameterMinimumValues[destinationParameterIndex], parameterMaximumValues[destinationParameterIndex], this._previousRigOutputs.at(settingIndex).outputs.at(i) * + (1 - weight) + + this._currentRigOutputs.at(settingIndex).outputs.at(i) * weight, currentOutputs[i]); + // 値を反映 + for (var offset = destinationParameterIndex, outParamIndex = 0; offset < parameterValues.length; offset++, outParamIndex++) { + parameterValues[offset] = outParameterValues[outParamIndex]; + } + } + } + }; + /** + * オプションの設定 + * @param options オプション + */ + CubismPhysics.prototype.setOptions = function (options) { + this._options = options; + }; + /** + * オプションの取得 + * @return オプション + */ + CubismPhysics.prototype.getOption = function () { + return this._options; + }; + /** + * デストラクタ相当の処理 + */ + CubismPhysics.prototype.release = function () { + this._physicsRig = void 0; + this._physicsRig = null; + }; + /** + * 初期化する + */ + CubismPhysics.prototype.initialize = function () { + var strand; + var currentSetting; + var radius; + for (var settingIndex = 0; settingIndex < this._physicsRig.subRigCount; ++settingIndex) { + currentSetting = this._physicsRig.settings.at(settingIndex); + strand = this._physicsRig.particles.get(currentSetting.baseParticleIndex); + // Initialize the top of particle. + strand[0].initialPosition = new cubismvector2_1.CubismVector2(0.0, 0.0); + strand[0].lastPosition = new cubismvector2_1.CubismVector2(strand[0].initialPosition.x, strand[0].initialPosition.y); + strand[0].lastGravity = new cubismvector2_1.CubismVector2(0.0, -1.0); + strand[0].lastGravity.y *= -1.0; + strand[0].velocity = new cubismvector2_1.CubismVector2(0.0, 0.0); + strand[0].force = new cubismvector2_1.CubismVector2(0.0, 0.0); + // Initialize particles. + for (var i = 1; i < currentSetting.particleCount; ++i) { + radius = new cubismvector2_1.CubismVector2(0.0, 0.0); + radius.y = strand[i].radius; + strand[i].initialPosition = new cubismvector2_1.CubismVector2(strand[i - 1].initialPosition.x + radius.x, strand[i - 1].initialPosition.y + radius.y); + strand[i].position = new cubismvector2_1.CubismVector2(strand[i].initialPosition.x, strand[i].initialPosition.y); + strand[i].lastPosition = new cubismvector2_1.CubismVector2(strand[i].initialPosition.x, strand[i].initialPosition.y); + strand[i].lastGravity = new cubismvector2_1.CubismVector2(0.0, -1.0); + strand[i].lastGravity.y *= -1.0; + strand[i].velocity = new cubismvector2_1.CubismVector2(0.0, 0.0); + strand[i].force = new cubismvector2_1.CubismVector2(0.0, 0.0); + } + } + }; + return CubismPhysics; +}()); +exports.CubismPhysics = CubismPhysics; +/** + * 物理演算のオプション + */ +var Options = /** @class */ (function () { + function Options() { + this.gravity = new cubismvector2_1.CubismVector2(0, 0); + this.wind = new cubismvector2_1.CubismVector2(0, 0); + } + return Options; +}()); +exports.Options = Options; +/** + * パラメータに適用する前の物理演算の出力結果 + */ +var PhysicsOutput = /** @class */ (function () { + function PhysicsOutput() { + this.outputs = new csmvector_1.csmVector(0); + } + return PhysicsOutput; +}()); +exports.PhysicsOutput = PhysicsOutput; +/** + * Gets sign. + * + * @param value Evaluation target value. + * + * @return Sign of value. + */ +function sign(value) { + var ret = 0; + if (value > 0.0) { + ret = 1; + } + else if (value < 0.0) { + ret = -1; + } + return ret; +} +function getInputTranslationXFromNormalizedParameterValue(targetTranslation, targetAngle, value, parameterMinimumValue, parameterMaximumValue, parameterDefaultValue, normalizationPosition, normalizationAngle, isInverted, weight) { + targetTranslation.x += + normalizeParameterValue(value, parameterMinimumValue, parameterMaximumValue, parameterDefaultValue, normalizationPosition.minimum, normalizationPosition.maximum, normalizationPosition.defalut, isInverted) * weight; +} +function getInputTranslationYFromNormalizedParamterValue(targetTranslation, targetAngle, value, parameterMinimumValue, parameterMaximumValue, parameterDefaultValue, normalizationPosition, normalizationAngle, isInverted, weight) { + targetTranslation.y += + normalizeParameterValue(value, parameterMinimumValue, parameterMaximumValue, parameterDefaultValue, normalizationPosition.minimum, normalizationPosition.maximum, normalizationPosition.defalut, isInverted) * weight; +} +function getInputAngleFromNormalizedParameterValue(targetTranslation, targetAngle, value, parameterMinimumValue, parameterMaximumValue, parameterDefaultValue, normalizaitionPosition, normalizationAngle, isInverted, weight) { + targetAngle.angle += + normalizeParameterValue(value, parameterMinimumValue, parameterMaximumValue, parameterDefaultValue, normalizationAngle.minimum, normalizationAngle.maximum, normalizationAngle.defalut, isInverted) * weight; +} +function getOutputTranslationX(translation, particles, particleIndex, isInverted, parentGravity) { + var outputValue = translation.x; + if (isInverted) { + outputValue *= -1.0; + } + return outputValue; +} +function getOutputTranslationY(translation, particles, particleIndex, isInverted, parentGravity) { + var outputValue = translation.y; + if (isInverted) { + outputValue *= -1.0; + } + return outputValue; +} +function getOutputAngle(translation, particles, particleIndex, isInverted, parentGravity) { + var outputValue; + if (particleIndex >= 2) { + parentGravity = particles[particleIndex - 1].position.substract(particles[particleIndex - 2].position); + } + else { + parentGravity = parentGravity.multiplyByScaler(-1.0); + } + outputValue = cubismmath_1.CubismMath.directionToRadian(parentGravity, translation); + if (isInverted) { + outputValue *= -1.0; + } + return outputValue; +} +function getRangeValue(min, max) { + var maxValue = cubismmath_1.CubismMath.max(min, max); + var minValue = cubismmath_1.CubismMath.min(min, max); + return cubismmath_1.CubismMath.abs(maxValue - minValue); +} +function getDefaultValue(min, max) { + var minValue = cubismmath_1.CubismMath.min(min, max); + return minValue + getRangeValue(min, max) / 2.0; +} +function getOutputScaleTranslationX(translationScale, angleScale) { + return JSON.parse(JSON.stringify(translationScale.x)); +} +function getOutputScaleTranslationY(translationScale, angleScale) { + return JSON.parse(JSON.stringify(translationScale.y)); +} +function getOutputScaleAngle(translationScale, angleScale) { + return JSON.parse(JSON.stringify(angleScale)); +} +/** + * Updates particles. + * + * @param strand Target array of particle. + * @param strandCount Count of particle. + * @param totalTranslation Total translation value. + * @param totalAngle Total angle. + * @param windDirection Direction of Wind. + * @param thresholdValue Threshold of movement. + * @param deltaTimeSeconds Delta time. + * @param airResistance Air resistance. + */ +function updateParticles(strand, strandCount, totalTranslation, totalAngle, windDirection, thresholdValue, deltaTimeSeconds, airResistance) { + var totalRadian; + var delay; + var radian; + var currentGravity; + var direction = new cubismvector2_1.CubismVector2(0.0, 0.0); + var velocity = new cubismvector2_1.CubismVector2(0.0, 0.0); + var force = new cubismvector2_1.CubismVector2(0.0, 0.0); + var newDirection = new cubismvector2_1.CubismVector2(0.0, 0.0); + strand[0].position = new cubismvector2_1.CubismVector2(totalTranslation.x, totalTranslation.y); + totalRadian = cubismmath_1.CubismMath.degreesToRadian(totalAngle); + currentGravity = cubismmath_1.CubismMath.radianToDirection(totalRadian); + currentGravity.normalize(); + for (var i = 1; i < strandCount; ++i) { + strand[i].force = currentGravity + .multiplyByScaler(strand[i].acceleration) + .add(windDirection); + strand[i].lastPosition = new cubismvector2_1.CubismVector2(strand[i].position.x, strand[i].position.y); + delay = strand[i].delay * deltaTimeSeconds * 30.0; + direction = strand[i].position.substract(strand[i - 1].position); + radian = + cubismmath_1.CubismMath.directionToRadian(strand[i].lastGravity, currentGravity) / + airResistance; + direction.x = + cubismmath_1.CubismMath.cos(radian) * direction.x - + direction.y * cubismmath_1.CubismMath.sin(radian); + direction.y = + cubismmath_1.CubismMath.sin(radian) * direction.x + + direction.y * cubismmath_1.CubismMath.cos(radian); + strand[i].position = strand[i - 1].position.add(direction); + velocity = strand[i].velocity.multiplyByScaler(delay); + force = strand[i].force.multiplyByScaler(delay).multiplyByScaler(delay); + strand[i].position = strand[i].position.add(velocity).add(force); + newDirection = strand[i].position.substract(strand[i - 1].position); + newDirection.normalize(); + strand[i].position = strand[i - 1].position.add(newDirection.multiplyByScaler(strand[i].radius)); + if (cubismmath_1.CubismMath.abs(strand[i].position.x) < thresholdValue) { + strand[i].position.x = 0.0; + } + if (delay != 0.0) { + strand[i].velocity = strand[i].position.substract(strand[i].lastPosition); + strand[i].velocity = strand[i].velocity.divisionByScalar(delay); + strand[i].velocity = strand[i].velocity.multiplyByScaler(strand[i].mobility); + } + strand[i].force = new cubismvector2_1.CubismVector2(0.0, 0.0); + strand[i].lastGravity = new cubismvector2_1.CubismVector2(currentGravity.x, currentGravity.y); + } +} +/** + * Updates particles for stabilization. + * + * @param strand Target array of particle. + * @param strandCount Count of particle. + * @param totalTranslation Total translation value. + * @param totalAngle Total angle. + * @param windDirection Direction of Wind. + * @param thresholdValue Threshold of movement. + */ +function updateParticlesForStabilization(strand, strandCount, totalTranslation, totalAngle, windDirection, thresholdValue) { + var totalRadian; + var currentGravity; + var force = new cubismvector2_1.CubismVector2(0.0, 0.0); + strand[0].position = new cubismvector2_1.CubismVector2(totalTranslation.x, totalTranslation.y); + totalRadian = cubismmath_1.CubismMath.degreesToRadian(totalAngle); + currentGravity = cubismmath_1.CubismMath.radianToDirection(totalRadian); + currentGravity.normalize(); + for (var i = 1; i < strandCount; ++i) { + strand[i].force = currentGravity + .multiplyByScaler(strand[i].acceleration) + .add(windDirection); + strand[i].lastPosition = new cubismvector2_1.CubismVector2(strand[i].position.x, strand[i].position.y); + strand[i].velocity = new cubismvector2_1.CubismVector2(0.0, 0.0); + force = strand[i].force; + force.normalize(); + force = force.multiplyByScaler(strand[i].radius); + strand[i].position = strand[i - 1].position.add(force); + if (cubismmath_1.CubismMath.abs(strand[i].position.x) < thresholdValue) { + strand[i].position.x = 0.0; + } + strand[i].force = new cubismvector2_1.CubismVector2(0.0, 0.0); + strand[i].lastGravity = new cubismvector2_1.CubismVector2(currentGravity.x, currentGravity.y); + } +} +/** + * Updates output parameter value. + * @param parameterValue Target parameter value. + * @param parameterValueMinimum Minimum of parameter value. + * @param parameterValueMaximum Maximum of parameter value. + * @param translation Translation value. + */ +function updateOutputParameterValue(parameterValue, parameterValueMinimum, parameterValueMaximum, translation, output) { + var outputScale; + var value; + var weight; + outputScale = output.getScale(output.translationScale, output.angleScale); + value = translation * outputScale; + if (value < parameterValueMinimum) { + if (value < output.valueBelowMinimum) { + output.valueBelowMinimum = value; + } + value = parameterValueMinimum; + } + else if (value > parameterValueMaximum) { + if (value > output.valueExceededMaximum) { + output.valueExceededMaximum = value; + } + value = parameterValueMaximum; + } + weight = output.weight / MaximumWeight; + if (weight >= 1.0) { + parameterValue[0] = value; + } + else { + value = parameterValue[0] * (1.0 - weight) + value * weight; + parameterValue[0] = value; + } +} +function normalizeParameterValue(value, parameterMinimum, parameterMaximum, parameterDefault, normalizedMinimum, normalizedMaximum, normalizedDefault, isInverted) { + var result = 0.0; + var maxValue = cubismmath_1.CubismMath.max(parameterMaximum, parameterMinimum); + if (maxValue < value) { + value = maxValue; + } + var minValue = cubismmath_1.CubismMath.min(parameterMaximum, parameterMinimum); + if (minValue > value) { + value = minValue; + } + var minNormValue = cubismmath_1.CubismMath.min(normalizedMinimum, normalizedMaximum); + var maxNormValue = cubismmath_1.CubismMath.max(normalizedMinimum, normalizedMaximum); + var middleNormValue = normalizedDefault; + var middleValue = getDefaultValue(minValue, maxValue); + var paramValue = value - middleValue; + switch (sign(paramValue)) { + case 1: { + var nLength = maxNormValue - middleNormValue; + var pLength = maxValue - middleValue; + if (pLength != 0.0) { + result = paramValue * (nLength / pLength); + result += middleNormValue; + } + break; + } + case -1: { + var nLength = minNormValue - middleNormValue; + var pLength = minValue - middleValue; + if (pLength != 0.0) { + result = paramValue * (nLength / pLength); + result += middleNormValue; + } + break; + } + case 0: { + result = middleNormValue; + break; + } + default: { + break; + } + } + return isInverted ? result : result * -1.0; +} +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismphysics")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismPhysics = $.CubismPhysics; + Live2DCubismFramework.Options = $.Options; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismphysics.js.map \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysics.js.map b/live2demo/Framework/physics/cubismphysics.js.map new file mode 100644 index 0000000..65eaad7 --- /dev/null +++ b/live2demo/Framework/physics/cubismphysics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismphysics.js","sourceRoot":"","sources":["../../src/physics/cubismphysics.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysicsinternal.d.ts b/live2demo/Framework/physics/cubismphysicsinternal.d.ts new file mode 100644 index 0000000..0c7fbc1 --- /dev/null +++ b/live2demo/Framework/physics/cubismphysicsinternal.d.ts @@ -0,0 +1,191 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { CubismVector2 } from '../math/cubismvector2'; +import { csmVector } from '../type/csmvector'; +/** + * 物理演算の適用先の種類 + */ +export declare enum CubismPhysicsTargetType { + CubismPhysicsTargetType_Parameter = 0 +} +/** + * 物理演算の入力の種類 + */ +export declare enum CubismPhysicsSource { + CubismPhysicsSource_X = 0, + CubismPhysicsSource_Y = 1, + CubismPhysicsSource_Angle = 2 +} +/** + * @brief 物理演算で使用する外部の力 + * + * 物理演算で使用する外部の力。 + */ +export declare class PhysicsJsonEffectiveForces { + constructor(); + gravity: CubismVector2; + wind: CubismVector2; +} +/** + * 物理演算のパラメータ情報 + */ +export declare class CubismPhysicsParameter { + id: CubismIdHandle; + targetType: CubismPhysicsTargetType; +} +/** + * 物理演算の正規化情報 + */ +export declare class CubismPhysicsNormalization { + minimum: number; + maximum: number; + defalut: number; +} +/** + * 物理演算の演算委使用する物理点の情報 + */ +export declare class CubismPhysicsParticle { + constructor(); + initialPosition: CubismVector2; + mobility: number; + delay: number; + acceleration: number; + radius: number; + position: CubismVector2; + lastPosition: CubismVector2; + lastGravity: CubismVector2; + force: CubismVector2; + velocity: CubismVector2; +} +/** + * 物理演算の物理点の管理 + */ +export declare class CubismPhysicsSubRig { + constructor(); + inputCount: number; + outputCount: number; + particleCount: number; + baseInputIndex: number; + baseOutputIndex: number; + baseParticleIndex: number; + normalizationPosition: CubismPhysicsNormalization; + normalizationAngle: CubismPhysicsNormalization; +} +/** + * 正規化されたパラメータの取得関数の宣言 + * @param targetTranslation // 演算結果の移動値 + * @param targetAngle // 演算結果の角度 + * @param value // パラメータの値 + * @param parameterMinimunValue // パラメータの最小値 + * @param parameterMaximumValue // パラメータの最大値 + * @param parameterDefaultValue // パラメータのデフォルト値 + * @param normalizationPosition // 正規化された位置 + * @param normalizationAngle // 正規化された角度 + * @param isInverted // 値が反転されているか? + * @param weight // 重み + */ +export interface normalizedPhysicsParameterValueGetter { + (targetTranslation: CubismVector2, targetAngle: { + angle: number; + }, value: number, parameterMinimunValue: number, parameterMaximumValue: number, parameterDefaultValue: number, normalizationPosition: CubismPhysicsNormalization, normalizationAngle: CubismPhysicsNormalization, isInverted: boolean, weight: number): void; +} +/** + * 物理演算の値の取得関数の宣言 + * @param translation 移動値 + * @param particles 物理点のリスト + * @param isInverted 値が反映されているか + * @param parentGravity 重力 + * @return 値 + */ +export interface physicsValueGetter { + (translation: CubismVector2, particles: CubismPhysicsParticle[], particleIndex: number, isInverted: boolean, parentGravity: CubismVector2): number; +} +/** + * 物理演算のスケールの取得関数の宣言 + * @param translationScale 移動値のスケール + * @param angleScale 角度のスケール + * @return スケール値 + */ +export interface physicsScaleGetter { + (translationScale: CubismVector2, angleScale: number): number; +} +/** + * 物理演算の入力情報 + */ +export declare class CubismPhysicsInput { + constructor(); + source: CubismPhysicsParameter; + sourceParameterIndex: number; + weight: number; + type: number; + reflect: boolean; + getNormalizedParameterValue: normalizedPhysicsParameterValueGetter; +} +/** + * @brief 物理演算の出力情報 + * + * 物理演算の出力情報。 + */ +export declare class CubismPhysicsOutput { + constructor(); + destination: CubismPhysicsParameter; + destinationParameterIndex: number; + vertexIndex: number; + translationScale: CubismVector2; + angleScale: number; + weight: number; + type: CubismPhysicsSource; + reflect: boolean; + valueBelowMinimum: number; + valueExceededMaximum: number; + getValue: physicsValueGetter; + getScale: physicsScaleGetter; +} +/** + * @brief 物理演算のデータ + * + * 物理演算のデータ。 + */ +export declare class CubismPhysicsRig { + constructor(); + subRigCount: number; + settings: csmVector; + inputs: csmVector; + outputs: csmVector; + particles: csmVector; + gravity: CubismVector2; + wind: CubismVector2; + fps: number; +} +import * as $ from './cubismphysicsinternal'; +export declare namespace Live2DCubismFramework { + const CubismPhysicsInput: typeof $.CubismPhysicsInput; + type CubismPhysicsInput = $.CubismPhysicsInput; + const CubismPhysicsNormalization: typeof $.CubismPhysicsNormalization; + type CubismPhysicsNormalization = $.CubismPhysicsNormalization; + const CubismPhysicsOutput: typeof $.CubismPhysicsOutput; + type CubismPhysicsOutput = $.CubismPhysicsOutput; + const CubismPhysicsParameter: typeof $.CubismPhysicsParameter; + type CubismPhysicsParameter = $.CubismPhysicsParameter; + const CubismPhysicsParticle: typeof $.CubismPhysicsParticle; + type CubismPhysicsParticle = $.CubismPhysicsParticle; + const CubismPhysicsRig: typeof $.CubismPhysicsRig; + type CubismPhysicsRig = $.CubismPhysicsRig; + const CubismPhysicsSource: typeof $.CubismPhysicsSource; + type CubismPhysicsSource = $.CubismPhysicsSource; + const CubismPhysicsSubRig: typeof $.CubismPhysicsSubRig; + type CubismPhysicsSubRig = $.CubismPhysicsSubRig; + const CubismPhysicsTargetType: typeof $.CubismPhysicsTargetType; + type CubismPhysicsTargetType = $.CubismPhysicsTargetType; + const PhysicsJsonEffectiveForces: typeof $.PhysicsJsonEffectiveForces; + type PhysicsJsonEffectiveForces = $.PhysicsJsonEffectiveForces; + type normalizedPhysicsParameterValueGetter = $.normalizedPhysicsParameterValueGetter; + type physicsScaleGetter = $.physicsScaleGetter; + type physicsValueGetter = $.physicsValueGetter; +} +//# sourceMappingURL=cubismphysicsinternal.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysicsinternal.d.ts.map b/live2demo/Framework/physics/cubismphysicsinternal.d.ts.map new file mode 100644 index 0000000..dfbd7e0 --- /dev/null +++ b/live2demo/Framework/physics/cubismphysicsinternal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismphysicsinternal.d.ts","sourceRoot":"","sources":["../../src/physics/cubismphysicsinternal.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysicsinternal.js b/live2demo/Framework/physics/cubismphysicsinternal.js new file mode 100644 index 0000000..4ce8926 --- /dev/null +++ b/live2demo/Framework/physics/cubismphysicsinternal.js @@ -0,0 +1,165 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismPhysicsRig = exports.CubismPhysicsOutput = exports.CubismPhysicsInput = exports.CubismPhysicsSubRig = exports.CubismPhysicsParticle = exports.CubismPhysicsNormalization = exports.CubismPhysicsParameter = exports.PhysicsJsonEffectiveForces = exports.CubismPhysicsSource = exports.CubismPhysicsTargetType = void 0; +var cubismvector2_1 = require("../math/cubismvector2"); +var csmvector_1 = require("../type/csmvector"); +/** + * 物理演算の適用先の種類 + */ +var CubismPhysicsTargetType; +(function (CubismPhysicsTargetType) { + CubismPhysicsTargetType[CubismPhysicsTargetType["CubismPhysicsTargetType_Parameter"] = 0] = "CubismPhysicsTargetType_Parameter"; // パラメータに対して適用 +})(CubismPhysicsTargetType || (exports.CubismPhysicsTargetType = CubismPhysicsTargetType = {})); +/** + * 物理演算の入力の種類 + */ +var CubismPhysicsSource; +(function (CubismPhysicsSource) { + CubismPhysicsSource[CubismPhysicsSource["CubismPhysicsSource_X"] = 0] = "CubismPhysicsSource_X"; + CubismPhysicsSource[CubismPhysicsSource["CubismPhysicsSource_Y"] = 1] = "CubismPhysicsSource_Y"; + CubismPhysicsSource[CubismPhysicsSource["CubismPhysicsSource_Angle"] = 2] = "CubismPhysicsSource_Angle"; // 角度から +})(CubismPhysicsSource || (exports.CubismPhysicsSource = CubismPhysicsSource = {})); +/** + * @brief 物理演算で使用する外部の力 + * + * 物理演算で使用する外部の力。 + */ +var PhysicsJsonEffectiveForces = /** @class */ (function () { + function PhysicsJsonEffectiveForces() { + this.gravity = new cubismvector2_1.CubismVector2(0, 0); + this.wind = new cubismvector2_1.CubismVector2(0, 0); + } + return PhysicsJsonEffectiveForces; +}()); +exports.PhysicsJsonEffectiveForces = PhysicsJsonEffectiveForces; +/** + * 物理演算のパラメータ情報 + */ +var CubismPhysicsParameter = /** @class */ (function () { + function CubismPhysicsParameter() { + } + return CubismPhysicsParameter; +}()); +exports.CubismPhysicsParameter = CubismPhysicsParameter; +/** + * 物理演算の正規化情報 + */ +var CubismPhysicsNormalization = /** @class */ (function () { + function CubismPhysicsNormalization() { + } + return CubismPhysicsNormalization; +}()); +exports.CubismPhysicsNormalization = CubismPhysicsNormalization; +/** + * 物理演算の演算委使用する物理点の情報 + */ +var CubismPhysicsParticle = /** @class */ (function () { + function CubismPhysicsParticle() { + this.initialPosition = new cubismvector2_1.CubismVector2(0, 0); + this.position = new cubismvector2_1.CubismVector2(0, 0); + this.lastPosition = new cubismvector2_1.CubismVector2(0, 0); + this.lastGravity = new cubismvector2_1.CubismVector2(0, 0); + this.force = new cubismvector2_1.CubismVector2(0, 0); + this.velocity = new cubismvector2_1.CubismVector2(0, 0); + } + return CubismPhysicsParticle; +}()); +exports.CubismPhysicsParticle = CubismPhysicsParticle; +/** + * 物理演算の物理点の管理 + */ +var CubismPhysicsSubRig = /** @class */ (function () { + function CubismPhysicsSubRig() { + this.normalizationPosition = new CubismPhysicsNormalization(); + this.normalizationAngle = new CubismPhysicsNormalization(); + } + return CubismPhysicsSubRig; +}()); +exports.CubismPhysicsSubRig = CubismPhysicsSubRig; +/** + * 物理演算の入力情報 + */ +var CubismPhysicsInput = /** @class */ (function () { + function CubismPhysicsInput() { + this.source = new CubismPhysicsParameter(); + } + return CubismPhysicsInput; +}()); +exports.CubismPhysicsInput = CubismPhysicsInput; +/** + * @brief 物理演算の出力情報 + * + * 物理演算の出力情報。 + */ +var CubismPhysicsOutput = /** @class */ (function () { + function CubismPhysicsOutput() { + this.destination = new CubismPhysicsParameter(); + this.translationScale = new cubismvector2_1.CubismVector2(0, 0); + } + return CubismPhysicsOutput; +}()); +exports.CubismPhysicsOutput = CubismPhysicsOutput; +/** + * @brief 物理演算のデータ + * + * 物理演算のデータ。 + */ +var CubismPhysicsRig = /** @class */ (function () { + function CubismPhysicsRig() { + this.settings = new csmvector_1.csmVector(); + this.inputs = new csmvector_1.csmVector(); + this.outputs = new csmvector_1.csmVector(); + this.particles = new csmvector_1.csmVector(); + this.gravity = new cubismvector2_1.CubismVector2(0, 0); + this.wind = new cubismvector2_1.CubismVector2(0, 0); + this.fps = 0.0; + } + return CubismPhysicsRig; +}()); +exports.CubismPhysicsRig = CubismPhysicsRig; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismphysicsinternal")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismPhysicsInput = $.CubismPhysicsInput; + Live2DCubismFramework.CubismPhysicsNormalization = $.CubismPhysicsNormalization; + Live2DCubismFramework.CubismPhysicsOutput = $.CubismPhysicsOutput; + Live2DCubismFramework.CubismPhysicsParameter = $.CubismPhysicsParameter; + Live2DCubismFramework.CubismPhysicsParticle = $.CubismPhysicsParticle; + Live2DCubismFramework.CubismPhysicsRig = $.CubismPhysicsRig; + Live2DCubismFramework.CubismPhysicsSource = $.CubismPhysicsSource; + Live2DCubismFramework.CubismPhysicsSubRig = $.CubismPhysicsSubRig; + Live2DCubismFramework.CubismPhysicsTargetType = $.CubismPhysicsTargetType; + Live2DCubismFramework.PhysicsJsonEffectiveForces = $.PhysicsJsonEffectiveForces; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismphysicsinternal.js.map \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysicsinternal.js.map b/live2demo/Framework/physics/cubismphysicsinternal.js.map new file mode 100644 index 0000000..12eb97e --- /dev/null +++ b/live2demo/Framework/physics/cubismphysicsinternal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismphysicsinternal.js","sourceRoot":"","sources":["../../src/physics/cubismphysicsinternal.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysicsjson.d.ts b/live2demo/Framework/physics/cubismphysicsjson.d.ts new file mode 100644 index 0000000..732b26f --- /dev/null +++ b/live2demo/Framework/physics/cubismphysicsjson.d.ts @@ -0,0 +1,225 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismIdHandle } from '../id/cubismid'; +import { CubismVector2 } from '../math/cubismvector2'; +import { CubismJson } from '../utils/cubismjson'; +/** + * physics3.jsonのコンテナ。 + */ +export declare class CubismPhysicsJson { + /** + * コンストラクタ + * @param buffer physics3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + constructor(buffer: ArrayBuffer, size: number); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * 重力の取得 + * @return 重力 + */ + getGravity(): CubismVector2; + /** + * 風の取得 + * @return 風 + */ + getWind(): CubismVector2; + /** + * 物理演算設定FPSの取得 + * @return 物理演算設定FPS + */ + getFps(): number; + /** + * 物理店の管理の個数の取得 + * @return 物理店の管理の個数 + */ + getSubRigCount(): number; + /** + * 入力の総合計の取得 + * @return 入力の総合計 + */ + getTotalInputCount(): number; + /** + * 出力の総合計の取得 + * @return 出力の総合計 + */ + getTotalOutputCount(): number; + /** + * 物理点の個数の取得 + * @return 物理点の個数 + */ + getVertexCount(): number; + /** + * 正規化された位置の最小値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された位置の最小値 + */ + getNormalizationPositionMinimumValue(physicsSettingIndex: number): number; + /** + * 正規化された位置の最大値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された位置の最大値 + */ + getNormalizationPositionMaximumValue(physicsSettingIndex: number): number; + /** + * 正規化された位置のデフォルト値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された位置のデフォルト値 + */ + getNormalizationPositionDefaultValue(physicsSettingIndex: number): number; + /** + * 正規化された角度の最小値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された角度の最小値 + */ + getNormalizationAngleMinimumValue(physicsSettingIndex: number): number; + /** + * 正規化された角度の最大値の取得 + * @param physicsSettingIndex + * @return 正規化された角度の最大値 + */ + getNormalizationAngleMaximumValue(physicsSettingIndex: number): number; + /** + * 正規化された角度のデフォルト値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された角度のデフォルト値 + */ + getNormalizationAngleDefaultValue(physicsSettingIndex: number): number; + /** + * 入力の個数の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 入力の個数 + */ + getInputCount(physicsSettingIndex: number): number; + /** + * 入力の重みの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param inputIndex 入力のインデックス + * @return 入力の重み + */ + getInputWeight(physicsSettingIndex: number, inputIndex: number): number; + /** + * 入力の反転の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param inputIndex 入力のインデックス + * @return 入力の反転 + */ + getInputReflect(physicsSettingIndex: number, inputIndex: number): boolean; + /** + * 入力の種類の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param inputIndex 入力のインデックス + * @return 入力の種類 + */ + getInputType(physicsSettingIndex: number, inputIndex: number): string; + /** + * 入力元のIDの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param inputIndex 入力のインデックス + * @return 入力元のID + */ + getInputSourceId(physicsSettingIndex: number, inputIndex: number): CubismIdHandle; + /** + * 出力の個数の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 出力の個数 + */ + getOutputCount(physicsSettingIndex: number): number; + /** + * 出力の物理点のインデックスの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の物理点のインデックス + */ + getOutputVertexIndex(physicsSettingIndex: number, outputIndex: number): number; + /** + * 出力の角度のスケールを取得する + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の角度のスケール + */ + getOutputAngleScale(physicsSettingIndex: number, outputIndex: number): number; + /** + * 出力の重みの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の重み + */ + getOutputWeight(physicsSettingIndex: number, outputIndex: number): number; + /** + * 出力先のIDの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力先のID + */ + getOutputDestinationId(physicsSettingIndex: number, outputIndex: number): CubismIdHandle; + /** + * 出力の種類の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の種類 + */ + getOutputType(physicsSettingIndex: number, outputIndex: number): string; + /** + * 出力の反転の取得 + * @param physicsSettingIndex 物理演算のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の反転 + */ + getOutputReflect(physicsSettingIndex: number, outputIndex: number): boolean; + /** + * 物理点の個数の取得 + * @param physicsSettingIndex 物理演算男設定のインデックス + * @return 物理点の個数 + */ + getParticleCount(physicsSettingIndex: number): number; + /** + * 物理点の動きやすさの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param vertexIndex 物理点のインデックス + * @return 物理点の動きやすさ + */ + getParticleMobility(physicsSettingIndex: number, vertexIndex: number): number; + /** + * 物理点の遅れの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param vertexIndex 物理点のインデックス + * @return 物理点の遅れ + */ + getParticleDelay(physicsSettingIndex: number, vertexIndex: number): number; + /** + * 物理点の加速度の取得 + * @param physicsSettingIndex 物理演算の設定 + * @param vertexIndex 物理点のインデックス + * @return 物理点の加速度 + */ + getParticleAcceleration(physicsSettingIndex: number, vertexIndex: number): number; + /** + * 物理点の距離の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param vertexIndex 物理点のインデックス + * @return 物理点の距離 + */ + getParticleRadius(physicsSettingIndex: number, vertexIndex: number): number; + /** + * 物理点の位置の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param vertexInde 物理点のインデックス + * @return 物理点の位置 + */ + getParticlePosition(physicsSettingIndex: number, vertexIndex: number): CubismVector2; + _json: CubismJson; +} +import * as $ from './cubismphysicsjson'; +export declare namespace Live2DCubismFramework { + const CubismPhysicsJson: typeof $.CubismPhysicsJson; + type CubismPhysicsJson = $.CubismPhysicsJson; +} +//# sourceMappingURL=cubismphysicsjson.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysicsjson.d.ts.map b/live2demo/Framework/physics/cubismphysicsjson.d.ts.map new file mode 100644 index 0000000..fbb3804 --- /dev/null +++ b/live2demo/Framework/physics/cubismphysicsjson.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismphysicsjson.d.ts","sourceRoot":"","sources":["../../src/physics/cubismphysicsjson.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysicsjson.js b/live2demo/Framework/physics/cubismphysicsjson.js new file mode 100644 index 0000000..372fb5d --- /dev/null +++ b/live2demo/Framework/physics/cubismphysicsjson.js @@ -0,0 +1,588 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismPhysicsJson = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var cubismvector2_1 = require("../math/cubismvector2"); +var cubismjson_1 = require("../utils/cubismjson"); +// JSON keys +var Position = 'Position'; +var X = 'X'; +var Y = 'Y'; +var Angle = 'Angle'; +var Type = 'Type'; +var Id = 'Id'; +// Meta +var Meta = 'Meta'; +var EffectiveForces = 'EffectiveForces'; +var TotalInputCount = 'TotalInputCount'; +var TotalOutputCount = 'TotalOutputCount'; +var PhysicsSettingCount = 'PhysicsSettingCount'; +var Gravity = 'Gravity'; +var Wind = 'Wind'; +var VertexCount = 'VertexCount'; +var Fps = 'Fps'; +// PhysicsSettings +var PhysicsSettings = 'PhysicsSettings'; +var Normalization = 'Normalization'; +var Minimum = 'Minimum'; +var Maximum = 'Maximum'; +var Default = 'Default'; +var Reflect = 'Reflect'; +var Weight = 'Weight'; +// Input +var Input = 'Input'; +var Source = 'Source'; +// Output +var Output = 'Output'; +var Scale = 'Scale'; +var VertexIndex = 'VertexIndex'; +var Destination = 'Destination'; +// Particle +var Vertices = 'Vertices'; +var Mobility = 'Mobility'; +var Delay = 'Delay'; +var Radius = 'Radius'; +var Acceleration = 'Acceleration'; +/** + * physics3.jsonのコンテナ。 + */ +var CubismPhysicsJson = /** @class */ (function () { + /** + * コンストラクタ + * @param buffer physics3.jsonが読み込まれているバッファ + * @param size バッファのサイズ + */ + function CubismPhysicsJson(buffer, size) { + this._json = cubismjson_1.CubismJson.create(buffer, size); + } + /** + * デストラクタ相当の処理 + */ + CubismPhysicsJson.prototype.release = function () { + cubismjson_1.CubismJson.delete(this._json); + }; + /** + * 重力の取得 + * @return 重力 + */ + CubismPhysicsJson.prototype.getGravity = function () { + var ret = new cubismvector2_1.CubismVector2(0, 0); + ret.x = this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(EffectiveForces) + .getValueByString(Gravity) + .getValueByString(X) + .toFloat(); + ret.y = this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(EffectiveForces) + .getValueByString(Gravity) + .getValueByString(Y) + .toFloat(); + return ret; + }; + /** + * 風の取得 + * @return 風 + */ + CubismPhysicsJson.prototype.getWind = function () { + var ret = new cubismvector2_1.CubismVector2(0, 0); + ret.x = this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(EffectiveForces) + .getValueByString(Wind) + .getValueByString(X) + .toFloat(); + ret.y = this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(EffectiveForces) + .getValueByString(Wind) + .getValueByString(Y) + .toFloat(); + return ret; + }; + /** + * 物理演算設定FPSの取得 + * @return 物理演算設定FPS + */ + CubismPhysicsJson.prototype.getFps = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(Fps) + .toFloat(0.0); + }; + /** + * 物理店の管理の個数の取得 + * @return 物理店の管理の個数 + */ + CubismPhysicsJson.prototype.getSubRigCount = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(PhysicsSettingCount) + .toInt(); + }; + /** + * 入力の総合計の取得 + * @return 入力の総合計 + */ + CubismPhysicsJson.prototype.getTotalInputCount = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(TotalInputCount) + .toInt(); + }; + /** + * 出力の総合計の取得 + * @return 出力の総合計 + */ + CubismPhysicsJson.prototype.getTotalOutputCount = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(TotalOutputCount) + .toInt(); + }; + /** + * 物理点の個数の取得 + * @return 物理点の個数 + */ + CubismPhysicsJson.prototype.getVertexCount = function () { + return this._json + .getRoot() + .getValueByString(Meta) + .getValueByString(VertexCount) + .toInt(); + }; + /** + * 正規化された位置の最小値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された位置の最小値 + */ + CubismPhysicsJson.prototype.getNormalizationPositionMinimumValue = function (physicsSettingIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Normalization) + .getValueByString(Position) + .getValueByString(Minimum) + .toFloat(); + }; + /** + * 正規化された位置の最大値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された位置の最大値 + */ + CubismPhysicsJson.prototype.getNormalizationPositionMaximumValue = function (physicsSettingIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Normalization) + .getValueByString(Position) + .getValueByString(Maximum) + .toFloat(); + }; + /** + * 正規化された位置のデフォルト値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された位置のデフォルト値 + */ + CubismPhysicsJson.prototype.getNormalizationPositionDefaultValue = function (physicsSettingIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Normalization) + .getValueByString(Position) + .getValueByString(Default) + .toFloat(); + }; + /** + * 正規化された角度の最小値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された角度の最小値 + */ + CubismPhysicsJson.prototype.getNormalizationAngleMinimumValue = function (physicsSettingIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Normalization) + .getValueByString(Angle) + .getValueByString(Minimum) + .toFloat(); + }; + /** + * 正規化された角度の最大値の取得 + * @param physicsSettingIndex + * @return 正規化された角度の最大値 + */ + CubismPhysicsJson.prototype.getNormalizationAngleMaximumValue = function (physicsSettingIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Normalization) + .getValueByString(Angle) + .getValueByString(Maximum) + .toFloat(); + }; + /** + * 正規化された角度のデフォルト値の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 正規化された角度のデフォルト値 + */ + CubismPhysicsJson.prototype.getNormalizationAngleDefaultValue = function (physicsSettingIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Normalization) + .getValueByString(Angle) + .getValueByString(Default) + .toFloat(); + }; + /** + * 入力の個数の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 入力の個数 + */ + CubismPhysicsJson.prototype.getInputCount = function (physicsSettingIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Input) + .getVector() + .getSize(); + }; + /** + * 入力の重みの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param inputIndex 入力のインデックス + * @return 入力の重み + */ + CubismPhysicsJson.prototype.getInputWeight = function (physicsSettingIndex, inputIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Input) + .getValueByIndex(inputIndex) + .getValueByString(Weight) + .toFloat(); + }; + /** + * 入力の反転の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param inputIndex 入力のインデックス + * @return 入力の反転 + */ + CubismPhysicsJson.prototype.getInputReflect = function (physicsSettingIndex, inputIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Input) + .getValueByIndex(inputIndex) + .getValueByString(Reflect) + .toBoolean(); + }; + /** + * 入力の種類の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param inputIndex 入力のインデックス + * @return 入力の種類 + */ + CubismPhysicsJson.prototype.getInputType = function (physicsSettingIndex, inputIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Input) + .getValueByIndex(inputIndex) + .getValueByString(Type) + .getRawString(); + }; + /** + * 入力元のIDの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param inputIndex 入力のインデックス + * @return 入力元のID + */ + CubismPhysicsJson.prototype.getInputSourceId = function (physicsSettingIndex, inputIndex) { + return live2dcubismframework_1.CubismFramework.getIdManager().getId(this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Input) + .getValueByIndex(inputIndex) + .getValueByString(Source) + .getValueByString(Id) + .getRawString()); + }; + /** + * 出力の個数の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @return 出力の個数 + */ + CubismPhysicsJson.prototype.getOutputCount = function (physicsSettingIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Output) + .getVector() + .getSize(); + }; + /** + * 出力の物理点のインデックスの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の物理点のインデックス + */ + CubismPhysicsJson.prototype.getOutputVertexIndex = function (physicsSettingIndex, outputIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Output) + .getValueByIndex(outputIndex) + .getValueByString(VertexIndex) + .toInt(); + }; + /** + * 出力の角度のスケールを取得する + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の角度のスケール + */ + CubismPhysicsJson.prototype.getOutputAngleScale = function (physicsSettingIndex, outputIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Output) + .getValueByIndex(outputIndex) + .getValueByString(Scale) + .toFloat(); + }; + /** + * 出力の重みの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の重み + */ + CubismPhysicsJson.prototype.getOutputWeight = function (physicsSettingIndex, outputIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Output) + .getValueByIndex(outputIndex) + .getValueByString(Weight) + .toFloat(); + }; + /** + * 出力先のIDの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力先のID + */ + CubismPhysicsJson.prototype.getOutputDestinationId = function (physicsSettingIndex, outputIndex) { + return live2dcubismframework_1.CubismFramework.getIdManager().getId(this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Output) + .getValueByIndex(outputIndex) + .getValueByString(Destination) + .getValueByString(Id) + .getRawString()); + }; + /** + * 出力の種類の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の種類 + */ + CubismPhysicsJson.prototype.getOutputType = function (physicsSettingIndex, outputIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Output) + .getValueByIndex(outputIndex) + .getValueByString(Type) + .getRawString(); + }; + /** + * 出力の反転の取得 + * @param physicsSettingIndex 物理演算のインデックス + * @param outputIndex 出力のインデックス + * @return 出力の反転 + */ + CubismPhysicsJson.prototype.getOutputReflect = function (physicsSettingIndex, outputIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Output) + .getValueByIndex(outputIndex) + .getValueByString(Reflect) + .toBoolean(); + }; + /** + * 物理点の個数の取得 + * @param physicsSettingIndex 物理演算男設定のインデックス + * @return 物理点の個数 + */ + CubismPhysicsJson.prototype.getParticleCount = function (physicsSettingIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Vertices) + .getVector() + .getSize(); + }; + /** + * 物理点の動きやすさの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param vertexIndex 物理点のインデックス + * @return 物理点の動きやすさ + */ + CubismPhysicsJson.prototype.getParticleMobility = function (physicsSettingIndex, vertexIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Vertices) + .getValueByIndex(vertexIndex) + .getValueByString(Mobility) + .toFloat(); + }; + /** + * 物理点の遅れの取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param vertexIndex 物理点のインデックス + * @return 物理点の遅れ + */ + CubismPhysicsJson.prototype.getParticleDelay = function (physicsSettingIndex, vertexIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Vertices) + .getValueByIndex(vertexIndex) + .getValueByString(Delay) + .toFloat(); + }; + /** + * 物理点の加速度の取得 + * @param physicsSettingIndex 物理演算の設定 + * @param vertexIndex 物理点のインデックス + * @return 物理点の加速度 + */ + CubismPhysicsJson.prototype.getParticleAcceleration = function (physicsSettingIndex, vertexIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Vertices) + .getValueByIndex(vertexIndex) + .getValueByString(Acceleration) + .toFloat(); + }; + /** + * 物理点の距離の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param vertexIndex 物理点のインデックス + * @return 物理点の距離 + */ + CubismPhysicsJson.prototype.getParticleRadius = function (physicsSettingIndex, vertexIndex) { + return this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Vertices) + .getValueByIndex(vertexIndex) + .getValueByString(Radius) + .toFloat(); + }; + /** + * 物理点の位置の取得 + * @param physicsSettingIndex 物理演算の設定のインデックス + * @param vertexInde 物理点のインデックス + * @return 物理点の位置 + */ + CubismPhysicsJson.prototype.getParticlePosition = function (physicsSettingIndex, vertexIndex) { + var ret = new cubismvector2_1.CubismVector2(0, 0); + ret.x = this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Vertices) + .getValueByIndex(vertexIndex) + .getValueByString(Position) + .getValueByString(X) + .toFloat(); + ret.y = this._json + .getRoot() + .getValueByString(PhysicsSettings) + .getValueByIndex(physicsSettingIndex) + .getValueByString(Vertices) + .getValueByIndex(vertexIndex) + .getValueByString(Position) + .getValueByString(Y) + .toFloat(); + return ret; + }; + return CubismPhysicsJson; +}()); +exports.CubismPhysicsJson = CubismPhysicsJson; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismphysicsjson")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismPhysicsJson = $.CubismPhysicsJson; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismphysicsjson.js.map \ No newline at end of file diff --git a/live2demo/Framework/physics/cubismphysicsjson.js.map b/live2demo/Framework/physics/cubismphysicsjson.js.map new file mode 100644 index 0000000..a88a454 --- /dev/null +++ b/live2demo/Framework/physics/cubismphysicsjson.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismphysicsjson.js","sourceRoot":"","sources":["../../src/physics/cubismphysicsjson.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismclippingmanager.d.ts b/live2demo/Framework/rendering/cubismclippingmanager.d.ts new file mode 100644 index 0000000..fdb1ea8 --- /dev/null +++ b/live2demo/Framework/rendering/cubismclippingmanager.d.ts @@ -0,0 +1,106 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { csmVector } from '../type/csmvector'; +import { csmRect } from '../type/csmrectf'; +import { CubismMatrix44 } from '../math/cubismmatrix44'; +import { CubismModel } from '../model/cubismmodel'; +import { CubismClippingContext, CubismTextureColor } from './cubismrenderer'; +export type ClippingContextConstructor = new (manager: CubismClippingManager, drawableMasks: Int32Array, drawableMaskCounts: number) => T_ClippingContext; +export interface ICubismClippingManager { + getClippingMaskBufferSize(): number; +} +export declare abstract class CubismClippingManager implements ICubismClippingManager { + /** + * コンストラクタ + */ + constructor(clippingContextFactory: ClippingContextConstructor); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * マネージャの初期化処理 + * クリッピングマスクを使う描画オブジェクトの登録を行う + * @param model モデルのインスタンス + * @param renderTextureCount バッファの生成数 + */ + initialize(model: CubismModel, renderTextureCount: number): void; + /** + * 既にマスクを作っているかを確認 + * 作っている様であれば該当するクリッピングマスクのインスタンスを返す + * 作っていなければNULLを返す + * @param drawableMasks 描画オブジェクトをマスクする描画オブジェクトのリスト + * @param drawableMaskCounts 描画オブジェクトをマスクする描画オブジェクトの数 + * @return 該当するクリッピングマスクが存在すればインスタンスを返し、なければNULLを返す + */ + findSameClip(drawableMasks: Int32Array, drawableMaskCounts: number): T_ClippingContext; + /** + * 高精細マスク処理用の行列を計算する + * @param model モデルのインスタンス + * @param isRightHanded 処理が右手系であるか + */ + setupMatrixForHighPrecision(model: CubismModel, isRightHanded: boolean): void; + /** + * マスク作成・描画用の行列を作成する。 + * @param isRightHanded 座標を右手系として扱うかを指定 + * @param layoutBoundsOnTex01 マスクを収める領域 + * @param scaleX 描画オブジェクトの伸縮率 + * @param scaleY 描画オブジェクトの伸縮率 + */ + createMatrixForMask(isRightHanded: boolean, layoutBoundsOnTex01: csmRect, scaleX: number, scaleY: number): void; + /** + * クリッピングコンテキストを配置するレイアウト + * 指定された数のレンダーテクスチャを極力いっぱいに使ってマスクをレイアウトする + * マスクグループの数が4以下ならRGBA各チャンネルに一つずつマスクを配置し、5以上6以下ならRGBAを2,2,1,1と配置する。 + * + * @param usingClipCount 配置するクリッピングコンテキストの数 + */ + setupLayoutBounds(usingClipCount: number): void; + /** + * マスクされる描画オブジェクト群全体を囲む矩形(モデル座標系)を計算する + * @param model モデルのインスタンス + * @param clippingContext クリッピングマスクのコンテキスト + */ + calcClippedDrawTotalBounds(model: CubismModel, clippingContext: T_ClippingContext): void; + /** + * 画面描画に使用するクリッピングマスクのリストを取得する + * @return 画面描画に使用するクリッピングマスクのリスト + */ + getClippingContextListForDraw(): csmVector; + /** + * クリッピングマスクバッファのサイズを取得する + * @return クリッピングマスクバッファのサイズ + */ + getClippingMaskBufferSize(): number; + /** + * このバッファのレンダーテクスチャの枚数を取得する + * @return このバッファのレンダーテクスチャの枚数 + */ + getRenderTextureCount(): number; + /** + * カラーチャンネル(RGBA)のフラグを取得する + * @param channelNo カラーチャンネル(RGBA)の番号(0:R, 1:G, 2:B, 3:A) + */ + getChannelFlagAsColor(channelNo: number): CubismTextureColor; + /** + * クリッピングマスクバッファのサイズを設定する + * @param size クリッピングマスクバッファのサイズ + */ + setClippingMaskBufferSize(size: number): void; + protected _clearedFrameBufferFlags: csmVector; + protected _channelColors: csmVector; + protected _clippingContextListForMask: csmVector; + protected _clippingContextListForDraw: csmVector; + protected _clippingMaskBufferSize: number; + protected _renderTextureCount: number; + protected _tmpMatrix: CubismMatrix44; + protected _tmpMatrixForMask: CubismMatrix44; + protected _tmpMatrixForDraw: CubismMatrix44; + protected _tmpBoundsOnModel: csmRect; + protected _clippingContexttConstructor: ClippingContextConstructor; +} +//# sourceMappingURL=cubismclippingmanager.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismclippingmanager.d.ts.map b/live2demo/Framework/rendering/cubismclippingmanager.d.ts.map new file mode 100644 index 0000000..fb95f8b --- /dev/null +++ b/live2demo/Framework/rendering/cubismclippingmanager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismclippingmanager.d.ts","sourceRoot":"","sources":["../../src/rendering/cubismclippingmanager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAO7E,MAAM,MAAM,0BAA0B,CACpC,iBAAiB,SAAS,qBAAqB,IAC7C,KACF,OAAO,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,EACjD,aAAa,EAAE,UAAU,EACzB,kBAAkB,EAAE,MAAM,KACvB,iBAAiB,CAAC;AAEvB,MAAM,WAAW,sBAAsB;IACrC,yBAAyB,IAAI,MAAM,CAAC;CACrC;AAED,8BAAsB,qBAAqB,CACzC,iBAAiB,SAAS,qBAAqB,CAC/C,YAAW,sBAAsB;IAEjC;;OAEG;gBAED,sBAAsB,EAAE,0BAA0B,CAAC,iBAAiB,CAAC;IA2CvE;;OAEG;IACI,OAAO,IAAI,IAAI;IA4BtB;;;;;OAKG;IACI,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI;IAqDvE;;;;;;;OAOG;IACI,YAAY,CACjB,aAAa,EAAE,UAAU,EACzB,kBAAkB,EAAE,MAAM,GACzB,iBAAiB;IAkCpB;;;;OAIG;IACI,2BAA2B,CAChC,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,OAAO,GACrB,IAAI;IA8FP;;;;;;OAMG;IACI,mBAAmB,CACxB,aAAa,EAAE,OAAO,EACtB,mBAAmB,EAAE,OAAO,EAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,IAAI;IAyCP;;;;;;OAMG;IACI,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IA6KtD;;;;OAIG;IACI,0BAA0B,CAC/B,KAAK,EAAE,WAAW,EAClB,eAAe,EAAE,iBAAiB,GACjC,IAAI;IA2FP;;;OAGG;IACI,6BAA6B,IAAI,SAAS,CAAC,iBAAiB,CAAC;IAIpE;;;OAGG;IACI,yBAAyB,IAAI,MAAM;IAI1C;;;OAGG;IACI,qBAAqB,IAAI,MAAM;IAItC;;;OAGG;IACI,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB;IAInE;;;OAGG;IACI,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpD,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAEvD,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACxD,SAAS,CAAC,2BAA2B,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpE,SAAS,CAAC,2BAA2B,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpE,SAAS,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAC1C,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAEtC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC;IACrC,SAAS,CAAC,iBAAiB,EAAE,cAAc,CAAC;IAC5C,SAAS,CAAC,iBAAiB,EAAE,cAAc,CAAC;IAC5C,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAErC,SAAS,CAAC,4BAA4B,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;CACvF"} \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismclippingmanager.js b/live2demo/Framework/rendering/cubismclippingmanager.js new file mode 100644 index 0000000..9a7a74d --- /dev/null +++ b/live2demo/Framework/rendering/cubismclippingmanager.js @@ -0,0 +1,508 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CubismClippingManager = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var csmvector_1 = require("../type/csmvector"); +var csmrectf_1 = require("../type/csmrectf"); +var cubismmatrix44_1 = require("../math/cubismmatrix44"); +var cubismrenderer_1 = require("./cubismrenderer"); +var cubismdebug_1 = require("../utils/cubismdebug"); +var ColorChannelCount = 4; // 実験時に1チャンネルの場合は1、RGBだけの場合は3、アルファも含める場合は4 +var ClippingMaskMaxCountOnDefault = 36; // 通常のフレームバッファ一枚あたりのマスク最大数 +var ClippingMaskMaxCountOnMultiRenderTexture = 32; // フレームバッファが2枚以上ある場合のフレームバッファ一枚あたりのマスク最大数 +var CubismClippingManager = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismClippingManager(clippingContextFactory) { + this._renderTextureCount = 0; + this._clippingMaskBufferSize = 256; + this._clippingContextListForMask = new csmvector_1.csmVector(); + this._clippingContextListForDraw = new csmvector_1.csmVector(); + this._channelColors = new csmvector_1.csmVector(); + this._tmpBoundsOnModel = new csmrectf_1.csmRect(); + this._tmpMatrix = new cubismmatrix44_1.CubismMatrix44(); + this._tmpMatrixForMask = new cubismmatrix44_1.CubismMatrix44(); + this._tmpMatrixForDraw = new cubismmatrix44_1.CubismMatrix44(); + this._clippingContexttConstructor = clippingContextFactory; + var tmp = new cubismrenderer_1.CubismTextureColor(); + tmp.R = 1.0; + tmp.G = 0.0; + tmp.B = 0.0; + tmp.A = 0.0; + this._channelColors.pushBack(tmp); + tmp = new cubismrenderer_1.CubismTextureColor(); + tmp.R = 0.0; + tmp.G = 1.0; + tmp.B = 0.0; + tmp.A = 0.0; + this._channelColors.pushBack(tmp); + tmp = new cubismrenderer_1.CubismTextureColor(); + tmp.R = 0.0; + tmp.G = 0.0; + tmp.B = 1.0; + tmp.A = 0.0; + this._channelColors.pushBack(tmp); + tmp = new cubismrenderer_1.CubismTextureColor(); + tmp.R = 0.0; + tmp.G = 0.0; + tmp.B = 0.0; + tmp.A = 1.0; + this._channelColors.pushBack(tmp); + } + /** + * デストラクタ相当の処理 + */ + CubismClippingManager.prototype.release = function () { + for (var i = 0; i < this._clippingContextListForMask.getSize(); i++) { + if (this._clippingContextListForMask.at(i)) { + this._clippingContextListForMask.at(i).release(); + this._clippingContextListForMask.set(i, void 0); + } + this._clippingContextListForMask.set(i, null); + } + this._clippingContextListForMask = null; + // _clippingContextListForDrawは_clippingContextListForMaskにあるインスタンスを指している。上記の処理により要素ごとのDELETEは不要。 + for (var i = 0; i < this._clippingContextListForDraw.getSize(); i++) { + this._clippingContextListForDraw.set(i, null); + } + this._clippingContextListForDraw = null; + for (var i = 0; i < this._channelColors.getSize(); i++) { + this._channelColors.set(i, null); + } + this._channelColors = null; + if (this._clearedFrameBufferFlags != null) { + this._clearedFrameBufferFlags.clear(); + } + this._clearedFrameBufferFlags = null; + }; + /** + * マネージャの初期化処理 + * クリッピングマスクを使う描画オブジェクトの登録を行う + * @param model モデルのインスタンス + * @param renderTextureCount バッファの生成数 + */ + CubismClippingManager.prototype.initialize = function (model, renderTextureCount) { + // レンダーテクスチャの合計枚数の設定 + // 1以上の整数でない場合はそれぞれ警告を出す + if (renderTextureCount % 1 != 0) { + (0, cubismdebug_1.CubismLogWarning)('The number of render textures must be specified as an integer. The decimal point is rounded down and corrected to an integer.'); + // 小数点以下を除去 + renderTextureCount = ~~renderTextureCount; + } + if (renderTextureCount < 1) { + (0, cubismdebug_1.CubismLogWarning)('The number of render textures must be an integer greater than or equal to 1. Set the number of render textures to 1.'); + } + // 負の値が使われている場合は強制的に1枚と設定する + this._renderTextureCount = renderTextureCount < 1 ? 1 : renderTextureCount; + this._clearedFrameBufferFlags = new csmvector_1.csmVector(this._renderTextureCount); + // クリッピングマスクを使う描画オブジェクトをすべて登録する + // クリッピングマスクは、通常数個程度に限定して使うものとする + for (var i = 0; i < model.getDrawableCount(); i++) { + if (model.getDrawableMaskCounts()[i] <= 0) { + // クリッピングマスクが使用されていないアートメッシュ(多くの場合使用しない) + this._clippingContextListForDraw.pushBack(null); + continue; + } + // 既にあるClipContextと同じかチェックする + var clippingContext = this.findSameClip(model.getDrawableMasks()[i], model.getDrawableMaskCounts()[i]); + if (clippingContext == null) { + // 同一のマスクが存在していない場合は生成する + clippingContext = new this._clippingContexttConstructor(this, model.getDrawableMasks()[i], model.getDrawableMaskCounts()[i]); + this._clippingContextListForMask.pushBack(clippingContext); + } + clippingContext.addClippedDrawable(i); + this._clippingContextListForDraw.pushBack(clippingContext); + } + }; + /** + * 既にマスクを作っているかを確認 + * 作っている様であれば該当するクリッピングマスクのインスタンスを返す + * 作っていなければNULLを返す + * @param drawableMasks 描画オブジェクトをマスクする描画オブジェクトのリスト + * @param drawableMaskCounts 描画オブジェクトをマスクする描画オブジェクトの数 + * @return 該当するクリッピングマスクが存在すればインスタンスを返し、なければNULLを返す + */ + CubismClippingManager.prototype.findSameClip = function (drawableMasks, drawableMaskCounts) { + // 作成済みClippingContextと一致するか確認 + for (var i = 0; i < this._clippingContextListForMask.getSize(); i++) { + var clippingContext = this._clippingContextListForMask.at(i); + var count = clippingContext._clippingIdCount; + // 個数が違う場合は別物 + if (count != drawableMaskCounts) { + continue; + } + var sameCount = 0; + // 同じIDを持つか確認。配列の数が同じなので、一致した個数が同じなら同じ物を持つとする + for (var j = 0; j < count; j++) { + var clipId = clippingContext._clippingIdList[j]; + for (var k = 0; k < count; k++) { + if (drawableMasks[k] == clipId) { + sameCount++; + break; + } + } + } + if (sameCount == count) { + return clippingContext; + } + } + return null; // 見つからなかった + }; + /** + * 高精細マスク処理用の行列を計算する + * @param model モデルのインスタンス + * @param isRightHanded 処理が右手系であるか + */ + CubismClippingManager.prototype.setupMatrixForHighPrecision = function (model, isRightHanded) { + // 全てのクリッピングを用意する + // 同じクリップ(複数の場合はまとめて一つのクリップ)を使う場合は1度だけ設定する + var usingClipCount = 0; + for (var clipIndex = 0; clipIndex < this._clippingContextListForMask.getSize(); clipIndex++) { + // 1つのクリッピングマスクに関して + var cc = this._clippingContextListForMask.at(clipIndex); + // このクリップを利用する描画オブジェクト群全体を囲む矩形を計算 + this.calcClippedDrawTotalBounds(model, cc); + if (cc._isUsing) { + usingClipCount++; // 使用中としてカウント + } + } + // マスク行列作成処理 + if (usingClipCount > 0) { + this.setupLayoutBounds(0); + // サイズがレンダーテクスチャの枚数と合わない場合は合わせる + if (this._clearedFrameBufferFlags.getSize() != this._renderTextureCount) { + this._clearedFrameBufferFlags.clear(); + for (var i = 0; i < this._renderTextureCount; i++) { + this._clearedFrameBufferFlags.pushBack(false); + } + } + else { + // マスクのクリアフラグを毎フレーム開始時に初期化 + for (var i = 0; i < this._renderTextureCount; i++) { + this._clearedFrameBufferFlags.set(i, false); + } + } + // 実際にマスクを生成する + // 全てのマスクをどの様にレイアウトして描くかを決定し、ClipContext , ClippedDrawContext に記憶する + for (var clipIndex = 0; clipIndex < this._clippingContextListForMask.getSize(); clipIndex++) { + // --- 実際に1つのマスクを描く --- + var clipContext = this._clippingContextListForMask.at(clipIndex); + var allClippedDrawRect = clipContext._allClippedDrawRect; //このマスクを使う、全ての描画オブジェクトの論理座標上の囲み矩形 + var layoutBoundsOnTex01 = clipContext._layoutBounds; //この中にマスクを収める + var MARGIN = 0.05; + var scaleX = 0.0; + var scaleY = 0.0; + var ppu = model.getPixelsPerUnit(); + var maskPixelSize = clipContext + .getClippingManager() + .getClippingMaskBufferSize(); + var physicalMaskWidth = layoutBoundsOnTex01.width * maskPixelSize; + var physicalMaskHeight = layoutBoundsOnTex01.height * maskPixelSize; + this._tmpBoundsOnModel.setRect(allClippedDrawRect); + if (this._tmpBoundsOnModel.width * ppu > physicalMaskWidth) { + this._tmpBoundsOnModel.expand(allClippedDrawRect.width * MARGIN, 0.0); + scaleX = layoutBoundsOnTex01.width / this._tmpBoundsOnModel.width; + } + else { + scaleX = ppu / physicalMaskWidth; + } + if (this._tmpBoundsOnModel.height * ppu > physicalMaskHeight) { + this._tmpBoundsOnModel.expand(0.0, allClippedDrawRect.height * MARGIN); + scaleY = layoutBoundsOnTex01.height / this._tmpBoundsOnModel.height; + } + else { + scaleY = ppu / physicalMaskHeight; + } + // マスク生成時に使う行列を求める + this.createMatrixForMask(isRightHanded, layoutBoundsOnTex01, scaleX, scaleY); + clipContext._matrixForMask.setMatrix(this._tmpMatrixForMask.getArray()); + clipContext._matrixForDraw.setMatrix(this._tmpMatrixForDraw.getArray()); + } + } + }; + /** + * マスク作成・描画用の行列を作成する。 + * @param isRightHanded 座標を右手系として扱うかを指定 + * @param layoutBoundsOnTex01 マスクを収める領域 + * @param scaleX 描画オブジェクトの伸縮率 + * @param scaleY 描画オブジェクトの伸縮率 + */ + CubismClippingManager.prototype.createMatrixForMask = function (isRightHanded, layoutBoundsOnTex01, scaleX, scaleY) { + this._tmpMatrix.loadIdentity(); + { + // Layout0..1 を -1..1に変換 + this._tmpMatrix.translateRelative(-1.0, -1.0); + this._tmpMatrix.scaleRelative(2.0, 2.0); + } + { + // view to Layout0..1 + this._tmpMatrix.translateRelative(layoutBoundsOnTex01.x, layoutBoundsOnTex01.y); //new = [translate] + this._tmpMatrix.scaleRelative(scaleX, scaleY); //new = [translate][scale] + this._tmpMatrix.translateRelative(-this._tmpBoundsOnModel.x, -this._tmpBoundsOnModel.y); //new = [translate][scale][translate] + } + // tmpMatrixForMask が計算結果 + this._tmpMatrixForMask.setMatrix(this._tmpMatrix.getArray()); + this._tmpMatrix.loadIdentity(); + { + this._tmpMatrix.translateRelative(layoutBoundsOnTex01.x, layoutBoundsOnTex01.y * (isRightHanded ? -1.0 : 1.0)); //new = [translate] + this._tmpMatrix.scaleRelative(scaleX, scaleY * (isRightHanded ? -1.0 : 1.0)); //new = [translate][scale] + this._tmpMatrix.translateRelative(-this._tmpBoundsOnModel.x, -this._tmpBoundsOnModel.y); //new = [translate][scale][translate] + } + this._tmpMatrixForDraw.setMatrix(this._tmpMatrix.getArray()); + }; + /** + * クリッピングコンテキストを配置するレイアウト + * 指定された数のレンダーテクスチャを極力いっぱいに使ってマスクをレイアウトする + * マスクグループの数が4以下ならRGBA各チャンネルに一つずつマスクを配置し、5以上6以下ならRGBAを2,2,1,1と配置する。 + * + * @param usingClipCount 配置するクリッピングコンテキストの数 + */ + CubismClippingManager.prototype.setupLayoutBounds = function (usingClipCount) { + var useClippingMaskMaxCount = this._renderTextureCount <= 1 + ? ClippingMaskMaxCountOnDefault + : ClippingMaskMaxCountOnMultiRenderTexture * this._renderTextureCount; + if (usingClipCount <= 0 || usingClipCount > useClippingMaskMaxCount) { + if (usingClipCount > useClippingMaskMaxCount) { + // マスクの制限数の警告を出す + (0, cubismdebug_1.CubismLogError)('not supported mask count : {0}\n[Details] render texture count : {1}, mask count : {2}', usingClipCount - useClippingMaskMaxCount, this._renderTextureCount, usingClipCount); + } + // この場合は一つのマスクターゲットを毎回クリアして使用する + for (var index = 0; index < this._clippingContextListForMask.getSize(); index++) { + var clipContext = this._clippingContextListForMask.at(index); + clipContext._layoutChannelNo = 0; // どうせ毎回消すので固定 + clipContext._layoutBounds.x = 0.0; + clipContext._layoutBounds.y = 0.0; + clipContext._layoutBounds.width = 1.0; + clipContext._layoutBounds.height = 1.0; + clipContext._bufferIndex = 0; + } + return; + } + // レンダーテクスチャが1枚なら9分割する(最大36枚) + var layoutCountMaxValue = this._renderTextureCount <= 1 ? 9 : 8; + // 指定された数のレンダーテクスチャを極力いっぱいに使ってマスクをレイアウトする(デフォルトなら1) + // マスクグループの数が4以下ならRGBA各チャンネルに1つずつマスクを配置し、5以上6以下ならRGBAを2,2,1,1と配置する + var countPerSheetDiv = usingClipCount / this._renderTextureCount; // レンダーテクスチャ1枚あたり何枚割り当てるか + var countPerSheetMod = usingClipCount % this._renderTextureCount; // この番号のレンダーテクスチャまでに一つずつ配分する + // 小数点は切り捨てる + countPerSheetDiv = ~~countPerSheetDiv; + countPerSheetMod = ~~countPerSheetMod; + // RGBAを順番に使っていく + var div = countPerSheetDiv / ColorChannelCount; // 1チャンネルに配置する基本のマスク + var mod = countPerSheetDiv % ColorChannelCount; // 余り、この番号のチャンネルまでに一つずつ配分する + // 小数点は切り捨てる + div = ~~div; + mod = ~~mod; + // RGBAそれぞれのチャンネルを用意していく(0:R, 1:G, 2:B, 3:A) + var curClipIndex = 0; // 順番に設定していく + for (var renderTextureNo = 0; renderTextureNo < this._renderTextureCount; renderTextureNo++) { + for (var channelNo = 0; channelNo < ColorChannelCount; channelNo++) { + // このチャンネルにレイアウトする数 + var layoutCount = div + (channelNo < mod ? 1 : 0); + // このレンダーテクスチャにまだ割り当てられていなければ追加する + var checkChannelNo = mod + 1 >= ColorChannelCount ? 0 : mod + 1; + if (layoutCount < layoutCountMaxValue && channelNo == checkChannelNo) { + layoutCount += renderTextureNo < countPerSheetMod ? 1 : 0; + } + // 分割方法を決定する + if (layoutCount == 0) { + // 何もしない + } + else if (layoutCount == 1) { + // 全てをそのまま使う + var clipContext = this._clippingContextListForMask.at(curClipIndex++); + clipContext._layoutChannelNo = channelNo; + clipContext._layoutBounds.x = 0.0; + clipContext._layoutBounds.y = 0.0; + clipContext._layoutBounds.width = 1.0; + clipContext._layoutBounds.height = 1.0; + clipContext._bufferIndex = renderTextureNo; + } + else if (layoutCount == 2) { + for (var i = 0; i < layoutCount; i++) { + var xpos = i % 2; + // 小数点は切り捨てる + xpos = ~~xpos; + var cc = this._clippingContextListForMask.at(curClipIndex++); + cc._layoutChannelNo = channelNo; + // UVを2つに分解して使う + cc._layoutBounds.x = xpos * 0.5; + cc._layoutBounds.y = 0.0; + cc._layoutBounds.width = 0.5; + cc._layoutBounds.height = 1.0; + cc._bufferIndex = renderTextureNo; + } + } + else if (layoutCount <= 4) { + // 4分割して使う + for (var i = 0; i < layoutCount; i++) { + var xpos = i % 2; + var ypos = i / 2; + // 小数点は切り捨てる + xpos = ~~xpos; + ypos = ~~ypos; + var cc = this._clippingContextListForMask.at(curClipIndex++); + cc._layoutChannelNo = channelNo; + cc._layoutBounds.x = xpos * 0.5; + cc._layoutBounds.y = ypos * 0.5; + cc._layoutBounds.width = 0.5; + cc._layoutBounds.height = 0.5; + cc._bufferIndex = renderTextureNo; + } + } + else if (layoutCount <= layoutCountMaxValue) { + // 9分割して使う + for (var i = 0; i < layoutCount; i++) { + var xpos = i % 3; + var ypos = i / 3; + // 小数点は切り捨てる + xpos = ~~xpos; + ypos = ~~ypos; + var cc = this._clippingContextListForMask.at(curClipIndex++); + cc._layoutChannelNo = channelNo; + cc._layoutBounds.x = xpos / 3.0; + cc._layoutBounds.y = ypos / 3.0; + cc._layoutBounds.width = 1.0 / 3.0; + cc._layoutBounds.height = 1.0 / 3.0; + cc._bufferIndex = renderTextureNo; + } + } + else { + // マスクの制限枚数を超えた場合の処理 + (0, cubismdebug_1.CubismLogError)('not supported mask count : {0}\n[Details] render texture count : {1}, mask count : {2}', usingClipCount - useClippingMaskMaxCount, this._renderTextureCount, usingClipCount); + // SetupShaderProgramでオーバーアクセスが発生するので仮で数値を入れる + // もちろん描画結果は正しいものではなくなる + for (var index = 0; index < layoutCount; index++) { + var cc = this._clippingContextListForMask.at(curClipIndex++); + cc._layoutChannelNo = 0; + cc._layoutBounds.x = 0.0; + cc._layoutBounds.y = 0.0; + cc._layoutBounds.width = 1.0; + cc._layoutBounds.height = 1.0; + cc._bufferIndex = 0; + } + } + } + } + }; + /** + * マスクされる描画オブジェクト群全体を囲む矩形(モデル座標系)を計算する + * @param model モデルのインスタンス + * @param clippingContext クリッピングマスクのコンテキスト + */ + CubismClippingManager.prototype.calcClippedDrawTotalBounds = function (model, clippingContext) { + // 被クリッピングマスク(マスクされる描画オブジェクト)の全体の矩形 + var clippedDrawTotalMinX = Number.MAX_VALUE; + var clippedDrawTotalMinY = Number.MAX_VALUE; + var clippedDrawTotalMaxX = Number.MIN_VALUE; + var clippedDrawTotalMaxY = Number.MIN_VALUE; + // このマスクが実際に必要か判定する + // このクリッピングを利用する「描画オブジェクト」がひとつでも使用可能であればマスクを生成する必要がある + var clippedDrawCount = clippingContext._clippedDrawableIndexList.length; + for (var clippedDrawableIndex = 0; clippedDrawableIndex < clippedDrawCount; clippedDrawableIndex++) { + // マスクを使用する描画オブジェクトの描画される矩形を求める + var drawableIndex = clippingContext._clippedDrawableIndexList[clippedDrawableIndex]; + var drawableVertexCount = model.getDrawableVertexCount(drawableIndex); + var drawableVertexes = model.getDrawableVertices(drawableIndex); + var minX = Number.MAX_VALUE; + var minY = Number.MAX_VALUE; + var maxX = -Number.MAX_VALUE; + var maxY = -Number.MAX_VALUE; + var loop = drawableVertexCount * live2dcubismframework_1.Constant.vertexStep; + for (var pi = live2dcubismframework_1.Constant.vertexOffset; pi < loop; pi += live2dcubismframework_1.Constant.vertexStep) { + var x = drawableVertexes[pi]; + var y = drawableVertexes[pi + 1]; + if (x < minX) { + minX = x; + } + if (x > maxX) { + maxX = x; + } + if (y < minY) { + minY = y; + } + if (y > maxY) { + maxY = y; + } + } + // 有効な点が一つも取れなかったのでスキップ + if (minX == Number.MAX_VALUE) { + continue; + } + // 全体の矩形に反映 + if (minX < clippedDrawTotalMinX) { + clippedDrawTotalMinX = minX; + } + if (minY < clippedDrawTotalMinY) { + clippedDrawTotalMinY = minY; + } + if (maxX > clippedDrawTotalMaxX) { + clippedDrawTotalMaxX = maxX; + } + if (maxY > clippedDrawTotalMaxY) { + clippedDrawTotalMaxY = maxY; + } + if (clippedDrawTotalMinX == Number.MAX_VALUE) { + clippingContext._allClippedDrawRect.x = 0.0; + clippingContext._allClippedDrawRect.y = 0.0; + clippingContext._allClippedDrawRect.width = 0.0; + clippingContext._allClippedDrawRect.height = 0.0; + clippingContext._isUsing = false; + } + else { + clippingContext._isUsing = true; + var w = clippedDrawTotalMaxX - clippedDrawTotalMinX; + var h = clippedDrawTotalMaxY - clippedDrawTotalMinY; + clippingContext._allClippedDrawRect.x = clippedDrawTotalMinX; + clippingContext._allClippedDrawRect.y = clippedDrawTotalMinY; + clippingContext._allClippedDrawRect.width = w; + clippingContext._allClippedDrawRect.height = h; + } + } + }; + /** + * 画面描画に使用するクリッピングマスクのリストを取得する + * @return 画面描画に使用するクリッピングマスクのリスト + */ + CubismClippingManager.prototype.getClippingContextListForDraw = function () { + return this._clippingContextListForDraw; + }; + /** + * クリッピングマスクバッファのサイズを取得する + * @return クリッピングマスクバッファのサイズ + */ + CubismClippingManager.prototype.getClippingMaskBufferSize = function () { + return this._clippingMaskBufferSize; + }; + /** + * このバッファのレンダーテクスチャの枚数を取得する + * @return このバッファのレンダーテクスチャの枚数 + */ + CubismClippingManager.prototype.getRenderTextureCount = function () { + return this._renderTextureCount; + }; + /** + * カラーチャンネル(RGBA)のフラグを取得する + * @param channelNo カラーチャンネル(RGBA)の番号(0:R, 1:G, 2:B, 3:A) + */ + CubismClippingManager.prototype.getChannelFlagAsColor = function (channelNo) { + return this._channelColors.at(channelNo); + }; + /** + * クリッピングマスクバッファのサイズを設定する + * @param size クリッピングマスクバッファのサイズ + */ + CubismClippingManager.prototype.setClippingMaskBufferSize = function (size) { + this._clippingMaskBufferSize = size; + }; + return CubismClippingManager; +}()); +exports.CubismClippingManager = CubismClippingManager; +//# sourceMappingURL=cubismclippingmanager.js.map \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismclippingmanager.js.map b/live2demo/Framework/rendering/cubismclippingmanager.js.map new file mode 100644 index 0000000..c38e460 --- /dev/null +++ b/live2demo/Framework/rendering/cubismclippingmanager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismclippingmanager.js","sourceRoot":"","sources":["../../src/rendering/cubismclippingmanager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismrenderer.d.ts b/live2demo/Framework/rendering/cubismrenderer.d.ts new file mode 100644 index 0000000..89c742a --- /dev/null +++ b/live2demo/Framework/rendering/cubismrenderer.d.ts @@ -0,0 +1,214 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismMatrix44 } from '../math/cubismmatrix44'; +import { CubismModel } from '../model/cubismmodel'; +import { csmRect } from '../type/csmrectf'; +import { ICubismClippingManager } from './cubismclippingmanager'; +/** + * モデル描画を処理するレンダラ + * + * サブクラスに環境依存の描画命令を記述する。 + */ +export declare abstract class CubismRenderer { + /** + * レンダラのインスタンスを生成して取得する + * + * @return レンダラのインスタンス + */ + static create(): CubismRenderer; + /** + * レンダラのインスタンスを解放する + */ + static delete(renderer: CubismRenderer): void; + /** + * レンダラの初期化処理を実行する + * 引数に渡したモデルからレンダラの初期化処理に必要な情報を取り出すことができる + * @param model モデルのインスタンス + */ + initialize(model: CubismModel): void; + /** + * モデルを描画する + */ + drawModel(): void; + /** + * Model-View-Projection 行列をセットする + * 配列は複製されるので、元の配列は外で破棄して良い + * @param matrix44 Model-View-Projection 行列 + */ + setMvpMatrix(matrix44: CubismMatrix44): void; + /** + * Model-View-Projection 行列を取得する + * @return Model-View-Projection 行列 + */ + getMvpMatrix(): CubismMatrix44; + /** + * モデルの色をセットする + * 各色0.0~1.0の間で指定する(1.0が標準の状態) + * @param red 赤チャンネルの値 + * @param green 緑チャンネルの値 + * @param blue 青チャンネルの値 + * @param alpha αチャンネルの値 + */ + setModelColor(red: number, green: number, blue: number, alpha: number): void; + /** + * モデルの色を取得する + * 各色0.0~1.0の間で指定する(1.0が標準の状態) + * + * @return RGBAのカラー情報 + */ + getModelColor(): CubismTextureColor; + /** + * 透明度を考慮したモデルの色を計算する。 + * + * @param opacity 透明度 + * + * @return RGBAのカラー情報 + */ + getModelColorWithOpacity(opacity: number): CubismTextureColor; + /** + * 乗算済みαの有効・無効をセットする + * 有効にするならtrue、無効にするならfalseをセットする + */ + setIsPremultipliedAlpha(enable: boolean): void; + /** + * 乗算済みαの有効・無効を取得する + * @return true 乗算済みのα有効 + * @return false 乗算済みのα無効 + */ + isPremultipliedAlpha(): boolean; + /** + * カリング(片面描画)の有効・無効をセットする。 + * 有効にするならtrue、無効にするならfalseをセットする + */ + setIsCulling(culling: boolean): void; + /** + * カリング(片面描画)の有効・無効を取得する。 + * @return true カリング有効 + * @return false カリング無効 + */ + isCulling(): boolean; + /** + * テクスチャの異方性フィルタリングのパラメータをセットする + * パラメータ値の影響度はレンダラの実装に依存する + * @param n パラメータの値 + */ + setAnisotropy(n: number): void; + /** + * テクスチャの異方性フィルタリングのパラメータをセットする + * @return 異方性フィルタリングのパラメータ + */ + getAnisotropy(): number; + /** + * レンダリングするモデルを取得する + * @return レンダリングするモデル + */ + getModel(): CubismModel; + /** + * マスク描画の方式を変更する。 + * falseの場合、マスクを1枚のテクスチャに分割してレンダリングする(デフォルト) + * 高速だが、マスク個数の上限が36に限定され、質も荒くなる + * trueの場合、パーツ描画の前にその都度必要なマスクを描き直す + * レンダリング品質は高いが描画処理負荷は増す + * @param high 高精細マスクに切り替えるか? + */ + useHighPrecisionMask(high: boolean): void; + /** + * マスクの描画方式を取得する + * @return true 高精細方式 + * @return false デフォルト + */ + isUsingHighPrecisionMask(): boolean; + /** + * コンストラクタ + */ + protected constructor(); + /** + * モデル描画の実装 + */ + abstract doDrawModel(): void; + /** + * モデル描画直前のレンダラのステートを保持する + */ + protected abstract saveProfile(): void; + /** + * モデル描画直前のレンダラのステートを復帰する + */ + protected abstract restoreProfile(): void; + /** + * レンダラが保持する静的なリソースを開放する + */ + static staticRelease: any; + protected _mvpMatrix4x4: CubismMatrix44; + protected _modelColor: CubismTextureColor; + protected _isCulling: boolean; + protected _isPremultipliedAlpha: boolean; + protected _anisotropy: any; + protected _model: CubismModel; + protected _useHighPrecisionMask: boolean; +} +export declare enum CubismBlendMode { + CubismBlendMode_Normal = 0, + CubismBlendMode_Additive = 1, + CubismBlendMode_Multiplicative = 2 +} +/** + * テクスチャの色をRGBAで扱うためのクラス + */ +export declare class CubismTextureColor { + /** + * コンストラクタ + */ + constructor(r?: number, g?: number, b?: number, a?: number); + R: number; + G: number; + B: number; + A: number; +} +/** + * クリッピングマスクのコンテキスト + */ +export declare abstract class CubismClippingContext { + /** + * 引数付きコンストラクタ + */ + constructor(clippingDrawableIndices: Int32Array, clipCount: number); + /** + * このマスクを管理するマネージャのインスタンスを取得する + * @return クリッピングマネージャのインスタンス + */ + abstract getClippingManager(): ICubismClippingManager; + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * このマスクにクリップされる描画オブジェクトを追加する + * + * @param drawableIndex クリッピング対象に追加する描画オブジェクトのインデックス + */ + addClippedDrawable(drawableIndex: number): void; + _isUsing: boolean; + readonly _clippingIdList: Int32Array; + _clippingIdCount: number; + _layoutChannelNo: number; + _layoutBounds: csmRect; + _allClippedDrawRect: csmRect; + _matrixForMask: CubismMatrix44; + _matrixForDraw: CubismMatrix44; + _clippedDrawableIndexList: number[]; + _bufferIndex: number; +} +import * as $ from './cubismrenderer'; +export declare namespace Live2DCubismFramework { + const CubismBlendMode: typeof $.CubismBlendMode; + type CubismBlendMode = $.CubismBlendMode; + const CubismRenderer: typeof $.CubismRenderer; + type CubismRenderer = $.CubismRenderer; + const CubismTextureColor: typeof $.CubismTextureColor; + type CubismTextureColor = $.CubismTextureColor; +} +//# sourceMappingURL=cubismrenderer.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismrenderer.d.ts.map b/live2demo/Framework/rendering/cubismrenderer.d.ts.map new file mode 100644 index 0000000..1313aae --- /dev/null +++ b/live2demo/Framework/rendering/cubismrenderer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismrenderer.d.ts","sourceRoot":"","sources":["../../src/rendering/cubismrenderer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismrenderer.js b/live2demo/Framework/rendering/cubismrenderer.js new file mode 100644 index 0000000..d6f98d7 --- /dev/null +++ b/live2demo/Framework/rendering/cubismrenderer.js @@ -0,0 +1,319 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismClippingContext = exports.CubismTextureColor = exports.CubismBlendMode = exports.CubismRenderer = void 0; +var cubismmatrix44_1 = require("../math/cubismmatrix44"); +var csmrectf_1 = require("../type/csmrectf"); +/** + * モデル描画を処理するレンダラ + * + * サブクラスに環境依存の描画命令を記述する。 + */ +var CubismRenderer = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismRenderer() { + this._isCulling = false; + this._isPremultipliedAlpha = false; + this._anisotropy = 0.0; + this._model = null; + this._modelColor = new CubismTextureColor(); + this._useHighPrecisionMask = false; + // 単位行列に初期化 + this._mvpMatrix4x4 = new cubismmatrix44_1.CubismMatrix44(); + this._mvpMatrix4x4.loadIdentity(); + } + /** + * レンダラのインスタンスを生成して取得する + * + * @return レンダラのインスタンス + */ + CubismRenderer.create = function () { + return null; + }; + /** + * レンダラのインスタンスを解放する + */ + CubismRenderer.delete = function (renderer) { + renderer = null; + }; + /** + * レンダラの初期化処理を実行する + * 引数に渡したモデルからレンダラの初期化処理に必要な情報を取り出すことができる + * @param model モデルのインスタンス + */ + CubismRenderer.prototype.initialize = function (model) { + this._model = model; + }; + /** + * モデルを描画する + */ + CubismRenderer.prototype.drawModel = function () { + if (this.getModel() == null) + return; + this.saveProfile(); + this.doDrawModel(); + this.restoreProfile(); + }; + /** + * Model-View-Projection 行列をセットする + * 配列は複製されるので、元の配列は外で破棄して良い + * @param matrix44 Model-View-Projection 行列 + */ + CubismRenderer.prototype.setMvpMatrix = function (matrix44) { + this._mvpMatrix4x4.setMatrix(matrix44.getArray()); + }; + /** + * Model-View-Projection 行列を取得する + * @return Model-View-Projection 行列 + */ + CubismRenderer.prototype.getMvpMatrix = function () { + return this._mvpMatrix4x4; + }; + /** + * モデルの色をセットする + * 各色0.0~1.0の間で指定する(1.0が標準の状態) + * @param red 赤チャンネルの値 + * @param green 緑チャンネルの値 + * @param blue 青チャンネルの値 + * @param alpha αチャンネルの値 + */ + CubismRenderer.prototype.setModelColor = function (red, green, blue, alpha) { + if (red < 0.0) { + red = 0.0; + } + else if (red > 1.0) { + red = 1.0; + } + if (green < 0.0) { + green = 0.0; + } + else if (green > 1.0) { + green = 1.0; + } + if (blue < 0.0) { + blue = 0.0; + } + else if (blue > 1.0) { + blue = 1.0; + } + if (alpha < 0.0) { + alpha = 0.0; + } + else if (alpha > 1.0) { + alpha = 1.0; + } + this._modelColor.R = red; + this._modelColor.G = green; + this._modelColor.B = blue; + this._modelColor.A = alpha; + }; + /** + * モデルの色を取得する + * 各色0.0~1.0の間で指定する(1.0が標準の状態) + * + * @return RGBAのカラー情報 + */ + CubismRenderer.prototype.getModelColor = function () { + return JSON.parse(JSON.stringify(this._modelColor)); + }; + /** + * 透明度を考慮したモデルの色を計算する。 + * + * @param opacity 透明度 + * + * @return RGBAのカラー情報 + */ + CubismRenderer.prototype.getModelColorWithOpacity = function (opacity) { + var modelColorRGBA = this.getModelColor(); + modelColorRGBA.A *= opacity; + if (this.isPremultipliedAlpha()) { + modelColorRGBA.R *= modelColorRGBA.A; + modelColorRGBA.G *= modelColorRGBA.A; + modelColorRGBA.B *= modelColorRGBA.A; + } + return modelColorRGBA; + }; + /** + * 乗算済みαの有効・無効をセットする + * 有効にするならtrue、無効にするならfalseをセットする + */ + CubismRenderer.prototype.setIsPremultipliedAlpha = function (enable) { + this._isPremultipliedAlpha = enable; + }; + /** + * 乗算済みαの有効・無効を取得する + * @return true 乗算済みのα有効 + * @return false 乗算済みのα無効 + */ + CubismRenderer.prototype.isPremultipliedAlpha = function () { + return this._isPremultipliedAlpha; + }; + /** + * カリング(片面描画)の有効・無効をセットする。 + * 有効にするならtrue、無効にするならfalseをセットする + */ + CubismRenderer.prototype.setIsCulling = function (culling) { + this._isCulling = culling; + }; + /** + * カリング(片面描画)の有効・無効を取得する。 + * @return true カリング有効 + * @return false カリング無効 + */ + CubismRenderer.prototype.isCulling = function () { + return this._isCulling; + }; + /** + * テクスチャの異方性フィルタリングのパラメータをセットする + * パラメータ値の影響度はレンダラの実装に依存する + * @param n パラメータの値 + */ + CubismRenderer.prototype.setAnisotropy = function (n) { + this._anisotropy = n; + }; + /** + * テクスチャの異方性フィルタリングのパラメータをセットする + * @return 異方性フィルタリングのパラメータ + */ + CubismRenderer.prototype.getAnisotropy = function () { + return this._anisotropy; + }; + /** + * レンダリングするモデルを取得する + * @return レンダリングするモデル + */ + CubismRenderer.prototype.getModel = function () { + return this._model; + }; + /** + * マスク描画の方式を変更する。 + * falseの場合、マスクを1枚のテクスチャに分割してレンダリングする(デフォルト) + * 高速だが、マスク個数の上限が36に限定され、質も荒くなる + * trueの場合、パーツ描画の前にその都度必要なマスクを描き直す + * レンダリング品質は高いが描画処理負荷は増す + * @param high 高精細マスクに切り替えるか? + */ + CubismRenderer.prototype.useHighPrecisionMask = function (high) { + this._useHighPrecisionMask = high; + }; + /** + * マスクの描画方式を取得する + * @return true 高精細方式 + * @return false デフォルト + */ + CubismRenderer.prototype.isUsingHighPrecisionMask = function () { + return this._useHighPrecisionMask; + }; + return CubismRenderer; +}()); +exports.CubismRenderer = CubismRenderer; +var CubismBlendMode; +(function (CubismBlendMode) { + CubismBlendMode[CubismBlendMode["CubismBlendMode_Normal"] = 0] = "CubismBlendMode_Normal"; + CubismBlendMode[CubismBlendMode["CubismBlendMode_Additive"] = 1] = "CubismBlendMode_Additive"; + CubismBlendMode[CubismBlendMode["CubismBlendMode_Multiplicative"] = 2] = "CubismBlendMode_Multiplicative"; // 乗算 +})(CubismBlendMode || (exports.CubismBlendMode = CubismBlendMode = {})); +/** + * テクスチャの色をRGBAで扱うためのクラス + */ +var CubismTextureColor = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismTextureColor(r, g, b, a) { + if (r === void 0) { r = 1.0; } + if (g === void 0) { g = 1.0; } + if (b === void 0) { b = 1.0; } + if (a === void 0) { a = 1.0; } + this.R = r; + this.G = g; + this.B = b; + this.A = a; + } + return CubismTextureColor; +}()); +exports.CubismTextureColor = CubismTextureColor; +/** + * クリッピングマスクのコンテキスト + */ +var CubismClippingContext = /** @class */ (function () { + /** + * 引数付きコンストラクタ + */ + function CubismClippingContext(clippingDrawableIndices, clipCount) { + // クリップしている(=マスク用の)Drawableのインデックスリスト + this._clippingIdList = clippingDrawableIndices; + // マスクの数 + this._clippingIdCount = clipCount; + this._allClippedDrawRect = new csmrectf_1.csmRect(); + this._layoutBounds = new csmrectf_1.csmRect(); + this._clippedDrawableIndexList = []; + this._matrixForMask = new cubismmatrix44_1.CubismMatrix44(); + this._matrixForDraw = new cubismmatrix44_1.CubismMatrix44(); + this._bufferIndex = 0; + } + /** + * デストラクタ相当の処理 + */ + CubismClippingContext.prototype.release = function () { + if (this._layoutBounds != null) { + this._layoutBounds = null; + } + if (this._allClippedDrawRect != null) { + this._allClippedDrawRect = null; + } + if (this._clippedDrawableIndexList != null) { + this._clippedDrawableIndexList = null; + } + }; + /** + * このマスクにクリップされる描画オブジェクトを追加する + * + * @param drawableIndex クリッピング対象に追加する描画オブジェクトのインデックス + */ + CubismClippingContext.prototype.addClippedDrawable = function (drawableIndex) { + this._clippedDrawableIndexList.push(drawableIndex); + }; + return CubismClippingContext; +}()); +exports.CubismClippingContext = CubismClippingContext; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismrenderer")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismBlendMode = $.CubismBlendMode; + Live2DCubismFramework.CubismRenderer = $.CubismRenderer; + Live2DCubismFramework.CubismTextureColor = $.CubismTextureColor; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismrenderer.js.map \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismrenderer.js.map b/live2demo/Framework/rendering/cubismrenderer.js.map new file mode 100644 index 0000000..bc0bb73 --- /dev/null +++ b/live2demo/Framework/rendering/cubismrenderer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismrenderer.js","sourceRoot":"","sources":["../../src/rendering/cubismrenderer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismrenderer_webgl.d.ts b/live2demo/Framework/rendering/cubismrenderer_webgl.d.ts new file mode 100644 index 0000000..225bc81 --- /dev/null +++ b/live2demo/Framework/rendering/cubismrenderer_webgl.d.ts @@ -0,0 +1,240 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismModel } from '../model/cubismmodel'; +import { csmMap } from '../type/csmmap'; +import { csmVector } from '../type/csmvector'; +import { CubismClippingManager } from './cubismclippingmanager'; +import { CubismClippingContext, CubismRenderer } from './cubismrenderer'; +/** + * クリッピングマスクの処理を実行するクラス + */ +export declare class CubismClippingManager_WebGL extends CubismClippingManager { + /** + * テンポラリのレンダーテクスチャのアドレスを取得する + * FrameBufferObjectが存在しない場合、新しく生成する + * + * @return レンダーテクスチャの配列 + */ + getMaskRenderTexture(): csmVector; + /** + * WebGLレンダリングコンテキストを設定する + * @param gl WebGLレンダリングコンテキスト + */ + setGL(gl: WebGLRenderingContext): void; + /** + * コンストラクタ + */ + constructor(); + /** + * クリッピングコンテキストを作成する。モデル描画時に実行する。 + * @param model モデルのインスタンス + * @param renderer レンダラのインスタンス + */ + setupClippingContext(model: CubismModel, renderer: CubismRenderer_WebGL): void; + /** + * カラーバッファを取得する + * @return カラーバッファ + */ + getColorBuffer(): csmVector; + /** + * マスクの合計数をカウント + * @returns + */ + getClippingMaskCount(): number; + _currentMaskRenderTexture: WebGLFramebuffer; + _maskRenderTextures: csmVector; + _maskColorBuffers: csmVector; + _currentFrameNo: number; + _maskTexture: CubismRenderTextureResource; + gl: WebGLRenderingContext; +} +/** + * レンダーテクスチャのリソースを定義する構造体 + * クリッピングマスクで使用する + */ +export declare class CubismRenderTextureResource { + /** + * 引数付きコンストラクタ + * @param frameNo レンダラーのフレーム番号 + * @param texture テクスチャのアドレス + */ + constructor(frameNo: number, texture: csmVector); + frameNo: number; + textures: csmVector; +} +/** + * クリッピングマスクのコンテキスト + */ +export declare class CubismClippingContext_WebGL extends CubismClippingContext { + /** + * 引数付きコンストラクタ + */ + constructor(manager: CubismClippingManager_WebGL, clippingDrawableIndices: Int32Array, clipCount: number); + /** + * このマスクを管理するマネージャのインスタンスを取得する + * @return クリッピングマネージャのインスタンス + */ + getClippingManager(): CubismClippingManager_WebGL; + setGl(gl: WebGLRenderingContext): void; + private _owner; +} +export declare class CubismRendererProfile_WebGL { + private setGlEnable; + private setGlEnableVertexAttribArray; + save(): void; + restore(): void; + setGl(gl: WebGLRenderingContext): void; + constructor(); + private _lastArrayBufferBinding; + private _lastElementArrayBufferBinding; + private _lastProgram; + private _lastActiveTexture; + private _lastTexture0Binding2D; + private _lastTexture1Binding2D; + private _lastVertexAttribArrayEnabled; + private _lastScissorTest; + private _lastBlend; + private _lastStencilTest; + private _lastDepthTest; + private _lastCullFace; + private _lastFrontFace; + private _lastColorMask; + private _lastBlending; + private _lastFBO; + private _lastViewport; + gl: WebGLRenderingContext; +} +/** + * WebGL用の描画命令を実装したクラス + */ +export declare class CubismRenderer_WebGL extends CubismRenderer { + /** + * レンダラの初期化処理を実行する + * 引数に渡したモデルからレンダラの初期化処理に必要な情報を取り出すことができる + * + * @param model モデルのインスタンス + * @param maskBufferCount バッファの生成数 + */ + initialize(model: CubismModel, maskBufferCount?: number): void; + /** + * WebGLテクスチャのバインド処理 + * CubismRendererにテクスチャを設定し、CubismRenderer内でその画像を参照するためのIndex値を戻り値とする + * @param modelTextureNo セットするモデルテクスチャの番号 + * @param glTextureNo WebGLテクスチャの番号 + */ + bindTexture(modelTextureNo: number, glTexture: WebGLTexture): void; + /** + * WebGLにバインドされたテクスチャのリストを取得する + * @return テクスチャのリスト + */ + getBindedTextures(): csmMap; + /** + * クリッピングマスクバッファのサイズを設定する + * マスク用のFrameBufferを破棄、再作成する為処理コストは高い + * @param size クリッピングマスクバッファのサイズ + */ + setClippingMaskBufferSize(size: number): void; + /** + * クリッピングマスクバッファのサイズを取得する + * @return クリッピングマスクバッファのサイズ + */ + getClippingMaskBufferSize(): number; + /** + * レンダーテクスチャの枚数を取得する + * @return レンダーテクスチャの枚数 + */ + getRenderTextureCount(): number; + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * モデルを描画する実際の処理 + */ + doDrawModel(): void; + /** + * 描画オブジェクト(アートメッシュ)を描画する。 + * @param model 描画対象のモデル + * @param index 描画対象のメッシュのインデックス + */ + drawMeshWebGL(model: Readonly, index: number): void; + protected saveProfile(): void; + protected restoreProfile(): void; + /** + * レンダラが保持する静的なリソースを解放する + * WebGLの静的なシェーダープログラムを解放する + */ + static doStaticRelease(): void; + /** + * レンダーステートを設定する + * @param fbo アプリケーション側で指定しているフレームバッファ + * @param viewport ビューポート + */ + setRenderState(fbo: WebGLFramebuffer, viewport: number[]): void; + /** + * 描画開始時の追加処理 + * モデルを描画する前にクリッピングマスクに必要な処理を実装している + */ + preDraw(): void; + /** + * マスクテクスチャに描画するクリッピングコンテキストをセットする + */ + setClippingContextBufferForMask(clip: CubismClippingContext_WebGL): void; + /** + * マスクテクスチャに描画するクリッピングコンテキストを取得する + * @return マスクテクスチャに描画するクリッピングコンテキスト + */ + getClippingContextBufferForMask(): CubismClippingContext_WebGL; + /** + * 画面上に描画するクリッピングコンテキストをセットする + */ + setClippingContextBufferForDraw(clip: CubismClippingContext_WebGL): void; + /** + * 画面上に描画するクリッピングコンテキストを取得する + * @return 画面上に描画するクリッピングコンテキスト + */ + getClippingContextBufferForDraw(): CubismClippingContext_WebGL; + /** + * マスク生成時かを判定する + * @returns 判定値 + */ + isGeneratingMask(): boolean; + /** + * glの設定 + */ + startUp(gl: WebGLRenderingContext): void; + _textures: csmMap; + _sortedDrawableIndexList: csmVector; + _clippingManager: CubismClippingManager_WebGL; + _clippingContextBufferForMask: CubismClippingContext_WebGL; + _clippingContextBufferForDraw: CubismClippingContext_WebGL; + _rendererProfile: CubismRendererProfile_WebGL; + firstDraw: boolean; + _bufferData: { + vertex: WebGLBuffer; + uv: WebGLBuffer; + index: WebGLBuffer; + }; + _extension: any; + gl: WebGLRenderingContext; +} +import * as $ from './cubismrenderer_webgl'; +export declare namespace Live2DCubismFramework { + const CubismClippingContext: typeof CubismClippingContext_WebGL; + type CubismClippingContext = $.CubismClippingContext_WebGL; + const CubismClippingManager_WebGL: typeof $.CubismClippingManager_WebGL; + type CubismClippingManager_WebGL = $.CubismClippingManager_WebGL; + const CubismRenderTextureResource: typeof $.CubismRenderTextureResource; + type CubismRenderTextureResource = $.CubismRenderTextureResource; + const CubismRenderer_WebGL: typeof $.CubismRenderer_WebGL; + type CubismRenderer_WebGL = $.CubismRenderer_WebGL; +} +//# sourceMappingURL=cubismrenderer_webgl.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismrenderer_webgl.d.ts.map b/live2demo/Framework/rendering/cubismrenderer_webgl.d.ts.map new file mode 100644 index 0000000..340bbc9 --- /dev/null +++ b/live2demo/Framework/rendering/cubismrenderer_webgl.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismrenderer_webgl.d.ts","sourceRoot":"","sources":["../../src/rendering/cubismrenderer_webgl.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismrenderer_webgl.js b/live2demo/Framework/rendering/cubismrenderer_webgl.js new file mode 100644 index 0000000..665054c --- /dev/null +++ b/live2demo/Framework/rendering/cubismrenderer_webgl.js @@ -0,0 +1,734 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismRenderer_WebGL = exports.CubismRendererProfile_WebGL = exports.CubismClippingContext_WebGL = exports.CubismRenderTextureResource = exports.CubismClippingManager_WebGL = void 0; +var csmmap_1 = require("../type/csmmap"); +var csmvector_1 = require("../type/csmvector"); +var cubismdebug_1 = require("../utils/cubismdebug"); +var cubismclippingmanager_1 = require("./cubismclippingmanager"); +var cubismrenderer_1 = require("./cubismrenderer"); +var cubismshader_webgl_1 = require("./cubismshader_webgl"); +var s_viewport; +var s_fbo; +/** + * クリッピングマスクの処理を実行するクラス + */ +var CubismClippingManager_WebGL = /** @class */ (function (_super) { + __extends(CubismClippingManager_WebGL, _super); + /** + * コンストラクタ + */ + function CubismClippingManager_WebGL() { + return _super.call(this, CubismClippingContext_WebGL) || this; + } + /** + * テンポラリのレンダーテクスチャのアドレスを取得する + * FrameBufferObjectが存在しない場合、新しく生成する + * + * @return レンダーテクスチャの配列 + */ + CubismClippingManager_WebGL.prototype.getMaskRenderTexture = function () { + // テンポラリのRenderTextureを取得する + if (this._maskTexture && this._maskTexture.textures != null) { + // 前回使ったものを返す + this._maskTexture.frameNo = this._currentFrameNo; + } + else { + // FrameBufferObjectが存在しない場合、新しく生成する + if (this._maskRenderTextures != null) { + this._maskRenderTextures.clear(); + } + this._maskRenderTextures = new csmvector_1.csmVector(); + // ColorBufferObjectが存在しない場合、新しく生成する + if (this._maskColorBuffers != null) { + this._maskColorBuffers.clear(); + } + this._maskColorBuffers = new csmvector_1.csmVector(); + // クリッピングバッファサイズを取得 + var size = this._clippingMaskBufferSize; + for (var index = 0; index < this._renderTextureCount; index++) { + this._maskColorBuffers.pushBack(this.gl.createTexture()); // 直接代入 + this.gl.bindTexture(this.gl.TEXTURE_2D, this._maskColorBuffers.at(index)); + this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, size, size, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, null); + this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE); + this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE); + this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR); + this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR); + this.gl.bindTexture(this.gl.TEXTURE_2D, null); + this._maskRenderTextures.pushBack(this.gl.createFramebuffer()); + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this._maskRenderTextures.at(index)); + this.gl.framebufferTexture2D(this.gl.FRAMEBUFFER, this.gl.COLOR_ATTACHMENT0, this.gl.TEXTURE_2D, this._maskColorBuffers.at(index), 0); + } + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, s_fbo); + this._maskTexture = new CubismRenderTextureResource(this._currentFrameNo, this._maskRenderTextures); + } + return this._maskTexture.textures; + }; + /** + * WebGLレンダリングコンテキストを設定する + * @param gl WebGLレンダリングコンテキスト + */ + CubismClippingManager_WebGL.prototype.setGL = function (gl) { + this.gl = gl; + }; + /** + * クリッピングコンテキストを作成する。モデル描画時に実行する。 + * @param model モデルのインスタンス + * @param renderer レンダラのインスタンス + */ + CubismClippingManager_WebGL.prototype.setupClippingContext = function (model, renderer) { + this._currentFrameNo++; + // 全てのクリッピングを用意する + // 同じクリップ(複数の場合はまとめて一つのクリップ)を使う場合は1度だけ設定する + var usingClipCount = 0; + for (var clipIndex = 0; clipIndex < this._clippingContextListForMask.getSize(); clipIndex++) { + // 1つのクリッピングマスクに関して + var cc = this._clippingContextListForMask.at(clipIndex); + // このクリップを利用する描画オブジェクト群全体を囲む矩形を計算 + this.calcClippedDrawTotalBounds(model, cc); + if (cc._isUsing) { + usingClipCount++; // 使用中としてカウント + } + } + // マスク作成処理 + if (usingClipCount > 0) { + // 生成したFrameBufferと同じサイズでビューポートを設定 + this.gl.viewport(0, 0, this._clippingMaskBufferSize, this._clippingMaskBufferSize); + // 後の計算のためにインデックスの最初をセット + this._currentMaskRenderTexture = this.getMaskRenderTexture().at(0); + renderer.preDraw(); // バッファをクリアする + this.setupLayoutBounds(usingClipCount); + // ---------- マスク描画処理 ---------- + // マスク用RenderTextureをactiveにセット + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this._currentMaskRenderTexture); + // サイズがレンダーテクスチャの枚数と合わない場合は合わせる + if (this._clearedFrameBufferFlags.getSize() != this._renderTextureCount) { + this._clearedFrameBufferFlags.clear(); + this._clearedFrameBufferFlags = new csmvector_1.csmVector(this._renderTextureCount); + } + // マスクのクリアフラグを毎フレーム開始時に初期化 + for (var index = 0; index < this._clearedFrameBufferFlags.getSize(); index++) { + this._clearedFrameBufferFlags.set(index, false); + } + // 実際にマスクを生成する + // 全てのマスクをどのようにレイアウトして描くかを決定し、ClipContext, ClippedDrawContextに記憶する + for (var clipIndex = 0; clipIndex < this._clippingContextListForMask.getSize(); clipIndex++) { + // --- 実際に1つのマスクを描く --- + var clipContext = this._clippingContextListForMask.at(clipIndex); + var allClipedDrawRect = clipContext._allClippedDrawRect; // このマスクを使う、すべての描画オブジェクトの論理座標上の囲み矩形 + var layoutBoundsOnTex01 = clipContext._layoutBounds; // この中にマスクを収める + var MARGIN = 0.05; // モデル座標上の矩形を、適宜マージンを付けて使う + var scaleX = 0; + var scaleY = 0; + // clipContextに設定したレンダーテクスチャをインデックスで取得 + var clipContextRenderTexture = this.getMaskRenderTexture().at(clipContext._bufferIndex); + // 現在のレンダーテクスチャがclipContextのものと異なる場合 + if (this._currentMaskRenderTexture != clipContextRenderTexture) { + this._currentMaskRenderTexture = clipContextRenderTexture; + renderer.preDraw(); // バッファをクリアする + // マスク用RenderTextureをactiveにセット + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this._currentMaskRenderTexture); + } + this._tmpBoundsOnModel.setRect(allClipedDrawRect); + this._tmpBoundsOnModel.expand(allClipedDrawRect.width * MARGIN, allClipedDrawRect.height * MARGIN); + //########## 本来は割り当てられた領域の全体を使わず必要最低限のサイズがよい + // シェーダ用の計算式を求める。回転を考慮しない場合は以下のとおり + // movePeriod' = movePeriod * scaleX + offX [[ movePeriod' = (movePeriod - tmpBoundsOnModel.movePeriod)*scale + layoutBoundsOnTex01.movePeriod ]] + scaleX = layoutBoundsOnTex01.width / this._tmpBoundsOnModel.width; + scaleY = layoutBoundsOnTex01.height / this._tmpBoundsOnModel.height; + // マスク生成時に使う行列を求める + { + // シェーダに渡す行列を求める <<<<<<<<<<<<<<<<<<<<<<<< 要最適化(逆順に計算すればシンプルにできる) + this._tmpMatrix.loadIdentity(); + { + // layout0..1 を -1..1に変換 + this._tmpMatrix.translateRelative(-1.0, -1.0); + this._tmpMatrix.scaleRelative(2.0, 2.0); + } + { + // view to layout0..1 + this._tmpMatrix.translateRelative(layoutBoundsOnTex01.x, layoutBoundsOnTex01.y); + this._tmpMatrix.scaleRelative(scaleX, scaleY); // new = [translate][scale] + this._tmpMatrix.translateRelative(-this._tmpBoundsOnModel.x, -this._tmpBoundsOnModel.y); + // new = [translate][scale][translate] + } + // tmpMatrixForMaskが計算結果 + this._tmpMatrixForMask.setMatrix(this._tmpMatrix.getArray()); + } + //--------- draw時の mask 参照用行列を計算 + { + // シェーダに渡す行列を求める <<<<<<<<<<<<<<<<<<<<<<<< 要最適化(逆順に計算すればシンプルにできる) + this._tmpMatrix.loadIdentity(); + { + this._tmpMatrix.translateRelative(layoutBoundsOnTex01.x, layoutBoundsOnTex01.y); + this._tmpMatrix.scaleRelative(scaleX, scaleY); // new = [translate][scale] + this._tmpMatrix.translateRelative(-this._tmpBoundsOnModel.x, -this._tmpBoundsOnModel.y); + // new = [translate][scale][translate] + } + this._tmpMatrixForDraw.setMatrix(this._tmpMatrix.getArray()); + } + clipContext._matrixForMask.setMatrix(this._tmpMatrixForMask.getArray()); + clipContext._matrixForDraw.setMatrix(this._tmpMatrixForDraw.getArray()); + var clipDrawCount = clipContext._clippingIdCount; + for (var i = 0; i < clipDrawCount; i++) { + var clipDrawIndex = clipContext._clippingIdList[i]; + // 頂点情報が更新されておらず、信頼性がない場合は描画をパスする + if (!model.getDrawableDynamicFlagVertexPositionsDidChange(clipDrawIndex)) { + continue; + } + renderer.setIsCulling(model.getDrawableCulling(clipDrawIndex) != false); + // マスクがクリアされていないなら処理する + if (!this._clearedFrameBufferFlags.at(clipContext._bufferIndex)) { + // マスクをクリアする + // (仮仕様) 1が無効(描かれない)領域、0が有効(描かれる)領域。(シェーダーCd*Csで0に近い値をかけてマスクを作る。1をかけると何も起こらない) + this.gl.clearColor(1.0, 1.0, 1.0, 1.0); + this.gl.clear(this.gl.COLOR_BUFFER_BIT); + this._clearedFrameBufferFlags.set(clipContext._bufferIndex, true); + } + // 今回専用の変換を適用して描く + // チャンネルも切り替える必要がある(A,R,G,B) + renderer.setClippingContextBufferForMask(clipContext); + renderer.drawMeshWebGL(model, clipDrawIndex); + } + } + // --- 後処理 --- + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, s_fbo); // 描画対象を戻す + renderer.setClippingContextBufferForMask(null); + this.gl.viewport(s_viewport[0], s_viewport[1], s_viewport[2], s_viewport[3]); + } + }; + /** + * カラーバッファを取得する + * @return カラーバッファ + */ + CubismClippingManager_WebGL.prototype.getColorBuffer = function () { + return this._maskColorBuffers; + }; + /** + * マスクの合計数をカウント + * @returns + */ + CubismClippingManager_WebGL.prototype.getClippingMaskCount = function () { + return this._clippingContextListForMask.getSize(); + }; + return CubismClippingManager_WebGL; +}(cubismclippingmanager_1.CubismClippingManager)); +exports.CubismClippingManager_WebGL = CubismClippingManager_WebGL; +/** + * レンダーテクスチャのリソースを定義する構造体 + * クリッピングマスクで使用する + */ +var CubismRenderTextureResource = /** @class */ (function () { + /** + * 引数付きコンストラクタ + * @param frameNo レンダラーのフレーム番号 + * @param texture テクスチャのアドレス + */ + function CubismRenderTextureResource(frameNo, texture) { + this.frameNo = frameNo; + this.textures = texture; + } + return CubismRenderTextureResource; +}()); +exports.CubismRenderTextureResource = CubismRenderTextureResource; +/** + * クリッピングマスクのコンテキスト + */ +var CubismClippingContext_WebGL = /** @class */ (function (_super) { + __extends(CubismClippingContext_WebGL, _super); + /** + * 引数付きコンストラクタ + */ + function CubismClippingContext_WebGL(manager, clippingDrawableIndices, clipCount) { + var _this = _super.call(this, clippingDrawableIndices, clipCount) || this; + _this._owner = manager; + return _this; + } + /** + * このマスクを管理するマネージャのインスタンスを取得する + * @return クリッピングマネージャのインスタンス + */ + CubismClippingContext_WebGL.prototype.getClippingManager = function () { + return this._owner; + }; + CubismClippingContext_WebGL.prototype.setGl = function (gl) { + this._owner.setGL(gl); + }; + return CubismClippingContext_WebGL; +}(cubismrenderer_1.CubismClippingContext)); +exports.CubismClippingContext_WebGL = CubismClippingContext_WebGL; +var CubismRendererProfile_WebGL = /** @class */ (function () { + function CubismRendererProfile_WebGL() { + this._lastVertexAttribArrayEnabled = new Array(4); + this._lastColorMask = new Array(4); + this._lastBlending = new Array(4); + this._lastViewport = new Array(4); + } + CubismRendererProfile_WebGL.prototype.setGlEnable = function (index, enabled) { + if (enabled) + this.gl.enable(index); + else + this.gl.disable(index); + }; + CubismRendererProfile_WebGL.prototype.setGlEnableVertexAttribArray = function (index, enabled) { + if (enabled) + this.gl.enableVertexAttribArray(index); + else + this.gl.disableVertexAttribArray(index); + }; + CubismRendererProfile_WebGL.prototype.save = function () { + if (this.gl == null) { + (0, cubismdebug_1.CubismLogError)("'gl' is null. WebGLRenderingContext is required.\nPlease call 'CubimRenderer_WebGL.startUp' function."); + return; + } + //-- push state -- + this._lastArrayBufferBinding = this.gl.getParameter(this.gl.ARRAY_BUFFER_BINDING); + this._lastElementArrayBufferBinding = this.gl.getParameter(this.gl.ELEMENT_ARRAY_BUFFER_BINDING); + this._lastProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM); + this._lastActiveTexture = this.gl.getParameter(this.gl.ACTIVE_TEXTURE); + this.gl.activeTexture(this.gl.TEXTURE1); //テクスチャユニット1をアクティブに(以後の設定対象とする) + this._lastTexture1Binding2D = this.gl.getParameter(this.gl.TEXTURE_BINDING_2D); + this.gl.activeTexture(this.gl.TEXTURE0); //テクスチャユニット0をアクティブに(以後の設定対象とする) + this._lastTexture0Binding2D = this.gl.getParameter(this.gl.TEXTURE_BINDING_2D); + this._lastVertexAttribArrayEnabled[0] = this.gl.getVertexAttrib(0, this.gl.VERTEX_ATTRIB_ARRAY_ENABLED); + this._lastVertexAttribArrayEnabled[1] = this.gl.getVertexAttrib(1, this.gl.VERTEX_ATTRIB_ARRAY_ENABLED); + this._lastVertexAttribArrayEnabled[2] = this.gl.getVertexAttrib(2, this.gl.VERTEX_ATTRIB_ARRAY_ENABLED); + this._lastVertexAttribArrayEnabled[3] = this.gl.getVertexAttrib(3, this.gl.VERTEX_ATTRIB_ARRAY_ENABLED); + this._lastScissorTest = this.gl.isEnabled(this.gl.SCISSOR_TEST); + this._lastStencilTest = this.gl.isEnabled(this.gl.STENCIL_TEST); + this._lastDepthTest = this.gl.isEnabled(this.gl.DEPTH_TEST); + this._lastCullFace = this.gl.isEnabled(this.gl.CULL_FACE); + this._lastBlend = this.gl.isEnabled(this.gl.BLEND); + this._lastFrontFace = this.gl.getParameter(this.gl.FRONT_FACE); + this._lastColorMask = this.gl.getParameter(this.gl.COLOR_WRITEMASK); + // backup blending + this._lastBlending[0] = this.gl.getParameter(this.gl.BLEND_SRC_RGB); + this._lastBlending[1] = this.gl.getParameter(this.gl.BLEND_DST_RGB); + this._lastBlending[2] = this.gl.getParameter(this.gl.BLEND_SRC_ALPHA); + this._lastBlending[3] = this.gl.getParameter(this.gl.BLEND_DST_ALPHA); + // モデル描画直前のFBOとビューポートを保存 + this._lastFBO = this.gl.getParameter(this.gl.FRAMEBUFFER_BINDING); + this._lastViewport = this.gl.getParameter(this.gl.VIEWPORT); + }; + CubismRendererProfile_WebGL.prototype.restore = function () { + if (this.gl == null) { + (0, cubismdebug_1.CubismLogError)("'gl' is null. WebGLRenderingContext is required.\nPlease call 'CubimRenderer_WebGL.startUp' function."); + return; + } + this.gl.useProgram(this._lastProgram); + this.setGlEnableVertexAttribArray(0, this._lastVertexAttribArrayEnabled[0]); + this.setGlEnableVertexAttribArray(1, this._lastVertexAttribArrayEnabled[1]); + this.setGlEnableVertexAttribArray(2, this._lastVertexAttribArrayEnabled[2]); + this.setGlEnableVertexAttribArray(3, this._lastVertexAttribArrayEnabled[3]); + this.setGlEnable(this.gl.SCISSOR_TEST, this._lastScissorTest); + this.setGlEnable(this.gl.STENCIL_TEST, this._lastStencilTest); + this.setGlEnable(this.gl.DEPTH_TEST, this._lastDepthTest); + this.setGlEnable(this.gl.CULL_FACE, this._lastCullFace); + this.setGlEnable(this.gl.BLEND, this._lastBlend); + this.gl.frontFace(this._lastFrontFace); + this.gl.colorMask(this._lastColorMask[0], this._lastColorMask[1], this._lastColorMask[2], this._lastColorMask[3]); + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this._lastArrayBufferBinding); //前にバッファがバインドされていたら破棄する必要がある + this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this._lastElementArrayBufferBinding); + this.gl.activeTexture(this.gl.TEXTURE1); //テクスチャユニット1を復元 + this.gl.bindTexture(this.gl.TEXTURE_2D, this._lastTexture1Binding2D); + this.gl.activeTexture(this.gl.TEXTURE0); //テクスチャユニット0を復元 + this.gl.bindTexture(this.gl.TEXTURE_2D, this._lastTexture0Binding2D); + this.gl.activeTexture(this._lastActiveTexture); + this.gl.blendFuncSeparate(this._lastBlending[0], this._lastBlending[1], this._lastBlending[2], this._lastBlending[3]); + }; + CubismRendererProfile_WebGL.prototype.setGl = function (gl) { + this.gl = gl; + }; + return CubismRendererProfile_WebGL; +}()); +exports.CubismRendererProfile_WebGL = CubismRendererProfile_WebGL; +/** + * WebGL用の描画命令を実装したクラス + */ +var CubismRenderer_WebGL = /** @class */ (function (_super) { + __extends(CubismRenderer_WebGL, _super); + /** + * コンストラクタ + */ + function CubismRenderer_WebGL() { + var _this = _super.call(this) || this; + _this._clippingContextBufferForMask = null; + _this._clippingContextBufferForDraw = null; + _this._rendererProfile = new CubismRendererProfile_WebGL(); + _this.firstDraw = true; + _this._textures = new csmmap_1.csmMap(); + _this._sortedDrawableIndexList = new csmvector_1.csmVector(); + _this._bufferData = { + vertex: (WebGLBuffer = null), + uv: (WebGLBuffer = null), + index: (WebGLBuffer = null) + }; + // テクスチャ対応マップの容量を確保しておく + _this._textures.prepareCapacity(32, true); + return _this; + } + /** + * レンダラの初期化処理を実行する + * 引数に渡したモデルからレンダラの初期化処理に必要な情報を取り出すことができる + * + * @param model モデルのインスタンス + * @param maskBufferCount バッファの生成数 + */ + CubismRenderer_WebGL.prototype.initialize = function (model, maskBufferCount) { + if (maskBufferCount === void 0) { maskBufferCount = 1; } + if (model.isUsingMasking()) { + this._clippingManager = new CubismClippingManager_WebGL(); // クリッピングマスク・バッファ前処理方式を初期化 + this._clippingManager.initialize(model, maskBufferCount); + } + this._sortedDrawableIndexList.resize(model.getDrawableCount(), 0); + _super.prototype.initialize.call(this, model); // 親クラスの処理を呼ぶ + }; + /** + * WebGLテクスチャのバインド処理 + * CubismRendererにテクスチャを設定し、CubismRenderer内でその画像を参照するためのIndex値を戻り値とする + * @param modelTextureNo セットするモデルテクスチャの番号 + * @param glTextureNo WebGLテクスチャの番号 + */ + CubismRenderer_WebGL.prototype.bindTexture = function (modelTextureNo, glTexture) { + this._textures.setValue(modelTextureNo, glTexture); + }; + /** + * WebGLにバインドされたテクスチャのリストを取得する + * @return テクスチャのリスト + */ + CubismRenderer_WebGL.prototype.getBindedTextures = function () { + return this._textures; + }; + /** + * クリッピングマスクバッファのサイズを設定する + * マスク用のFrameBufferを破棄、再作成する為処理コストは高い + * @param size クリッピングマスクバッファのサイズ + */ + CubismRenderer_WebGL.prototype.setClippingMaskBufferSize = function (size) { + // クリッピングマスクを利用しない場合は早期リターン + if (!this._model.isUsingMasking()) { + return; + } + // インスタンス破棄前にレンダーテクスチャの数を保存 + var renderTextureCount = this._clippingManager.getRenderTextureCount(); + // FrameBufferのサイズを変更するためにインスタンスを破棄・再作成する + this._clippingManager.release(); + this._clippingManager = void 0; + this._clippingManager = null; + this._clippingManager = new CubismClippingManager_WebGL(); + this._clippingManager.setClippingMaskBufferSize(size); + this._clippingManager.initialize(this.getModel(), renderTextureCount // インスタンス破棄前に保存したレンダーテクスチャの数 + ); + }; + /** + * クリッピングマスクバッファのサイズを取得する + * @return クリッピングマスクバッファのサイズ + */ + CubismRenderer_WebGL.prototype.getClippingMaskBufferSize = function () { + return this._model.isUsingMasking() + ? this._clippingManager.getClippingMaskBufferSize() + : -1; + }; + /** + * レンダーテクスチャの枚数を取得する + * @return レンダーテクスチャの枚数 + */ + CubismRenderer_WebGL.prototype.getRenderTextureCount = function () { + return this._model.isUsingMasking() + ? this._clippingManager.getRenderTextureCount() + : -1; + }; + /** + * デストラクタ相当の処理 + */ + CubismRenderer_WebGL.prototype.release = function () { + if (this._clippingManager) { + this._clippingManager.release(); + this._clippingManager = void 0; + this._clippingManager = null; + } + if (this.gl == null) { + return; + } + this.gl.deleteBuffer(this._bufferData.vertex); + this._bufferData.vertex = null; + this.gl.deleteBuffer(this._bufferData.uv); + this._bufferData.uv = null; + this.gl.deleteBuffer(this._bufferData.index); + this._bufferData.index = null; + this._bufferData = null; + this._textures = null; + }; + /** + * モデルを描画する実際の処理 + */ + CubismRenderer_WebGL.prototype.doDrawModel = function () { + if (this.gl == null) { + (0, cubismdebug_1.CubismLogError)("'gl' is null. WebGLRenderingContext is required.\nPlease call 'CubimRenderer_WebGL.startUp' function."); + return; + } + //------------ クリッピングマスク・バッファ前処理方式の場合 ------------ + if (this._clippingManager != null) { + this.preDraw(); + if (this.isUsingHighPrecisionMask()) { + this._clippingManager.setupMatrixForHighPrecision(this.getModel(), false); + } + else { + this._clippingManager.setupClippingContext(this.getModel(), this); + } + } + // 上記クリッピング処理内でも一度PreDrawを呼ぶので注意!! + this.preDraw(); + var drawableCount = this.getModel().getDrawableCount(); + var renderOrder = this.getModel().getDrawableRenderOrders(); + // インデックスを描画順でソート + for (var i = 0; i < drawableCount; ++i) { + var order = renderOrder[i]; + this._sortedDrawableIndexList.set(order, i); + } + // 描画 + for (var i = 0; i < drawableCount; ++i) { + var drawableIndex = this._sortedDrawableIndexList.at(i); + // Drawableが表示状態でなければ処理をパスする + if (!this.getModel().getDrawableDynamicFlagIsVisible(drawableIndex)) { + continue; + } + var clipContext = this._clippingManager != null + ? this._clippingManager + .getClippingContextListForDraw() + .at(drawableIndex) + : null; + if (clipContext != null && this.isUsingHighPrecisionMask()) { + // 描くことになっていた + if (clipContext._isUsing) { + // 生成したFrameBufferと同じサイズでビューポートを設定 + this.gl.viewport(0, 0, this._clippingManager.getClippingMaskBufferSize(), this._clippingManager.getClippingMaskBufferSize()); + this.preDraw(); // バッファをクリアする + // ---------- マスク描画処理 ---------- + // マスク用RenderTextureをactiveにセット + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, clipContext + .getClippingManager() + .getMaskRenderTexture() + .at(clipContext._bufferIndex)); + // マスクをクリアする + // (仮仕様) 1が無効(描かれない)領域、0が有効(描かれる)領域。(シェーダーCd*Csで0に近い値をかけてマスクを作る。1をかけると何も起こらない) + this.gl.clearColor(1.0, 1.0, 1.0, 1.0); + this.gl.clear(this.gl.COLOR_BUFFER_BIT); + } + { + var clipDrawCount = clipContext._clippingIdCount; + for (var index = 0; index < clipDrawCount; index++) { + var clipDrawIndex = clipContext._clippingIdList[index]; + // 頂点情報が更新されておらず、信頼性がない場合は描画をパスする + if (!this._model.getDrawableDynamicFlagVertexPositionsDidChange(clipDrawIndex)) { + continue; + } + this.setIsCulling(this._model.getDrawableCulling(clipDrawIndex) != false); + // 今回専用の変換を適用して描く + // チャンネルも切り替える必要がある(A,R,G,B) + this.setClippingContextBufferForMask(clipContext); + this.drawMeshWebGL(this._model, clipDrawIndex); + } + } + { + // --- 後処理 --- + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, s_fbo); // 描画対象を戻す + this.setClippingContextBufferForMask(null); + this.gl.viewport(s_viewport[0], s_viewport[1], s_viewport[2], s_viewport[3]); + this.preDraw(); // バッファをクリアする + } + } + // クリッピングマスクをセットする + this.setClippingContextBufferForDraw(clipContext); + this.setIsCulling(this.getModel().getDrawableCulling(drawableIndex)); + this.drawMeshWebGL(this._model, drawableIndex); + } + }; + /** + * 描画オブジェクト(アートメッシュ)を描画する。 + * @param model 描画対象のモデル + * @param index 描画対象のメッシュのインデックス + */ + CubismRenderer_WebGL.prototype.drawMeshWebGL = function (model, index) { + // 裏面描画の有効・無効 + if (this.isCulling()) { + this.gl.enable(this.gl.CULL_FACE); + } + else { + this.gl.disable(this.gl.CULL_FACE); + } + this.gl.frontFace(this.gl.CCW); // Cubism SDK OpenGLはマスク・アートメッシュ共にCCWが表面 + if (this.isGeneratingMask()) { + cubismshader_webgl_1.CubismShader_WebGL.getInstance().setupShaderProgramForMask(this, model, index); + } + else { + cubismshader_webgl_1.CubismShader_WebGL.getInstance().setupShaderProgramForDraw(this, model, index); + } + { + var indexCount = model.getDrawableVertexIndexCount(index); + this.gl.drawElements(this.gl.TRIANGLES, indexCount, this.gl.UNSIGNED_SHORT, 0); + } + // 後処理 + this.gl.useProgram(null); + this.setClippingContextBufferForDraw(null); + this.setClippingContextBufferForMask(null); + }; + CubismRenderer_WebGL.prototype.saveProfile = function () { + this._rendererProfile.save(); + }; + CubismRenderer_WebGL.prototype.restoreProfile = function () { + this._rendererProfile.restore(); + }; + /** + * レンダラが保持する静的なリソースを解放する + * WebGLの静的なシェーダープログラムを解放する + */ + CubismRenderer_WebGL.doStaticRelease = function () { + cubismshader_webgl_1.CubismShader_WebGL.deleteInstance(); + }; + /** + * レンダーステートを設定する + * @param fbo アプリケーション側で指定しているフレームバッファ + * @param viewport ビューポート + */ + CubismRenderer_WebGL.prototype.setRenderState = function (fbo, viewport) { + s_fbo = fbo; + s_viewport = viewport; + }; + /** + * 描画開始時の追加処理 + * モデルを描画する前にクリッピングマスクに必要な処理を実装している + */ + CubismRenderer_WebGL.prototype.preDraw = function () { + if (this.firstDraw) { + this.firstDraw = false; + } + this.gl.disable(this.gl.SCISSOR_TEST); + this.gl.disable(this.gl.STENCIL_TEST); + this.gl.disable(this.gl.DEPTH_TEST); + // カリング(1.0beta3) + this.gl.frontFace(this.gl.CW); + this.gl.enable(this.gl.BLEND); + this.gl.colorMask(true, true, true, true); + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null); // 前にバッファがバインドされていたら破棄する必要がある + this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, null); + // 異方性フィルタリングを適用する + if (this.getAnisotropy() > 0.0 && this._extension) { + for (var i = 0; i < this._textures.getSize(); ++i) { + this.gl.bindTexture(this.gl.TEXTURE_2D, this._textures.getValue(i)); + this.gl.texParameterf(this.gl.TEXTURE_2D, this._extension.TEXTURE_MAX_ANISOTROPY_EXT, this.getAnisotropy()); + } + } + }; + /** + * マスクテクスチャに描画するクリッピングコンテキストをセットする + */ + CubismRenderer_WebGL.prototype.setClippingContextBufferForMask = function (clip) { + this._clippingContextBufferForMask = clip; + }; + /** + * マスクテクスチャに描画するクリッピングコンテキストを取得する + * @return マスクテクスチャに描画するクリッピングコンテキスト + */ + CubismRenderer_WebGL.prototype.getClippingContextBufferForMask = function () { + return this._clippingContextBufferForMask; + }; + /** + * 画面上に描画するクリッピングコンテキストをセットする + */ + CubismRenderer_WebGL.prototype.setClippingContextBufferForDraw = function (clip) { + this._clippingContextBufferForDraw = clip; + }; + /** + * 画面上に描画するクリッピングコンテキストを取得する + * @return 画面上に描画するクリッピングコンテキスト + */ + CubismRenderer_WebGL.prototype.getClippingContextBufferForDraw = function () { + return this._clippingContextBufferForDraw; + }; + /** + * マスク生成時かを判定する + * @returns 判定値 + */ + CubismRenderer_WebGL.prototype.isGeneratingMask = function () { + return this.getClippingContextBufferForMask() != null; + }; + /** + * glの設定 + */ + CubismRenderer_WebGL.prototype.startUp = function (gl) { + this.gl = gl; + if (this._clippingManager) { + this._clippingManager.setGL(gl); + } + cubismshader_webgl_1.CubismShader_WebGL.getInstance().setGl(gl); + this._rendererProfile.setGl(gl); + // 異方性フィルタリングが使用できるかチェック + this._extension = + this.gl.getExtension('EXT_texture_filter_anisotropic') || + this.gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') || + this.gl.getExtension('MOZ_EXT_texture_filter_anisotropic'); + }; + return CubismRenderer_WebGL; +}(cubismrenderer_1.CubismRenderer)); +exports.CubismRenderer_WebGL = CubismRenderer_WebGL; +/** + * レンダラが保持する静的なリソースを開放する + */ +cubismrenderer_1.CubismRenderer.staticRelease = function () { + CubismRenderer_WebGL.doStaticRelease(); +}; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismrenderer_webgl")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismClippingContext = $.CubismClippingContext_WebGL; + Live2DCubismFramework.CubismClippingManager_WebGL = $.CubismClippingManager_WebGL; + Live2DCubismFramework.CubismRenderTextureResource = $.CubismRenderTextureResource; + Live2DCubismFramework.CubismRenderer_WebGL = $.CubismRenderer_WebGL; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismrenderer_webgl.js.map \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismrenderer_webgl.js.map b/live2demo/Framework/rendering/cubismrenderer_webgl.js.map new file mode 100644 index 0000000..443dc12 --- /dev/null +++ b/live2demo/Framework/rendering/cubismrenderer_webgl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismrenderer_webgl.js","sourceRoot":"","sources":["../../src/rendering/cubismrenderer_webgl.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismshader_webgl.d.ts b/live2demo/Framework/rendering/cubismshader_webgl.d.ts new file mode 100644 index 0000000..873f3ff --- /dev/null +++ b/live2demo/Framework/rendering/cubismshader_webgl.d.ts @@ -0,0 +1,119 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { CubismModel } from '../model/cubismmodel'; +import { csmVector } from '../type/csmvector'; +import { CubismRenderer_WebGL } from './cubismrenderer_webgl'; +/** + * WebGL用のシェーダープログラムを生成・破棄するクラス + * シングルトンなクラスであり、CubismShader_WebGL.getInstanceからアクセスする。 + */ +export declare class CubismShader_WebGL { + /** + * インスタンスを取得する(シングルトン) + * @return インスタンス + */ + static getInstance(): CubismShader_WebGL; + /** + * インスタンスを開放する(シングルトン) + */ + static deleteInstance(): void; + /** + * privateなコンストラクタ + */ + private constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * 描画用のシェーダプログラムの一連のセットアップを実行する + * @param renderer レンダラー + * @param model 描画対象のモデル + * @param index 描画対象のメッシュのインデックス + */ + setupShaderProgramForDraw(renderer: CubismRenderer_WebGL, model: Readonly, index: number): void; + /** + * マスク用のシェーダプログラムの一連のセットアップを実行する + * @param renderer レンダラー + * @param model 描画対象のモデル + * @param index 描画対象のメッシュのインデックス + */ + setupShaderProgramForMask(renderer: CubismRenderer_WebGL, model: Readonly, index: number): void; + /** + * シェーダープログラムを解放する + */ + releaseShaderProgram(): void; + /** + * シェーダープログラムを初期化する + * @param vertShaderSrc 頂点シェーダのソース + * @param fragShaderSrc フラグメントシェーダのソース + */ + generateShaders(): void; + /** + * シェーダプログラムをロードしてアドレスを返す + * @param vertexShaderSource 頂点シェーダのソース + * @param fragmentShaderSource フラグメントシェーダのソース + * @return シェーダプログラムのアドレス + */ + loadShaderProgram(vertexShaderSource: string, fragmentShaderSource: string): WebGLProgram; + /** + * シェーダープログラムをコンパイルする + * @param shaderType シェーダタイプ(Vertex/Fragment) + * @param shaderSource シェーダソースコード + * + * @return コンパイルされたシェーダープログラム + */ + compileShaderSource(shaderType: GLenum, shaderSource: string): WebGLProgram; + setGl(gl: WebGLRenderingContext): void; + _shaderSets: csmVector; + gl: WebGLRenderingContext; +} +/** + * CubismShader_WebGLのインナークラス + */ +export declare class CubismShaderSet { + shaderProgram: WebGLProgram; + attributePositionLocation: GLuint; + attributeTexCoordLocation: GLuint; + uniformMatrixLocation: WebGLUniformLocation; + uniformClipMatrixLocation: WebGLUniformLocation; + samplerTexture0Location: WebGLUniformLocation; + samplerTexture1Location: WebGLUniformLocation; + uniformBaseColorLocation: WebGLUniformLocation; + uniformChannelFlagLocation: WebGLUniformLocation; + uniformMultiplyColorLocation: WebGLUniformLocation; + uniformScreenColorLocation: WebGLUniformLocation; +} +export declare enum ShaderNames { + ShaderNames_SetupMask = 0, + ShaderNames_NormalPremultipliedAlpha = 1, + ShaderNames_NormalMaskedPremultipliedAlpha = 2, + ShaderNames_NomralMaskedInvertedPremultipliedAlpha = 3, + ShaderNames_AddPremultipliedAlpha = 4, + ShaderNames_AddMaskedPremultipliedAlpha = 5, + ShaderNames_AddMaskedPremultipliedAlphaInverted = 6, + ShaderNames_MultPremultipliedAlpha = 7, + ShaderNames_MultMaskedPremultipliedAlpha = 8, + ShaderNames_MultMaskedPremultipliedAlphaInverted = 9 +} +export declare const vertexShaderSrcSetupMask: string; +export declare const fragmentShaderSrcsetupMask: string; +export declare const vertexShaderSrc: string; +export declare const vertexShaderSrcMasked: string; +export declare const fragmentShaderSrcPremultipliedAlpha: string; +export declare const fragmentShaderSrcMaskPremultipliedAlpha: string; +export declare const fragmentShaderSrcMaskInvertedPremultipliedAlpha: string; +import * as $ from './cubismshader_webgl'; +export declare namespace Live2DCubismFramework { + const CubismShaderSet: typeof $.CubismShaderSet; + type CubismShaderSet = $.CubismShaderSet; + const CubismShader_WebGL: typeof $.CubismShader_WebGL; + type CubismShader_WebGL = $.CubismShader_WebGL; + const ShaderNames: typeof $.ShaderNames; + type ShaderNames = $.ShaderNames; +} +//# sourceMappingURL=cubismshader_webgl.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismshader_webgl.d.ts.map b/live2demo/Framework/rendering/cubismshader_webgl.d.ts.map new file mode 100644 index 0000000..7f4c233 --- /dev/null +++ b/live2demo/Framework/rendering/cubismshader_webgl.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismshader_webgl.d.ts","sourceRoot":"","sources":["../../src/rendering/cubismshader_webgl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B;;;OAGG;WACW,WAAW,IAAI,kBAAkB;IAS/C;;OAEG;WACW,cAAc,IAAI,IAAI;IAOpC;;OAEG;IACH,OAAO;IAIP;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;;;;OAKG;IACI,yBAAyB,CAC9B,QAAQ,EAAE,oBAAoB,EAC9B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC5B,KAAK,EAAE,MAAM,GACZ,IAAI;IAkMP;;;;;OAKG;IACI,yBAAyB,CAC9B,QAAQ,EAAE,oBAAoB,EAC9B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC5B,KAAK,EAAE,MAAM,GACZ,IAAI;IA+IP;;OAEG;IACI,oBAAoB,IAAI,IAAI;IASnC;;;;OAIG;IACI,eAAe,IAAI,IAAI;IA0d9B;;;;;OAKG;IACI,iBAAiB,CACtB,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,GAC3B,YAAY;IA6Df;;;;;;OAMG;IACI,mBAAmB,CACxB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,YAAY;IAwBR,KAAK,CAAC,EAAE,EAAE,qBAAqB,GAAG,IAAI;IAI7C,WAAW,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IACxC,EAAE,EAAE,qBAAqB,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,aAAa,EAAE,YAAY,CAAC;IAC5B,yBAAyB,EAAE,MAAM,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;IAClC,qBAAqB,EAAE,oBAAoB,CAAC;IAC5C,yBAAyB,EAAE,oBAAoB,CAAC;IAChD,uBAAuB,EAAE,oBAAoB,CAAC;IAC9C,uBAAuB,EAAE,oBAAoB,CAAC;IAC9C,wBAAwB,EAAE,oBAAoB,CAAC;IAC/C,0BAA0B,EAAE,oBAAoB,CAAC;IACjD,4BAA4B,EAAE,oBAAoB,CAAC;IACnD,0BAA0B,EAAE,oBAAoB,CAAC;CAClD;AAED,oBAAY,WAAW;IAErB,qBAAqB,IAAA;IAGrB,oCAAoC,IAAA;IACpC,0CAA0C,IAAA;IAC1C,kDAAkD,IAAA;IAGlD,iCAAiC,IAAA;IACjC,uCAAuC,IAAA;IACvC,+CAA+C,IAAA;IAG/C,kCAAkC,IAAA;IAClC,wCAAwC,IAAA;IACxC,gDAAgD,IAAA;CACjD;AAED,eAAO,MAAM,wBAAwB,QAYhC,CAAC;AAEN,eAAO,MAAM,0BAA0B,QAelC,CAAC;AAIN,eAAO,MAAM,eAAe,QAUvB,CAAC;AAGN,eAAO,MAAM,qBAAqB,QAa7B,CAAC;AAIN,eAAO,MAAM,mCAAmC,QAc3C,CAAC;AAGN,eAAO,MAAM,uCAAuC,QAoB/C,CAAC;AAGN,eAAO,MAAM,+CAA+C,QAoBvD,CAAC;AAGN,OAAO,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAE1C,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,eAAe,0BAAoB,CAAC;IACjD,KAAY,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC;IACzC,MAAM,kBAAkB,6BAAuB,CAAC;IACvD,KAAY,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC;IAC/C,MAAM,WAAW,sBAAgB,CAAC;IACzC,KAAY,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;CACzC"} \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismshader_webgl.js b/live2demo/Framework/rendering/cubismshader_webgl.js new file mode 100644 index 0000000..3bd702b --- /dev/null +++ b/live2demo/Framework/rendering/cubismshader_webgl.js @@ -0,0 +1,682 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.fragmentShaderSrcMaskInvertedPremultipliedAlpha = exports.fragmentShaderSrcMaskPremultipliedAlpha = exports.fragmentShaderSrcPremultipliedAlpha = exports.vertexShaderSrcMasked = exports.vertexShaderSrc = exports.fragmentShaderSrcsetupMask = exports.vertexShaderSrcSetupMask = exports.ShaderNames = exports.CubismShaderSet = exports.CubismShader_WebGL = void 0; +var csmvector_1 = require("../type/csmvector"); +var cubismdebug_1 = require("../utils/cubismdebug"); +var cubismrenderer_1 = require("./cubismrenderer"); +var s_instance; +var ShaderCount = 10; // シェーダーの数 = マスク生成用 + (通常用 + 加算 + 乗算) * (マスク無の乗算済アルファ対応版 + マスク有の乗算済アルファ対応版 + マスク有反転の乗算済アルファ対応版) +/** + * WebGL用のシェーダープログラムを生成・破棄するクラス + * シングルトンなクラスであり、CubismShader_WebGL.getInstanceからアクセスする。 + */ +var CubismShader_WebGL = /** @class */ (function () { + /** + * privateなコンストラクタ + */ + function CubismShader_WebGL() { + this._shaderSets = new csmvector_1.csmVector(); + } + /** + * インスタンスを取得する(シングルトン) + * @return インスタンス + */ + CubismShader_WebGL.getInstance = function () { + if (s_instance == null) { + s_instance = new CubismShader_WebGL(); + return s_instance; + } + return s_instance; + }; + /** + * インスタンスを開放する(シングルトン) + */ + CubismShader_WebGL.deleteInstance = function () { + if (s_instance) { + s_instance.release(); + s_instance = null; + } + }; + /** + * デストラクタ相当の処理 + */ + CubismShader_WebGL.prototype.release = function () { + this.releaseShaderProgram(); + }; + /** + * 描画用のシェーダプログラムの一連のセットアップを実行する + * @param renderer レンダラー + * @param model 描画対象のモデル + * @param index 描画対象のメッシュのインデックス + */ + CubismShader_WebGL.prototype.setupShaderProgramForDraw = function (renderer, model, index) { + if (!renderer.isPremultipliedAlpha()) { + (0, cubismdebug_1.CubismLogError)('NoPremultipliedAlpha is not allowed'); + } + if (this._shaderSets.getSize() == 0) { + this.generateShaders(); + } + // Blending + var SRC_COLOR; + var DST_COLOR; + var SRC_ALPHA; + var DST_ALPHA; + // _shaderSets用のオフセット計算 + var masked = renderer.getClippingContextBufferForDraw() != null; // この描画オブジェクトはマスク対象か + var invertedMask = model.getDrawableInvertedMaskBit(index); + var offset = masked ? (invertedMask ? 2 : 1) : 0; + var shaderSet; + switch (model.getDrawableBlendMode(index)) { + case cubismrenderer_1.CubismBlendMode.CubismBlendMode_Normal: + default: + shaderSet = this._shaderSets.at(ShaderNames.ShaderNames_NormalPremultipliedAlpha + offset); + SRC_COLOR = this.gl.ONE; + DST_COLOR = this.gl.ONE_MINUS_SRC_ALPHA; + SRC_ALPHA = this.gl.ONE; + DST_ALPHA = this.gl.ONE_MINUS_SRC_ALPHA; + break; + case cubismrenderer_1.CubismBlendMode.CubismBlendMode_Additive: + shaderSet = this._shaderSets.at(ShaderNames.ShaderNames_AddPremultipliedAlpha + offset); + SRC_COLOR = this.gl.ONE; + DST_COLOR = this.gl.ONE; + SRC_ALPHA = this.gl.ZERO; + DST_ALPHA = this.gl.ONE; + break; + case cubismrenderer_1.CubismBlendMode.CubismBlendMode_Multiplicative: + shaderSet = this._shaderSets.at(ShaderNames.ShaderNames_MultPremultipliedAlpha + offset); + SRC_COLOR = this.gl.DST_COLOR; + DST_COLOR = this.gl.ONE_MINUS_SRC_ALPHA; + SRC_ALPHA = this.gl.ZERO; + DST_ALPHA = this.gl.ONE; + break; + } + this.gl.useProgram(shaderSet.shaderProgram); + // 頂点配列の設定 + if (renderer._bufferData.vertex == null) { + renderer._bufferData.vertex = this.gl.createBuffer(); + } + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, renderer._bufferData.vertex); + // 頂点配列の設定 + var vertexArray = model.getDrawableVertices(index); + this.gl.bufferData(this.gl.ARRAY_BUFFER, vertexArray, this.gl.DYNAMIC_DRAW); + this.gl.enableVertexAttribArray(shaderSet.attributePositionLocation); + this.gl.vertexAttribPointer(shaderSet.attributePositionLocation, 2, this.gl.FLOAT, false, 0, 0); + // テクスチャ頂点の設定 + if (renderer._bufferData.uv == null) { + renderer._bufferData.uv = this.gl.createBuffer(); + } + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, renderer._bufferData.uv); + var uvArray = model.getDrawableVertexUvs(index); + this.gl.bufferData(this.gl.ARRAY_BUFFER, uvArray, this.gl.DYNAMIC_DRAW); + this.gl.enableVertexAttribArray(shaderSet.attributeTexCoordLocation); + this.gl.vertexAttribPointer(shaderSet.attributeTexCoordLocation, 2, this.gl.FLOAT, false, 0, 0); + if (masked) { + this.gl.activeTexture(this.gl.TEXTURE1); + // frameBufferに書かれたテクスチャ + var tex = renderer + .getClippingContextBufferForDraw() + .getClippingManager() + .getColorBuffer() + .at(renderer.getClippingContextBufferForDraw()._bufferIndex); + this.gl.bindTexture(this.gl.TEXTURE_2D, tex); + this.gl.uniform1i(shaderSet.samplerTexture1Location, 1); + // view座標をClippingContextの座標に変換するための行列を設定 + this.gl.uniformMatrix4fv(shaderSet.uniformClipMatrixLocation, false, renderer.getClippingContextBufferForDraw()._matrixForDraw.getArray()); + // 使用するカラーチャンネルを設定 + var channelNo = renderer.getClippingContextBufferForDraw()._layoutChannelNo; + var colorChannel = renderer + .getClippingContextBufferForDraw() + .getClippingManager() + .getChannelFlagAsColor(channelNo); + this.gl.uniform4f(shaderSet.uniformChannelFlagLocation, colorChannel.R, colorChannel.G, colorChannel.B, colorChannel.A); + } + // テクスチャ設定 + var textureNo = model.getDrawableTextureIndex(index); + var textureId = renderer + .getBindedTextures() + .getValue(textureNo); + this.gl.activeTexture(this.gl.TEXTURE0); + this.gl.bindTexture(this.gl.TEXTURE_2D, textureId); + this.gl.uniform1i(shaderSet.samplerTexture0Location, 0); + //座標変換 + var matrix4x4 = renderer.getMvpMatrix(); + this.gl.uniformMatrix4fv(shaderSet.uniformMatrixLocation, false, matrix4x4.getArray()); + //ベース色の取得 + var baseColor = renderer.getModelColorWithOpacity(model.getDrawableOpacity(index)); + var multiplyColor = model.getMultiplyColor(index); + var screenColor = model.getScreenColor(index); + this.gl.uniform4f(shaderSet.uniformBaseColorLocation, baseColor.R, baseColor.G, baseColor.B, baseColor.A); + this.gl.uniform4f(shaderSet.uniformMultiplyColorLocation, multiplyColor.R, multiplyColor.G, multiplyColor.B, multiplyColor.A); + this.gl.uniform4f(shaderSet.uniformScreenColorLocation, screenColor.R, screenColor.G, screenColor.B, screenColor.A); + // IBOを作成し、データを転送 + if (renderer._bufferData.index == null) { + renderer._bufferData.index = this.gl.createBuffer(); + } + var indexArray = model.getDrawableVertexIndices(index); + this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, renderer._bufferData.index); + this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, indexArray, this.gl.DYNAMIC_DRAW); + this.gl.blendFuncSeparate(SRC_COLOR, DST_COLOR, SRC_ALPHA, DST_ALPHA); + }; + /** + * マスク用のシェーダプログラムの一連のセットアップを実行する + * @param renderer レンダラー + * @param model 描画対象のモデル + * @param index 描画対象のメッシュのインデックス + */ + CubismShader_WebGL.prototype.setupShaderProgramForMask = function (renderer, model, index) { + if (!renderer.isPremultipliedAlpha()) { + (0, cubismdebug_1.CubismLogError)('NoPremultipliedAlpha is not allowed'); + } + if (this._shaderSets.getSize() == 0) { + this.generateShaders(); + } + // Blending + var SRC_COLOR; + var DST_COLOR; + var SRC_ALPHA; + var DST_ALPHA; + var shaderSet = this._shaderSets.at(ShaderNames.ShaderNames_SetupMask); + this.gl.useProgram(shaderSet.shaderProgram); + // 頂点配列の設定 + if (renderer._bufferData.vertex == null) { + renderer._bufferData.vertex = this.gl.createBuffer(); + } + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, renderer._bufferData.vertex); + var vertexArray = model.getDrawableVertices(index); + this.gl.bufferData(this.gl.ARRAY_BUFFER, vertexArray, this.gl.DYNAMIC_DRAW); + this.gl.enableVertexAttribArray(shaderSet.attributePositionLocation); + this.gl.vertexAttribPointer(shaderSet.attributePositionLocation, 2, this.gl.FLOAT, false, 0, 0); + //テクスチャ設定 + if (renderer._bufferData.uv == null) { + renderer._bufferData.uv = this.gl.createBuffer(); + } + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, renderer._bufferData.uv); + var textureNo = model.getDrawableTextureIndex(index); + var textureId = renderer + .getBindedTextures() + .getValue(textureNo); + this.gl.activeTexture(this.gl.TEXTURE0); + this.gl.bindTexture(this.gl.TEXTURE_2D, textureId); + this.gl.uniform1i(shaderSet.samplerTexture0Location, 0); + // テクスチャ頂点の設定 + if (renderer._bufferData.uv == null) { + renderer._bufferData.uv = this.gl.createBuffer(); + } + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, renderer._bufferData.uv); + var uvArray = model.getDrawableVertexUvs(index); + this.gl.bufferData(this.gl.ARRAY_BUFFER, uvArray, this.gl.DYNAMIC_DRAW); + this.gl.enableVertexAttribArray(shaderSet.attributeTexCoordLocation); + this.gl.vertexAttribPointer(shaderSet.attributeTexCoordLocation, 2, this.gl.FLOAT, false, 0, 0); + // チャンネル + var context = renderer.getClippingContextBufferForMask(); + var channelNo = renderer.getClippingContextBufferForMask()._layoutChannelNo; + var colorChannel = renderer + .getClippingContextBufferForMask() + .getClippingManager() + .getChannelFlagAsColor(channelNo); + this.gl.uniform4f(shaderSet.uniformChannelFlagLocation, colorChannel.R, colorChannel.G, colorChannel.B, colorChannel.A); + this.gl.uniformMatrix4fv(shaderSet.uniformClipMatrixLocation, false, renderer.getClippingContextBufferForMask()._matrixForMask.getArray()); + var rect = renderer.getClippingContextBufferForMask()._layoutBounds; + this.gl.uniform4f(shaderSet.uniformBaseColorLocation, rect.x * 2.0 - 1.0, rect.y * 2.0 - 1.0, rect.getRight() * 2.0 - 1.0, rect.getBottom() * 2.0 - 1.0); + var multiplyColor = model.getMultiplyColor(index); + var screenColor = model.getScreenColor(index); + this.gl.uniform4f(shaderSet.uniformMultiplyColorLocation, multiplyColor.R, multiplyColor.G, multiplyColor.B, multiplyColor.A); + this.gl.uniform4f(shaderSet.uniformScreenColorLocation, screenColor.R, screenColor.G, screenColor.B, screenColor.A); + SRC_COLOR = this.gl.ZERO; + DST_COLOR = this.gl.ONE_MINUS_SRC_COLOR; + SRC_ALPHA = this.gl.ZERO; + DST_ALPHA = this.gl.ONE_MINUS_SRC_ALPHA; + // IBOを作成し、データを転送 + if (renderer._bufferData.index == null) { + renderer._bufferData.index = this.gl.createBuffer(); + } + var indexArray = model.getDrawableVertexIndices(index); + this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, renderer._bufferData.index); + this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, indexArray, this.gl.DYNAMIC_DRAW); + this.gl.blendFuncSeparate(SRC_COLOR, DST_COLOR, SRC_ALPHA, DST_ALPHA); + }; + /** + * シェーダープログラムを解放する + */ + CubismShader_WebGL.prototype.releaseShaderProgram = function () { + for (var i = 0; i < this._shaderSets.getSize(); i++) { + this.gl.deleteProgram(this._shaderSets.at(i).shaderProgram); + this._shaderSets.at(i).shaderProgram = 0; + this._shaderSets.set(i, void 0); + this._shaderSets.set(i, null); + } + }; + /** + * シェーダープログラムを初期化する + * @param vertShaderSrc 頂点シェーダのソース + * @param fragShaderSrc フラグメントシェーダのソース + */ + CubismShader_WebGL.prototype.generateShaders = function () { + for (var i = 0; i < ShaderCount; i++) { + this._shaderSets.pushBack(new CubismShaderSet()); + } + this._shaderSets.at(0).shaderProgram = this.loadShaderProgram(exports.vertexShaderSrcSetupMask, exports.fragmentShaderSrcsetupMask); + this._shaderSets.at(1).shaderProgram = this.loadShaderProgram(exports.vertexShaderSrc, exports.fragmentShaderSrcPremultipliedAlpha); + this._shaderSets.at(2).shaderProgram = this.loadShaderProgram(exports.vertexShaderSrcMasked, exports.fragmentShaderSrcMaskPremultipliedAlpha); + this._shaderSets.at(3).shaderProgram = this.loadShaderProgram(exports.vertexShaderSrcMasked, exports.fragmentShaderSrcMaskInvertedPremultipliedAlpha); + // 加算も通常と同じシェーダーを利用する + this._shaderSets.at(4).shaderProgram = this._shaderSets.at(1).shaderProgram; + this._shaderSets.at(5).shaderProgram = this._shaderSets.at(2).shaderProgram; + this._shaderSets.at(6).shaderProgram = this._shaderSets.at(3).shaderProgram; + // 乗算も通常と同じシェーダーを利用する + this._shaderSets.at(7).shaderProgram = this._shaderSets.at(1).shaderProgram; + this._shaderSets.at(8).shaderProgram = this._shaderSets.at(2).shaderProgram; + this._shaderSets.at(9).shaderProgram = this._shaderSets.at(3).shaderProgram; + // SetupMask + this._shaderSets.at(0).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(0).shaderProgram, 'a_position'); + this._shaderSets.at(0).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(0).shaderProgram, 'a_texCoord'); + this._shaderSets.at(0).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(0).shaderProgram, 's_texture0'); + this._shaderSets.at(0).uniformClipMatrixLocation = + this.gl.getUniformLocation(this._shaderSets.at(0).shaderProgram, 'u_clipMatrix'); + this._shaderSets.at(0).uniformChannelFlagLocation = + this.gl.getUniformLocation(this._shaderSets.at(0).shaderProgram, 'u_channelFlag'); + this._shaderSets.at(0).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(0).shaderProgram, 'u_baseColor'); + this._shaderSets.at(0).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(0).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(0).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(0).shaderProgram, 'u_screenColor'); + // 通常(PremultipliedAlpha) + this._shaderSets.at(1).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(1).shaderProgram, 'a_position'); + this._shaderSets.at(1).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(1).shaderProgram, 'a_texCoord'); + this._shaderSets.at(1).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(1).shaderProgram, 's_texture0'); + this._shaderSets.at(1).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(1).shaderProgram, 'u_matrix'); + this._shaderSets.at(1).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(1).shaderProgram, 'u_baseColor'); + this._shaderSets.at(1).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(1).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(1).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(1).shaderProgram, 'u_screenColor'); + // 通常(クリッピング、PremultipliedAlpha) + this._shaderSets.at(2).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(2).shaderProgram, 'a_position'); + this._shaderSets.at(2).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(2).shaderProgram, 'a_texCoord'); + this._shaderSets.at(2).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, 's_texture0'); + this._shaderSets.at(2).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, 's_texture1'); + this._shaderSets.at(2).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, 'u_matrix'); + this._shaderSets.at(2).uniformClipMatrixLocation = + this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, 'u_clipMatrix'); + this._shaderSets.at(2).uniformChannelFlagLocation = + this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, 'u_channelFlag'); + this._shaderSets.at(2).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, 'u_baseColor'); + this._shaderSets.at(2).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(2).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, 'u_screenColor'); + // 通常(クリッピング・反転, PremultipliedAlpha) + this._shaderSets.at(3).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(3).shaderProgram, 'a_position'); + this._shaderSets.at(3).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(3).shaderProgram, 'a_texCoord'); + this._shaderSets.at(3).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, 's_texture0'); + this._shaderSets.at(3).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, 's_texture1'); + this._shaderSets.at(3).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, 'u_matrix'); + this._shaderSets.at(3).uniformClipMatrixLocation = + this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, 'u_clipMatrix'); + this._shaderSets.at(3).uniformChannelFlagLocation = + this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, 'u_channelFlag'); + this._shaderSets.at(3).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, 'u_baseColor'); + this._shaderSets.at(3).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(3).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, 'u_screenColor'); + // 加算(PremultipliedAlpha) + this._shaderSets.at(4).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(4).shaderProgram, 'a_position'); + this._shaderSets.at(4).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(4).shaderProgram, 'a_texCoord'); + this._shaderSets.at(4).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, 's_texture0'); + this._shaderSets.at(4).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, 'u_matrix'); + this._shaderSets.at(4).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, 'u_baseColor'); + this._shaderSets.at(4).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(4).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, 'u_screenColor'); + // 加算(クリッピング、PremultipliedAlpha) + this._shaderSets.at(5).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(5).shaderProgram, 'a_position'); + this._shaderSets.at(5).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(5).shaderProgram, 'a_texCoord'); + this._shaderSets.at(5).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, 's_texture0'); + this._shaderSets.at(5).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, 's_texture1'); + this._shaderSets.at(5).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, 'u_matrix'); + this._shaderSets.at(5).uniformClipMatrixLocation = + this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, 'u_clipMatrix'); + this._shaderSets.at(5).uniformChannelFlagLocation = + this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, 'u_channelFlag'); + this._shaderSets.at(5).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, 'u_baseColor'); + this._shaderSets.at(5).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(5).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, 'u_screenColor'); + // 加算(クリッピング・反転、PremultipliedAlpha) + this._shaderSets.at(6).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(6).shaderProgram, 'a_position'); + this._shaderSets.at(6).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(6).shaderProgram, 'a_texCoord'); + this._shaderSets.at(6).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, 's_texture0'); + this._shaderSets.at(6).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, 's_texture1'); + this._shaderSets.at(6).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, 'u_matrix'); + this._shaderSets.at(6).uniformClipMatrixLocation = + this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, 'u_clipMatrix'); + this._shaderSets.at(6).uniformChannelFlagLocation = + this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, 'u_channelFlag'); + this._shaderSets.at(6).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, 'u_baseColor'); + this._shaderSets.at(6).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(6).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, 'u_screenColor'); + // 乗算(PremultipliedAlpha) + this._shaderSets.at(7).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(7).shaderProgram, 'a_position'); + this._shaderSets.at(7).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(7).shaderProgram, 'a_texCoord'); + this._shaderSets.at(7).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(7).shaderProgram, 's_texture0'); + this._shaderSets.at(7).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(7).shaderProgram, 'u_matrix'); + this._shaderSets.at(7).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(7).shaderProgram, 'u_baseColor'); + this._shaderSets.at(7).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(7).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(7).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(7).shaderProgram, 'u_screenColor'); + // 乗算(クリッピング、PremultipliedAlpha) + this._shaderSets.at(8).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(8).shaderProgram, 'a_position'); + this._shaderSets.at(8).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(8).shaderProgram, 'a_texCoord'); + this._shaderSets.at(8).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, 's_texture0'); + this._shaderSets.at(8).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, 's_texture1'); + this._shaderSets.at(8).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, 'u_matrix'); + this._shaderSets.at(8).uniformClipMatrixLocation = + this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, 'u_clipMatrix'); + this._shaderSets.at(8).uniformChannelFlagLocation = + this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, 'u_channelFlag'); + this._shaderSets.at(8).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, 'u_baseColor'); + this._shaderSets.at(8).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(8).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, 'u_screenColor'); + // 乗算(クリッピング・反転、PremultipliedAlpha) + this._shaderSets.at(9).attributePositionLocation = + this.gl.getAttribLocation(this._shaderSets.at(9).shaderProgram, 'a_position'); + this._shaderSets.at(9).attributeTexCoordLocation = + this.gl.getAttribLocation(this._shaderSets.at(9).shaderProgram, 'a_texCoord'); + this._shaderSets.at(9).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, 's_texture0'); + this._shaderSets.at(9).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, 's_texture1'); + this._shaderSets.at(9).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, 'u_matrix'); + this._shaderSets.at(9).uniformClipMatrixLocation = + this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, 'u_clipMatrix'); + this._shaderSets.at(9).uniformChannelFlagLocation = + this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, 'u_channelFlag'); + this._shaderSets.at(9).uniformBaseColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, 'u_baseColor'); + this._shaderSets.at(9).uniformMultiplyColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, 'u_multiplyColor'); + this._shaderSets.at(9).uniformScreenColorLocation = + this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, 'u_screenColor'); + }; + /** + * シェーダプログラムをロードしてアドレスを返す + * @param vertexShaderSource 頂点シェーダのソース + * @param fragmentShaderSource フラグメントシェーダのソース + * @return シェーダプログラムのアドレス + */ + CubismShader_WebGL.prototype.loadShaderProgram = function (vertexShaderSource, fragmentShaderSource) { + // Create Shader Program + var shaderProgram = this.gl.createProgram(); + var vertShader = this.compileShaderSource(this.gl.VERTEX_SHADER, vertexShaderSource); + if (!vertShader) { + (0, cubismdebug_1.CubismLogError)('Vertex shader compile error!'); + return 0; + } + var fragShader = this.compileShaderSource(this.gl.FRAGMENT_SHADER, fragmentShaderSource); + if (!fragShader) { + (0, cubismdebug_1.CubismLogError)('Vertex shader compile error!'); + return 0; + } + // Attach vertex shader to program + this.gl.attachShader(shaderProgram, vertShader); + // Attach fragment shader to program + this.gl.attachShader(shaderProgram, fragShader); + // link program + this.gl.linkProgram(shaderProgram); + var linkStatus = this.gl.getProgramParameter(shaderProgram, this.gl.LINK_STATUS); + // リンクに失敗したらシェーダーを削除 + if (!linkStatus) { + (0, cubismdebug_1.CubismLogError)('Failed to link program: {0}', shaderProgram); + this.gl.deleteShader(vertShader); + vertShader = 0; + this.gl.deleteShader(fragShader); + fragShader = 0; + if (shaderProgram) { + this.gl.deleteProgram(shaderProgram); + shaderProgram = 0; + } + return 0; + } + // Release vertex and fragment shaders. + this.gl.deleteShader(vertShader); + this.gl.deleteShader(fragShader); + return shaderProgram; + }; + /** + * シェーダープログラムをコンパイルする + * @param shaderType シェーダタイプ(Vertex/Fragment) + * @param shaderSource シェーダソースコード + * + * @return コンパイルされたシェーダープログラム + */ + CubismShader_WebGL.prototype.compileShaderSource = function (shaderType, shaderSource) { + var source = shaderSource; + var shader = this.gl.createShader(shaderType); + this.gl.shaderSource(shader, source); + this.gl.compileShader(shader); + if (!shader) { + var log = this.gl.getShaderInfoLog(shader); + (0, cubismdebug_1.CubismLogError)('Shader compile log: {0} ', log); + } + var status = this.gl.getShaderParameter(shader, this.gl.COMPILE_STATUS); + if (!status) { + this.gl.deleteShader(shader); + return null; + } + return shader; + }; + CubismShader_WebGL.prototype.setGl = function (gl) { + this.gl = gl; + }; + return CubismShader_WebGL; +}()); +exports.CubismShader_WebGL = CubismShader_WebGL; +/** + * CubismShader_WebGLのインナークラス + */ +var CubismShaderSet = /** @class */ (function () { + function CubismShaderSet() { + } + return CubismShaderSet; +}()); +exports.CubismShaderSet = CubismShaderSet; +var ShaderNames; +(function (ShaderNames) { + // SetupMask + ShaderNames[ShaderNames["ShaderNames_SetupMask"] = 0] = "ShaderNames_SetupMask"; + // Normal + ShaderNames[ShaderNames["ShaderNames_NormalPremultipliedAlpha"] = 1] = "ShaderNames_NormalPremultipliedAlpha"; + ShaderNames[ShaderNames["ShaderNames_NormalMaskedPremultipliedAlpha"] = 2] = "ShaderNames_NormalMaskedPremultipliedAlpha"; + ShaderNames[ShaderNames["ShaderNames_NomralMaskedInvertedPremultipliedAlpha"] = 3] = "ShaderNames_NomralMaskedInvertedPremultipliedAlpha"; + // Add + ShaderNames[ShaderNames["ShaderNames_AddPremultipliedAlpha"] = 4] = "ShaderNames_AddPremultipliedAlpha"; + ShaderNames[ShaderNames["ShaderNames_AddMaskedPremultipliedAlpha"] = 5] = "ShaderNames_AddMaskedPremultipliedAlpha"; + ShaderNames[ShaderNames["ShaderNames_AddMaskedPremultipliedAlphaInverted"] = 6] = "ShaderNames_AddMaskedPremultipliedAlphaInverted"; + // Mult + ShaderNames[ShaderNames["ShaderNames_MultPremultipliedAlpha"] = 7] = "ShaderNames_MultPremultipliedAlpha"; + ShaderNames[ShaderNames["ShaderNames_MultMaskedPremultipliedAlpha"] = 8] = "ShaderNames_MultMaskedPremultipliedAlpha"; + ShaderNames[ShaderNames["ShaderNames_MultMaskedPremultipliedAlphaInverted"] = 9] = "ShaderNames_MultMaskedPremultipliedAlphaInverted"; +})(ShaderNames || (exports.ShaderNames = ShaderNames = {})); +exports.vertexShaderSrcSetupMask = 'attribute vec4 a_position;' + + 'attribute vec2 a_texCoord;' + + 'varying vec2 v_texCoord;' + + 'varying vec4 v_myPos;' + + 'uniform mat4 u_clipMatrix;' + + 'void main()' + + '{' + + ' gl_Position = u_clipMatrix * a_position;' + + ' v_myPos = u_clipMatrix * a_position;' + + ' v_texCoord = a_texCoord;' + + ' v_texCoord.y = 1.0 - v_texCoord.y;' + + '}'; +exports.fragmentShaderSrcsetupMask = 'precision mediump float;' + + 'varying vec2 v_texCoord;' + + 'varying vec4 v_myPos;' + + 'uniform vec4 u_baseColor;' + + 'uniform vec4 u_channelFlag;' + + 'uniform sampler2D s_texture0;' + + 'void main()' + + '{' + + ' float isInside = ' + + ' step(u_baseColor.x, v_myPos.x/v_myPos.w)' + + ' * step(u_baseColor.y, v_myPos.y/v_myPos.w)' + + ' * step(v_myPos.x/v_myPos.w, u_baseColor.z)' + + ' * step(v_myPos.y/v_myPos.w, u_baseColor.w);' + + ' gl_FragColor = u_channelFlag * texture2D(s_texture0, v_texCoord).a * isInside;' + + '}'; +//----- バーテックスシェーダプログラム ----- +// Normal & Add & Mult 共通 +exports.vertexShaderSrc = 'attribute vec4 a_position;' + //v.vertex + 'attribute vec2 a_texCoord;' + //v.texcoord + 'varying vec2 v_texCoord;' + //v2f.texcoord + 'uniform mat4 u_matrix;' + + 'void main()' + + '{' + + ' gl_Position = u_matrix * a_position;' + + ' v_texCoord = a_texCoord;' + + ' v_texCoord.y = 1.0 - v_texCoord.y;' + + '}'; +// Normal & Add & Mult 共通(クリッピングされたものの描画用) +exports.vertexShaderSrcMasked = 'attribute vec4 a_position;' + + 'attribute vec2 a_texCoord;' + + 'varying vec2 v_texCoord;' + + 'varying vec4 v_clipPos;' + + 'uniform mat4 u_matrix;' + + 'uniform mat4 u_clipMatrix;' + + 'void main()' + + '{' + + ' gl_Position = u_matrix * a_position;' + + ' v_clipPos = u_clipMatrix * a_position;' + + ' v_texCoord = a_texCoord;' + + ' v_texCoord.y = 1.0 - v_texCoord.y;' + + '}'; +//----- フラグメントシェーダプログラム ----- +// Normal & Add & Mult 共通 (PremultipliedAlpha) +exports.fragmentShaderSrcPremultipliedAlpha = 'precision mediump float;' + + 'varying vec2 v_texCoord;' + //v2f.texcoord + 'uniform vec4 u_baseColor;' + + 'uniform sampler2D s_texture0;' + //_MainTex + 'uniform vec4 u_multiplyColor;' + + 'uniform vec4 u_screenColor;' + + 'void main()' + + '{' + + ' vec4 texColor = texture2D(s_texture0, v_texCoord);' + + ' texColor.rgb = texColor.rgb * u_multiplyColor.rgb;' + + ' texColor.rgb = (texColor.rgb + u_screenColor.rgb * texColor.a) - (texColor.rgb * u_screenColor.rgb);' + + ' vec4 color = texColor * u_baseColor;' + + ' gl_FragColor = vec4(color.rgb, color.a);' + + '}'; +// Normal (クリッピングされたものの描画用、PremultipliedAlpha兼用) +exports.fragmentShaderSrcMaskPremultipliedAlpha = 'precision mediump float;' + + 'varying vec2 v_texCoord;' + + 'varying vec4 v_clipPos;' + + 'uniform vec4 u_baseColor;' + + 'uniform vec4 u_channelFlag;' + + 'uniform sampler2D s_texture0;' + + 'uniform sampler2D s_texture1;' + + 'uniform vec4 u_multiplyColor;' + + 'uniform vec4 u_screenColor;' + + 'void main()' + + '{' + + ' vec4 texColor = texture2D(s_texture0, v_texCoord);' + + ' texColor.rgb = texColor.rgb * u_multiplyColor.rgb;' + + ' texColor.rgb = (texColor.rgb + u_screenColor.rgb * texColor.a) - (texColor.rgb * u_screenColor.rgb);' + + ' vec4 col_formask = texColor * u_baseColor;' + + ' vec4 clipMask = (1.0 - texture2D(s_texture1, v_clipPos.xy / v_clipPos.w)) * u_channelFlag;' + + ' float maskVal = clipMask.r + clipMask.g + clipMask.b + clipMask.a;' + + ' col_formask = col_formask * maskVal;' + + ' gl_FragColor = col_formask;' + + '}'; +// Normal & Add & Mult 共通(クリッピングされて反転使用の描画用、PremultipliedAlphaの場合) +exports.fragmentShaderSrcMaskInvertedPremultipliedAlpha = 'precision mediump float;' + + 'varying vec2 v_texCoord;' + + 'varying vec4 v_clipPos;' + + 'uniform sampler2D s_texture0;' + + 'uniform sampler2D s_texture1;' + + 'uniform vec4 u_channelFlag;' + + 'uniform vec4 u_baseColor;' + + 'uniform vec4 u_multiplyColor;' + + 'uniform vec4 u_screenColor;' + + 'void main()' + + '{' + + ' vec4 texColor = texture2D(s_texture0, v_texCoord);' + + ' texColor.rgb = texColor.rgb * u_multiplyColor.rgb;' + + ' texColor.rgb = (texColor.rgb + u_screenColor.rgb * texColor.a) - (texColor.rgb * u_screenColor.rgb);' + + ' vec4 col_formask = texColor * u_baseColor;' + + ' vec4 clipMask = (1.0 - texture2D(s_texture1, v_clipPos.xy / v_clipPos.w)) * u_channelFlag;' + + ' float maskVal = clipMask.r + clipMask.g + clipMask.b + clipMask.a;' + + ' col_formask = col_formask * (1.0 - maskVal);' + + ' gl_FragColor = col_formask;' + + '}'; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismshader_webgl")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismShaderSet = $.CubismShaderSet; + Live2DCubismFramework.CubismShader_WebGL = $.CubismShader_WebGL; + Live2DCubismFramework.ShaderNames = $.ShaderNames; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismshader_webgl.js.map \ No newline at end of file diff --git a/live2demo/Framework/rendering/cubismshader_webgl.js.map b/live2demo/Framework/rendering/cubismshader_webgl.js.map new file mode 100644 index 0000000..929c889 --- /dev/null +++ b/live2demo/Framework/rendering/cubismshader_webgl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismshader_webgl.js","sourceRoot":"","sources":["../../src/rendering/cubismshader_webgl.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/type/csmmap.d.ts b/live2demo/Framework/type/csmmap.d.ts new file mode 100644 index 0000000..7d35682 --- /dev/null +++ b/live2demo/Framework/type/csmmap.d.ts @@ -0,0 +1,144 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +/** + * Key-Valueのペアを定義するクラス + * csmMapクラスの内部データで使用する。 + */ +export declare class csmPair<_KeyT, _ValT> { + /** + * コンストラクタ + * @param key Keyとしてセットする値 + * @param value Valueとしてセットする値 + */ + constructor(key?: _KeyT, value?: _ValT); + first: _KeyT; + second: _ValT; +} +/** + * マップ型 + */ +export declare class csmMap<_KeyT, _ValT> { + /** + * 引数付きコンストラクタ + * @param size 初期化時点で確保するサイズ + */ + constructor(size?: number); + /** + * デストラクタ + */ + release(): void; + /** + * キーを追加する + * @param key 新たに追加するキー + */ + appendKey(key: _KeyT): void; + /** + * 添字演算子[key]のオーバーロード(get) + * @param key 添字から特定されるValue値 + */ + getValue(key: _KeyT): _ValT; + /** + * 添字演算子[key]のオーバーロード(set) + * @param key 添字から特定されるValue値 + * @param value 代入するValue値 + */ + setValue(key: _KeyT, value: _ValT): void; + /** + * 引数で渡したKeyを持つ要素が存在するか + * @param key 存在を確認するkey + * @return true 引数で渡したkeyを持つ要素が存在する + * @return false 引数で渡したkeyを持つ要素が存在しない + */ + isExist(key: _KeyT): boolean; + /** + * keyValueのポインタを全て解放する + */ + clear(): void; + /** + * コンテナのサイズを取得する + * + * @return コンテナのサイズ + */ + getSize(): number; + /** + * コンテナのキャパシティを確保する + * @param newSize 新たなキャパシティ。引数の値が現在のサイズ未満の場合は何もしない。 + * @param fitToSize trueなら指定したサイズに合わせる。falseならサイズを2倍確保しておく。 + */ + prepareCapacity(newSize: number, fitToSize: boolean): void; + /** + * コンテナの先頭要素を返す + */ + begin(): iterator<_KeyT, _ValT>; + /** + * コンテナの終端要素を返す + */ + end(): iterator<_KeyT, _ValT>; + /** + * コンテナから要素を削除する + * + * @param ite 削除する要素 + */ + erase(ite: iterator<_KeyT, _ValT>): iterator<_KeyT, _ValT>; + /** + * コンテナの値を32ビット符号付き整数型でダンプする + */ + dumpAsInt(): void; + static readonly DefaultSize = 10; + _keyValues: csmPair<_KeyT, _ValT>[]; + _dummyValue: _ValT; + _size: number; +} +/** + * csmMapのイテレータ + */ +export declare class iterator<_KeyT, _ValT> { + /** + * コンストラクタ + */ + constructor(v?: csmMap<_KeyT, _ValT>, idx?: number); + /** + * =演算子のオーバーロード + */ + set(ite: iterator<_KeyT, _ValT>): iterator<_KeyT, _ValT>; + /** + * 前置き++演算子のオーバーロード + */ + preIncrement(): iterator<_KeyT, _ValT>; + /** + * 前置き--演算子のオーバーロード + */ + preDecrement(): iterator<_KeyT, _ValT>; + /** + * 後置き++演算子のオーバーロード + */ + increment(): iterator<_KeyT, _ValT>; + /** + * 後置き--演算子のオーバーロード + */ + decrement(): iterator<_KeyT, _ValT>; + /** + * *演算子のオーバーロード + */ + ptr(): csmPair<_KeyT, _ValT>; + /** + * !=演算 + */ + notEqual(ite: iterator<_KeyT, _ValT>): boolean; + _index: number; + _map: csmMap<_KeyT, _ValT>; +} +import * as $ from './csmmap'; +export declare namespace Live2DCubismFramework { + const csmMap: typeof $.csmMap; + type csmMap = $.csmMap; + const csmPair: typeof $.csmPair; + type csmPair = $.csmPair; + const iterator: typeof $.iterator; + type iterator = $.iterator; +} +//# sourceMappingURL=csmmap.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/type/csmmap.d.ts.map b/live2demo/Framework/type/csmmap.d.ts.map new file mode 100644 index 0000000..b46877f --- /dev/null +++ b/live2demo/Framework/type/csmmap.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"csmmap.d.ts","sourceRoot":"","sources":["../../src/type/csmmap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/type/csmmap.js b/live2demo/Framework/type/csmmap.js new file mode 100644 index 0000000..33c4dab --- /dev/null +++ b/live2demo/Framework/type/csmmap.js @@ -0,0 +1,301 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.iterator = exports.csmMap = exports.csmPair = void 0; +var cubismdebug_1 = require("../utils/cubismdebug"); +/** + * Key-Valueのペアを定義するクラス + * csmMapクラスの内部データで使用する。 + */ +var csmPair = /** @class */ (function () { + /** + * コンストラクタ + * @param key Keyとしてセットする値 + * @param value Valueとしてセットする値 + */ + function csmPair(key, value) { + this.first = key == undefined ? null : key; + this.second = value == undefined ? null : value; + } + return csmPair; +}()); +exports.csmPair = csmPair; +/** + * マップ型 + */ +var csmMap = /** @class */ (function () { + /** + * 引数付きコンストラクタ + * @param size 初期化時点で確保するサイズ + */ + function csmMap(size) { + if (size != undefined) { + if (size < 1) { + this._keyValues = []; + this._dummyValue = null; + this._size = 0; + } + else { + this._keyValues = new Array(size); + this._size = size; + } + } + else { + this._keyValues = []; + this._dummyValue = null; + this._size = 0; + } + } + /** + * デストラクタ + */ + csmMap.prototype.release = function () { + this.clear(); + }; + /** + * キーを追加する + * @param key 新たに追加するキー + */ + csmMap.prototype.appendKey = function (key) { + // 新しくKey/Valueのペアを作る + this.prepareCapacity(this._size + 1, false); // 1つ以上入る隙間を作る + // 新しいkey/valueのインデックスは_size + this._keyValues[this._size] = new csmPair(key); + this._size += 1; + }; + /** + * 添字演算子[key]のオーバーロード(get) + * @param key 添字から特定されるValue値 + */ + csmMap.prototype.getValue = function (key) { + var found = -1; + for (var i = 0; i < this._size; i++) { + if (this._keyValues[i].first == key) { + found = i; + break; + } + } + if (found >= 0) { + return this._keyValues[found].second; + } + else { + this.appendKey(key); // 新規キーを追加 + return this._keyValues[this._size - 1].second; + } + }; + /** + * 添字演算子[key]のオーバーロード(set) + * @param key 添字から特定されるValue値 + * @param value 代入するValue値 + */ + csmMap.prototype.setValue = function (key, value) { + var found = -1; + for (var i = 0; i < this._size; i++) { + if (this._keyValues[i].first == key) { + found = i; + break; + } + } + if (found >= 0) { + this._keyValues[found].second = value; + } + else { + this.appendKey(key); // 新規キーを追加 + this._keyValues[this._size - 1].second = value; + } + }; + /** + * 引数で渡したKeyを持つ要素が存在するか + * @param key 存在を確認するkey + * @return true 引数で渡したkeyを持つ要素が存在する + * @return false 引数で渡したkeyを持つ要素が存在しない + */ + csmMap.prototype.isExist = function (key) { + for (var i = 0; i < this._size; i++) { + if (this._keyValues[i].first == key) { + return true; + } + } + return false; + }; + /** + * keyValueのポインタを全て解放する + */ + csmMap.prototype.clear = function () { + this._keyValues = void 0; + this._keyValues = null; + this._keyValues = []; + this._size = 0; + }; + /** + * コンテナのサイズを取得する + * + * @return コンテナのサイズ + */ + csmMap.prototype.getSize = function () { + return this._size; + }; + /** + * コンテナのキャパシティを確保する + * @param newSize 新たなキャパシティ。引数の値が現在のサイズ未満の場合は何もしない。 + * @param fitToSize trueなら指定したサイズに合わせる。falseならサイズを2倍確保しておく。 + */ + csmMap.prototype.prepareCapacity = function (newSize, fitToSize) { + if (newSize > this._keyValues.length) { + if (this._keyValues.length == 0) { + if (!fitToSize && newSize < csmMap.DefaultSize) + newSize = csmMap.DefaultSize; + this._keyValues.length = newSize; + } + else { + if (!fitToSize && newSize < this._keyValues.length * 2) + newSize = this._keyValues.length * 2; + this._keyValues.length = newSize; + } + } + }; + /** + * コンテナの先頭要素を返す + */ + csmMap.prototype.begin = function () { + var ite = new iterator(this, 0); + return ite; + }; + /** + * コンテナの終端要素を返す + */ + csmMap.prototype.end = function () { + var ite = new iterator(this, this._size); // 終了 + return ite; + }; + /** + * コンテナから要素を削除する + * + * @param ite 削除する要素 + */ + csmMap.prototype.erase = function (ite) { + var index = ite._index; + if (index < 0 || this._size <= index) { + return ite; // 削除範囲外 + } + // 削除 + this._keyValues.splice(index, 1); + --this._size; + var ite2 = new iterator(this, index); // 終了 + return ite2; + }; + /** + * コンテナの値を32ビット符号付き整数型でダンプする + */ + csmMap.prototype.dumpAsInt = function () { + for (var i = 0; i < this._size; i++) { + (0, cubismdebug_1.CubismLogDebug)('{0} ,', this._keyValues[i]); + (0, cubismdebug_1.CubismLogDebug)('\n'); + } + }; + csmMap.DefaultSize = 10; // コンテナの初期化のデフォルトサイズ + return csmMap; +}()); +exports.csmMap = csmMap; +/** + * csmMapのイテレータ + */ +var iterator = /** @class */ (function () { + /** + * コンストラクタ + */ + function iterator(v, idx) { + this._map = v != undefined ? v : new csmMap(); + this._index = idx != undefined ? idx : 0; + } + /** + * =演算子のオーバーロード + */ + iterator.prototype.set = function (ite) { + this._index = ite._index; + this._map = ite._map; + return this; + }; + /** + * 前置き++演算子のオーバーロード + */ + iterator.prototype.preIncrement = function () { + ++this._index; + return this; + }; + /** + * 前置き--演算子のオーバーロード + */ + iterator.prototype.preDecrement = function () { + --this._index; + return this; + }; + /** + * 後置き++演算子のオーバーロード + */ + iterator.prototype.increment = function () { + var iteold = new iterator(this._map, this._index++); // 古い値を保存 + return iteold; + }; + /** + * 後置き--演算子のオーバーロード + */ + iterator.prototype.decrement = function () { + var iteold = new iterator(this._map, this._index); // 古い値を保存 + this._map = iteold._map; + this._index = iteold._index; + return this; + }; + /** + * *演算子のオーバーロード + */ + iterator.prototype.ptr = function () { + return this._map._keyValues[this._index]; + }; + /** + * !=演算 + */ + iterator.prototype.notEqual = function (ite) { + return this._index != ite._index || this._map != ite._map; + }; + return iterator; +}()); +exports.iterator = iterator; +// Namespace definition for compatibility. +var $ = __importStar(require("./csmmap")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.csmMap = $.csmMap; + Live2DCubismFramework.csmPair = $.csmPair; + Live2DCubismFramework.iterator = $.iterator; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=csmmap.js.map \ No newline at end of file diff --git a/live2demo/Framework/type/csmmap.js.map b/live2demo/Framework/type/csmmap.js.map new file mode 100644 index 0000000..1d03bd2 --- /dev/null +++ b/live2demo/Framework/type/csmmap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"csmmap.js","sourceRoot":"","sources":["../../src/type/csmmap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/type/csmrectf.d.ts b/live2demo/Framework/type/csmrectf.d.ts new file mode 100644 index 0000000..02c3aba --- /dev/null +++ b/live2demo/Framework/type/csmrectf.d.ts @@ -0,0 +1,56 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +/** + * 矩形形状(座標・長さはfloat値)を定義するクラス + */ +export declare class csmRect { + /** + * コンストラクタ + * @param x 左端X座標 + * @param y 上端Y座標 + * @param w 幅 + * @param h 高さ + */ + constructor(x?: number, y?: number, w?: number, h?: number); + /** + * 矩形中央のX座標を取得する + */ + getCenterX(): number; + /** + * 矩形中央のY座標を取得する + */ + getCenterY(): number; + /** + * 右側のX座標を取得する + */ + getRight(): number; + /** + * 下端のY座標を取得する + */ + getBottom(): number; + /** + * 矩形に値をセットする + * @param r 矩形のインスタンス + */ + setRect(r: csmRect): void; + /** + * 矩形中央を軸にして縦横を拡縮する + * @param w 幅方向に拡縮する量 + * @param h 高さ方向に拡縮する量 + */ + expand(w: number, h: number): void; + x: number; + y: number; + width: number; + height: number; +} +import * as $ from './csmrectf'; +export declare namespace Live2DCubismFramework { + const csmRect: typeof $.csmRect; + type csmRect = $.csmRect; +} +//# sourceMappingURL=csmrectf.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/type/csmrectf.d.ts.map b/live2demo/Framework/type/csmrectf.d.ts.map new file mode 100644 index 0000000..43de5fc --- /dev/null +++ b/live2demo/Framework/type/csmrectf.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"csmrectf.d.ts","sourceRoot":"","sources":["../../src/type/csmrectf.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,OAAO;IAClB;;;;;;OAMG;gBACgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM;IAOjE;;OAEG;IACI,UAAU,IAAI,MAAM;IAI3B;;OAEG;IACI,UAAU,IAAI,MAAM;IAI3B;;OAEG;IACI,QAAQ,IAAI,MAAM;IAIzB;;OAEG;IACI,SAAS,IAAI,MAAM;IAI1B;;;OAGG;IACI,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAOhC;;;;OAIG;IACI,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAO3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACvB;AAGD,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;AAEhC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,OAAO,kBAAY,CAAC;IACjC,KAAY,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;CACjC"} \ No newline at end of file diff --git a/live2demo/Framework/type/csmrectf.js b/live2demo/Framework/type/csmrectf.js new file mode 100644 index 0000000..593a026 --- /dev/null +++ b/live2demo/Framework/type/csmrectf.js @@ -0,0 +1,105 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.csmRect = void 0; +/** + * 矩形形状(座標・長さはfloat値)を定義するクラス + */ +var csmRect = /** @class */ (function () { + /** + * コンストラクタ + * @param x 左端X座標 + * @param y 上端Y座標 + * @param w 幅 + * @param h 高さ + */ + function csmRect(x, y, w, h) { + this.x = x; + this.y = y; + this.width = w; + this.height = h; + } + /** + * 矩形中央のX座標を取得する + */ + csmRect.prototype.getCenterX = function () { + return this.x + 0.5 * this.width; + }; + /** + * 矩形中央のY座標を取得する + */ + csmRect.prototype.getCenterY = function () { + return this.y + 0.5 * this.height; + }; + /** + * 右側のX座標を取得する + */ + csmRect.prototype.getRight = function () { + return this.x + this.width; + }; + /** + * 下端のY座標を取得する + */ + csmRect.prototype.getBottom = function () { + return this.y + this.height; + }; + /** + * 矩形に値をセットする + * @param r 矩形のインスタンス + */ + csmRect.prototype.setRect = function (r) { + this.x = r.x; + this.y = r.y; + this.width = r.width; + this.height = r.height; + }; + /** + * 矩形中央を軸にして縦横を拡縮する + * @param w 幅方向に拡縮する量 + * @param h 高さ方向に拡縮する量 + */ + csmRect.prototype.expand = function (w, h) { + this.x -= w; + this.y -= h; + this.width += w * 2.0; + this.height += h * 2.0; + }; + return csmRect; +}()); +exports.csmRect = csmRect; +// Namespace definition for compatibility. +var $ = __importStar(require("./csmrectf")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.csmRect = $.csmRect; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=csmrectf.js.map \ No newline at end of file diff --git a/live2demo/Framework/type/csmrectf.js.map b/live2demo/Framework/type/csmrectf.js.map new file mode 100644 index 0000000..40ee7f2 --- /dev/null +++ b/live2demo/Framework/type/csmrectf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"csmrectf.js","sourceRoot":"","sources":["../../src/type/csmrectf.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH;;GAEG;AACH;IACE;;;;;;OAMG;IACH,iBAAmB,CAAU,EAAE,CAAU,EAAE,CAAU,EAAE,CAAU;QAC/D,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,4BAAU,GAAjB;QACE,OAAO,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,4BAAU,GAAjB;QACE,OAAO,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,0BAAQ,GAAf;QACE,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,2BAAS,GAAhB;QACE,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,yBAAO,GAAd,UAAe,CAAU;QACvB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACI,wBAAM,GAAb,UAAc,CAAS,EAAE,CAAS;QAChC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC;IACzB,CAAC;IAMH,cAAC;AAAD,CAAC,AAtED,IAsEC;AAtEY,0BAAO;AAwEpB,0CAA0C;AAC1C,4CAAgC;AAChC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAGrC;AAHD,WAAiB,qBAAqB;IACvB,6BAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AAEnC,CAAC,EAHgB,qBAAqB,qCAArB,qBAAqB,QAGrC"} \ No newline at end of file diff --git a/live2demo/Framework/type/csmstring.d.ts b/live2demo/Framework/type/csmstring.d.ts new file mode 100644 index 0000000..a3c3c17 --- /dev/null +++ b/live2demo/Framework/type/csmstring.d.ts @@ -0,0 +1,71 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +/** + * 文字列クラス。 + */ +export declare class csmString { + /** + * 文字列を後方に追加する + * + * @param c 追加する文字列 + * @return 更新された文字列 + */ + append(c: string, length?: number): csmString; + /** + * 文字サイズを拡張して文字を埋める + * @param length 拡張する文字数 + * @param v 埋める文字 + * @return 更新された文字列 + */ + expansion(length: number, v: string): csmString; + /** + * 文字列の長さをバイト数で取得する + */ + getBytes(): number; + /** + * 文字列の長さを返す + */ + getLength(): number; + /** + * 文字列比較 < + * @param s 比較する文字列 + * @return true: 比較する文字列より小さい + * @return false: 比較する文字列より大きい + */ + isLess(s: csmString): boolean; + /** + * 文字列比較 > + * @param s 比較する文字列 + * @return true: 比較する文字列より大きい + * @return false: 比較する文字列より小さい + */ + isGreat(s: csmString): boolean; + /** + * 文字列比較 == + * @param s 比較する文字列 + * @return true: 比較する文字列と等しい + * @return false: 比較する文字列と異なる + */ + isEqual(s: string): boolean; + /** + * 文字列が空かどうか + * @return true: 空の文字列 + * @return false: 値が設定されている + */ + isEmpty(): boolean; + /** + * 引数付きコンストラクタ + */ + constructor(s: string); + s: string; +} +import * as $ from './csmstring'; +export declare namespace Live2DCubismFramework { + const csmString: typeof $.csmString; + type csmString = $.csmString; +} +//# sourceMappingURL=csmstring.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/type/csmstring.d.ts.map b/live2demo/Framework/type/csmstring.d.ts.map new file mode 100644 index 0000000..025c45e --- /dev/null +++ b/live2demo/Framework/type/csmstring.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"csmstring.d.ts","sourceRoot":"","sources":["../../src/type/csmstring.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,SAAS;IACpB;;;;;OAKG;IACI,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS;IAMpD;;;;;OAKG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAQtD;;OAEG;IACI,QAAQ,IAAI,MAAM;IAIzB;;OAEG;IACI,SAAS,IAAI,MAAM;IAI1B;;;;;OAKG;IACI,MAAM,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO;IAIpC;;;;;OAKG;IACI,OAAO,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO;IAIrC;;;;;OAKG;IACI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;OAIG;IACI,OAAO,IAAI,OAAO;IAIzB;;OAEG;gBACgB,CAAC,EAAE,MAAM;IAI5B,CAAC,EAAE,MAAM,CAAC;CACX;AAGD,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,SAAS,oBAAc,CAAC;IACrC,KAAY,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;CACrC"} \ No newline at end of file diff --git a/live2demo/Framework/type/csmstring.js b/live2demo/Framework/type/csmstring.js new file mode 100644 index 0000000..252d187 --- /dev/null +++ b/live2demo/Framework/type/csmstring.js @@ -0,0 +1,122 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.csmString = void 0; +/** + * 文字列クラス。 + */ +var csmString = /** @class */ (function () { + /** + * 引数付きコンストラクタ + */ + function csmString(s) { + this.s = s; + } + /** + * 文字列を後方に追加する + * + * @param c 追加する文字列 + * @return 更新された文字列 + */ + csmString.prototype.append = function (c, length) { + this.s += length !== undefined ? c.substr(0, length) : c; + return this; + }; + /** + * 文字サイズを拡張して文字を埋める + * @param length 拡張する文字数 + * @param v 埋める文字 + * @return 更新された文字列 + */ + csmString.prototype.expansion = function (length, v) { + for (var i = 0; i < length; i++) { + this.append(v); + } + return this; + }; + /** + * 文字列の長さをバイト数で取得する + */ + csmString.prototype.getBytes = function () { + return encodeURIComponent(this.s).replace(/%../g, 'x').length; + }; + /** + * 文字列の長さを返す + */ + csmString.prototype.getLength = function () { + return this.s.length; + }; + /** + * 文字列比較 < + * @param s 比較する文字列 + * @return true: 比較する文字列より小さい + * @return false: 比較する文字列より大きい + */ + csmString.prototype.isLess = function (s) { + return this.s < s.s; + }; + /** + * 文字列比較 > + * @param s 比較する文字列 + * @return true: 比較する文字列より大きい + * @return false: 比較する文字列より小さい + */ + csmString.prototype.isGreat = function (s) { + return this.s > s.s; + }; + /** + * 文字列比較 == + * @param s 比較する文字列 + * @return true: 比較する文字列と等しい + * @return false: 比較する文字列と異なる + */ + csmString.prototype.isEqual = function (s) { + return this.s == s; + }; + /** + * 文字列が空かどうか + * @return true: 空の文字列 + * @return false: 値が設定されている + */ + csmString.prototype.isEmpty = function () { + return this.s.length == 0; + }; + return csmString; +}()); +exports.csmString = csmString; +// Namespace definition for compatibility. +var $ = __importStar(require("./csmstring")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.csmString = $.csmString; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=csmstring.js.map \ No newline at end of file diff --git a/live2demo/Framework/type/csmstring.js.map b/live2demo/Framework/type/csmstring.js.map new file mode 100644 index 0000000..8461acb --- /dev/null +++ b/live2demo/Framework/type/csmstring.js.map @@ -0,0 +1 @@ +{"version":3,"file":"csmstring.js","sourceRoot":"","sources":["../../src/type/csmstring.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH;;GAEG;AACH;IAgFE;;OAEG;IACH,mBAAmB,CAAS;QAC1B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IApFD;;;;;OAKG;IACI,0BAAM,GAAb,UAAc,CAAS,EAAE,MAAe;QACtC,IAAI,CAAC,CAAC,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACI,6BAAS,GAAhB,UAAiB,MAAc,EAAE,CAAS;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAChB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,4BAAQ,GAAf;QACE,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,6BAAS,GAAhB;QACE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACI,0BAAM,GAAb,UAAc,CAAY;QACxB,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACI,2BAAO,GAAd,UAAe,CAAY;QACzB,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACI,2BAAO,GAAd,UAAe,CAAS;QACtB,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,2BAAO,GAAd;QACE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IAC5B,CAAC;IAUH,gBAAC;AAAD,CAAC,AAxFD,IAwFC;AAxFY,8BAAS;AA0FtB,0CAA0C;AAC1C,6CAAiC;AACjC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAGrC;AAHD,WAAiB,qBAAqB;IACvB,+BAAS,GAAG,CAAC,CAAC,SAAS,CAAC;AAEvC,CAAC,EAHgB,qBAAqB,qCAArB,qBAAqB,QAGrC"} \ No newline at end of file diff --git a/live2demo/Framework/type/csmvector.d.ts b/live2demo/Framework/type/csmvector.d.ts new file mode 100644 index 0000000..44e3e4f --- /dev/null +++ b/live2demo/Framework/type/csmvector.d.ts @@ -0,0 +1,144 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +/** + * ベクター型(可変配列型) + */ +export declare class csmVector { + /** + * 引数付きコンストラクタ + * @param iniitalCapacity 初期化後のキャパシティ。データサイズは_capacity * sizeof(T) + * @param zeroClear trueなら初期化時に確保した領域を0で埋める + */ + constructor(initialCapacity?: number); + /** + * インデックスで指定した要素を返す + */ + at(index: number): T; + /** + * 要素をセット + * @param index 要素をセットするインデックス + * @param value セットする要素 + */ + set(index: number, value: T): void; + /** + * コンテナを取得する + */ + get(offset?: number): T[]; + /** + * pushBack処理、コンテナに新たな要素を追加する + * @param value PushBack処理で追加する値 + */ + pushBack(value: T): void; + /** + * コンテナの全要素を解放する + */ + clear(): void; + /** + * コンテナの要素数を返す + * @return コンテナの要素数 + */ + getSize(): number; + /** + * コンテナの全要素に対して代入処理を行う + * @param newSize 代入処理後のサイズ + * @param value 要素に代入する値 + */ + assign(newSize: number, value: T): void; + /** + * サイズ変更 + */ + resize(newSize: number, value?: T): void; + /** + * サイズ変更 + */ + updateSize(newSize: number, value?: any, callPlacementNew?: boolean): void; + /** + * コンテナにコンテナ要素を挿入する + * @param position 挿入する位置 + * @param begin 挿入するコンテナの開始位置 + * @param end 挿入するコンテナの終端位置 + */ + insert(position: iterator, begin: iterator, end: iterator): void; + /** + * コンテナからインデックスで指定した要素を削除する + * @param index インデックス値 + * @return true 削除実行 + * @return false 削除範囲外 + */ + remove(index: number): boolean; + /** + * コンテナから要素を削除して他の要素をシフトする + * @param ite 削除する要素 + */ + erase(ite: iterator): iterator; + /** + * コンテナのキャパシティを確保する + * @param newSize 新たなキャパシティ。引数の値が現在のサイズ未満の場合は何もしない. + */ + prepareCapacity(newSize: number): void; + /** + * コンテナの先頭要素を返す + */ + begin(): iterator; + /** + * コンテナの終端要素を返す + */ + end(): iterator; + getOffset(offset: number): csmVector; + _ptr: T[]; + _size: number; + _capacity: number; + static readonly s_defaultSize = 10; +} +export declare class iterator { + /** + * コンストラクタ + */ + constructor(v?: csmVector, index?: number); + /** + * 代入 + */ + set(ite: iterator): iterator; + /** + * 前置き++演算 + */ + preIncrement(): iterator; + /** + * 前置き--演算 + */ + preDecrement(): iterator; + /** + * 後置き++演算子 + */ + increment(): iterator; + /** + * 後置き--演算子 + */ + decrement(): iterator; + /** + * ptr + */ + ptr(): T; + /** + * =演算子のオーバーロード + */ + substitution(ite: iterator): iterator; + /** + * !=演算子のオーバーロード + */ + notEqual(ite: iterator): boolean; + _index: number; + _vector: csmVector; +} +import * as $ from './csmvector'; +export declare namespace Live2DCubismFramework { + const csmVector: typeof $.csmVector; + type csmVector = $.csmVector; + const iterator: typeof $.iterator; + type iterator = $.iterator; +} +//# sourceMappingURL=csmvector.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/type/csmvector.d.ts.map b/live2demo/Framework/type/csmvector.d.ts.map new file mode 100644 index 0000000..77ccadf --- /dev/null +++ b/live2demo/Framework/type/csmvector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"csmvector.d.ts","sourceRoot":"","sources":["../../src/type/csmvector.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/type/csmvector.js b/live2demo/Framework/type/csmvector.js new file mode 100644 index 0000000..9c8a37e --- /dev/null +++ b/live2demo/Framework/type/csmvector.js @@ -0,0 +1,329 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.iterator = exports.csmVector = void 0; +/** + * ベクター型(可変配列型) + */ +var csmVector = /** @class */ (function () { + /** + * 引数付きコンストラクタ + * @param iniitalCapacity 初期化後のキャパシティ。データサイズは_capacity * sizeof(T) + * @param zeroClear trueなら初期化時に確保した領域を0で埋める + */ + function csmVector(initialCapacity) { + if (initialCapacity === void 0) { initialCapacity = 0; } + if (initialCapacity < 1) { + this._ptr = []; + this._capacity = 0; + this._size = 0; + } + else { + this._ptr = new Array(initialCapacity); + this._capacity = initialCapacity; + this._size = 0; + } + } + /** + * インデックスで指定した要素を返す + */ + csmVector.prototype.at = function (index) { + return this._ptr[index]; + }; + /** + * 要素をセット + * @param index 要素をセットするインデックス + * @param value セットする要素 + */ + csmVector.prototype.set = function (index, value) { + this._ptr[index] = value; + }; + /** + * コンテナを取得する + */ + csmVector.prototype.get = function (offset) { + if (offset === void 0) { offset = 0; } + var ret = new Array(); + for (var i = offset; i < this._size; i++) { + ret.push(this._ptr[i]); + } + return ret; + }; + /** + * pushBack処理、コンテナに新たな要素を追加する + * @param value PushBack処理で追加する値 + */ + csmVector.prototype.pushBack = function (value) { + if (this._size >= this._capacity) { + this.prepareCapacity(this._capacity == 0 ? csmVector.s_defaultSize : this._capacity * 2); + } + this._ptr[this._size++] = value; + }; + /** + * コンテナの全要素を解放する + */ + csmVector.prototype.clear = function () { + this._ptr.length = 0; + this._size = 0; + }; + /** + * コンテナの要素数を返す + * @return コンテナの要素数 + */ + csmVector.prototype.getSize = function () { + return this._size; + }; + /** + * コンテナの全要素に対して代入処理を行う + * @param newSize 代入処理後のサイズ + * @param value 要素に代入する値 + */ + csmVector.prototype.assign = function (newSize, value) { + var curSize = this._size; + if (curSize < newSize) { + this.prepareCapacity(newSize); // capacity更新 + } + for (var i = 0; i < newSize; i++) { + this._ptr[i] = value; + } + this._size = newSize; + }; + /** + * サイズ変更 + */ + csmVector.prototype.resize = function (newSize, value) { + if (value === void 0) { value = null; } + this.updateSize(newSize, value, true); + }; + /** + * サイズ変更 + */ + csmVector.prototype.updateSize = function (newSize, value, callPlacementNew) { + if (value === void 0) { value = null; } + if (callPlacementNew === void 0) { callPlacementNew = true; } + var curSize = this._size; + if (curSize < newSize) { + this.prepareCapacity(newSize); // capacity更新 + if (callPlacementNew) { + for (var i = this._size; i < newSize; i++) { + if (typeof value == 'function') { + // new + this._ptr[i] = JSON.parse(JSON.stringify(new value())); + } // プリミティブ型なので値渡し + else { + this._ptr[i] = value; + } + } + } + else { + for (var i = this._size; i < newSize; i++) { + this._ptr[i] = value; + } + } + } + else { + // newSize <= this._size + //--- + var sub = this._size - newSize; + this._ptr.splice(this._size - sub, sub); // 不要なので破棄する + } + this._size = newSize; + }; + /** + * コンテナにコンテナ要素を挿入する + * @param position 挿入する位置 + * @param begin 挿入するコンテナの開始位置 + * @param end 挿入するコンテナの終端位置 + */ + csmVector.prototype.insert = function (position, begin, end) { + var dstSi = position._index; + var srcSi = begin._index; + var srcEi = end._index; + var addCount = srcEi - srcSi; + this.prepareCapacity(this._size + addCount); + // 挿入用の既存データをシフトして隙間を作る + var addSize = this._size - dstSi; + if (addSize > 0) { + for (var i = 0; i < addSize; i++) { + this._ptr.splice(dstSi + i, 0, null); + } + } + for (var i = srcSi; i < srcEi; i++, dstSi++) { + this._ptr[dstSi] = begin._vector._ptr[i]; + } + this._size = this._size + addCount; + }; + /** + * コンテナからインデックスで指定した要素を削除する + * @param index インデックス値 + * @return true 削除実行 + * @return false 削除範囲外 + */ + csmVector.prototype.remove = function (index) { + if (index < 0 || this._size <= index) { + return false; // 削除範囲外 + } + this._ptr.splice(index, 1); + --this._size; + return true; + }; + /** + * コンテナから要素を削除して他の要素をシフトする + * @param ite 削除する要素 + */ + csmVector.prototype.erase = function (ite) { + var index = ite._index; + if (index < 0 || this._size <= index) { + return ite; // 削除範囲外 + } + // 削除 + this._ptr.splice(index, 1); + --this._size; + var ite2 = new iterator(this, index); // 終了 + return ite2; + }; + /** + * コンテナのキャパシティを確保する + * @param newSize 新たなキャパシティ。引数の値が現在のサイズ未満の場合は何もしない. + */ + csmVector.prototype.prepareCapacity = function (newSize) { + if (newSize > this._capacity) { + if (this._capacity == 0) { + this._ptr = new Array(newSize); + this._capacity = newSize; + } + else { + this._ptr.length = newSize; + this._capacity = newSize; + } + } + }; + /** + * コンテナの先頭要素を返す + */ + csmVector.prototype.begin = function () { + var ite = this._size == 0 ? this.end() : new iterator(this, 0); + return ite; + }; + /** + * コンテナの終端要素を返す + */ + csmVector.prototype.end = function () { + var ite = new iterator(this, this._size); + return ite; + }; + csmVector.prototype.getOffset = function (offset) { + var newVector = new csmVector(); + newVector._ptr = this.get(offset); + newVector._size = this.get(offset).length; + newVector._capacity = this.get(offset).length; + return newVector; + }; + csmVector.s_defaultSize = 10; // コンテナ初期化のデフォルトサイズ + return csmVector; +}()); +exports.csmVector = csmVector; +var iterator = /** @class */ (function () { + /** + * コンストラクタ + */ + function iterator(v, index) { + this._vector = v != undefined ? v : null; + this._index = index != undefined ? index : 0; + } + /** + * 代入 + */ + iterator.prototype.set = function (ite) { + this._index = ite._index; + this._vector = ite._vector; + return this; + }; + /** + * 前置き++演算 + */ + iterator.prototype.preIncrement = function () { + ++this._index; + return this; + }; + /** + * 前置き--演算 + */ + iterator.prototype.preDecrement = function () { + --this._index; + return this; + }; + /** + * 後置き++演算子 + */ + iterator.prototype.increment = function () { + var iteold = new iterator(this._vector, this._index++); // 古い値を保存 + return iteold; + }; + /** + * 後置き--演算子 + */ + iterator.prototype.decrement = function () { + var iteold = new iterator(this._vector, this._index--); // 古い値を保存 + return iteold; + }; + /** + * ptr + */ + iterator.prototype.ptr = function () { + return this._vector._ptr[this._index]; + }; + /** + * =演算子のオーバーロード + */ + iterator.prototype.substitution = function (ite) { + this._index = ite._index; + this._vector = ite._vector; + return this; + }; + /** + * !=演算子のオーバーロード + */ + iterator.prototype.notEqual = function (ite) { + return this._index != ite._index || this._vector != ite._vector; + }; + return iterator; +}()); +exports.iterator = iterator; +// Namespace definition for compatibility. +var $ = __importStar(require("./csmvector")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.csmVector = $.csmVector; + Live2DCubismFramework.iterator = $.iterator; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=csmvector.js.map \ No newline at end of file diff --git a/live2demo/Framework/type/csmvector.js.map b/live2demo/Framework/type/csmvector.js.map new file mode 100644 index 0000000..45de157 --- /dev/null +++ b/live2demo/Framework/type/csmvector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"csmvector.js","sourceRoot":"","sources":["../../src/type/csmvector.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH;;GAEG;AACH;IACE;;;;OAIG;IACH,mBAAY,eAAmB;QAAnB,gCAAA,EAAA,mBAAmB;QAC7B,IAAI,eAAe,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;IACH,CAAC;IAED;;OAEG;IACI,sBAAE,GAAT,UAAU,KAAa;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,uBAAG,GAAV,UAAW,KAAa,EAAE,KAAQ;QAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,uBAAG,GAAV,UAAW,MAAU;QAAV,uBAAA,EAAA,UAAU;QACnB,IAAM,GAAG,GAAQ,IAAI,KAAK,EAAK,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACxC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACxB;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACI,4BAAQ,GAAf,UAAgB,KAAQ;QACtB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;YAChC,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CACnE,CAAC;SACH;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,yBAAK,GAAZ;QACE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IAED;;;OAGG;IACI,2BAAO,GAAd;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,0BAAM,GAAb,UAAc,OAAe,EAAE,KAAQ;QACrC,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3B,IAAI,OAAO,GAAG,OAAO,EAAE;YACrB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;SAC7C;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;SACtB;QAED,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,0BAAM,GAAb,UAAc,OAAe,EAAE,KAAe;QAAf,sBAAA,EAAA,YAAe;QAC5C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,8BAAU,GAAjB,UACE,OAAe,EACf,KAAiB,EACjB,gBAAuB;QADvB,sBAAA,EAAA,YAAiB;QACjB,iCAAA,EAAA,uBAAuB;QAEvB,IAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC;QAEnC,IAAI,OAAO,GAAG,OAAO,EAAE;YACrB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;YAE5C,IAAI,gBAAgB,EAAE;gBACpB,KAAK,IAAI,CAAC,GAAW,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;oBACjD,IAAI,OAAO,KAAK,IAAI,UAAU,EAAE;wBAC9B,MAAM;wBACN,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;qBACxD,CAAC,gBAAgB;yBACb;wBACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;qBACtB;iBACF;aACF;iBAAM;gBACL,KAAK,IAAI,CAAC,GAAW,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;oBACjD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;iBACtB;aACF;SACF;aAAM;YACL,wBAAwB;YACxB,KAAK;YACL,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY;SACtD;QACD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACI,0BAAM,GAAb,UACE,QAAqB,EACrB,KAAkB,EAClB,GAAgB;QAEhB,IAAI,KAAK,GAAW,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAM,KAAK,GAAW,KAAK,CAAC,MAAM,CAAC;QACnC,IAAM,KAAK,GAAW,GAAG,CAAC,MAAM,CAAC;QAEjC,IAAM,QAAQ,GAAW,KAAK,GAAG,KAAK,CAAC;QAEvC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAE5C,uBAAuB;QACvB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnC,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;gBAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;aACtC;SACF;QAED,KAAK,IAAI,CAAC,GAAW,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC1C;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,0BAAM,GAAb,UAAc,KAAa;QACzB,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE;YACpC,OAAO,KAAK,CAAC,CAAC,QAAQ;SACvB;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3B,EAAE,IAAI,CAAC,KAAK,CAAC;QAEb,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,yBAAK,GAAZ,UAAa,GAAgB;QAC3B,IAAM,KAAK,GAAW,GAAG,CAAC,MAAM,CAAC;QACjC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE;YACpC,OAAO,GAAG,CAAC,CAAC,QAAQ;SACrB;QAED,KAAK;QACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3B,EAAE,IAAI,CAAC,KAAK,CAAC;QAEb,IAAM,IAAI,GAAgB,IAAI,QAAQ,CAAI,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,mCAAe,GAAtB,UAAuB,OAAe;QACpC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;YAC5B,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE;gBACvB,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;aAC1B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;gBAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;aAC1B;SACF;IACH,CAAC;IAED;;OAEG;IACI,yBAAK,GAAZ;QACE,IAAM,GAAG,GACP,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACI,uBAAG,GAAV;QACE,IAAM,GAAG,GAAgB,IAAI,QAAQ,CAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,6BAAS,GAAhB,UAAiB,MAAc;QAC7B,IAAM,SAAS,GAAG,IAAI,SAAS,EAAK,CAAC;QACrC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC1C,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAE9C,OAAO,SAAS,CAAC;IACnB,CAAC;IAMe,uBAAa,GAAG,EAAE,CAAC,CAAC,mBAAmB;IACzD,gBAAC;CAAA,AA9PD,IA8PC;AA9PY,8BAAS;AAgQtB;IACE;;OAEG;IACH,kBAAmB,CAAgB,EAAE,KAAc;QACjD,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,sBAAG,GAAV,UAAW,GAAgB;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,+BAAY,GAAnB;QACE,EAAE,IAAI,CAAC,MAAM,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,+BAAY,GAAnB;QACE,EAAE,IAAI,CAAC,MAAM,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,4BAAS,GAAhB;QACE,IAAM,MAAM,GAAG,IAAI,QAAQ,CAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,4BAAS,GAAhB;QACE,IAAM,MAAM,GAAG,IAAI,QAAQ,CAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,sBAAG,GAAV;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,+BAAY,GAAnB,UAAoB,GAAgB;QAClC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,2BAAQ,GAAf,UAAgB,GAAgB;QAC9B,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;IAClE,CAAC;IAIH,eAAC;AAAD,CAAC,AA3ED,IA2EC;AA3EY,4BAAQ;AA6ErB,0CAA0C;AAC1C,6CAAiC;AACjC,2DAA2D;AAC3D,IAAiB,qBAAqB,CAKrC;AALD,WAAiB,qBAAqB;IACvB,+BAAS,GAAG,CAAC,CAAC,SAAS,CAAC;IAExB,8BAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AAErC,CAAC,EALgB,qBAAqB,qCAArB,qBAAqB,QAKrC"} \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismdebug.d.ts b/live2demo/Framework/utils/cubismdebug.d.ts new file mode 100644 index 0000000..29d563f --- /dev/null +++ b/live2demo/Framework/utils/cubismdebug.d.ts @@ -0,0 +1,49 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { LogLevel } from '../live2dcubismframework'; +export declare const CubismLogPrint: (level: LogLevel, fmt: string, args: any[]) => void; +export declare const CubismLogPrintIn: (level: LogLevel, fmt: string, args: any[]) => void; +export declare const CSM_ASSERT: (expr: any) => void; +export declare let CubismLogVerbose: (fmt: string, ...args: any[]) => void; +export declare let CubismLogDebug: (fmt: string, ...args: any[]) => void; +export declare let CubismLogInfo: (fmt: string, ...args: any[]) => void; +export declare let CubismLogWarning: (fmt: string, ...args: any[]) => void; +export declare let CubismLogError: (fmt: string, ...args: any[]) => void; +/** + * デバッグ用のユーティリティクラス。 + * ログの出力、バイトのダンプなど + */ +export declare class CubismDebug { + /** + * ログを出力する。第一引数にログレベルを設定する。 + * CubismFramework.initialize()時にオプションで設定されたログ出力レベルを下回る場合はログに出さない。 + * + * @param logLevel ログレベルの設定 + * @param format 書式付き文字列 + * @param args 可変長引数 + */ + static print(logLevel: LogLevel, format: string, args?: any[]): void; + /** + * データから指定した長さだけダンプ出力する。 + * CubismFramework.initialize()時にオプションで設定されたログ出力レベルを下回る場合はログに出さない。 + * + * @param logLevel ログレベルの設定 + * @param data ダンプするデータ + * @param length ダンプする長さ + */ + static dumpBytes(logLevel: LogLevel, data: Uint8Array, length: number): void; + /** + * private コンストラクタ + */ + private constructor(); +} +import * as $ from './cubismdebug'; +export declare namespace Live2DCubismFramework { + const CubismDebug: typeof $.CubismDebug; + type CubismDebug = $.CubismDebug; +} +//# sourceMappingURL=cubismdebug.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismdebug.d.ts.map b/live2demo/Framework/utils/cubismdebug.d.ts.map new file mode 100644 index 0000000..18f4477 --- /dev/null +++ b/live2demo/Framework/utils/cubismdebug.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismdebug.d.ts","sourceRoot":"","sources":["../../src/utils/cubismdebug.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAmB,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAErE,eAAO,MAAM,cAAc,UAAW,QAAQ,OAAO,MAAM,QAAQ,GAAG,EAAE,SAEvE,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,QAAQ,OAAO,MAAM,QAAQ,GAAG,EAAE,SAEzE,CAAC;AAEF,eAAO,MAAM,UAAU,SAAU,GAAG,SAEnC,CAAC;AAEF,eAAO,IAAI,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AACnE,eAAO,IAAI,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AACjE,eAAO,IAAI,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAChE,eAAO,IAAI,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AACnE,eAAO,IAAI,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAgEjE;;;GAGG;AACH,qBAAa,WAAW;IACtB;;;;;;;OAOG;WACW,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI;IAiB3E;;;;;;;OAOG;WACW,SAAS,CACrB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,GACb,IAAI;IAUP;;OAEG;IACH,OAAO;CACR;AAGD,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAEnC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,WAAW,sBAAgB,CAAC;IACzC,KAAY,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;CACzC"} \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismdebug.js b/live2demo/Framework/utils/cubismdebug.js new file mode 100644 index 0000000..ef94a54 --- /dev/null +++ b/live2demo/Framework/utils/cubismdebug.js @@ -0,0 +1,221 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismDebug = exports.CubismLogError = exports.CubismLogWarning = exports.CubismLogInfo = exports.CubismLogDebug = exports.CubismLogVerbose = exports.CSM_ASSERT = exports.CubismLogPrintIn = exports.CubismLogPrint = void 0; +var cubismframeworkconfig_1 = require("../cubismframeworkconfig"); +var live2dcubismframework_1 = require("../live2dcubismframework"); +var CubismLogPrint = function (level, fmt, args) { + CubismDebug.print(level, '[CSM]' + fmt, args); +}; +exports.CubismLogPrint = CubismLogPrint; +var CubismLogPrintIn = function (level, fmt, args) { + (0, exports.CubismLogPrint)(level, fmt + '\n', args); +}; +exports.CubismLogPrintIn = CubismLogPrintIn; +var CSM_ASSERT = function (expr) { + console.assert(expr); +}; +exports.CSM_ASSERT = CSM_ASSERT; +if (cubismframeworkconfig_1.CSM_LOG_LEVEL <= cubismframeworkconfig_1.CSM_LOG_LEVEL_VERBOSE) { + exports.CubismLogVerbose = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Verbose, '[V]' + fmt, args); + }; + exports.CubismLogDebug = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Debug, '[D]' + fmt, args); + }; + exports.CubismLogInfo = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Info, '[I]' + fmt, args); + }; + exports.CubismLogWarning = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Warning, '[W]' + fmt, args); + }; + exports.CubismLogError = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Error, '[E]' + fmt, args); + }; +} +else if (cubismframeworkconfig_1.CSM_LOG_LEVEL == cubismframeworkconfig_1.CSM_LOG_LEVEL_DEBUG) { + exports.CubismLogDebug = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Debug, '[D]' + fmt, args); + }; + exports.CubismLogInfo = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Info, '[I]' + fmt, args); + }; + exports.CubismLogWarning = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Warning, '[W]' + fmt, args); + }; + exports.CubismLogError = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Error, '[E]' + fmt, args); + }; +} +else if (cubismframeworkconfig_1.CSM_LOG_LEVEL == cubismframeworkconfig_1.CSM_LOG_LEVEL_INFO) { + exports.CubismLogInfo = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Info, '[I]' + fmt, args); + }; + exports.CubismLogWarning = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Warning, '[W]' + fmt, args); + }; + exports.CubismLogError = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Error, '[E]' + fmt, args); + }; +} +else if (cubismframeworkconfig_1.CSM_LOG_LEVEL == cubismframeworkconfig_1.CSM_LOG_LEVEL_WARNING) { + exports.CubismLogWarning = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Warning, '[W]' + fmt, args); + }; + exports.CubismLogError = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Error, '[E]' + fmt, args); + }; +} +else if (cubismframeworkconfig_1.CSM_LOG_LEVEL == cubismframeworkconfig_1.CSM_LOG_LEVEL_ERROR) { + exports.CubismLogError = function (fmt) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + (0, exports.CubismLogPrintIn)(live2dcubismframework_1.LogLevel.LogLevel_Error, '[E]' + fmt, args); + }; +} +/** + * デバッグ用のユーティリティクラス。 + * ログの出力、バイトのダンプなど + */ +var CubismDebug = /** @class */ (function () { + /** + * private コンストラクタ + */ + function CubismDebug() { + } + /** + * ログを出力する。第一引数にログレベルを設定する。 + * CubismFramework.initialize()時にオプションで設定されたログ出力レベルを下回る場合はログに出さない。 + * + * @param logLevel ログレベルの設定 + * @param format 書式付き文字列 + * @param args 可変長引数 + */ + CubismDebug.print = function (logLevel, format, args) { + // オプションで設定されたログ出力レベルを下回る場合はログに出さない + if (logLevel < live2dcubismframework_1.CubismFramework.getLoggingLevel()) { + return; + } + var logPrint = live2dcubismframework_1.CubismFramework.coreLogFunction; + if (!logPrint) + return; + var buffer = format.replace(/\{(\d+)\}/g, function (m, k) { + return args[k]; + }); + logPrint(buffer); + }; + /** + * データから指定した長さだけダンプ出力する。 + * CubismFramework.initialize()時にオプションで設定されたログ出力レベルを下回る場合はログに出さない。 + * + * @param logLevel ログレベルの設定 + * @param data ダンプするデータ + * @param length ダンプする長さ + */ + CubismDebug.dumpBytes = function (logLevel, data, length) { + for (var i = 0; i < length; i++) { + if (i % 16 == 0 && i > 0) + this.print(logLevel, '\n'); + else if (i % 8 == 0 && i > 0) + this.print(logLevel, ' '); + this.print(logLevel, '{0} ', [data[i] & 0xff]); + } + this.print(logLevel, '\n'); + }; + return CubismDebug; +}()); +exports.CubismDebug = CubismDebug; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismdebug")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismDebug = $.CubismDebug; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismdebug.js.map \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismdebug.js.map b/live2demo/Framework/utils/cubismdebug.js.map new file mode 100644 index 0000000..3ebd1be --- /dev/null +++ b/live2demo/Framework/utils/cubismdebug.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismdebug.js","sourceRoot":"","sources":["../../src/utils/cubismdebug.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismjson.d.ts b/live2demo/Framework/utils/cubismjson.d.ts new file mode 100644 index 0000000..6a0f077 --- /dev/null +++ b/live2demo/Framework/utils/cubismjson.d.ts @@ -0,0 +1,484 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { csmMap } from '../type/csmmap'; +import { csmString } from '../type/csmstring'; +import { csmVector } from '../type/csmvector'; +/** + * パースしたJSONエレメントの要素の基底クラス。 + */ +export declare abstract class Value { + /** + * コンストラクタ + */ + constructor(); + /** + * 要素を文字列型で返す(csmString型) + */ + abstract getString(defaultValue?: string, indent?: string): string; + /** + * 要素を文字列型で返す(string) + */ + getRawString(defaultValue?: string, indent?: string): string; + /** + * 要素を数値型で返す(number) + */ + toInt(defaultValue?: number): number; + /** + * 要素を数値型で返す(number) + */ + toFloat(defaultValue?: number): number; + /** + * 要素を真偽値で返す(boolean) + */ + toBoolean(defaultValue?: boolean): boolean; + /** + * サイズを返す + */ + getSize(): number; + /** + * 要素を配列で返す(Value[]) + */ + getArray(defaultValue?: Value[]): Value[]; + /** + * 要素をコンテナで返す(array) + */ + getVector(defaultValue?: csmVector): csmVector; + /** + * 要素をマップで返す(csmMap) + */ + getMap(defaultValue?: csmMap): csmMap; + /** + * 添字演算子[index] + */ + getValueByIndex(index: number): Value; + /** + * 添字演算子[string | csmString] + */ + getValueByString(s: string | csmString): Value; + /** + * マップのキー一覧をコンテナで返す + * + * @return マップのキーの一覧 + */ + getKeys(): csmVector; + /** + * Valueの種類がエラー値ならtrue + */ + isError(): boolean; + /** + * Valueの種類がnullならtrue + */ + isNull(): boolean; + /** + * Valueの種類が真偽値ならtrue + */ + isBool(): boolean; + /** + * Valueの種類が数値型ならtrue + */ + isFloat(): boolean; + /** + * Valueの種類が文字列ならtrue + */ + isString(): boolean; + /** + * Valueの種類が配列ならtrue + */ + isArray(): boolean; + /** + * Valueの種類がマップ型ならtrue + */ + isMap(): boolean; + /** + * 引数の値と等しければtrue + */ + equals(value: csmString): boolean; + equals(value: string): boolean; + equals(value: number): boolean; + equals(value: boolean): boolean; + /** + * Valueの値が静的ならtrue、静的なら解放しない + */ + isStatic(): boolean; + /** + * Valueにエラー値をセットする + */ + setErrorNotForClientCall(errorStr: string): Value; + /** + * 初期化用メソッド + */ + static staticInitializeNotForClientCall(): void; + /** + * リリース用メソッド + */ + static staticReleaseNotForClientCall(): void; + protected _stringBuffer: string; + private static s_dummyKeys; + static errorValue: Value; + static nullValue: Value; + [key: string]: any; +} +/** + * Ascii文字のみ対応した最小限の軽量JSONパーサ。 + * 仕様はJSONのサブセットとなる。 + * 設定ファイル(model3.json)などのロード用 + * + * [未対応項目] + * ・日本語などの非ASCII文字 + * ・eによる指数表現 + */ +export declare class CubismJson { + /** + * コンストラクタ + */ + constructor(buffer?: ArrayBuffer, length?: number); + /** + * バイトデータから直接ロードしてパースする + * + * @param buffer バッファ + * @param size バッファサイズ + * @return CubismJsonクラスのインスタンス。失敗したらNULL + */ + static create(buffer: ArrayBuffer, size: number): CubismJson; + /** + * パースしたJSONオブジェクトの解放処理 + * + * @param instance CubismJsonクラスのインスタンス + */ + static delete(instance: CubismJson): void; + /** + * パースしたJSONのルート要素を返す + */ + getRoot(): Value; + /** + * UnicodeのバイナリをStringに変換 + * + * @param buffer 変換するバイナリデータ + * @return 変換後の文字列 + */ + static arrayBufferToString(buffer: ArrayBuffer): string; + /** + * エンコード、パディング + */ + private static pad; + /** + * JSONのパースを実行する + * @param buffer パース対象のデータバイト + * @param size データバイトのサイズ + * return true : 成功 + * return false: 失敗 + */ + parseBytes(buffer: ArrayBuffer, size: number, parseCallback?: parseJsonObject): boolean; + /** + * パース時のエラー値を返す + */ + getParseError(): string; + /** + * ルート要素の次の要素がファイルの終端だったらtrueを返す + */ + checkEndOfFile(): boolean; + /** + * JSONエレメントからValue(float,String,Value*,Array,null,true,false)をパースする + * エレメントの書式に応じて内部でParseString(), ParseObject(), ParseArray()を呼ぶ + * + * @param buffer JSONエレメントのバッファ + * @param length パースする長さ + * @param begin パースを開始する位置 + * @param outEndPos パース終了時の位置 + * @return パースから取得したValueオブジェクト + */ + protected parseValue(buffer: string, length: number, begin: number, outEndPos: number[]): Value; + /** + * 次の「"」までの文字列をパースする。 + * + * @param string -> パース対象の文字列 + * @param length -> パースする長さ + * @param begin -> パースを開始する位置 + * @param outEndPos -> パース終了時の位置 + * @return パースした文F字列要素 + */ + protected parseString(string: string, length: number, begin: number, outEndPos: number[]): string; + /** + * JSONのオブジェクトエレメントをパースしてValueオブジェクトを返す + * + * @param buffer JSONエレメントのバッファ + * @param length パースする長さ + * @param begin パースを開始する位置 + * @param outEndPos パース終了時の位置 + * @return パースから取得したValueオブジェクト + */ + protected parseObject(buffer: string, length: number, begin: number, outEndPos: number[]): Value; + /** + * 次の「"」までの文字列をパースする。 + * @param buffer JSONエレメントのバッファ + * @param length パースする長さ + * @param begin パースを開始する位置 + * @param outEndPos パース終了時の位置 + * @return パースから取得したValueオブジェクト + */ + protected parseArray(buffer: string, length: number, begin: number, outEndPos: number[]): Value; + _parseCallback: parseJsonObject; + _error: string; + _lineCount: number; + _root: Value; +} +interface parseJsonObject { + (obj: Value, map: JsonMap): JsonMap; +} +/** + * パースしたJSONの要素をfloat値として扱う + */ +export declare class JsonFloat extends Value { + /** + * コンストラクタ + */ + constructor(v: number); + /** + * Valueの種類が数値型ならtrue + */ + isFloat(): boolean; + /** + * 要素を文字列で返す(csmString型) + */ + getString(defaultValue: string, indent: string): string; + /** + * 要素を数値型で返す(number) + */ + toInt(defaultValue?: number): number; + /** + * 要素を数値型で返す(number) + */ + toFloat(defaultValue?: number): number; + /** + * 引数の値と等しければtrue + */ + equals(value: csmString): boolean; + equals(value: string): boolean; + equals(value: number): boolean; + equals(value: boolean): boolean; + private _value; +} +/** + * パースしたJSONの要素を真偽値として扱う + */ +export declare class JsonBoolean extends Value { + /** + * Valueの種類が真偽値ならtrue + */ + isBool(): boolean; + /** + * 要素を真偽値で返す(boolean) + */ + toBoolean(defaultValue?: boolean): boolean; + /** + * 要素を文字列で返す(csmString型) + */ + getString(defaultValue: string, indent: string): string; + /** + * 引数の値と等しければtrue + */ + equals(value: csmString): boolean; + equals(value: string): boolean; + equals(value: number): boolean; + equals(value: boolean): boolean; + /** + * Valueの値が静的ならtrue, 静的なら解放しない + */ + isStatic(): boolean; + /** + * 引数付きコンストラクタ + */ + constructor(v: boolean); + static trueValue: JsonBoolean; + static falseValue: JsonBoolean; + private _boolValue; +} +/** + * パースしたJSONの要素を文字列として扱う + */ +export declare class JsonString extends Value { + /** + * 引数付きコンストラクタ + */ + constructor(s: string); + constructor(s: csmString); + /** + * Valueの種類が文字列ならtrue + */ + isString(): boolean; + /** + * 要素を文字列で返す(csmString型) + */ + getString(defaultValue: string, indent: string): string; + /** + * 引数の値と等しければtrue + */ + equals(value: csmString): boolean; + equals(value: string): boolean; + equals(value: number): boolean; + equals(value: boolean): boolean; +} +/** + * JSONパース時のエラー結果。文字列型のようにふるまう + */ +export declare class JsonError extends JsonString { + /** + * Valueの値が静的ならtrue、静的なら解放しない + */ + isStatic(): boolean; + /** + * エラー情報をセットする + */ + setErrorNotForClientCall(s: string): Value; + /** + * 引数付きコンストラクタ + */ + constructor(s: csmString | string, isStatic: boolean); + /** + * Valueの種類がエラー値ならtrue + */ + isError(): boolean; + protected _isStatic: boolean; +} +/** + * パースしたJSONの要素をNULL値として持つ + */ +export declare class JsonNullvalue extends Value { + /** + * Valueの種類がNULL値ならtrue + */ + isNull(): boolean; + /** + * 要素を文字列で返す(csmString型) + */ + getString(defaultValue: string, indent: string): string; + /** + * Valueの値が静的ならtrue, 静的なら解放しない + */ + isStatic(): boolean; + /** + * Valueにエラー値をセットする + */ + setErrorNotForClientCall(s: string): Value; + /** + * コンストラクタ + */ + constructor(); +} +/** + * パースしたJSONの要素を配列として持つ + */ +export declare class JsonArray extends Value { + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * Valueの種類が配列ならtrue + */ + isArray(): boolean; + /** + * 添字演算子[index] + */ + getValueByIndex(index: number): Value; + /** + * 添字演算子[string | csmString] + */ + getValueByString(s: string | csmString): Value; + /** + * 要素を文字列で返す(csmString型) + */ + getString(defaultValue: string, indent: string): string; + /** + * 配列要素を追加する + * @param v 追加する要素 + */ + add(v: Value): void; + /** + * 要素をコンテナで返す(csmVector) + */ + getVector(defaultValue?: csmVector): csmVector; + /** + * 要素の数を返す + */ + getSize(): number; + private _array; +} +/** + * パースしたJSONの要素をマップとして持つ + */ +export declare class JsonMap extends Value { + /** + * コンストラクタ + */ + constructor(); + /** + * デストラクタ相当の処理 + */ + release(): void; + /** + * Valueの値がMap型ならtrue + */ + isMap(): boolean; + /** + * 添字演算子[string | csmString] + */ + getValueByString(s: string | csmString): Value; + /** + * 添字演算子[index] + */ + getValueByIndex(index: number): Value; + /** + * 要素を文字列で返す(csmString型) + */ + getString(defaultValue: string, indent: string): string; + /** + * 要素をMap型で返す + */ + getMap(defaultValue?: csmMap): csmMap; + /** + * Mapに要素を追加する + */ + put(key: string, v: Value): void; + /** + * Mapからキーのリストを取得する + */ + getKeys(): csmVector; + /** + * Mapの要素数を取得する + */ + getSize(): number; + private _map; + private _keys; +} +import * as $ from './cubismjson'; +export declare namespace Live2DCubismFramework { + const CubismJson: typeof $.CubismJson; + type CubismJson = $.CubismJson; + const JsonArray: typeof $.JsonArray; + type JsonArray = $.JsonArray; + const JsonBoolean: typeof $.JsonBoolean; + type JsonBoolean = $.JsonBoolean; + const JsonError: typeof $.JsonError; + type JsonError = $.JsonError; + const JsonFloat: typeof $.JsonFloat; + type JsonFloat = $.JsonFloat; + const JsonMap: typeof $.JsonMap; + type JsonMap = $.JsonMap; + const JsonNullvalue: typeof $.JsonNullvalue; + type JsonNullvalue = $.JsonNullvalue; + const JsonString: typeof $.JsonString; + type JsonString = $.JsonString; + const Value: typeof $.Value; + type Value = $.Value; +} +export {}; +//# sourceMappingURL=cubismjson.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismjson.d.ts.map b/live2demo/Framework/utils/cubismjson.d.ts.map new file mode 100644 index 0000000..393af0b --- /dev/null +++ b/live2demo/Framework/utils/cubismjson.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismjson.d.ts","sourceRoot":"","sources":["../../src/utils/cubismjson.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismjson.js b/live2demo/Framework/utils/cubismjson.js new file mode 100644 index 0000000..a515644 --- /dev/null +++ b/live2demo/Framework/utils/cubismjson.js @@ -0,0 +1,1094 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.JsonMap = exports.JsonArray = exports.JsonNullvalue = exports.JsonError = exports.JsonString = exports.JsonBoolean = exports.JsonFloat = exports.CubismJson = exports.Value = void 0; +var live2dcubismframework_1 = require("../live2dcubismframework"); +var csmmap_1 = require("../type/csmmap"); +var csmstring_1 = require("../type/csmstring"); +var csmvector_1 = require("../type/csmvector"); +var cubismdebug_1 = require("./cubismdebug"); +// StaticInitializeNotForClientCall()で初期化する +var CSM_JSON_ERROR_TYPE_MISMATCH = 'Error: type mismatch'; +var CSM_JSON_ERROR_INDEX_OF_BOUNDS = 'Error: index out of bounds'; +/** + * パースしたJSONエレメントの要素の基底クラス。 + */ +var Value = /** @class */ (function () { + /** + * コンストラクタ + */ + function Value() { + } + /** + * 要素を文字列型で返す(string) + */ + Value.prototype.getRawString = function (defaultValue, indent) { + return this.getString(defaultValue, indent); + }; + /** + * 要素を数値型で返す(number) + */ + Value.prototype.toInt = function (defaultValue) { + if (defaultValue === void 0) { defaultValue = 0; } + return defaultValue; + }; + /** + * 要素を数値型で返す(number) + */ + Value.prototype.toFloat = function (defaultValue) { + if (defaultValue === void 0) { defaultValue = 0; } + return defaultValue; + }; + /** + * 要素を真偽値で返す(boolean) + */ + Value.prototype.toBoolean = function (defaultValue) { + if (defaultValue === void 0) { defaultValue = false; } + return defaultValue; + }; + /** + * サイズを返す + */ + Value.prototype.getSize = function () { + return 0; + }; + /** + * 要素を配列で返す(Value[]) + */ + Value.prototype.getArray = function (defaultValue) { + if (defaultValue === void 0) { defaultValue = null; } + return defaultValue; + }; + /** + * 要素をコンテナで返す(array) + */ + Value.prototype.getVector = function (defaultValue) { + if (defaultValue === void 0) { defaultValue = new csmvector_1.csmVector(); } + return defaultValue; + }; + /** + * 要素をマップで返す(csmMap) + */ + Value.prototype.getMap = function (defaultValue) { + return defaultValue; + }; + /** + * 添字演算子[index] + */ + Value.prototype.getValueByIndex = function (index) { + return Value.errorValue.setErrorNotForClientCall(CSM_JSON_ERROR_TYPE_MISMATCH); + }; + /** + * 添字演算子[string | csmString] + */ + Value.prototype.getValueByString = function (s) { + return Value.nullValue.setErrorNotForClientCall(CSM_JSON_ERROR_TYPE_MISMATCH); + }; + /** + * マップのキー一覧をコンテナで返す + * + * @return マップのキーの一覧 + */ + Value.prototype.getKeys = function () { + return Value.s_dummyKeys; + }; + /** + * Valueの種類がエラー値ならtrue + */ + Value.prototype.isError = function () { + return false; + }; + /** + * Valueの種類がnullならtrue + */ + Value.prototype.isNull = function () { + return false; + }; + /** + * Valueの種類が真偽値ならtrue + */ + Value.prototype.isBool = function () { + return false; + }; + /** + * Valueの種類が数値型ならtrue + */ + Value.prototype.isFloat = function () { + return false; + }; + /** + * Valueの種類が文字列ならtrue + */ + Value.prototype.isString = function () { + return false; + }; + /** + * Valueの種類が配列ならtrue + */ + Value.prototype.isArray = function () { + return false; + }; + /** + * Valueの種類がマップ型ならtrue + */ + Value.prototype.isMap = function () { + return false; + }; + Value.prototype.equals = function (value) { + return false; + }; + /** + * Valueの値が静的ならtrue、静的なら解放しない + */ + Value.prototype.isStatic = function () { + return false; + }; + /** + * Valueにエラー値をセットする + */ + Value.prototype.setErrorNotForClientCall = function (errorStr) { + return JsonError.errorValue; + }; + /** + * 初期化用メソッド + */ + Value.staticInitializeNotForClientCall = function () { + JsonBoolean.trueValue = new JsonBoolean(true); + JsonBoolean.falseValue = new JsonBoolean(false); + Value.errorValue = new JsonError('ERROR', true); + Value.nullValue = new JsonNullvalue(); + Value.s_dummyKeys = new csmvector_1.csmVector(); + }; + /** + * リリース用メソッド + */ + Value.staticReleaseNotForClientCall = function () { + JsonBoolean.trueValue = null; + JsonBoolean.falseValue = null; + Value.errorValue = null; + Value.nullValue = null; + Value.s_dummyKeys = null; + }; + return Value; +}()); +exports.Value = Value; +/** + * Ascii文字のみ対応した最小限の軽量JSONパーサ。 + * 仕様はJSONのサブセットとなる。 + * 設定ファイル(model3.json)などのロード用 + * + * [未対応項目] + * ・日本語などの非ASCII文字 + * ・eによる指数表現 + */ +var CubismJson = /** @class */ (function () { + /** + * コンストラクタ + */ + function CubismJson(buffer, length) { + this._parseCallback = cubismjsonextension_1.CubismJsonExtension.parseJsonObject; // パース時に使う処理のコールバック関数 + this._error = null; + this._lineCount = 0; + this._root = null; + if (buffer != undefined) { + this.parseBytes(buffer, length, this._parseCallback); + } + } + /** + * バイトデータから直接ロードしてパースする + * + * @param buffer バッファ + * @param size バッファサイズ + * @return CubismJsonクラスのインスタンス。失敗したらNULL + */ + CubismJson.create = function (buffer, size) { + var json = new CubismJson(); + var succeeded = json.parseBytes(buffer, size, json._parseCallback); + if (!succeeded) { + CubismJson.delete(json); + return null; + } + else { + return json; + } + }; + /** + * パースしたJSONオブジェクトの解放処理 + * + * @param instance CubismJsonクラスのインスタンス + */ + CubismJson.delete = function (instance) { + instance = null; + }; + /** + * パースしたJSONのルート要素を返す + */ + CubismJson.prototype.getRoot = function () { + return this._root; + }; + /** + * UnicodeのバイナリをStringに変換 + * + * @param buffer 変換するバイナリデータ + * @return 変換後の文字列 + */ + CubismJson.arrayBufferToString = function (buffer) { + var uint8Array = new Uint8Array(buffer); + var str = ''; + for (var i = 0, len = uint8Array.length; i < len; ++i) { + str += '%' + this.pad(uint8Array[i].toString(16)); + } + str = decodeURIComponent(str); + return str; + }; + /** + * エンコード、パディング + */ + CubismJson.pad = function (n) { + return n.length < 2 ? '0' + n : n; + }; + /** + * JSONのパースを実行する + * @param buffer パース対象のデータバイト + * @param size データバイトのサイズ + * return true : 成功 + * return false: 失敗 + */ + CubismJson.prototype.parseBytes = function (buffer, size, parseCallback) { + var endPos = new Array(1); // 参照渡しにするため配列 + var decodeBuffer = CubismJson.arrayBufferToString(buffer); + if (parseCallback == undefined) { + this._root = this.parseValue(decodeBuffer, size, 0, endPos); + } + else { + // TypeScript標準のJSONパーサを使う + this._root = parseCallback(JSON.parse(decodeBuffer), new JsonMap()); + } + if (this._error) { + var strbuf = '\0'; + strbuf = 'Json parse error : @line ' + (this._lineCount + 1) + '\n'; + this._root = new JsonString(strbuf); + (0, cubismdebug_1.CubismLogInfo)('{0}', this._root.getRawString()); + return false; + } + else if (this._root == null) { + this._root = new JsonError(new csmstring_1.csmString(this._error), false); // rootは解放されるのでエラーオブジェクトを別途作成する + return false; + } + return true; + }; + /** + * パース時のエラー値を返す + */ + CubismJson.prototype.getParseError = function () { + return this._error; + }; + /** + * ルート要素の次の要素がファイルの終端だったらtrueを返す + */ + CubismJson.prototype.checkEndOfFile = function () { + return this._root.getArray()[1].equals('EOF'); + }; + /** + * JSONエレメントからValue(float,String,Value*,Array,null,true,false)をパースする + * エレメントの書式に応じて内部でParseString(), ParseObject(), ParseArray()を呼ぶ + * + * @param buffer JSONエレメントのバッファ + * @param length パースする長さ + * @param begin パースを開始する位置 + * @param outEndPos パース終了時の位置 + * @return パースから取得したValueオブジェクト + */ + CubismJson.prototype.parseValue = function (buffer, length, begin, outEndPos) { + if (this._error) + return null; + var o = null; + var i = begin; + var f; + for (; i < length; i++) { + var c = buffer[i]; + switch (c) { + case '-': + case '.': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': { + var afterString = new Array(1); // 参照渡しにするため + f = (0, live2dcubismframework_1.strtod)(buffer.slice(i), afterString); + outEndPos[0] = buffer.indexOf(afterString[0]); + return new JsonFloat(f); + } + case '"': + return new JsonString(this.parseString(buffer, length, i + 1, outEndPos)); // \"の次の文字から + case '[': + o = this.parseArray(buffer, length, i + 1, outEndPos); + return o; + case '{': + o = this.parseObject(buffer, length, i + 1, outEndPos); + return o; + case 'n': // null以外にない + if (i + 3 < length) { + o = new JsonNullvalue(); // 解放できるようにする + outEndPos[0] = i + 4; + } + else { + this._error = 'parse null'; + } + return o; + case 't': // true以外にない + if (i + 3 < length) { + o = JsonBoolean.trueValue; + outEndPos[0] = i + 4; + } + else { + this._error = 'parse true'; + } + return o; + case 'f': // false以外にない + if (i + 4 < length) { + o = JsonBoolean.falseValue; + outEndPos[0] = i + 5; + } + else { + this._error = "illegal ',' position"; + } + return o; + case ',': // Array separator + this._error = "illegal ',' position"; + return null; + case ']': // 不正な}だがスキップする。配列の最後に不要な , があると思われる + outEndPos[0] = i; // 同じ文字を再処理 + return null; + case '\n': + this._lineCount++; + case ' ': + case '\t': + case '\r': + default: + // スキップ + break; + } + } + this._error = 'illegal end of value'; + return null; + }; + /** + * 次の「"」までの文字列をパースする。 + * + * @param string -> パース対象の文字列 + * @param length -> パースする長さ + * @param begin -> パースを開始する位置 + * @param outEndPos -> パース終了時の位置 + * @return パースした文F字列要素 + */ + CubismJson.prototype.parseString = function (string, length, begin, outEndPos) { + if (this._error) + return null; + var i = begin; + var c, c2; + var ret = new csmstring_1.csmString(''); + var bufStart = begin; // sbufに登録されていない文字の開始位置 + for (; i < length; i++) { + c = string[i]; + switch (c) { + case '"': { + // 終端の”、エスケープ文字は別に処理されるのでここに来ない + outEndPos[0] = i + 1; // ”の次の文字 + ret.append(string.slice(bufStart), i - bufStart); // 前の文字までを登録する + return ret.s; + } + case '//': { + // エスケープの場合 + i++; // 2文字をセットで扱う + if (i - 1 > bufStart) { + ret.append(string.slice(bufStart), i - bufStart); // 前の文字までを登録する + } + bufStart = i + 1; // エスケープ(2文字)の次の文字から + if (i < length) { + c2 = string[i]; + switch (c2) { + case '\\': + ret.expansion(1, '\\'); + break; + case '"': + ret.expansion(1, '"'); + break; + case '/': + ret.expansion(1, '/'); + break; + case 'b': + ret.expansion(1, '\b'); + break; + case 'f': + ret.expansion(1, '\f'); + break; + case 'n': + ret.expansion(1, '\n'); + break; + case 'r': + ret.expansion(1, '\r'); + break; + case 't': + ret.expansion(1, '\t'); + break; + case 'u': + this._error = 'parse string/unicord escape not supported'; + break; + default: + break; + } + } + else { + this._error = 'parse string/escape error'; + } + } + default: { + break; + } + } + } + this._error = 'parse string/illegal end'; + return null; + }; + /** + * JSONのオブジェクトエレメントをパースしてValueオブジェクトを返す + * + * @param buffer JSONエレメントのバッファ + * @param length パースする長さ + * @param begin パースを開始する位置 + * @param outEndPos パース終了時の位置 + * @return パースから取得したValueオブジェクト + */ + CubismJson.prototype.parseObject = function (buffer, length, begin, outEndPos) { + if (this._error) + return null; + var ret = new JsonMap(); + // Key: Value + var key = ''; + var i = begin; + var c = ''; + var localRetEndPos2 = Array(1); + var ok = false; + // , が続く限りループ + for (; i < length; i++) { + FOR_LOOP: for (; i < length; i++) { + c = buffer[i]; + switch (c) { + case '"': + key = this.parseString(buffer, length, i + 1, localRetEndPos2); + if (this._error) { + return null; + } + i = localRetEndPos2[0]; + ok = true; + break FOR_LOOP; //-- loopから出る + case '}': // 閉じカッコ + outEndPos[0] = i + 1; + return ret; // 空 + case ':': + this._error = "illegal ':' position"; + break; + case '\n': + this._lineCount++; + default: + break; // スキップする文字 + } + } + if (!ok) { + this._error = 'key not found'; + return null; + } + ok = false; + // : をチェック + FOR_LOOP2: for (; i < length; i++) { + c = buffer[i]; + switch (c) { + case ':': + ok = true; + i++; + break FOR_LOOP2; + case '}': + this._error = "illegal '}' position"; + break; + case '\n': + this._lineCount++; + // case ' ': case '\t' : case '\r': + default: + break; // スキップする文字 + } + } + if (!ok) { + this._error = "':' not found"; + return null; + } + // 値をチェック + var value = this.parseValue(buffer, length, i, localRetEndPos2); + if (this._error) { + return null; + } + i = localRetEndPos2[0]; + // ret.put(key, value); + ret.put(key, value); + FOR_LOOP3: for (; i < length; i++) { + c = buffer[i]; + switch (c) { + case ',': + break FOR_LOOP3; + case '}': + outEndPos[0] = i + 1; + return ret; // 正常終了 + case '\n': + this._lineCount++; + default: + break; // スキップ + } + } + } + this._error = 'illegal end of perseObject'; + return null; + }; + /** + * 次の「"」までの文字列をパースする。 + * @param buffer JSONエレメントのバッファ + * @param length パースする長さ + * @param begin パースを開始する位置 + * @param outEndPos パース終了時の位置 + * @return パースから取得したValueオブジェクト + */ + CubismJson.prototype.parseArray = function (buffer, length, begin, outEndPos) { + if (this._error) + return null; + var ret = new JsonArray(); + // key : value + var i = begin; + var c; + var localRetEndpos2 = new Array(1); + // , が続く限りループ + for (; i < length; i++) { + // : をチェック + var value = this.parseValue(buffer, length, i, localRetEndpos2); + if (this._error) { + return null; + } + i = localRetEndpos2[0]; + if (value) { + ret.add(value); + } + // FOR_LOOP3: + // boolean breakflag = false; + FOR_LOOP: for (; i < length; i++) { + c = buffer[i]; + switch (c) { + case ',': + // breakflag = true; + // break; // 次のKEY, VAlUEへ + break FOR_LOOP; + case ']': + outEndPos[0] = i + 1; + return ret; // 終了 + case '\n': + ++this._lineCount; + //case ' ': case '\t': case '\r': + default: + break; // スキップ + } + } + } + ret = void 0; + this._error = 'illegal end of parseObject'; + return null; + }; + return CubismJson; +}()); +exports.CubismJson = CubismJson; +/** + * パースしたJSONの要素をfloat値として扱う + */ +var JsonFloat = /** @class */ (function (_super) { + __extends(JsonFloat, _super); + /** + * コンストラクタ + */ + function JsonFloat(v) { + var _this = _super.call(this) || this; + _this._value = v; + return _this; + } + /** + * Valueの種類が数値型ならtrue + */ + JsonFloat.prototype.isFloat = function () { + return true; + }; + /** + * 要素を文字列で返す(csmString型) + */ + JsonFloat.prototype.getString = function (defaultValue, indent) { + var strbuf = '\0'; + this._value = parseFloat(strbuf); + this._stringBuffer = strbuf; + return this._stringBuffer; + }; + /** + * 要素を数値型で返す(number) + */ + JsonFloat.prototype.toInt = function (defaultValue) { + if (defaultValue === void 0) { defaultValue = 0; } + return parseInt(this._value.toString()); + }; + /** + * 要素を数値型で返す(number) + */ + JsonFloat.prototype.toFloat = function (defaultValue) { + if (defaultValue === void 0) { defaultValue = 0.0; } + return this._value; + }; + JsonFloat.prototype.equals = function (value) { + if ('number' === typeof value) { + // int + if (Math.round(value)) { + return false; + } + // float + else { + return value == this._value; + } + } + return false; + }; + return JsonFloat; +}(Value)); +exports.JsonFloat = JsonFloat; +/** + * パースしたJSONの要素を真偽値として扱う + */ +var JsonBoolean = /** @class */ (function (_super) { + __extends(JsonBoolean, _super); + /** + * 引数付きコンストラクタ + */ + function JsonBoolean(v) { + var _this = _super.call(this) || this; + _this._boolValue = v; + return _this; + } + /** + * Valueの種類が真偽値ならtrue + */ + JsonBoolean.prototype.isBool = function () { + return true; + }; + /** + * 要素を真偽値で返す(boolean) + */ + JsonBoolean.prototype.toBoolean = function (defaultValue) { + if (defaultValue === void 0) { defaultValue = false; } + return this._boolValue; + }; + /** + * 要素を文字列で返す(csmString型) + */ + JsonBoolean.prototype.getString = function (defaultValue, indent) { + this._stringBuffer = this._boolValue ? 'true' : 'false'; + return this._stringBuffer; + }; + JsonBoolean.prototype.equals = function (value) { + if ('boolean' === typeof value) { + return value == this._boolValue; + } + return false; + }; + /** + * Valueの値が静的ならtrue, 静的なら解放しない + */ + JsonBoolean.prototype.isStatic = function () { + return true; + }; + return JsonBoolean; +}(Value)); +exports.JsonBoolean = JsonBoolean; +/** + * パースしたJSONの要素を文字列として扱う + */ +var JsonString = /** @class */ (function (_super) { + __extends(JsonString, _super); + function JsonString(s) { + var _this = _super.call(this) || this; + if ('string' === typeof s) { + _this._stringBuffer = s; + } + if (s instanceof csmstring_1.csmString) { + _this._stringBuffer = s.s; + } + return _this; + } + /** + * Valueの種類が文字列ならtrue + */ + JsonString.prototype.isString = function () { + return true; + }; + /** + * 要素を文字列で返す(csmString型) + */ + JsonString.prototype.getString = function (defaultValue, indent) { + return this._stringBuffer; + }; + JsonString.prototype.equals = function (value) { + if ('string' === typeof value) { + return this._stringBuffer == value; + } + if (value instanceof csmstring_1.csmString) { + return this._stringBuffer == value.s; + } + return false; + }; + return JsonString; +}(Value)); +exports.JsonString = JsonString; +/** + * JSONパース時のエラー結果。文字列型のようにふるまう + */ +var JsonError = /** @class */ (function (_super) { + __extends(JsonError, _super); + /** + * 引数付きコンストラクタ + */ + function JsonError(s, isStatic) { + var _this = this; + if ('string' === typeof s) { + _this = _super.call(this, s) || this; + } + else { + _this = _super.call(this, s) || this; + } + _this._isStatic = isStatic; + return _this; + } + /** + * Valueの値が静的ならtrue、静的なら解放しない + */ + JsonError.prototype.isStatic = function () { + return this._isStatic; + }; + /** + * エラー情報をセットする + */ + JsonError.prototype.setErrorNotForClientCall = function (s) { + this._stringBuffer = s; + return this; + }; + /** + * Valueの種類がエラー値ならtrue + */ + JsonError.prototype.isError = function () { + return true; + }; + return JsonError; +}(JsonString)); +exports.JsonError = JsonError; +/** + * パースしたJSONの要素をNULL値として持つ + */ +var JsonNullvalue = /** @class */ (function (_super) { + __extends(JsonNullvalue, _super); + /** + * コンストラクタ + */ + function JsonNullvalue() { + var _this = _super.call(this) || this; + _this._stringBuffer = 'NullValue'; + return _this; + } + /** + * Valueの種類がNULL値ならtrue + */ + JsonNullvalue.prototype.isNull = function () { + return true; + }; + /** + * 要素を文字列で返す(csmString型) + */ + JsonNullvalue.prototype.getString = function (defaultValue, indent) { + return this._stringBuffer; + }; + /** + * Valueの値が静的ならtrue, 静的なら解放しない + */ + JsonNullvalue.prototype.isStatic = function () { + return true; + }; + /** + * Valueにエラー値をセットする + */ + JsonNullvalue.prototype.setErrorNotForClientCall = function (s) { + this._stringBuffer = s; + return JsonError.nullValue; + }; + return JsonNullvalue; +}(Value)); +exports.JsonNullvalue = JsonNullvalue; +/** + * パースしたJSONの要素を配列として持つ + */ +var JsonArray = /** @class */ (function (_super) { + __extends(JsonArray, _super); + /** + * コンストラクタ + */ + function JsonArray() { + var _this = _super.call(this) || this; + _this._array = new csmvector_1.csmVector(); + return _this; + } + /** + * デストラクタ相当の処理 + */ + JsonArray.prototype.release = function () { + for (var ite = this._array.begin(); ite.notEqual(this._array.end()); ite.preIncrement()) { + var v = ite.ptr(); + if (v && !v.isStatic()) { + v = void 0; + v = null; + } + } + }; + /** + * Valueの種類が配列ならtrue + */ + JsonArray.prototype.isArray = function () { + return true; + }; + /** + * 添字演算子[index] + */ + JsonArray.prototype.getValueByIndex = function (index) { + if (index < 0 || this._array.getSize() <= index) { + return Value.errorValue.setErrorNotForClientCall(CSM_JSON_ERROR_INDEX_OF_BOUNDS); + } + var v = this._array.at(index); + if (v == null) { + return Value.nullValue; + } + return v; + }; + /** + * 添字演算子[string | csmString] + */ + JsonArray.prototype.getValueByString = function (s) { + return Value.errorValue.setErrorNotForClientCall(CSM_JSON_ERROR_TYPE_MISMATCH); + }; + /** + * 要素を文字列で返す(csmString型) + */ + JsonArray.prototype.getString = function (defaultValue, indent) { + var stringBuffer = indent + '[\n'; + for (var ite = this._array.begin(); ite.notEqual(this._array.end()); ite.increment()) { + var v = ite.ptr(); + this._stringBuffer += indent + '' + v.getString(indent + ' ') + '\n'; + } + this._stringBuffer = stringBuffer + indent + ']\n'; + return this._stringBuffer; + }; + /** + * 配列要素を追加する + * @param v 追加する要素 + */ + JsonArray.prototype.add = function (v) { + this._array.pushBack(v); + }; + /** + * 要素をコンテナで返す(csmVector) + */ + JsonArray.prototype.getVector = function (defaultValue) { + if (defaultValue === void 0) { defaultValue = null; } + return this._array; + }; + /** + * 要素の数を返す + */ + JsonArray.prototype.getSize = function () { + return this._array.getSize(); + }; + return JsonArray; +}(Value)); +exports.JsonArray = JsonArray; +/** + * パースしたJSONの要素をマップとして持つ + */ +var JsonMap = /** @class */ (function (_super) { + __extends(JsonMap, _super); + /** + * コンストラクタ + */ + function JsonMap() { + var _this = _super.call(this) || this; + _this._map = new csmmap_1.csmMap(); + return _this; + } + /** + * デストラクタ相当の処理 + */ + JsonMap.prototype.release = function () { + var ite = this._map.begin(); + while (ite.notEqual(this._map.end())) { + var v = ite.ptr().second; + if (v && !v.isStatic()) { + v = void 0; + v = null; + } + ite.preIncrement(); + } + }; + /** + * Valueの値がMap型ならtrue + */ + JsonMap.prototype.isMap = function () { + return true; + }; + /** + * 添字演算子[string | csmString] + */ + JsonMap.prototype.getValueByString = function (s) { + if (s instanceof csmstring_1.csmString) { + var ret = this._map.getValue(s.s); + if (ret == null) { + return Value.nullValue; + } + return ret; + } + for (var iter = this._map.begin(); iter.notEqual(this._map.end()); iter.preIncrement()) { + if (iter.ptr().first == s) { + if (iter.ptr().second == null) { + return Value.nullValue; + } + return iter.ptr().second; + } + } + return Value.nullValue; + }; + /** + * 添字演算子[index] + */ + JsonMap.prototype.getValueByIndex = function (index) { + return Value.errorValue.setErrorNotForClientCall(CSM_JSON_ERROR_TYPE_MISMATCH); + }; + /** + * 要素を文字列で返す(csmString型) + */ + JsonMap.prototype.getString = function (defaultValue, indent) { + this._stringBuffer = indent + '{\n'; + var ite = this._map.begin(); + while (ite.notEqual(this._map.end())) { + var key = ite.ptr().first; + var v = ite.ptr().second; + this._stringBuffer += + indent + ' ' + key + ' : ' + v.getString(indent + ' ') + ' \n'; + ite.preIncrement(); + } + this._stringBuffer += indent + '}\n'; + return this._stringBuffer; + }; + /** + * 要素をMap型で返す + */ + JsonMap.prototype.getMap = function (defaultValue) { + return this._map; + }; + /** + * Mapに要素を追加する + */ + JsonMap.prototype.put = function (key, v) { + this._map.setValue(key, v); + }; + /** + * Mapからキーのリストを取得する + */ + JsonMap.prototype.getKeys = function () { + if (!this._keys) { + this._keys = new csmvector_1.csmVector(); + var ite = this._map.begin(); + while (ite.notEqual(this._map.end())) { + var key = ite.ptr().first; + this._keys.pushBack(key); + ite.preIncrement(); + } + } + return this._keys; + }; + /** + * Mapの要素数を取得する + */ + JsonMap.prototype.getSize = function () { + return this._keys.getSize(); + }; + return JsonMap; +}(Value)); +exports.JsonMap = JsonMap; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismjson")); +var cubismjsonextension_1 = require("./cubismjsonextension"); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismJson = $.CubismJson; + Live2DCubismFramework.JsonArray = $.JsonArray; + Live2DCubismFramework.JsonBoolean = $.JsonBoolean; + Live2DCubismFramework.JsonError = $.JsonError; + Live2DCubismFramework.JsonFloat = $.JsonFloat; + Live2DCubismFramework.JsonMap = $.JsonMap; + Live2DCubismFramework.JsonNullvalue = $.JsonNullvalue; + Live2DCubismFramework.JsonString = $.JsonString; + Live2DCubismFramework.Value = $.Value; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismjson.js.map \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismjson.js.map b/live2demo/Framework/utils/cubismjson.js.map new file mode 100644 index 0000000..27e66fe --- /dev/null +++ b/live2demo/Framework/utils/cubismjson.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismjson.js","sourceRoot":"","sources":["../../src/utils/cubismjson.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismjsonextension.d.ts b/live2demo/Framework/utils/cubismjsonextension.d.ts new file mode 100644 index 0000000..1809982 --- /dev/null +++ b/live2demo/Framework/utils/cubismjsonextension.d.ts @@ -0,0 +1,18 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +import { JsonArray, JsonMap, Value } from './cubismjson'; +/** + * CubismJsonで実装されているJsonパーサを使用せず、 + * TypeScript標準のJsonパーサなどを使用し出力された結果を + * Cubism SDKで定義されているJSONエレメントの要素に + * 置き換える処理をするクラス。 + */ +export declare class CubismJsonExtension { + static parseJsonObject(obj: Value, map: JsonMap): JsonMap; + protected static parseJsonArray(obj: Value): JsonArray; +} +//# sourceMappingURL=cubismjsonextension.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismjsonextension.d.ts.map b/live2demo/Framework/utils/cubismjsonextension.d.ts.map new file mode 100644 index 0000000..509f5be --- /dev/null +++ b/live2demo/Framework/utils/cubismjsonextension.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismjsonextension.d.ts","sourceRoot":"","sources":["../../src/utils/cubismjsonextension.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,SAAS,EAGT,OAAO,EAGP,KAAK,EACN,MAAM,cAAc,CAAC;AAEtB;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO;IA4B/C,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK;CAwC3C"} \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismjsonextension.js b/live2demo/Framework/utils/cubismjsonextension.js new file mode 100644 index 0000000..b64d469 --- /dev/null +++ b/live2demo/Framework/utils/cubismjsonextension.js @@ -0,0 +1,104 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CubismJsonExtension = void 0; +var cubismjson_1 = require("./cubismjson"); +/** + * CubismJsonで実装されているJsonパーサを使用せず、 + * TypeScript標準のJsonパーサなどを使用し出力された結果を + * Cubism SDKで定義されているJSONエレメントの要素に + * 置き換える処理をするクラス。 + */ +var CubismJsonExtension = /** @class */ (function () { + function CubismJsonExtension() { + } + CubismJsonExtension.parseJsonObject = function (obj, map) { + Object.keys(obj).forEach(function (key) { + if (typeof obj[key] == 'boolean') { + var convValue = Boolean(obj[key]); + map.put(key, new cubismjson_1.JsonBoolean(convValue)); + } + else if (typeof obj[key] == 'string') { + var convValue = String(obj[key]); + map.put(key, new cubismjson_1.JsonString(convValue)); + } + else if (typeof obj[key] == 'number') { + var convValue = Number(obj[key]); + map.put(key, new cubismjson_1.JsonFloat(convValue)); + } + else if (obj[key] instanceof Array) { + map.put(key, CubismJsonExtension.parseJsonArray(obj[key])); + } + else if (obj[key] instanceof Object) { + map.put(key, CubismJsonExtension.parseJsonObject(obj[key], new cubismjson_1.JsonMap())); + } + else if (obj[key] == null) { + map.put(key, new cubismjson_1.JsonNullvalue()); + } + else { + // どれにも当てはまらない場合でも処理する + map.put(key, obj[key]); + } + }); + return map; + }; + CubismJsonExtension.parseJsonArray = function (obj) { + var _this = this; + var arr = new cubismjson_1.JsonArray(); + Object.keys(obj).forEach(function (key) { + var convKey = Number(key); + if (typeof convKey == 'number') { + if (typeof obj[key] == 'boolean') { + var convValue = Boolean(obj[key]); + arr.add(new cubismjson_1.JsonBoolean(convValue)); + } + else if (typeof obj[key] == 'string') { + var convValue = String(obj[key]); + arr.add(new cubismjson_1.JsonString(convValue)); + } + else if (typeof obj[key] == 'number') { + var convValue = Number(obj[key]); + arr.add(new cubismjson_1.JsonFloat(convValue)); + } + else if (obj[key] instanceof Array) { + arr.add(_this.parseJsonArray(obj[key])); + } + else if (obj[key] instanceof Object) { + arr.add(_this.parseJsonObject(obj[key], new cubismjson_1.JsonMap())); + } + else if (obj[key] == null) { + arr.add(new cubismjson_1.JsonNullvalue()); + } + else { + // どれにも当てはまらない場合でも処理する + arr.add(obj[key]); + } + } + else if (obj[key] instanceof Array) { + arr.add(_this.parseJsonArray(obj[key])); + } + else if (obj[key] instanceof Object) { + arr.add(_this.parseJsonObject(obj[key], new cubismjson_1.JsonMap())); + } + else if (obj[key] == null) { + arr.add(new cubismjson_1.JsonNullvalue()); + } + else { + var convValue = Array(obj[key]); + // 配列ともObjectとも判定できなかった場合でも処理する + for (var i = 0; i < convValue.length; i++) { + arr.add(convValue[i]); + } + } + }); + return arr; + }; + return CubismJsonExtension; +}()); +exports.CubismJsonExtension = CubismJsonExtension; +//# sourceMappingURL=cubismjsonextension.js.map \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismjsonextension.js.map b/live2demo/Framework/utils/cubismjsonextension.js.map new file mode 100644 index 0000000..b9bfdd3 --- /dev/null +++ b/live2demo/Framework/utils/cubismjsonextension.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismjsonextension.js","sourceRoot":"","sources":["../../src/utils/cubismjsonextension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismstring.d.ts b/live2demo/Framework/utils/cubismstring.d.ts new file mode 100644 index 0000000..067c2e0 --- /dev/null +++ b/live2demo/Framework/utils/cubismstring.d.ts @@ -0,0 +1,43 @@ +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +export declare class CubismString { + /** + * 標準出力の書式を適用した文字列を取得する。 + * @param format 標準出力の書式指定文字列 + * @param ...args 書式指定文字列に渡す文字列 + * @return 書式を適用した文字列 + */ + static getFormatedString(format: string, ...args: any[]): string; + /** + * textがstartWordで始まっているかどうかを返す + * @param test 検査対象の文字列 + * @param startWord 比較対象の文字列 + * @return true textがstartWordで始まっている + * @return false textがstartWordで始まっていない + */ + static isStartWith(text: string, startWord: string): boolean; + /** + * position位置の文字から数字を解析する。 + * + * @param string 文字列 + * @param length 文字列の長さ + * @param position 解析したい文字の位置 + * @param outEndPos 一文字も読み込まなかった場合はエラー値(-1)が入る + * @return 解析結果の数値 + */ + static stringToFloat(string: string, length: number, position: number, outEndPos: number[]): number; + /** + * コンストラクタ呼び出し不可な静的クラスにする。 + */ + private constructor(); +} +import * as $ from './cubismstring'; +export declare namespace Live2DCubismFramework { + const CubismString: typeof $.CubismString; + type CubismString = $.CubismString; +} +//# sourceMappingURL=cubismstring.d.ts.map \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismstring.d.ts.map b/live2demo/Framework/utils/cubismstring.d.ts.map new file mode 100644 index 0000000..bad5723 --- /dev/null +++ b/live2demo/Framework/utils/cubismstring.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismstring.d.ts","sourceRoot":"","sources":["../../src/utils/cubismstring.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAa,YAAY;IACvB;;;;;OAKG;WACW,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM;IAavE;;;;;;OAMG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAcnE;;;;;;;;OAQG;WACW,aAAa,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM;IAsDT;;OAEG;IACH,OAAO;CACR;AAGD,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,YAAY,uBAAiB,CAAC;IAC3C,KAAY,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;CAC3C"} \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismstring.js b/live2demo/Framework/utils/cubismstring.js new file mode 100644 index 0000000..eef69dd --- /dev/null +++ b/live2demo/Framework/utils/cubismstring.js @@ -0,0 +1,145 @@ +"use strict"; +/** + * Copyright(c) Live2D Inc. All rights reserved. + * + * Use of this source code is governed by the Live2D Open Software license + * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Live2DCubismFramework = exports.CubismString = void 0; +var CubismString = /** @class */ (function () { + /** + * コンストラクタ呼び出し不可な静的クラスにする。 + */ + function CubismString() { + } + /** + * 標準出力の書式を適用した文字列を取得する。 + * @param format 標準出力の書式指定文字列 + * @param ...args 書式指定文字列に渡す文字列 + * @return 書式を適用した文字列 + */ + CubismString.getFormatedString = function (format) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + var ret = format; + return ret.replace(/\{(\d+)\}/g, function (m, k // m="{0}", k="0" + ) { + return args[k]; + }); + }; + /** + * textがstartWordで始まっているかどうかを返す + * @param test 検査対象の文字列 + * @param startWord 比較対象の文字列 + * @return true textがstartWordで始まっている + * @return false textがstartWordで始まっていない + */ + CubismString.isStartWith = function (text, startWord) { + var textIndex = 0; + var startWordIndex = 0; + while (startWord[startWordIndex] != '\0') { + if (text[textIndex] == '\0' || + text[textIndex++] != startWord[startWordIndex++]) { + return false; + } + } + return false; + }; + /** + * position位置の文字から数字を解析する。 + * + * @param string 文字列 + * @param length 文字列の長さ + * @param position 解析したい文字の位置 + * @param outEndPos 一文字も読み込まなかった場合はエラー値(-1)が入る + * @return 解析結果の数値 + */ + CubismString.stringToFloat = function (string, length, position, outEndPos) { + var i = position; + var minus = false; // マイナスフラグ + var period = false; + var v1 = 0; + //負号の確認 + var c = parseInt(string[i]); + if (c < 0) { + minus = true; + i++; + } + //整数部の確認 + for (; i < length; i++) { + var c_1 = string[i]; + if (0 <= parseInt(c_1) && parseInt(c_1) <= 9) { + v1 = v1 * 10 + (parseInt(c_1) - 0); + } + else if (c_1 == '.') { + period = true; + i++; + break; + } + else { + break; + } + } + //小数部の確認 + if (period) { + var mul = 0.1; + for (; i < length; i++) { + c = parseFloat(string[i]) & 0xff; + if (0 <= c && c <= 9) { + v1 += mul * (c - 0); + } + else { + break; + } + mul *= 0.1; //一桁下げる + if (!c) + break; + } + } + if (i == position) { + //一文字も読み込まなかった場合 + outEndPos[0] = -1; //エラー値が入るので呼び出し元で適切な処理を行う + return 0; + } + if (minus) + v1 = -v1; + outEndPos[0] = i; + return v1; + }; + return CubismString; +}()); +exports.CubismString = CubismString; +// Namespace definition for compatibility. +var $ = __importStar(require("./cubismstring")); +// eslint-disable-next-line @typescript-eslint/no-namespace +var Live2DCubismFramework; +(function (Live2DCubismFramework) { + Live2DCubismFramework.CubismString = $.CubismString; +})(Live2DCubismFramework || (exports.Live2DCubismFramework = Live2DCubismFramework = {})); +//# sourceMappingURL=cubismstring.js.map \ No newline at end of file diff --git a/live2demo/Framework/utils/cubismstring.js.map b/live2demo/Framework/utils/cubismstring.js.map new file mode 100644 index 0000000..f81d7d6 --- /dev/null +++ b/live2demo/Framework/utils/cubismstring.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cubismstring.js","sourceRoot":"","sources":["../../src/utils/cubismstring.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/live2demo/index.html b/live2demo/index.html new file mode 100644 index 0000000..c3ff205 --- /dev/null +++ b/live2demo/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/live2demo/main.js b/live2demo/main.js new file mode 100644 index 0000000..c1caf36 --- /dev/null +++ b/live2demo/main.js @@ -0,0 +1,22 @@ +import App from './App' + +// #ifndef VUE3 +import Vue from 'vue' +import './uni.promisify.adaptor' +Vue.config.productionTip = false +App.mpType = 'app' +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { createSSRApp } from 'vue' +export function createApp() { + const app = createSSRApp(App) + return { + app + } +} +// #endif \ No newline at end of file diff --git a/live2demo/manifest.json b/live2demo/manifest.json new file mode 100644 index 0000000..477bf7c --- /dev/null +++ b/live2demo/manifest.json @@ -0,0 +1,72 @@ +{ + "name" : "live2demo", + "appid" : "__UNI__D706FDB", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "2" +} diff --git a/live2demo/pages.json b/live2demo/pages.json new file mode 100644 index 0000000..869105d --- /dev/null +++ b/live2demo/pages.json @@ -0,0 +1,17 @@ +{ + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "uni-app" + } + } + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + "uniIdRouter": {} +} diff --git a/live2demo/pages/index/index.vue b/live2demo/pages/index/index.vue new file mode 100644 index 0000000..ec0ec26 --- /dev/null +++ b/live2demo/pages/index/index.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/live2demo/static/logo.png b/live2demo/static/logo.png new file mode 100644 index 0000000..b5771e2 Binary files /dev/null and b/live2demo/static/logo.png differ diff --git a/live2demo/uni.promisify.adaptor.js b/live2demo/uni.promisify.adaptor.js new file mode 100644 index 0000000..47fbce1 --- /dev/null +++ b/live2demo/uni.promisify.adaptor.js @@ -0,0 +1,10 @@ +uni.addInterceptor({ + returnValue (res) { + if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { + return res; + } + return new Promise((resolve, reject) => { + res.then((res) => res[0] ? reject(res[0]) : resolve(res[1])); + }); + }, +}); \ No newline at end of file diff --git a/live2demo/uni.scss b/live2demo/uni.scss new file mode 100644 index 0000000..a05adb4 --- /dev/null +++ b/live2demo/uni.scss @@ -0,0 +1,76 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16; + +/* 图片尺寸 */ +$uni-img-size-sm:20px; +$uni-img-size-base:26px; +$uni-img-size-lg:40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:15px; diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/server/.mvn/wrapper/maven-wrapper.jar b/server/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..cb28b0e Binary files /dev/null and b/server/.mvn/wrapper/maven-wrapper.jar differ diff --git a/server/.mvn/wrapper/maven-wrapper.properties b/server/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..5f0536e --- /dev/null +++ b/server/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar diff --git a/server/mvnw b/server/mvnw new file mode 100644 index 0000000..66df285 --- /dev/null +++ b/server/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/server/mvnw.cmd b/server/mvnw.cmd new file mode 100644 index 0000000..95ba6f5 --- /dev/null +++ b/server/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/server/pom.xml b/server/pom.xml new file mode 100644 index 0000000..dc6a981 --- /dev/null +++ b/server/pom.xml @@ -0,0 +1,64 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.1.5 + + + cn.mikesolar + server + 0.0.1-SNAPSHOT + server + server + + 17 + + + + org.springframework.boot + spring-boot-starter-web + + + + com.h2database + h2 + runtime + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/server/src/main/java/cn/mikesolar/live2demo/ServerApplication.java b/server/src/main/java/cn/mikesolar/live2demo/ServerApplication.java new file mode 100644 index 0000000..3a3dacc --- /dev/null +++ b/server/src/main/java/cn/mikesolar/live2demo/ServerApplication.java @@ -0,0 +1,13 @@ +package cn.mikesolar.live2demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ServerApplication { + + public static void main(String[] args) { + SpringApplication.run(ServerApplication.class, args); + } + +} diff --git a/server/src/main/resources/application.properties b/server/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/server/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/server/src/main/resources/public/ARKitFaceTrackerSettingBeta.json b/server/src/main/resources/public/ARKitFaceTrackerSettingBeta.json new file mode 100644 index 0000000..f9bf104 --- /dev/null +++ b/server/src/main/resources/public/ARKitFaceTrackerSettingBeta.json @@ -0,0 +1,212 @@ + +[ + [ + ], + [ + ], + [ + ], + [ + { + "FaceTrackerDataName" : 3, + "CubismParameter" : "ParamAngleX", + "FaceTrackerDataMin" : -30, + "FaceTrackerDataMax" : 30, + "ParameterMin" : -30, + "ParameterMax" : 30, + "Smooth" : 0.15 + }, + { + "FaceTrackerDataName" : 3, + "CubismParameter" : "ParamBodyAngleX", + "FaceTrackerDataMin" : -30, + "FaceTrackerDataMax" : 30, + "ParameterMin" : -10, + "ParameterMax" : 10, + "Smooth" : 0.2 + } + ], + [ + { + "FaceTrackerDataName" : 4, + "CubismParameter" : "ParamAngleY", + "FaceTrackerDataMin" : -30, + "FaceTrackerDataMax" : 30, + "ParameterMin" : -30, + "ParameterMax" : 30, + "Smooth" : 0.15 + }, + { + "FaceTrackerDataName" : 4, + "CubismParameter" : "ParamBodyAngleY", + "FaceTrackerDataMin" : -30, + "FaceTrackerDataMax" : 30, + "ParameterMin" : -10, + "ParameterMax" : 10, + "Smooth" : 0.2 + } + ], + [ + { + "FaceTrackerDataName" : 5, + "CubismParameter" : "ParamAngleZ", + "FaceTrackerDataMin" : -30, + "FaceTrackerDataMax" : 30, + "ParameterMin" : -30, + "ParameterMax" : 30, + "Smooth" : 0.3 + }, + { + "FaceTrackerDataName" : 5, + "CubismParameter" : "ParamBodyAngleZ", + "FaceTrackerDataMin" : -30, + "FaceTrackerDataMax" : 30, + "ParameterMin" : -10, + "ParameterMax" : 10, + "Smooth" : 0.2 + } + ], + [ + { + "FaceTrackerDataName" : 6, + "CubismParameter" : "ParamMouthForm", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : -1, + "ParameterMax" : 1, + "Smooth" : 0.2 + }, + { + "FaceTrackerDataName" : 6, + "CubismParameter" : "ParamEyeLSmile", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : 0, + "ParameterMax" : 1, + "Smooth" : 0.2 + }, + { + "FaceTrackerDataName" : 6, + "CubismParameter" : "ParamEyeRSmile", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : 0, + "ParameterMax" : 1, + "Smooth" : 0.2 + }, + { + "FaceTrackerDataName" : 6, + "CubismParameter" : "ParamCheek", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : 0, + "ParameterMax" : 1, + "Smooth" : 0.2 + } + ], + [ + ], + [ + { + "FaceTrackerDataName" : 8, + "CubismParameter" : "ParamMouthOpenY", + "FaceTrackerDataMin" : 0, + "FaceTrackerDataMax" : 0.6, + "ParameterMin" : 0, + "ParameterMax" : 1, + "Smooth" : 0.1 + } + ], + [ + { + "FaceTrackerDataName" : 9, + "CubismParameter" : "ParamBrowLY", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : -1, + "ParameterMax" : 1, + "Smooth" : 0.1 + } + ], + [ + { + "FaceTrackerDataName" : 10, + "CubismParameter" : "ParamBrowRY", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : -1, + "ParameterMax" : 1, + "Smooth" : 0.1 + } + ], + [ + { + "FaceTrackerDataName" : 11, + "CubismParameter" : "ParamBrowLAngle", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : -1, + "ParameterMax" : 1, + "Smooth" : 0.1 + }, + { + "FaceTrackerDataName" : 11, + "CubismParameter" : "ParamBrowRAngle", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : -1, + "ParameterMax" : 1, + "Smooth" : 0.1 + } + ], + [ + ], + [ + { + "FaceTrackerDataName" : 13, + "CubismParameter" : "ParamEyeLOpen", + "FaceTrackerDataMin" : 0.2, + "FaceTrackerDataMax" : 1, + "ParameterMin" : 0, + "ParameterMax" : 1, + "Smooth" : 0.05 + } + ], + [ + { + "FaceTrackerDataName" : 14, + "CubismParameter" : "ParamEyeROpen", + "FaceTrackerDataMin" : 0.2, + "FaceTrackerDataMax" : 1, + "ParameterMin" : 0, + "ParameterMax" : 1, + "Smooth" : 0.05 + } + ], + [ + { + "FaceTrackerDataName" : 15, + "CubismParameter" : "ParamEyeBallX", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : -1, + "ParameterMax" : 1, + "Smooth" : 0.1 + } + ], + [ + { + "FaceTrackerDataName" : 16, + "CubismParameter" : "ParamEyeBallY", + "FaceTrackerDataMin" : -1, + "FaceTrackerDataMax" : 1, + "ParameterMin" : -1, + "ParameterMax" : 1, + "Smooth" : 0.1 + } + ], + [ + ], + [ + ] +] \ No newline at end of file diff --git a/server/src/main/resources/public/miku_sample_t04.2048/texture_00.png b/server/src/main/resources/public/miku_sample_t04.2048/texture_00.png new file mode 100644 index 0000000..8098a84 Binary files /dev/null and b/server/src/main/resources/public/miku_sample_t04.2048/texture_00.png differ diff --git a/server/src/main/resources/public/miku_sample_t04.cdi3.json b/server/src/main/resources/public/miku_sample_t04.cdi3.json new file mode 100644 index 0000000..98650e8 --- /dev/null +++ b/server/src/main/resources/public/miku_sample_t04.cdi3.json @@ -0,0 +1,449 @@ +{ + "Version": 3, + "Parameters": [ + { + "Id": "ParamAngleX", + "GroupId": "ParamGroup4", + "Name": "角度 X" + }, + { + "Id": "ParamAngleY", + "GroupId": "ParamGroup4", + "Name": "角度 Y" + }, + { + "Id": "ParamAngleZ", + "GroupId": "ParamGroup4", + "Name": "角度 Z" + }, + { + "Id": "ParamCheek", + "GroupId": "ParamGroup4", + "Name": "照れ" + }, + { + "Id": "ParamEyeLOpen", + "GroupId": "ParamGroupEyes", + "Name": "左眼 開閉" + }, + { + "Id": "ParamEyeLSmile", + "GroupId": "ParamGroupEyes", + "Name": "左眼 笑顔" + }, + { + "Id": "ParamEyeROpen", + "GroupId": "ParamGroupEyes", + "Name": "右眼 開閉" + }, + { + "Id": "ParamEyeRSmile", + "GroupId": "ParamGroupEyes", + "Name": "右眼 笑顔" + }, + { + "Id": "ParamEyeBallX", + "GroupId": "ParamGroupEyes", + "Name": "目玉 X" + }, + { + "Id": "ParamEyeBallY", + "GroupId": "ParamGroupEyes", + "Name": "目玉 Y" + }, + { + "Id": "ParamBrowLY", + "GroupId": "ParamGroup5", + "Name": "左眉 上下" + }, + { + "Id": "ParamBrowRY", + "GroupId": "ParamGroup5", + "Name": "右眉 上下" + }, + { + "Id": "ParamBrowLX", + "GroupId": "ParamGroup5", + "Name": "左眉 左右" + }, + { + "Id": "ParamBrowRX", + "GroupId": "ParamGroup5", + "Name": "右眉 左右" + }, + { + "Id": "ParamBrowLAngle", + "GroupId": "ParamGroup5", + "Name": "左眉 角度" + }, + { + "Id": "ParamBrowRAngle", + "GroupId": "ParamGroup5", + "Name": "右眉 角度" + }, + { + "Id": "ParamBrowLForm", + "GroupId": "ParamGroup5", + "Name": "左眉 変形" + }, + { + "Id": "ParamBrowRForm", + "GroupId": "ParamGroup5", + "Name": "右眉 変形" + }, + { + "Id": "ParamMouthOpenY", + "GroupId": "ParamGroupMouth", + "Name": "口 開閉" + }, + { + "Id": "ParamMouthForm", + "GroupId": "ParamGroupMouth", + "Name": "口 変形" + }, + { + "Id": "ParamArmL", + "GroupId": "ParamGroupBody", + "Name": "左腕" + }, + { + "Id": "ParamArmR", + "GroupId": "ParamGroupBody", + "Name": "右腕" + }, + { + "Id": "ParamBodyAngleX", + "GroupId": "ParamGroupBody", + "Name": "体の回転 X" + }, + { + "Id": "ParamBodyAngleY", + "GroupId": "ParamGroupBody", + "Name": "体の回転 Y" + }, + { + "Id": "ParamBodyAngleZ", + "GroupId": "ParamGroupBody", + "Name": "体の回転 Z" + }, + { + "Id": "ParamBreath", + "GroupId": "ParamGroupBody", + "Name": "呼吸" + }, + { + "Id": "ParamHairFront", + "GroupId": "ParamGroupSway", + "Name": "前髪 揺れ" + }, + { + "Id": "ParamHairFront2", + "GroupId": "ParamGroupSway", + "Name": "前髪 上下" + }, + { + "Id": "ParamHairBack", + "GroupId": "ParamGroupSway", + "Name": "後ろ髪 揺れ" + }, + { + "Id": "ParamHairBackL8", + "GroupId": "ParamGroupSway", + "Name": "左髪ひねり" + }, + { + "Id": "ParamHairBackR6", + "GroupId": "ParamGroupSway", + "Name": "右髪ひねり" + }, + { + "Id": "Param", + "GroupId": "ParamGroupSway", + "Name": "スカート 揺れ" + }, + { + "Id": "Param2", + "GroupId": "ParamGroupSway", + "Name": "スカート 上下" + }, + { + "Id": "Param3", + "GroupId": "ParamGroupSway", + "Name": "ベルト 揺れ" + }, + { + "Id": "Param_Angle_Rotation_1_D_HAIR_BACK_10", + "GroupId": "ParamGroup", + "Name": "[0]D_HAIR_BACK_10" + }, + { + "Id": "Param_Angle_Rotation_2_D_HAIR_BACK_10", + "GroupId": "ParamGroup", + "Name": "[1]D_HAIR_BACK_10" + }, + { + "Id": "Param_Angle_Rotation_3_D_HAIR_BACK_10", + "GroupId": "ParamGroup", + "Name": "[2]D_HAIR_BACK_10" + }, + { + "Id": "Param_Angle_Rotation_4_D_HAIR_BACK_10", + "GroupId": "ParamGroup", + "Name": "[3]D_HAIR_BACK_10" + }, + { + "Id": "Param_Angle_Rotation_5_D_HAIR_BACK_10", + "GroupId": "ParamGroup", + "Name": "[4]D_HAIR_BACK_10" + }, + { + "Id": "Param_Angle_Rotation_6_D_HAIR_BACK_10", + "GroupId": "ParamGroup", + "Name": "[5]D_HAIR_BACK_10" + }, + { + "Id": "Param_Angle_Rotation_7_D_HAIR_BACK_10", + "GroupId": "ParamGroup", + "Name": "[6]D_HAIR_BACK_10" + }, + { + "Id": "Param_Angle_Rotation_8_D_HAIR_BACK_10", + "GroupId": "ParamGroup", + "Name": "[7]D_HAIR_BACK_10" + }, + { + "Id": "Param_Angle_Rotation_9_D_HAIR_BACK_10", + "GroupId": "ParamGroup", + "Name": "[8]D_HAIR_BACK_10" + }, + { + "Id": "Param_Angle_Rotation_1_D_HAIR_BACK_00", + "GroupId": "ParamGroup2", + "Name": "[0]D_HAIR_BACK_00" + }, + { + "Id": "Param_Angle_Rotation_2_D_HAIR_BACK_00", + "GroupId": "ParamGroup2", + "Name": "[1]D_HAIR_BACK_00" + }, + { + "Id": "Param_Angle_Rotation_3_D_HAIR_BACK_00", + "GroupId": "ParamGroup2", + "Name": "[2]D_HAIR_BACK_00" + }, + { + "Id": "Param_Angle_Rotation_4_D_HAIR_BACK_00", + "GroupId": "ParamGroup2", + "Name": "[3]D_HAIR_BACK_00" + }, + { + "Id": "Param_Angle_Rotation_5_D_HAIR_BACK_00", + "GroupId": "ParamGroup2", + "Name": "[4]D_HAIR_BACK_00" + }, + { + "Id": "Param_Angle_Rotation_6_D_HAIR_BACK_00", + "GroupId": "ParamGroup2", + "Name": "[5]D_HAIR_BACK_00" + }, + { + "Id": "Param_Angle_Rotation_7_D_HAIR_BACK_00", + "GroupId": "ParamGroup2", + "Name": "[6]D_HAIR_BACK_00" + }, + { + "Id": "Param_Angle_Rotation_8_D_HAIR_BACK_00", + "GroupId": "ParamGroup2", + "Name": "[7]D_HAIR_BACK_00" + }, + { + "Id": "Param_Angle_Rotation_9_D_HAIR_BACK_00", + "GroupId": "ParamGroup2", + "Name": "[8]D_HAIR_BACK_00" + }, + { + "Id": "Param_Angle_Rotation_1_D_BODY_06", + "GroupId": "ParamGroup3", + "Name": "[0]D_BODY_06" + }, + { + "Id": "Param_Angle_Rotation_2_D_BODY_06", + "GroupId": "ParamGroup3", + "Name": "[1]D_BODY_06" + }, + { + "Id": "Param_Angle_Rotation_3_D_BODY_06", + "GroupId": "ParamGroup3", + "Name": "[2]D_BODY_06" + }, + { + "Id": "Param_Angle_Rotation_4_D_BODY_06", + "GroupId": "ParamGroup3", + "Name": "[3]D_BODY_06" + }, + { + "Id": "Param_Angle_Rotation_5_D_BODY_06", + "GroupId": "ParamGroup3", + "Name": "[4]D_BODY_06" + }, + { + "Id": "Param_Angle_Rotation_6_D_BODY_06", + "GroupId": "ParamGroup3", + "Name": "[5]D_BODY_06" + }, + { + "Id": "Param_Angle_Rotation_7_D_BODY_06", + "GroupId": "ParamGroup3", + "Name": "[6]D_BODY_06" + } + ], + "ParameterGroups": [ + { + "Id": "ParamGroup4", + "GroupId": "", + "Name": "頭部" + }, + { + "Id": "ParamGroupEyes", + "GroupId": "", + "Name": "目" + }, + { + "Id": "ParamGroup5", + "GroupId": "", + "Name": "眉毛" + }, + { + "Id": "ParamGroupMouth", + "GroupId": "", + "Name": "口" + }, + { + "Id": "ParamGroupBody", + "GroupId": "", + "Name": "体" + }, + { + "Id": "ParamGroupSway", + "GroupId": "", + "Name": "揺れ" + }, + { + "Id": "ParamGroup", + "GroupId": "", + "Name": "左ツインテール(スキニング)" + }, + { + "Id": "ParamGroup2", + "GroupId": "", + "Name": "右ツインテール(スキニング)" + }, + { + "Id": "ParamGroup3", + "GroupId": "", + "Name": "ネクタイ(スキニング)" + } + ], + "Parts": [ + { + "Id": "Part01Leg", + "Name": "足" + }, + { + "Id": "Part01Body", + "Name": "体" + }, + { + "Id": "Part01Arm", + "Name": "腕" + }, + { + "Id": "Part01Neck", + "Name": "首" + }, + { + "Id": "Part01HairBack001", + "Name": "後ろ髪" + }, + { + "Id": "Part01HairSide001", + "Name": "横髪" + }, + { + "Id": "Part01HairFront001", + "Name": "前髪" + }, + { + "Id": "Part01Ear001", + "Name": "耳" + }, + { + "Id": "Part01Nose001", + "Name": "鼻" + }, + { + "Id": "Part01Mouth001", + "Name": "口" + }, + { + "Id": "Part01Brow001", + "Name": "まゆ毛" + }, + { + "Id": "Part01EyeBall001", + "Name": "目玉" + }, + { + "Id": "Part01Eye001", + "Name": "目" + }, + { + "Id": "Part01Face001", + "Name": "顔" + }, + { + "Id": "Part01Cheek", + "Name": "頬" + }, + { + "Id": "Part01Headset", + "Name": "ヘッドセット" + }, + { + "Id": "Part01Core", + "Name": "コアパーツ" + }, + { + "Id": "Part01Background", + "Name": "背景" + }, + { + "Id": "Part01Sketch", + "Name": "[ 下絵 ]" + }, + { + "Id": "D_BODY_06_Skinning", + "Name": "D_BODY_06(スキニング)" + }, + { + "Id": "Part01SkinningC", + "Name": "D_BODY_06(回転)" + }, + { + "Id": "D_HAIR_BACK_10_Skinning", + "Name": "D_HAIR_BACK_10(スキニング)" + }, + { + "Id": "Part01SkinningB", + "Name": "D_HAIR_BACK_10(回転)" + }, + { + "Id": "D_HAIR_BACK_00_Skinning", + "Name": "D_HAIR_BACK_00(スキニング)" + }, + { + "Id": "Part01SkinningA", + "Name": "D_HAIR_BACK_00(回転)" + } + ] +} \ No newline at end of file diff --git a/server/src/main/resources/public/miku_sample_t04.moc3 b/server/src/main/resources/public/miku_sample_t04.moc3 new file mode 100644 index 0000000..74bcd9d Binary files /dev/null and b/server/src/main/resources/public/miku_sample_t04.moc3 differ diff --git a/server/src/main/resources/public/miku_sample_t04.model3.json b/server/src/main/resources/public/miku_sample_t04.model3.json new file mode 100644 index 0000000..63251c6 --- /dev/null +++ b/server/src/main/resources/public/miku_sample_t04.model3.json @@ -0,0 +1,63 @@ +{ + "Version": 3, + "FileReferences": { + "Moc": "miku_sample_t04.moc3", + "Textures": [ + "miku_sample_t04.2048/texture_00.png" + ], + "Physics": "miku_sample_t04.physics3.json", + "DisplayInfo": "miku_sample_t04.cdi3.json", + "Motions": { + "Idle": [ + { + "File": "motion/miku_01.motion3.json" + }, + { + "File": "motion/miku_04.motion3.json" + }, + { + "File": "motion/miku_07.motion3.json" + } + ], + "Tap": [ + { + "File": "motion/miku_02.motion3.json" + }, + { + "File": "motion/miku_03.motion3.json" + } + ], + "Flick": [ + { + "File": "motion/miku_05.motion3.json" + }, + { + "File": "motion/miku_08.motion3.json" + } + ], + "FlickUp": [ + { + "File": "motion/miku_06.motion3.json" + } + ] + } + }, + "Groups": [ + { + "Target": "Parameter", + "Name": "LipSync", + "Ids": [ + "ParamMouthOpenY" + ] + }, + { + "Target": "Parameter", + "Name": "EyeBlink", + "Ids": [ + "ParamEyeLOpen", + "ParamEyeROpen" + ] + } + ], + "HitAreas": [] +} \ No newline at end of file diff --git a/server/src/main/resources/public/miku_sample_t04.physics3.json b/server/src/main/resources/public/miku_sample_t04.physics3.json new file mode 100644 index 0000000..91798f8 --- /dev/null +++ b/server/src/main/resources/public/miku_sample_t04.physics3.json @@ -0,0 +1,1952 @@ +{ + "Version": 3, + "Meta": { + "PhysicsSettingCount": 13, + "TotalInputCount": 37, + "TotalOutputCount": 51, + "VertexCount": 71, + "EffectiveForces": { + "Gravity": { + "X": 0, + "Y": -1 + }, + "Wind": { + "X": 0, + "Y": 0 + } + }, + "PhysicsDictionary": [ + { + "Id": "PhysicsSetting1", + "Name": "右ツインテール XZ" + }, + { + "Id": "PhysicsSetting2", + "Name": "左ツインテール XZ" + }, + { + "Id": "PhysicsSetting3", + "Name": "右ツインテールひねり" + }, + { + "Id": "PhysicsSetting4", + "Name": "左ツインテールひねり" + }, + { + "Id": "PhysicsSetting5", + "Name": "左ツインテール Y" + }, + { + "Id": "PhysicsSetting6", + "Name": "右ツインテール Y" + }, + { + "Id": "PhysicsSetting7", + "Name": "ネクタイ" + }, + { + "Id": "PhysicsSetting8", + "Name": "前髪 XZ" + }, + { + "Id": "PhysicsSetting9", + "Name": "前髪 Y" + }, + { + "Id": "PhysicsSetting10", + "Name": "スカート 揺れ" + }, + { + "Id": "PhysicsSetting11", + "Name": "スカート 上下" + }, + { + "Id": "PhysicsSetting12", + "Name": "ベルト" + }, + { + "Id": "PhysicsSetting13", + "Name": "後ろ髪" + } + ] + }, + "PhysicsSettings": [ + { + "Id": "PhysicsSetting1", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleX" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleZ" + }, + "Weight": 60, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 40, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_1_D_HAIR_BACK_00" + }, + "VertexIndex": 1, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_2_D_HAIR_BACK_00" + }, + "VertexIndex": 2, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_3_D_HAIR_BACK_00" + }, + "VertexIndex": 3, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_4_D_HAIR_BACK_00" + }, + "VertexIndex": 4, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_5_D_HAIR_BACK_00" + }, + "VertexIndex": 5, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_6_D_HAIR_BACK_00" + }, + "VertexIndex": 6, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_7_D_HAIR_BACK_00" + }, + "VertexIndex": 7, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_8_D_HAIR_BACK_00" + }, + "VertexIndex": 8, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_9_D_HAIR_BACK_00" + }, + "VertexIndex": 9, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 10 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 20 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 30 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 40 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 50 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 60 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 70 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 80 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 90 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 100 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -16.3, + "Default": 0, + "Maximum": 26.5 + } + } + }, + { + "Id": "PhysicsSetting2", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleX" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleZ" + }, + "Weight": 60, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 40, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_1_D_HAIR_BACK_10" + }, + "VertexIndex": 1, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_2_D_HAIR_BACK_10" + }, + "VertexIndex": 2, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_3_D_HAIR_BACK_10" + }, + "VertexIndex": 3, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_4_D_HAIR_BACK_10" + }, + "VertexIndex": 4, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_5_D_HAIR_BACK_10" + }, + "VertexIndex": 5, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_6_D_HAIR_BACK_10" + }, + "VertexIndex": 6, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_7_D_HAIR_BACK_10" + }, + "VertexIndex": 7, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_8_D_HAIR_BACK_10" + }, + "VertexIndex": 9, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_9_D_HAIR_BACK_10" + }, + "VertexIndex": 8, + "Scale": 30, + "Weight": 70, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 10 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 20 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 30 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 40 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 50 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 60 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 70 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 80 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 90 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 100 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -46.9, + "Default": 0, + "Maximum": 19 + } + } + }, + { + "Id": "PhysicsSetting3", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleX" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleZ" + }, + "Weight": 60, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 40, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairBackR6" + }, + "VertexIndex": 1, + "Scale": 1.416, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 15 + }, + "Mobility": 0.95, + "Delay": 0.8, + "Acceleration": 1.5, + "Radius": 15 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting4", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleX" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleZ" + }, + "Weight": 60, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 40, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairBackL8" + }, + "VertexIndex": 1, + "Scale": 1.744, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 15 + }, + "Mobility": 0.95, + "Delay": 0.8, + "Acceleration": 1.5, + "Radius": 15 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting5", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleY" + }, + "Weight": 30, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleY" + }, + "Weight": 70, + "Type": "X", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_1_D_HAIR_BACK_10" + }, + "VertexIndex": 1, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_2_D_HAIR_BACK_10" + }, + "VertexIndex": 2, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_3_D_HAIR_BACK_10" + }, + "VertexIndex": 3, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_4_D_HAIR_BACK_10" + }, + "VertexIndex": 4, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_5_D_HAIR_BACK_10" + }, + "VertexIndex": 5, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_6_D_HAIR_BACK_10" + }, + "VertexIndex": 6, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_7_D_HAIR_BACK_10" + }, + "VertexIndex": 7, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_8_D_HAIR_BACK_10" + }, + "VertexIndex": 8, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_9_D_HAIR_BACK_10" + }, + "VertexIndex": 9, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 10 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 20 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 30 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 40 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 50 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 60 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 70 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 80 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 90 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 100 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting6", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleY" + }, + "Weight": 30, + "Type": "X", + "Reflect": true + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleY" + }, + "Weight": 70, + "Type": "X", + "Reflect": true + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_1_D_HAIR_BACK_00" + }, + "VertexIndex": 1, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_2_D_HAIR_BACK_00" + }, + "VertexIndex": 2, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_3_D_HAIR_BACK_00" + }, + "VertexIndex": 3, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_4_D_HAIR_BACK_00" + }, + "VertexIndex": 4, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_5_D_HAIR_BACK_00" + }, + "VertexIndex": 5, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_6_D_HAIR_BACK_00" + }, + "VertexIndex": 6, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_7_D_HAIR_BACK_00" + }, + "VertexIndex": 7, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_8_D_HAIR_BACK_00" + }, + "VertexIndex": 8, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_9_D_HAIR_BACK_00" + }, + "VertexIndex": 9, + "Scale": 10, + "Weight": 30, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 10 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 20 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 30 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 40 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 50 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 60 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 70 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 80 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 90 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + }, + { + "Position": { + "X": 0, + "Y": 100 + }, + "Mobility": 0.85, + "Delay": 0.85, + "Acceleration": 1.2, + "Radius": 10 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting7", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 100, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_1_D_BODY_06" + }, + "VertexIndex": 1, + "Scale": 2, + "Weight": 100, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_2_D_BODY_06" + }, + "VertexIndex": 2, + "Scale": 20, + "Weight": 100, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_3_D_BODY_06" + }, + "VertexIndex": 3, + "Scale": 20, + "Weight": 100, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_4_D_BODY_06" + }, + "VertexIndex": 4, + "Scale": 20, + "Weight": 100, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_5_D_BODY_06" + }, + "VertexIndex": 5, + "Scale": 20, + "Weight": 100, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_6_D_BODY_06" + }, + "VertexIndex": 6, + "Scale": 20, + "Weight": 100, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "Param_Angle_Rotation_7_D_BODY_06" + }, + "VertexIndex": 7, + "Scale": 20, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 20 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 40 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 60 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 80 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 100 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 120 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 140 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 160 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 180 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + }, + { + "Position": { + "X": 0, + "Y": 200 + }, + "Mobility": 0.75, + "Delay": 1.5, + "Acceleration": 1.5, + "Radius": 20 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting8", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleX" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleZ" + }, + "Weight": 60, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 40, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairFront" + }, + "VertexIndex": 1, + "Scale": 1.356, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 15 + }, + "Mobility": 0.95, + "Delay": 0.8, + "Acceleration": 1.5, + "Radius": 15 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting9", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleY" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleY" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairFront2" + }, + "VertexIndex": 1, + "Scale": 1, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 15 + }, + "Mobility": 0.95, + "Delay": 0.8, + "Acceleration": 1.5, + "Radius": 15 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting10", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 100, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "Param" + }, + "VertexIndex": 1, + "Scale": 1.203, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 10 + }, + "Mobility": 0.85, + "Delay": 1, + "Acceleration": 1.5, + "Radius": 10 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting11", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleY" + }, + "Weight": 100, + "Type": "X", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "Param2" + }, + "VertexIndex": 1, + "Scale": 1, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 10 + }, + "Mobility": 0.85, + "Delay": 1, + "Acceleration": 1.5, + "Radius": 10 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting12", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 100, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "Param3" + }, + "VertexIndex": 1, + "Scale": 1.684, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 7 + }, + "Mobility": 0.9, + "Delay": 0.9, + "Acceleration": 1.5, + "Radius": 7 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting13", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleX" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleZ" + }, + "Weight": 60, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 40, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairBack" + }, + "VertexIndex": 1, + "Scale": 1, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 3 + }, + "Mobility": 0.95, + "Delay": 0.9, + "Acceleration": 1.5, + "Radius": 3 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + } + ] +} \ No newline at end of file diff --git a/server/src/main/resources/public/miku_sample_t04.prprl2d.json b/server/src/main/resources/public/miku_sample_t04.prprl2d.json new file mode 100644 index 0000000..31b3403 --- /dev/null +++ b/server/src/main/resources/public/miku_sample_t04.prprl2d.json @@ -0,0 +1,391 @@ + +{ + "customName" : "miku_sample_t04", + "iconPath" : "", + "bodyPhysics" : 0.6, + "useAnimBlend" : 0, + "modelPos" : { + "x" : 0.0, + "y" : 0.0, + "z" : -0.800000011920929 + }, + "modelSize" : { + "x" : 5.0, + "y" : 5.0, + "z" : 5.0 + }, + "modelAngle" : { + "x" : 0.0, + "y" : 0.0, + "z" : 0.0 + }, + "capsuleRadius" : 1, + "capsuleHeight" : 4, + "capsulePos" : { + "x" : 0.0, + "y" : 0.0, + "z" : -1.79999995231628 + }, + "defaultAnimIndex" : -1, + "keys" : [ + { + "type" : 0, + "bindAction" : "0", + "bindVirtualAction" : { + "Keys" : [ + 49 + ], + "actionName" : "", + "isGlobal" : false, + "isApply" : true + } + }, + { + "type" : 0, + "bindAction" : "1", + "bindVirtualAction" : { + "Keys" : [ + 50 + ], + "actionName" : "", + "isGlobal" : false, + "isApply" : true + } + }, + { + "type" : 0, + "bindAction" : "2", + "bindVirtualAction" : { + "Keys" : [ + 51 + ], + "actionName" : "", + "isGlobal" : false, + "isApply" : true + } + }, + { + "type" : 0, + "bindAction" : "3", + "bindVirtualAction" : { + "Keys" : [ + 52 + ], + "actionName" : "", + "isGlobal" : false, + "isApply" : true + } + }, + { + "type" : 0, + "bindAction" : "4", + "bindVirtualAction" : { + "Keys" : [ + 53 + ], + "actionName" : "", + "isGlobal" : false, + "isApply" : true + } + }, + { + "type" : 0, + "bindAction" : "5", + "bindVirtualAction" : { + "Keys" : [ + 54 + ], + "actionName" : "", + "isGlobal" : false, + "isApply" : true + } + }, + { + "type" : 0, + "bindAction" : "6", + "bindVirtualAction" : { + "Keys" : [ + 55 + ], + "actionName" : "", + "isGlobal" : false, + "isApply" : true + } + }, + { + "type" : 0, + "bindAction" : "7", + "bindVirtualAction" : { + "Keys" : [ + 56 + ], + "actionName" : "", + "isGlobal" : false, + "isApply" : true + } + }, + { + "type" : 0, + "bindAction" : "-1", + "bindVirtualAction" : { + "Keys" : [ + 48 + ], + "actionName" : "", + "isGlobal" : false, + "isApply" : true + } + } + ], + "useVoice" : false, + "voiceParams" : [ + 1, + 1, + 0.5, + 0.3, + 0.4, + 0.1, + 1, + -1, + 0.4, + 1 + ], + "facialSettingMapV2" : { + "yaw" : { + "dataIndex" : 0, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamAngleX", + "fMinValue" : -1, + "fMaxValue" : 1, + "pMinValue" : -30, + "pMaxValue" : 30, + "lerpValue" : 0.6 + }, + { + "paramName" : "ParamBodyAngleX", + "fMinValue" : -1, + "fMaxValue" : 1, + "pMinValue" : -10, + "pMaxValue" : 10, + "lerpValue" : 0.6 + } + ] + }, + "pitch" : { + "dataIndex" : 1, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamAngleY", + "fMinValue" : -1, + "fMaxValue" : 1, + "pMinValue" : -30, + "pMaxValue" : 30, + "lerpValue" : 0.6 + }, + { + "paramName" : "ParamBodyAngleY", + "fMinValue" : -1, + "fMaxValue" : 1, + "pMinValue" : -10, + "pMaxValue" : 10, + "lerpValue" : 0.6 + } + ] + }, + "roll" : { + "dataIndex" : 2, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamAngleZ", + "fMinValue" : -1, + "fMaxValue" : 1, + "pMinValue" : -30, + "pMaxValue" : 30, + "lerpValue" : 0.6 + }, + { + "paramName" : "ParamBodyAngleZ", + "fMinValue" : -1, + "fMaxValue" : 1, + "pMinValue" : -10, + "pMaxValue" : 10, + "lerpValue" : 0.6 + } + ] + }, + "eyeL" : { + "dataIndex" : 3, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamEyeLOpen", + "fMinValue" : -0.8, + "fMaxValue" : 0.8, + "pMinValue" : 0, + "pMaxValue" : 1, + "lerpValue" : 0.4 + } + ] + }, + "eyeR" : { + "dataIndex" : 4, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamEyeROpen", + "fMinValue" : -0.8, + "fMaxValue" : 0.8, + "pMinValue" : 0, + "pMaxValue" : 1, + "lerpValue" : 0.4 + } + ] + }, + "browLY" : { + "dataIndex" : 5, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamBrowLY", + "fMinValue" : -0.5, + "fMaxValue" : 0.5, + "pMinValue" : -1, + "pMaxValue" : 1, + "lerpValue" : 0.5 + }, + { + "paramName" : "ParamBrowLAngle", + "fMinValue" : -0.5, + "fMaxValue" : 0.5, + "pMinValue" : -1, + "pMaxValue" : 1, + "lerpValue" : 0.5 + } + ] + }, + "browRY" : { + "dataIndex" : 6, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamBrowRY", + "fMinValue" : -0.5, + "fMaxValue" : 0.5, + "pMinValue" : -1, + "pMaxValue" : 1, + "lerpValue" : 0.5 + }, + { + "paramName" : "ParamBrowRAngle", + "fMinValue" : -0.5, + "fMaxValue" : 0.5, + "pMinValue" : -1, + "pMaxValue" : 1, + "lerpValue" : 0.5 + } + ] + }, + "mouthY" : { + "dataIndex" : 7, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamMouthOpenY", + "fMinValue" : -1, + "fMaxValue" : 0, + "pMinValue" : 0, + "pMaxValue" : 1, + "lerpValue" : 0.4 + } + ] + }, + "mouthX" : { + "dataIndex" : 8, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamMouthForm", + "fMinValue" : -0.6, + "fMaxValue" : 0.6, + "pMinValue" : -1, + "pMaxValue" : 1, + "lerpValue" : 0.5 + } + ] + }, + "eyeballX" : { + "dataIndex" : 9, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamEyeBallX", + "fMinValue" : -0.5, + "fMaxValue" : 0.5, + "pMinValue" : -1, + "pMaxValue" : 1, + "lerpValue" : 0.5 + } + ] + }, + "eyeballY" : { + "dataIndex" : 10, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamEyeBallY", + "fMinValue" : -0.5, + "fMaxValue" : 0.5, + "pMinValue" : -1, + "pMaxValue" : 1, + "lerpValue" : 0.5 + } + ] + }, + "browform" : { + "dataIndex" : 11, + "enableMapping" : true, + "paramSettingData" : [ + { + "paramName" : "ParamBrowLForm", + "fMinValue" : -1, + "fMaxValue" : 1, + "pMinValue" : -1, + "pMaxValue" : 1, + "lerpValue" : 0.5 + }, + { + "paramName" : "ParamBrowRForm", + "fMinValue" : -1, + "fMaxValue" : 1, + "pMinValue" : -1, + "pMaxValue" : 1, + "lerpValue" : 0.5 + } + ] + }, + "facesite" : { + "dataIndex" : 12, + "enableMapping" : true, + "paramSettingData" : [ + ] + }, + "facedistance" : { + "dataIndex" : 13, + "enableMapping" : true, + "paramSettingData" : [ + ] + }, + "tongue" : { + "dataIndex" : 14, + "enableMapping" : true, + "paramSettingData" : [ + ] + } + }, + "L2DName" : "", + "mapIsGlobal" : false +} \ No newline at end of file diff --git a/server/src/main/resources/public/motion/miku_01.motion3.json b/server/src/main/resources/public/motion/miku_01.motion3.json new file mode 100644 index 0000000..a94d0f4 --- /dev/null +++ b/server/src/main/resources/public/motion/miku_01.motion3.json @@ -0,0 +1,596 @@ +{ + "Version": 3, + "Meta": { + "Duration": 2.4, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 26, + "TotalSegmentCount": 68, + "TotalPointCount": 178, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + 0, + 0.267, + 0, + 1, + 0.411, + 0, + 0.556, + 0, + 0.7, + 0, + 1, + 0.856, + 0, + 1.011, + 0, + 1.167, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + -16, + 0.267, + -16, + 1, + 0.411, + -16, + 0.556, + 0, + 0.7, + 0, + 1, + 0.856, + 0, + 1.011, + 0, + 1.167, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + -17, + 0.267, + -17, + 1, + 0.411, + -17, + 0.556, + 9, + 0.7, + 9, + 1, + 0.856, + 9, + 1.011, + 0, + 1.167, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.044, + 1, + 0.089, + 1, + 0.133, + 1, + 1, + 0.178, + 1, + 0.222, + 0, + 0.267, + 0, + 1, + 0.333, + 0, + 0.4, + 0, + 0.467, + 0, + 1, + 0.522, + 0, + 0.578, + 1, + 0.633, + 1, + 0, + 2.4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.044, + 0, + 0.089, + 0, + 0.133, + 0, + 1, + 0.178, + 0, + 0.222, + 1, + 0.267, + 1, + 1, + 0.333, + 1, + 0.4, + 1, + 0.467, + 1, + 1, + 0.522, + 1, + 0.578, + 0, + 0.633, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.044, + 1, + 0.089, + 1, + 0.133, + 1, + 1, + 0.178, + 1, + 0.222, + 0, + 0.267, + 0, + 1, + 0.333, + 0, + 0.4, + 0, + 0.467, + 0, + 1, + 0.522, + 0, + 0.578, + 1, + 0.633, + 1, + 0, + 2.4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.044, + 0, + 0.089, + 0, + 0.133, + 0, + 1, + 0.178, + 0, + 0.222, + 1, + 0.267, + 1, + 1, + 0.333, + 1, + 0.4, + 1, + 0.467, + 1, + 1, + 0.522, + 1, + 0.578, + 0, + 0.633, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + 0.01, + 0.267, + 0.01, + 1, + 0.411, + 0.01, + 0.556, + 0, + 0.7, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + 0.54, + 0.267, + 0.54, + 1, + 0.411, + 0.54, + 0.556, + 0, + 0.7, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthOpenY", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthForm", + "Segments": [ + 0, + 1, + 0, + 2.4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmL", + "Segments": [ + 0, + -1, + 1, + 0.1, + -1, + 0.2, + -0.42, + 0.3, + -0.42, + 1, + 0.444, + -0.42, + 0.589, + -1, + 0.733, + -1, + 1, + 0.878, + -1, + 1.022, + -0.84, + 1.167, + -0.84, + 0, + 2.4, + -0.84 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmR", + "Segments": [ + 0, + -1, + 1, + 0.1, + -1, + 0.2, + -0.42, + 0.3, + -0.42, + 1, + 0.444, + -0.42, + 0.589, + -1, + 0.733, + -1, + 1, + 0.878, + -1, + 1.022, + -0.84, + 1.167, + -0.84, + 0, + 2.4, + -0.84 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + -1, + 0.267, + -1, + 1, + 0.411, + -1, + 0.556, + 2, + 0.7, + 2, + 0, + 2.4, + 2 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + -3, + 0.3, + -3, + 1, + 0.433, + -3, + 0.567, + 1, + 0.7, + 1, + 1, + 0.856, + 1, + 1.011, + 0, + 1.167, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.233, + 0, + 0.467, + 2, + 0.7, + 2, + 1, + 0.856, + 2, + 1.011, + 0, + 1.167, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/server/src/main/resources/public/motion/miku_02.motion3.json b/server/src/main/resources/public/motion/miku_02.motion3.json new file mode 100644 index 0000000..75d1564 --- /dev/null +++ b/server/src/main/resources/public/motion/miku_02.motion3.json @@ -0,0 +1,631 @@ +{ + "Version": 3, + "Meta": { + "Duration": 2.733, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 26, + "TotalSegmentCount": 73, + "TotalPointCount": 193, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + -14, + 0.3, + -14, + 1, + 0.4, + -14, + 0.5, + -10.679, + 0.6, + -7, + 1, + 0.744, + -1.686, + 0.889, + 0, + 1.033, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + 0, + 0.3, + 0, + 1, + 0.4, + 0, + 0.5, + 1, + 0.6, + 1, + 1, + 0.744, + 1, + 0.889, + 0, + 1.033, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + -26, + 0.3, + -26, + 1, + 0.4, + -26, + 0.5, + 15, + 0.6, + 15, + 1, + 0.789, + 15, + 0.978, + -26, + 1.167, + -26, + 0, + 2.733, + -26 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + 0, + 0.3, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.211, + 1, + 0.256, + 0, + 0.3, + 0, + 1, + 0.322, + 0, + 0.344, + 0, + 0.367, + 0, + 1, + 0.422, + 0, + 0.478, + 1, + 0.533, + 1, + 1, + 0.7, + 1, + 0.867, + 1, + 1.033, + 1, + 0, + 2.733, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + 0, + 0.3, + 0, + 1, + 0.544, + 0, + 0.789, + 0, + 1.033, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.211, + 1, + 0.256, + 0, + 0.3, + 0, + 1, + 0.322, + 0, + 0.344, + 0, + 0.367, + 0, + 1, + 0.422, + 0, + 0.478, + 1, + 0.533, + 1, + 1, + 0.7, + 1, + 0.867, + 1, + 1.033, + 1, + 0, + 2.733, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + 0, + 0.3, + 0, + 1, + 0.544, + 0, + 0.789, + 0, + 1.033, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + 0.63, + 0.3, + 0.63, + 1, + 0.4, + 0.63, + 0.5, + 0.357, + 0.6, + 0.22, + 1, + 0.744, + 0.023, + 0.889, + 0, + 1.033, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + -0.17, + 0.3, + -0.17, + 1, + 0.4, + -0.17, + 0.5, + -0.17, + 0.6, + -0.17, + 1, + 0.744, + -0.17, + 0.889, + 0, + 1.033, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + -1, + 1, + 0.1, + -1, + 0.2, + -1, + 0.3, + -1, + 0, + 2.733, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + -1, + 1, + 0.1, + -1, + 0.2, + -1, + 0.3, + -1, + 0, + 2.733, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthOpenY", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + 0, + 0.3, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthForm", + "Segments": [ + 0, + -1, + 1, + 0.1, + -1, + 0.2, + -1, + 0.3, + -1, + 0, + 2.733, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmL", + "Segments": [ + 0, + -1, + 1, + 0.133, + -1, + 0.267, + -1, + 0.4, + -1, + 1, + 0.5, + -1, + 0.6, + -0.56, + 0.7, + -0.56, + 1, + 0.844, + -0.56, + 0.989, + -0.66, + 1.133, + -0.66, + 0, + 2.733, + -0.66 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmR", + "Segments": [ + 0, + -1, + 1, + 0.133, + -1, + 0.267, + -1, + 0.4, + -1, + 1, + 0.5, + -1, + 0.6, + -0.59, + 0.7, + -0.59, + 1, + 0.844, + -0.59, + 0.989, + -1, + 1.133, + -1, + 0, + 2.733, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + -3, + 0.3, + -3, + 0, + 2.733, + -3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.1, + 0, + 0.2, + -3, + 0.3, + -3, + 1, + 0.422, + -3, + 0.544, + 2, + 0.667, + 2, + 1, + 0.778, + 2, + 0.889, + 0, + 1, + 0, + 0, + 2.733, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.133, + 0, + 0.267, + -3, + 0.4, + -3, + 1, + 0.5, + -3, + 0.6, + 8, + 0.7, + 8, + 1, + 0.833, + 8, + 0.967, + 2, + 1.1, + 2, + 0, + 2.733, + 2 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 0, + 2.733, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/server/src/main/resources/public/motion/miku_03.motion3.json b/server/src/main/resources/public/motion/miku_03.motion3.json new file mode 100644 index 0000000..527aa7f --- /dev/null +++ b/server/src/main/resources/public/motion/miku_03.motion3.json @@ -0,0 +1,645 @@ +{ + "Version": 3, + "Meta": { + "Duration": 3.067, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 26, + "TotalSegmentCount": 75, + "TotalPointCount": 199, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + 15, + 0.9, + 15, + 0, + 3.067, + 15 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + 21, + 0.267, + 21, + 1, + 0.478, + 21, + 0.689, + -16, + 0.9, + -16, + 0, + 3.067, + -16 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.356, + 0, + 0.711, + 12, + 1.067, + 12, + 0, + 3.067, + 12 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 0, + 3.067, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.089, + 1, + 0.178, + 1, + 0.267, + 1, + 1, + 0.311, + 1, + 0.356, + 0, + 0.4, + 0, + 1, + 0.422, + 0, + 0.444, + 0, + 0.467, + 0, + 1, + 0.522, + 0, + 0.578, + 0.7, + 0.633, + 0.7, + 1, + 0.878, + 0.7, + 1.122, + 0.7, + 1.367, + 0.7, + 1, + 1.411, + 0.7, + 1.456, + 0, + 1.5, + 0, + 1, + 1.522, + 0, + 1.544, + 0, + 1.567, + 0, + 1, + 1.622, + 0, + 1.678, + 0.7, + 1.733, + 0.7, + 0, + 3.067, + 0.7 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + 0, + 0.267, + 0, + 1, + 0.389, + 0, + 0.511, + 0, + 0.633, + 0, + 1, + 0.878, + 0, + 1.122, + 0, + 1.367, + 0, + 1, + 1.489, + 0, + 1.611, + 0, + 1.733, + 0, + 0, + 3.067, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.089, + 1, + 0.178, + 1, + 0.267, + 1, + 1, + 0.311, + 1, + 0.356, + 0, + 0.4, + 0, + 1, + 0.422, + 0, + 0.444, + 0, + 0.467, + 0, + 1, + 0.522, + 0, + 0.578, + 0.72, + 0.633, + 0.72, + 1, + 0.878, + 0.72, + 1.122, + 0.72, + 1.367, + 0.72, + 1, + 1.411, + 0.72, + 1.456, + 0, + 1.5, + 0, + 1, + 1.522, + 0, + 1.544, + 0, + 1.567, + 0, + 1, + 1.622, + 0, + 1.678, + 0.72, + 1.733, + 0.72, + 0, + 3.067, + 0.72 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + 0, + 0.267, + 0, + 1, + 0.389, + 0, + 0.511, + 0, + 0.633, + 0, + 1, + 0.878, + 0, + 1.122, + 0, + 1.367, + 0, + 1, + 1.489, + 0, + 1.611, + 0, + 1.733, + 0, + 0, + 3.067, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + 0.84, + 0.9, + 0.84, + 1, + 1.056, + 0.84, + 1.211, + 0.84, + 1.367, + 0.84, + 1, + 1.489, + 0.84, + 1.611, + -1, + 1.733, + -1, + 0, + 3.067, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + -1, + 0.9, + -1, + 1, + 1.056, + -1, + 1.211, + -1, + 1.367, + -1, + 1, + 1.489, + -1, + 1.611, + -1, + 1.733, + -1, + 0, + 3.067, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + -0.57, + 0.9, + -0.57, + 0, + 3.067, + -0.57 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + -0.56, + 0.9, + -0.56, + 0, + 3.067, + -0.56 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 0, + 3.067, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 0, + 3.067, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + 0.73, + 0.9, + 0.73, + 0, + 3.067, + 0.73 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + 0.73, + 0.9, + 0.73, + 0, + 3.067, + 0.73 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + -1, + 0.9, + -1, + 0, + 3.067, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + -1, + 0.9, + -1, + 0, + 3.067, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthOpenY", + "Segments": [ + 0, + 0, + 1, + 0.3, + 0, + 0.6, + 0, + 0.9, + 0, + 0, + 3.067, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthForm", + "Segments": [ + 0, + 1, + 1, + 0.3, + 1, + 0.6, + -0.27, + 0.9, + -0.27, + 0, + 3.067, + -0.27 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmL", + "Segments": [ + 0, + -1, + 1, + 0.1, + -1, + 0.2, + -0.67, + 0.3, + -0.67, + 1, + 0.489, + -0.67, + 0.678, + -1, + 0.867, + -1, + 0, + 3.067, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmR", + "Segments": [ + 0, + -1, + 1, + 0.1, + -1, + 0.2, + -0.69, + 0.3, + -0.69, + 1, + 0.489, + -0.69, + 0.678, + -1, + 0.867, + -1, + 0, + 3.067, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.289, + 0, + 0.578, + 5, + 0.867, + 5, + 0, + 3.067, + 5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 0, + 3.067, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.122, + 0, + 0.244, + -5, + 0.367, + -5, + 1, + 0.556, + -5, + 0.744, + 1, + 0.933, + 1, + 0, + 3.067, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 0, + 3.067, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/server/src/main/resources/public/motion/miku_04.motion3.json b/server/src/main/resources/public/motion/miku_04.motion3.json new file mode 100644 index 0000000..6f19245 --- /dev/null +++ b/server/src/main/resources/public/motion/miku_04.motion3.json @@ -0,0 +1,407 @@ +{ + "Version": 3, + "Meta": { + "Duration": 2.4, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 26, + "TotalSegmentCount": 41, + "TotalPointCount": 97, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.067, + 0, + 0.133, + -8, + 0.2, + -8, + 1, + 0.356, + -8, + 0.511, + 26, + 0.667, + 26, + 1, + 0.789, + 26, + 0.911, + 22, + 1.033, + 22, + 0, + 2.4, + 22 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 1, + 0, + 2.4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 1, + 0, + 2.4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthOpenY", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthForm", + "Segments": [ + 0, + 1, + 0, + 2.4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmL", + "Segments": [ + 0, + -1, + 1, + 0.133, + -1, + 0.267, + 0, + 0.4, + 0, + 1, + 0.489, + 0, + 0.578, + -0.31, + 0.667, + -0.31, + 1, + 0.767, + -0.31, + 0.867, + -0.18, + 0.967, + -0.18, + 0, + 2.4, + -0.18 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmR", + "Segments": [ + 0, + -1, + 1, + 0.133, + -1, + 0.267, + 0, + 0.4, + 0, + 1, + 0.489, + 0, + 0.578, + -0.32, + 0.667, + -0.32, + 1, + 0.767, + -0.32, + 0.867, + -0.16, + 0.967, + -0.16, + 0, + 2.4, + -0.16 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.067, + 0, + 0.133, + -2, + 0.2, + -2, + 1, + 0.256, + -2, + 0.311, + 6, + 0.367, + 6, + 1, + 0.467, + 6, + 0.567, + -2, + 0.667, + -2, + 1, + 0.767, + -2, + 0.867, + 0, + 0.967, + 0, + 0, + 2.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.067, + 0, + 0.133, + -2, + 0.2, + -2, + 1, + 0.356, + -2, + 0.511, + 3, + 0.667, + 3, + 0, + 2.4, + 3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 0, + 2.4, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/server/src/main/resources/public/motion/miku_05.motion3.json b/server/src/main/resources/public/motion/miku_05.motion3.json new file mode 100644 index 0000000..7d8ec1d --- /dev/null +++ b/server/src/main/resources/public/motion/miku_05.motion3.json @@ -0,0 +1,708 @@ +{ + "Version": 3, + "Meta": { + "Duration": 2.767, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 26, + "TotalSegmentCount": 84, + "TotalPointCount": 226, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + -12, + 0.533, + -12, + 1, + 0.711, + -12, + 0.889, + -12, + 1.067, + -12, + 0, + 2.767, + -12 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + -13, + 0.533, + -13, + 1, + 0.711, + -13, + 0.889, + -13, + 1.067, + -13, + 0, + 2.767, + -13 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.067, + 0, + 0.133, + 5, + 0.2, + 5, + 1, + 0.344, + 5, + 0.489, + -12, + 0.633, + -12, + 1, + 0.811, + -12, + 0.989, + -12, + 1.167, + -12, + 1, + 1.278, + -12, + 1.389, + 0, + 1.5, + 0, + 0, + 2.767, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + 1, + 0.533, + 1, + 0, + 2.767, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.089, + 1, + 0.178, + 1, + 0.267, + 1, + 1, + 0.311, + 1, + 0.356, + 0, + 0.4, + 0, + 1, + 0.422, + 0, + 0.444, + 0, + 0.467, + 0, + 1, + 0.522, + 0, + 0.578, + 0.88, + 0.633, + 0.88, + 1, + 0.767, + 0.88, + 0.9, + 0.88, + 1.033, + 0.88, + 1, + 1.078, + 0.88, + 1.122, + 0, + 1.167, + 0, + 1, + 1.189, + 0, + 1.211, + 0, + 1.233, + 0, + 1, + 1.289, + 0, + 1.344, + 1, + 1.4, + 1, + 0, + 2.767, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 0, + 2.767, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.089, + 1, + 0.178, + 1, + 0.267, + 1, + 1, + 0.311, + 1, + 0.356, + 0, + 0.4, + 0, + 1, + 0.422, + 0, + 0.444, + 0, + 0.467, + 0, + 1, + 0.522, + 0, + 0.578, + 0.88, + 0.633, + 0.88, + 1, + 0.767, + 0.88, + 0.9, + 0.88, + 1.033, + 0.88, + 1, + 1.078, + 0.88, + 1.122, + 0, + 1.167, + 0, + 1, + 1.189, + 0, + 1.211, + 0, + 1.233, + 0, + 1, + 1.289, + 0, + 1.344, + 1, + 1.4, + 1, + 0, + 2.767, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 0, + 2.767, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + -0.8, + 0.533, + -0.8, + 1, + 0.711, + -0.8, + 0.889, + -0.8, + 1.067, + -0.8, + 1, + 1.167, + -0.8, + 1.267, + 0.66, + 1.367, + 0.66, + 0, + 2.767, + 0.66 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + -0.25, + 0.533, + -0.25, + 1, + 0.711, + -0.25, + 0.889, + -0.25, + 1.067, + -0.25, + 1, + 1.167, + -0.25, + 1.267, + 0.21, + 1.367, + 0.21, + 0, + 2.767, + 0.21 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 0, + 2.767, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 0, + 2.767, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 0, + 2.767, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 0, + 2.767, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0.57, + 1, + 0.178, + 0.57, + 0.356, + 0.57, + 0.533, + 0.57, + 1, + 0.711, + 0.57, + 0.889, + 0.57, + 1.067, + 0.57, + 0, + 2.767, + 0.57 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0.57, + 1, + 0.178, + 0.57, + 0.356, + 0.57, + 0.533, + 0.57, + 1, + 0.711, + 0.57, + 0.889, + 0.57, + 1.067, + 0.57, + 0, + 2.767, + 0.57 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + -0.63, + 1, + 0.178, + -0.63, + 0.356, + -0.63, + 0.533, + -0.63, + 1, + 0.711, + -0.63, + 0.889, + -0.63, + 1.067, + -0.63, + 1, + 1.167, + -0.63, + 1.267, + -0.16, + 1.367, + -0.16, + 0, + 2.767, + -0.16 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + -0.63, + 1, + 0.178, + -0.63, + 0.356, + -0.63, + 0.533, + -0.63, + 1, + 0.711, + -0.63, + 0.889, + -0.63, + 1.067, + -0.63, + 1, + 1.167, + -0.63, + 1.267, + -0.22, + 1.367, + -0.22, + 0, + 2.767, + -0.22 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthOpenY", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + 0, + 0.533, + 0, + 1, + 0.711, + 0, + 0.889, + 0, + 1.067, + 0, + 1, + 1.167, + 0, + 1.267, + 0, + 1.367, + 0, + 0, + 2.767, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthForm", + "Segments": [ + 0, + 0.29, + 1, + 0.178, + 0.29, + 0.356, + 0.29, + 0.533, + 0.29, + 1, + 0.711, + 0.29, + 0.889, + 0.29, + 1.067, + 0.29, + 1, + 1.167, + 0.29, + 1.267, + 0.92, + 1.367, + 0.92, + 0, + 2.767, + 0.92 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmL", + "Segments": [ + 0, + 1, + 1, + 0.178, + 1, + 0.356, + 1, + 0.533, + 1, + 0, + 2.767, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmR", + "Segments": [ + 0, + -1, + 0, + 2.767, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + -6, + 0.533, + -6, + 1, + 0.711, + -6, + 0.889, + -6, + 1.067, + -6, + 1, + 1.178, + -6, + 1.289, + -5, + 1.4, + -5, + 0, + 2.767, + -5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.089, + 0, + 0.178, + 3, + 0.267, + 3, + 1, + 0.378, + 3, + 0.489, + -2, + 0.6, + -2, + 1, + 0.756, + -2, + 0.911, + -2, + 1.067, + -2, + 1, + 1.178, + -2, + 1.289, + 0, + 1.4, + 0, + 0, + 2.767, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + -3, + 0.533, + -3, + 1, + 0.711, + -3, + 0.889, + -3, + 1.067, + -3, + 1, + 1.178, + -3, + 1.289, + 1, + 1.4, + 1, + 0, + 2.767, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 0, + 2.767, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/server/src/main/resources/public/motion/miku_06.motion3.json b/server/src/main/resources/public/motion/miku_06.motion3.json new file mode 100644 index 0000000..f912e54 --- /dev/null +++ b/server/src/main/resources/public/motion/miku_06.motion3.json @@ -0,0 +1,547 @@ +{ + "Version": 3, + "Meta": { + "Duration": 2.1, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 26, + "TotalSegmentCount": 61, + "TotalPointCount": 157, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 5, + 0.233, + 5, + 0, + 2.1, + 5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 30, + 0.233, + 30, + 0, + 2.1, + 30 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 7.223, + 0.233, + 11, + 1, + 0.311, + 14.777, + 0.389, + 15, + 0.467, + 15, + 0, + 2.1, + 15 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 0, + 2.1, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.011, + 1, + 0.022, + 1, + 0.033, + 1, + 1, + 0.078, + 1, + 0.122, + 0, + 0.167, + 0, + 1, + 0.189, + 0, + 0.211, + 0, + 0.233, + 0, + 1, + 0.289, + 0, + 0.344, + 1, + 0.4, + 1, + 0, + 2.1, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 0, + 2.1, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.011, + 1, + 0.022, + 1, + 0.033, + 1, + 1, + 0.078, + 1, + 0.122, + 0, + 0.167, + 0, + 1, + 0.189, + 0, + 0.211, + 0, + 0.233, + 0, + 1, + 0.289, + 0, + 0.344, + 1, + 0.4, + 1, + 0, + 2.1, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 0, + 2.1, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + -0.33, + 0.233, + -0.33, + 0, + 2.1, + -0.33 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + -1, + 0.233, + -1, + 0, + 2.1, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 0.54, + 0.233, + 0.54, + 0, + 2.1, + 0.54 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 0.53, + 0.233, + 0.53, + 0, + 2.1, + 0.53 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 0, + 2.1, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 0, + 2.1, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 0.4, + 0.233, + 0.4, + 0, + 2.1, + 0.4 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 0.39, + 0.233, + 0.39, + 0, + 2.1, + 0.39 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 1, + 0.233, + 1, + 0, + 2.1, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 1, + 0.233, + 1, + 0, + 2.1, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthOpenY", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 1, + 0.233, + 1, + 1, + 0.311, + 1, + 0.389, + 0, + 0.467, + 0, + 0, + 2.1, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthForm", + "Segments": [ + 0, + 1, + 1, + 0.078, + 1, + 0.156, + -1, + 0.233, + -1, + 1, + 0.311, + -1, + 0.389, + -1, + 0.467, + -1, + 0, + 2.1, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmL", + "Segments": [ + 0, + -1, + 1, + 0.067, + -1, + 0.133, + 0, + 0.2, + 0, + 1, + 0.256, + 0, + 0.311, + -0.16, + 0.367, + -0.16, + 1, + 0.444, + -0.16, + 0.522, + 0, + 0.6, + 0, + 0, + 2.1, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmR", + "Segments": [ + 0, + -1, + 1, + 0.067, + -1, + 0.133, + 0, + 0.2, + 0, + 1, + 0.256, + 0, + 0.311, + -0.18, + 0.367, + -0.18, + 1, + 0.444, + -0.18, + 0.522, + 0, + 0.6, + 0, + 0, + 2.1, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + 3, + 0.233, + 3, + 0, + 2.1, + 3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.044, + 0, + 0.089, + 10, + 0.133, + 10, + 1, + 0.211, + 10, + 0.289, + -1, + 0.367, + -1, + 1, + 0.422, + -1, + 0.478, + 0, + 0.533, + 0, + 0, + 2.1, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.111, + 0, + 0.222, + 6, + 0.333, + 6, + 0, + 2.1, + 6 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 0, + 2.1, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/server/src/main/resources/public/motion/miku_07.motion3.json b/server/src/main/resources/public/motion/miku_07.motion3.json new file mode 100644 index 0000000..6ea2caa --- /dev/null +++ b/server/src/main/resources/public/motion/miku_07.motion3.json @@ -0,0 +1,484 @@ +{ + "Version": 3, + "Meta": { + "Duration": 2.3, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 26, + "TotalSegmentCount": 52, + "TotalPointCount": 130, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + -30, + 1, + 0.189, + -30, + 0.378, + 0, + 0.567, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + -30, + 1, + 0.078, + -30, + 0.156, + -30.694, + 0.233, + -29, + 1, + 0.411, + -25.128, + 0.589, + 16, + 0.767, + 16, + 1, + 0.911, + 16, + 1.056, + -13, + 1.2, + -13, + 0, + 2.3, + -13 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.178, + 1, + 0.356, + 1, + 0.533, + 1, + 1, + 0.578, + 1, + 0.622, + 0, + 0.667, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + 0, + 0.533, + 0, + 1, + 0.578, + 0, + 0.622, + 1, + 0.667, + 1, + 0, + 2.3, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.178, + 1, + 0.356, + 1, + 0.533, + 1, + 1, + 0.578, + 1, + 0.622, + 0, + 0.667, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.178, + 0, + 0.356, + 0, + 0.533, + 0, + 1, + 0.578, + 0, + 0.622, + 1, + 0.667, + 1, + 0, + 2.3, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 1, + 1, + 0.2, + 1, + 0.4, + 0, + 0.6, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.2, + 0, + 0.4, + 0, + 0.6, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthOpenY", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthForm", + "Segments": [ + 0, + 1, + 0, + 2.3, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmL", + "Segments": [ + 0, + 1, + 1, + 0.156, + 1, + 0.311, + 0, + 0.467, + 0, + 1, + 0.633, + 0, + 0.8, + 1, + 0.967, + 1, + 0, + 2.3, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmR", + "Segments": [ + 0, + -1, + 1, + 0.156, + -1, + 0.311, + 0, + 0.467, + 0, + 1, + 0.633, + 0, + 0.8, + -1, + 0.967, + -1, + 0, + 2.3, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + -10, + 1, + 0.189, + -10, + 0.378, + -6, + 0.567, + -6, + 1, + 0.744, + -6, + 0.922, + -8, + 1.1, + -8, + 0, + 2.3, + -8 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.044, + 0, + 0.089, + -5, + 0.133, + -5, + 1, + 0.211, + -5, + 0.289, + 10, + 0.367, + 10, + 1, + 0.467, + 10, + 0.567, + -6, + 0.667, + -6, + 1, + 0.778, + -6, + 0.889, + 0, + 1, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.233, + 0, + 0.467, + 4, + 0.7, + 4, + 1, + 0.856, + 4, + 1.011, + 0, + 1.167, + 0, + 0, + 2.3, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 0, + 2.3, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/server/src/main/resources/public/motion/miku_08.motion3.json b/server/src/main/resources/public/motion/miku_08.motion3.json new file mode 100644 index 0000000..7c201ce --- /dev/null +++ b/server/src/main/resources/public/motion/miku_08.motion3.json @@ -0,0 +1,967 @@ +{ + "Version": 3, + "Meta": { + "Duration": 5.4, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 26, + "TotalSegmentCount": 121, + "TotalPointCount": 337, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.156, + 0, + 0.311, + 0, + 0.467, + 0, + 1, + 0.656, + 0, + 0.844, + -6, + 1.033, + -6, + 1, + 1.233, + -6, + 1.433, + 10, + 1.633, + 10, + 1, + 1.789, + 10, + 1.944, + 8.046, + 2.1, + 0, + 1, + 2.233, + -6.897, + 2.367, + -14, + 2.5, + -14, + 1, + 2.7, + -14, + 2.9, + -14, + 3.1, + -14, + 1, + 3.267, + -14, + 3.433, + 11, + 3.6, + 11, + 0, + 5.4, + 11 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.144, + 0, + 0.289, + 30, + 0.433, + 30, + 1, + 0.633, + 30, + 0.833, + -30, + 1.033, + -30, + 1, + 1.233, + -30, + 1.433, + 30, + 1.633, + 30, + 1, + 1.789, + 30, + 1.944, + 16.63, + 2.1, + 0, + 1, + 2.233, + -14.254, + 2.367, + -18, + 2.5, + -18, + 1, + 2.7, + -18, + 2.9, + -18, + 3.1, + -18, + 1, + 3.267, + -18, + 3.433, + 19, + 3.6, + 19, + 0, + 5.4, + 19 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.211, + 1, + 0.256, + 0, + 0.3, + 0, + 1, + 0.322, + 0, + 0.344, + 0, + 0.367, + 0, + 1, + 0.422, + 0, + 0.478, + 1, + 0.533, + 1, + 1, + 1.056, + 1, + 1.578, + 1, + 2.1, + 1, + 1, + 2.333, + 1, + 2.567, + 1, + 2.8, + 1, + 1, + 2.844, + 1, + 2.889, + 0, + 2.933, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 1, + 2.333, + 0, + 2.567, + 0, + 2.8, + 0, + 1, + 2.844, + 0, + 2.889, + 1, + 2.933, + 1, + 0, + 5.4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.211, + 1, + 0.256, + 0, + 0.3, + 0, + 1, + 0.322, + 0, + 0.344, + 0, + 0.367, + 0, + 1, + 0.422, + 0, + 0.478, + 1, + 0.533, + 1, + 1, + 1.056, + 1, + 1.578, + 1, + 2.1, + 1, + 1, + 2.333, + 1, + 2.567, + 1, + 2.8, + 1, + 1, + 2.844, + 1, + 2.889, + 0, + 2.933, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 1, + 2.333, + 0, + 2.567, + 0, + 2.8, + 0, + 1, + 2.844, + 0, + 2.889, + 1, + 2.933, + 1, + 0, + 5.4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.144, + 0, + 0.289, + 0, + 0.433, + 0, + 1, + 0.633, + 0, + 0.833, + 0.57, + 1.033, + 0.57, + 1, + 1.233, + 0.57, + 1.433, + -0.92, + 1.633, + -0.92, + 1, + 1.789, + -0.92, + 1.944, + -0.479, + 2.1, + 0, + 1, + 2.233, + 0.41, + 2.367, + 0.49, + 2.5, + 0.49, + 1, + 2.811, + 0.49, + 3.122, + -0.87, + 3.433, + -0.87, + 0, + 5.4, + -0.87 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.144, + 0, + 0.289, + 0, + 0.433, + 0, + 1, + 0.633, + 0, + 0.833, + 0, + 1.033, + 0, + 1, + 1.233, + 0, + 1.433, + 0.25, + 1.633, + 0.25, + 1, + 1.789, + 0.25, + 1.944, + 0, + 2.1, + 0, + 1, + 2.233, + 0, + 2.367, + -0.008, + 2.5, + 0.04, + 1, + 2.811, + 0.151, + 3.122, + 0.29, + 3.433, + 0.29, + 0, + 5.4, + 0.29 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthOpenY", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamMouthForm", + "Segments": [ + 0, + 1, + 1, + 0.7, + 1, + 1.4, + 1, + 2.1, + 1, + 0, + 5.4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmL", + "Segments": [ + 0, + -1, + 1, + 0.144, + -1, + 0.289, + 0, + 0.433, + 0, + 1, + 0.633, + 0, + 0.833, + -0.52, + 1.033, + -0.52, + 1, + 1.233, + -0.52, + 1.433, + 0, + 1.633, + 0, + 1, + 1.789, + 0, + 1.944, + -0.52, + 2.1, + -0.52, + 0, + 5.4, + -0.52 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmR", + "Segments": [ + 0, + -1, + 1, + 0.144, + -1, + 0.289, + 0, + 0.433, + 0, + 1, + 0.633, + 0, + 0.833, + -0.53, + 1.033, + -0.53, + 1, + 1.233, + -0.53, + 1.433, + 0, + 1.633, + 0, + 1, + 1.789, + 0, + 1.944, + -0.53, + 2.1, + -0.53, + 0, + 5.4, + -0.53 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.144, + 0, + 0.289, + 2, + 0.433, + 2, + 1, + 0.633, + 2, + 0.833, + -2, + 1.033, + -2, + 1, + 1.233, + -2, + 1.433, + 1, + 1.633, + 1, + 1, + 1.789, + 1, + 1.944, + 0.953, + 2.1, + 0, + 1, + 2.233, + -0.817, + 2.367, + -3.288, + 2.5, + -5, + 1, + 2.6, + -6.284, + 2.7, + -7, + 2.8, + -7, + 1, + 2.956, + -7, + 3.111, + -7.116, + 3.267, + -5, + 1, + 3.456, + -2.43, + 3.644, + 3, + 3.833, + 3, + 0, + 5.4, + 3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.078, + 0, + 0.156, + -2, + 0.233, + -2, + 1, + 0.3, + -2, + 0.367, + 3, + 0.433, + 3, + 1, + 0.556, + 3, + 0.678, + -2, + 0.8, + -2, + 1, + 0.878, + -2, + 0.956, + 3, + 1.033, + 3, + 1, + 1.167, + 3, + 1.3, + -2, + 1.433, + -2, + 1, + 1.5, + -2, + 1.567, + 3, + 1.633, + 3, + 1, + 1.789, + 3, + 1.944, + 2.18, + 2.1, + 0, + 1, + 2.178, + -1.09, + 2.256, + -2, + 2.333, + -2, + 1, + 2.4, + -2, + 2.467, + 3, + 2.533, + 3, + 1, + 2.822, + 3, + 3.111, + -2, + 3.4, + -2, + 1, + 3.467, + -2, + 3.533, + 3, + 3.6, + 3, + 1, + 3.678, + 3, + 3.756, + 0, + 3.833, + 0, + 0, + 5.4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.144, + 0, + 0.289, + 4, + 0.433, + 4, + 1, + 0.633, + 4, + 0.833, + -4, + 1.033, + -4, + 1, + 1.233, + -4, + 1.433, + 4, + 1.633, + 4, + 1, + 1.789, + 4, + 1.944, + 1.998, + 2.1, + 0, + 1, + 2.233, + -1.713, + 2.367, + -3.284, + 2.5, + -4, + 1, + 2.6, + -4.537, + 2.7, + -4.397, + 2.8, + -5, + 1, + 2.956, + -5.938, + 3.111, + -8, + 3.267, + -8, + 1, + 3.456, + -8, + 3.644, + 3, + 3.833, + 3, + 0, + 5.4, + 3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 1, + 0.7, + 0, + 1.4, + 0, + 2.1, + 0, + 0, + 5.4, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/server/src/test/java/cn/mikesolar/live2demo/ServerApplicationTests.java b/server/src/test/java/cn/mikesolar/live2demo/ServerApplicationTests.java new file mode 100644 index 0000000..2724fca --- /dev/null +++ b/server/src/test/java/cn/mikesolar/live2demo/ServerApplicationTests.java @@ -0,0 +1,13 @@ +package cn.mikesolar.live2demo; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ServerApplicationTests { + + @Test + void contextLoads() { + } + +}