/****************************************************************************** * Spine Runtimes License Agreement * Last updated April 5, 2025. Replaces all prior versions. * * Copyright (c) 2013-2025, Esoteric Software LLC * * Integration of the Spine Runtimes into software or otherwise creating * derivative works of the Spine Runtimes is permitted under the terms and * conditions of Section 2 of the Spine Editor License Agreement: * http://esotericsoftware.com/spine-editor-license * * Otherwise, it is permitted to integrate the Spine Runtimes into software * or otherwise create derivative works of the Spine Runtimes (collectively, * "Products"), provided that each user of the Products must obtain their own * Spine Editor license and redistribution of the Products in any form must * include this license and copyright notice. * * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ import { SpineTexture } from "./SpineTexture.js"; import { DarkTintMesh } from "./darkTintMesh/DarkTintMesh.js"; export class DarkSlotMesh extends DarkTintMesh { name = ""; static auxColor = [0, 0, 0, 0]; constructor() { super(); } updateFromSpineData(slotTexture, slotBlendMode, slotName, finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, darkTint) { this.texture = slotTexture.texture; const vertLenght = (finalVerticesLength / (darkTint ? 12 : 8)) * 2; const textureCoord = this.geometry.getBuffer("aTextureCoord"); if (textureCoord.data?.length !== vertLenght) { textureCoord.data = new Float32Array(vertLenght); } const vertexCoord = this.geometry.getBuffer("aVertexPosition"); if (vertexCoord.data?.length !== vertLenght) { vertexCoord.data = new Float32Array(vertLenght); } let vertIndex = 0; let textureCoordData = textureCoord.data; let vertexCoordData = vertexCoord.data; for (let i = 0; i < finalVerticesLength; i += darkTint ? 12 : 8) { let auxi = i; vertexCoordData[vertIndex] = finalVertices[auxi++]; vertexCoordData[vertIndex + 1] = finalVertices[auxi++]; auxi += 4; // color textureCoordData[vertIndex] = finalVertices[auxi++]; textureCoordData[vertIndex + 1] = finalVertices[auxi++]; vertIndex += 2; } if (darkTint) { DarkSlotMesh.auxColor[0] = finalVertices[8]; DarkSlotMesh.auxColor[1] = finalVertices[9]; DarkSlotMesh.auxColor[2] = finalVertices[10]; DarkSlotMesh.auxColor[3] = finalVertices[11]; this.darkTint = DarkSlotMesh.auxColor; DarkSlotMesh.auxColor[0] = finalVertices[2]; DarkSlotMesh.auxColor[1] = finalVertices[3]; DarkSlotMesh.auxColor[2] = finalVertices[4]; DarkSlotMesh.auxColor[3] = finalVertices[5]; this.tint = DarkSlotMesh.auxColor; } else { DarkSlotMesh.auxColor[0] = finalVertices[2]; DarkSlotMesh.auxColor[1] = finalVertices[3]; DarkSlotMesh.auxColor[2] = finalVertices[4]; DarkSlotMesh.auxColor[3] = finalVertices[5]; this.tint = DarkSlotMesh.auxColor; } this.blendMode = SpineTexture.toPixiBlending(slotBlendMode); this.alpha = DarkSlotMesh.auxColor[3]; const indexBuffer = this.geometry.indexBuffer; if (indexBuffer.data.length !== finalIndices.length) { indexBuffer.data = new Uint32Array(finalIndices); } else { const indexBufferData = indexBuffer.data; for (let i = 0; i < finalIndicesLength; i++) { indexBufferData[i] = finalIndices[i]; } } this.name = slotName; textureCoord.update(); vertexCoord.update(); indexBuffer.update(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFya1Nsb3RNZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0RhcmtTbG90TWVzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc5RCxNQUFNLE9BQU8sWUFBYSxTQUFRLFlBQVk7SUFDdEMsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUVqQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdkM7UUFDQyxLQUFLLEVBQUUsQ0FBQztJQUNULENBQUM7SUFDTSxtQkFBbUIsQ0FDekIsV0FBeUIsRUFDekIsYUFBd0IsRUFDeEIsUUFBZ0IsRUFDaEIsYUFBOEIsRUFDOUIsbUJBQTJCLEVBQzNCLFlBQTZCLEVBQzdCLGtCQUEwQixFQUMxQixRQUFpQjtRQUVqQixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFFbkMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RCxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzlDLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0QsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3QyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFFbEIsSUFBSSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ3pDLElBQUksZUFBZSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBRWIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELGVBQWUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFdkQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFFbkIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEQsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXhELFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksUUFBUSxFQUFFLENBQUM7WUFDZCxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFFdEMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ1AsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFNUMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzlDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JELFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM3QyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDRixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFFckIsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgU3BpbmVUZXh0dXJlIH0gZnJvbSBcIi4vU3BpbmVUZXh0dXJlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEJsZW5kTW9kZSwgTnVtYmVyQXJyYXlMaWtlIH0gZnJvbSBcIkBlc290ZXJpY3NvZnR3YXJlL3NwaW5lLWNvcmVcIjtcbmltcG9ydCB7IERhcmtUaW50TWVzaCB9IGZyb20gXCIuL2RhcmtUaW50TWVzaC9EYXJrVGludE1lc2guanNcIjtcbmltcG9ydCB0eXBlIHsgSVNsb3RNZXNoIH0gZnJvbSBcIi4vU3BpbmUuanNcIjtcblxuZXhwb3J0IGNsYXNzIERhcmtTbG90TWVzaCBleHRlbmRzIERhcmtUaW50TWVzaCBpbXBsZW1lbnRzIElTbG90TWVzaCB7XG5cdHB1YmxpYyBuYW1lOiBzdHJpbmcgPSBcIlwiO1xuXG5cdHByaXZhdGUgc3RhdGljIGF1eENvbG9yID0gWzAsIDAsIDAsIDBdO1xuXG5cdGNvbnN0cnVjdG9yICgpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cdHB1YmxpYyB1cGRhdGVGcm9tU3BpbmVEYXRhIChcblx0XHRzbG90VGV4dHVyZTogU3BpbmVUZXh0dXJlLFxuXHRcdHNsb3RCbGVuZE1vZGU6IEJsZW5kTW9kZSxcblx0XHRzbG90TmFtZTogc3RyaW5nLFxuXHRcdGZpbmFsVmVydGljZXM6IE51bWJlckFycmF5TGlrZSxcblx0XHRmaW5hbFZlcnRpY2VzTGVuZ3RoOiBudW1iZXIsXG5cdFx0ZmluYWxJbmRpY2VzOiBOdW1iZXJBcnJheUxpa2UsXG5cdFx0ZmluYWxJbmRpY2VzTGVuZ3RoOiBudW1iZXIsXG5cdFx0ZGFya1RpbnQ6IGJvb2xlYW5cblx0KTogdm9pZCB7XG5cdFx0dGhpcy50ZXh0dXJlID0gc2xvdFRleHR1cmUudGV4dHVyZTtcblxuXHRcdGNvbnN0IHZlcnRMZW5naHQgPSAoZmluYWxWZXJ0aWNlc0xlbmd0aCAvIChkYXJrVGludCA/IDEyIDogOCkpICogMjtcblxuXHRcdGNvbnN0IHRleHR1cmVDb29yZCA9IHRoaXMuZ2VvbWV0cnkuZ2V0QnVmZmVyKFwiYVRleHR1cmVDb29yZFwiKTtcblx0XHRpZiAodGV4dHVyZUNvb3JkLmRhdGE/Lmxlbmd0aCAhPT0gdmVydExlbmdodCkge1xuXHRcdFx0dGV4dHVyZUNvb3JkLmRhdGEgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRMZW5naHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHZlcnRleENvb3JkID0gdGhpcy5nZW9tZXRyeS5nZXRCdWZmZXIoXCJhVmVydGV4UG9zaXRpb25cIik7XG5cdFx0aWYgKHZlcnRleENvb3JkLmRhdGE/Lmxlbmd0aCAhPT0gdmVydExlbmdodCkge1xuXHRcdFx0dmVydGV4Q29vcmQuZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydExlbmdodCk7XG5cdFx0fVxuXG5cdFx0bGV0IHZlcnRJbmRleCA9IDA7XG5cblx0XHRsZXQgdGV4dHVyZUNvb3JkRGF0YSA9IHRleHR1cmVDb29yZC5kYXRhO1xuXHRcdGxldCB2ZXJ0ZXhDb29yZERhdGEgPSB2ZXJ0ZXhDb29yZC5kYXRhO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmluYWxWZXJ0aWNlc0xlbmd0aDsgaSArPSBkYXJrVGludCA/IDEyIDogOCkge1xuXHRcdFx0bGV0IGF1eGkgPSBpO1xuXG5cdFx0XHR2ZXJ0ZXhDb29yZERhdGFbdmVydEluZGV4XSA9IGZpbmFsVmVydGljZXNbYXV4aSsrXTtcblx0XHRcdHZlcnRleENvb3JkRGF0YVt2ZXJ0SW5kZXggKyAxXSA9IGZpbmFsVmVydGljZXNbYXV4aSsrXTtcblxuXHRcdFx0YXV4aSArPSA0OyAvLyBjb2xvclxuXG5cdFx0XHR0ZXh0dXJlQ29vcmREYXRhW3ZlcnRJbmRleF0gPSBmaW5hbFZlcnRpY2VzW2F1eGkrK107XG5cdFx0XHR0ZXh0dXJlQ29vcmREYXRhW3ZlcnRJbmRleCArIDFdID0gZmluYWxWZXJ0aWNlc1thdXhpKytdO1xuXG5cdFx0XHR2ZXJ0SW5kZXggKz0gMjtcblx0XHR9XG5cblx0XHRpZiAoZGFya1RpbnQpIHtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclswXSA9IGZpbmFsVmVydGljZXNbOF07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbMV0gPSBmaW5hbFZlcnRpY2VzWzldO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzJdID0gZmluYWxWZXJ0aWNlc1sxMF07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbM10gPSBmaW5hbFZlcnRpY2VzWzExXTtcblx0XHRcdHRoaXMuZGFya1RpbnQgPSBEYXJrU2xvdE1lc2guYXV4Q29sb3I7XG5cblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclswXSA9IGZpbmFsVmVydGljZXNbMl07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbMV0gPSBmaW5hbFZlcnRpY2VzWzNdO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzJdID0gZmluYWxWZXJ0aWNlc1s0XTtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclszXSA9IGZpbmFsVmVydGljZXNbNV07XG5cdFx0XHR0aGlzLnRpbnQgPSBEYXJrU2xvdE1lc2guYXV4Q29sb3I7XG5cdFx0fSBlbHNlIHtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclswXSA9IGZpbmFsVmVydGljZXNbMl07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbMV0gPSBmaW5hbFZlcnRpY2VzWzNdO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzJdID0gZmluYWxWZXJ0aWNlc1s0XTtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclszXSA9IGZpbmFsVmVydGljZXNbNV07XG5cblx0XHRcdHRoaXMudGludCA9IERhcmtTbG90TWVzaC5hdXhDb2xvcjtcblx0XHR9XG5cdFx0dGhpcy5ibGVuZE1vZGUgPSBTcGluZVRleHR1cmUudG9QaXhpQmxlbmRpbmcoc2xvdEJsZW5kTW9kZSk7XG5cdFx0dGhpcy5hbHBoYSA9IERhcmtTbG90TWVzaC5hdXhDb2xvclszXTtcblxuXHRcdGNvbnN0IGluZGV4QnVmZmVyID0gdGhpcy5nZW9tZXRyeS5pbmRleEJ1ZmZlcjtcblx0XHRpZiAoaW5kZXhCdWZmZXIuZGF0YS5sZW5ndGggIT09IGZpbmFsSW5kaWNlcy5sZW5ndGgpIHtcblx0XHRcdGluZGV4QnVmZmVyLmRhdGEgPSBuZXcgVWludDMyQXJyYXkoZmluYWxJbmRpY2VzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgaW5kZXhCdWZmZXJEYXRhID0gaW5kZXhCdWZmZXIuZGF0YTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmluYWxJbmRpY2VzTGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aW5kZXhCdWZmZXJEYXRhW2ldID0gZmluYWxJbmRpY2VzW2ldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMubmFtZSA9IHNsb3ROYW1lO1xuXG5cdFx0dGV4dHVyZUNvb3JkLnVwZGF0ZSgpO1xuXHRcdHZlcnRleENvb3JkLnVwZGF0ZSgpO1xuXHRcdGluZGV4QnVmZmVyLnVwZGF0ZSgpO1xuXHR9XG59XG4iXX0=