UNPKG

ngx-spine

Version:

[![Build Status](https://travis-ci.org/PoiScript/ngx-spine.svg?branch=master)](https://travis-ci.org/PoiScript/ngx-spine)

267 lines 24.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /****************************************************************************** * Spine Runtimes License Agreement * Last updated May 1, 2019. Replaces all prior versions. * * Copyright (c) 2013-2019, 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. * * THIS SOFTWARE IS 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 THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ export class SkeletonData { constructor() { this.bones = new Array(); // Ordered parents first. // Ordered parents first. this.slots = new Array(); // Setup pose draw order. // Setup pose draw order. this.skins = new Array(); this.events = new Array(); this.animations = new Array(); this.ikConstraints = new Array(); this.transformConstraints = new Array(); this.pathConstraints = new Array(); // Nonessential this.fps = 0; } /** * @param {?} boneName * @return {?} */ findBone(boneName) { if (boneName == null) throw new Error("boneName cannot be null."); /** @type {?} */ let bones = this.bones; for (let i = 0, n = bones.length; i < n; i++) { /** @type {?} */ let bone = bones[i]; if (bone.name == boneName) return bone; } return null; } /** * @param {?} boneName * @return {?} */ findBoneIndex(boneName) { if (boneName == null) throw new Error("boneName cannot be null."); /** @type {?} */ let bones = this.bones; for (let i = 0, n = bones.length; i < n; i++) if (bones[i].name == boneName) return i; return -1; } /** * @param {?} slotName * @return {?} */ findSlot(slotName) { if (slotName == null) throw new Error("slotName cannot be null."); /** @type {?} */ let slots = this.slots; for (let i = 0, n = slots.length; i < n; i++) { /** @type {?} */ let slot = slots[i]; if (slot.name == slotName) return slot; } return null; } /** * @param {?} slotName * @return {?} */ findSlotIndex(slotName) { if (slotName == null) throw new Error("slotName cannot be null."); /** @type {?} */ let slots = this.slots; for (let i = 0, n = slots.length; i < n; i++) if (slots[i].name == slotName) return i; return -1; } /** * @param {?} skinName * @return {?} */ findSkin(skinName) { if (skinName == null) throw new Error("skinName cannot be null."); /** @type {?} */ let skins = this.skins; for (let i = 0, n = skins.length; i < n; i++) { /** @type {?} */ let skin = skins[i]; if (skin.name == skinName) return skin; } return null; } /** * @param {?} eventDataName * @return {?} */ findEvent(eventDataName) { if (eventDataName == null) throw new Error("eventDataName cannot be null."); /** @type {?} */ let events = this.events; for (let i = 0, n = events.length; i < n; i++) { /** @type {?} */ let event = events[i]; if (event.name == eventDataName) return event; } return null; } /** * @param {?} animationName * @return {?} */ findAnimation(animationName) { if (animationName == null) throw new Error("animationName cannot be null."); /** @type {?} */ let animations = this.animations; for (let i = 0, n = animations.length; i < n; i++) { /** @type {?} */ let animation = animations[i]; if (animation.name == animationName) return animation; } return null; } /** * @param {?} constraintName * @return {?} */ findIkConstraint(constraintName) { if (constraintName == null) throw new Error("constraintName cannot be null."); /** @type {?} */ let ikConstraints = this.ikConstraints; for (let i = 0, n = ikConstraints.length; i < n; i++) { /** @type {?} */ let constraint = ikConstraints[i]; if (constraint.name == constraintName) return constraint; } return null; } /** * @param {?} constraintName * @return {?} */ findTransformConstraint(constraintName) { if (constraintName == null) throw new Error("constraintName cannot be null."); /** @type {?} */ let transformConstraints = this.transformConstraints; for (let i = 0, n = transformConstraints.length; i < n; i++) { /** @type {?} */ let constraint = transformConstraints[i]; if (constraint.name == constraintName) return constraint; } return null; } /** * @param {?} constraintName * @return {?} */ findPathConstraint(constraintName) { if (constraintName == null) throw new Error("constraintName cannot be null."); /** @type {?} */ let pathConstraints = this.pathConstraints; for (let i = 0, n = pathConstraints.length; i < n; i++) { /** @type {?} */ let constraint = pathConstraints[i]; if (constraint.name == constraintName) return constraint; } return null; } /** * @param {?} pathConstraintName * @return {?} */ findPathConstraintIndex(pathConstraintName) { if (pathConstraintName == null) throw new Error("pathConstraintName cannot be null."); /** @type {?} */ let pathConstraints = this.pathConstraints; for (let i = 0, n = pathConstraints.length; i < n; i++) if (pathConstraints[i].name == pathConstraintName) return i; return -1; } } if (false) { /** @type {?} */ SkeletonData.prototype.name; /** @type {?} */ SkeletonData.prototype.bones; /** @type {?} */ SkeletonData.prototype.slots; /** @type {?} */ SkeletonData.prototype.skins; /** @type {?} */ SkeletonData.prototype.defaultSkin; /** @type {?} */ SkeletonData.prototype.events; /** @type {?} */ SkeletonData.prototype.animations; /** @type {?} */ SkeletonData.prototype.ikConstraints; /** @type {?} */ SkeletonData.prototype.transformConstraints; /** @type {?} */ SkeletonData.prototype.pathConstraints; /** @type {?} */ SkeletonData.prototype.x; /** @type {?} */ SkeletonData.prototype.y; /** @type {?} */ SkeletonData.prototype.width; /** @type {?} */ SkeletonData.prototype.height; /** @type {?} */ SkeletonData.prototype.version; /** @type {?} */ SkeletonData.prototype.hash; /** @type {?} */ SkeletonData.prototype.fps; /** @type {?} */ SkeletonData.prototype.imagesPath; /** @type {?} */ SkeletonData.prototype.audioPath; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25EYXRhLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXNwaW5lLyIsInNvdXJjZXMiOlsibGliL3NwaW5lLXRzL2NvcmUvU2tlbGV0b25EYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0NBLE1BQU0sT0FBTyxZQUFZO0lBQXpCO1FBRUUsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFZLENBQUMsQ0FBQyx5QkFBeUI7O1FBQ3hELFVBQUssR0FBRyxJQUFJLEtBQUssRUFBWSxDQUFDLENBQUMseUJBQXlCOztRQUN4RCxVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVEsQ0FBQztRQUUxQixXQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWEsQ0FBQztRQUNoQyxlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQWEsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLElBQUksS0FBSyxFQUFvQixDQUFDO1FBQzlDLHlCQUFvQixHQUFHLElBQUksS0FBSyxFQUEyQixDQUFDO1FBQzVELG9CQUFlLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7O1FBUWxELFFBQUcsR0FBRyxDQUFDLENBQUM7SUFvR1YsQ0FBQzs7Ozs7SUFqR0MsUUFBUSxDQUFDLFFBQWdCO1FBQ3ZCLElBQUksUUFBUSxJQUFJLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7O1lBQzlELEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSztRQUN0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFOztnQkFDeEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVE7Z0JBQUUsT0FBTyxJQUFJLENBQUM7U0FDeEM7UUFDRCxPQUFPLElBQUks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O0lBQ2xCLDhCQUFnQzs7SUFDaEMsa0NBQW9DOztJQUNwQyxxQ0FBOEM7O0lBQzlDLDRDQUE0RDs7SUFDNUQsdUNBQWtEOztJQUNsRCx5QkFBVTs7SUFDVix5QkFBVTs7SUFDViw2QkFBYzs7SUFDZCw4QkFBZTs7SUFDZiwrQkFBZ0I7O0lBQ2hCLDRCQUFhOztJQUViLDJCQUFROztJQUNSLGtDQUFtQjs7SUFDbkIsaUNBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxyXG4gKiBMYXN0IHVwZGF0ZWQgTWF5IDEsIDIwMTkuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cclxuICpcclxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTksIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xyXG4gKlxyXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcclxuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcclxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcclxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXHJcbiAqXHJcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxyXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXHJcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cclxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XHJcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxyXG4gKlxyXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTXHJcbiAqIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVNcclxuICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU5cclxuICogTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsXHJcbiAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsXHJcbiAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUywgQlVTSU5FU1NcclxuICogSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWVxyXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcclxuICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLFxyXG4gKiBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG5pbXBvcnQgeyBBbmltYXRpb24gfSBmcm9tIFwiLi9BbmltYXRpb25cIjtcclxuaW1wb3J0IHsgQm9uZURhdGEgfSBmcm9tIFwiLi9Cb25lRGF0YVwiO1xyXG5pbXBvcnQgeyBTbG90RGF0YSB9IGZyb20gXCIuL1Nsb3REYXRhXCI7XHJcbmltcG9ydCB7IFNraW4gfSBmcm9tIFwiLi9Ta2luXCI7XHJcbmltcG9ydCB7IEV2ZW50RGF0YSB9IGZyb20gXCIuL0V2ZW50RGF0YVwiO1xyXG5pbXBvcnQgeyBJa0NvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vSWtDb25zdHJhaW50RGF0YVwiO1xyXG5pbXBvcnQgeyBUcmFuc2Zvcm1Db25zdHJhaW50RGF0YSB9IGZyb20gXCIuL1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhXCI7XHJcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50RGF0YVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNrZWxldG9uRGF0YSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGJvbmVzID0gbmV3IEFycmF5PEJvbmVEYXRhPigpOyAvLyBPcmRlcmVkIHBhcmVudHMgZmlyc3QuXHJcbiAgc2xvdHMgPSBuZXcgQXJyYXk8U2xvdERhdGE+KCk7IC8vIFNldHVwIHBvc2UgZHJhdyBvcmRlci5cclxuICBza2lucyA9IG5ldyBBcnJheTxTa2luPigpO1xyXG4gIGRlZmF1bHRTa2luOiBTa2luO1xyXG4gIGV2ZW50cyA9IG5ldyBBcnJheTxFdmVudERhdGE+KCk7XHJcbiAgYW5pbWF0aW9ucyA9IG5ldyBBcnJheTxBbmltYXRpb24+KCk7XHJcbiAgaWtDb25zdHJhaW50cyA9IG5ldyBBcnJheTxJa0NvbnN0cmFpbnREYXRhPigpO1xyXG4gIHRyYW5zZm9ybUNvbnN0cmFpbnRzID0gbmV3IEFycmF5PFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhPigpO1xyXG4gIHBhdGhDb25zdHJhaW50cyA9IG5ldyBBcnJheTxQYXRoQ29uc3RyYWludERhdGE+KCk7XHJcbiAgeDogbnVtYmVyO1xyXG4gIHk6IG51bWJlcjtcclxuICB3aWR0aDogbnVtYmVyO1xyXG4gIGhlaWdodDogbnVtYmVyO1xyXG4gIHZlcnNpb246IHN0cmluZztcclxuICBoYXNoOiBzdHJpbmc7XHJcbiAgLy8gTm9uZXNzZW50aWFsXHJcbiAgZnBzID0gMDtcclxuICBpbWFnZXNQYXRoOiBzdHJpbmc7XHJcbiAgYXVkaW9QYXRoOiBzdHJpbmc7XHJcbiAgZmluZEJvbmUoYm9uZU5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGJvbmVOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcImJvbmVOYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBib25lcyA9IHRoaXMuYm9uZXM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgYm9uZSA9IGJvbmVzW2ldO1xyXG4gICAgICBpZiAoYm9uZS5uYW1lID09IGJvbmVOYW1lKSByZXR1cm4gYm9uZTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBmaW5kQm9uZUluZGV4KGJvbmVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChib25lTmFtZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJib25lTmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XHJcbiAgICBsZXQgYm9uZXMgPSB0aGlzLmJvbmVzO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspXHJcbiAgICAgIGlmIChib25lc1tpXS5uYW1lID09IGJvbmVOYW1lKSByZXR1cm4gaTtcclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcbiAgZmluZFNsb3Qoc2xvdE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHNsb3ROYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInNsb3ROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHNsb3RzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgc2xvdCA9IHNsb3RzW2ldO1xyXG4gICAgICBpZiAoc2xvdC5uYW1lID09IHNsb3ROYW1lKSByZXR1cm4gc2xvdDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBmaW5kU2xvdEluZGV4KHNsb3ROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChzbG90TmFtZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJzbG90TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XHJcbiAgICBsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspXHJcbiAgICAgIGlmIChzbG90c1tpXS5uYW1lID09IHNsb3ROYW1lKSByZXR1cm4gaTtcclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcbiAgZmluZFNraW4oc2tpbk5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHNraW5OYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInNraW5OYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBza2lucyA9IHRoaXMuc2tpbnM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHNraW5zLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgc2tpbiA9IHNraW5zW2ldO1xyXG4gICAgICBpZiAoc2tpbi5uYW1lID09IHNraW5OYW1lKSByZXR1cm4gc2tpbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBmaW5kRXZlbnQoZXZlbnREYXRhTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXZlbnREYXRhTmFtZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJldmVudERhdGFOYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBldmVudHMgPSB0aGlzLmV2ZW50cztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gZXZlbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgZXZlbnQgPSBldmVudHNbaV07XHJcbiAgICAgIGlmIChldmVudC5uYW1lID09IGV2ZW50RGF0YU5hbWUpIHJldHVybiBldmVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBmaW5kQW5pbWF0aW9uKGFuaW1hdGlvbk5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGFuaW1hdGlvbk5hbWUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiYW5pbWF0aW9uTmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XHJcbiAgICBsZXQgYW5pbWF0aW9ucyA9IHRoaXMuYW5pbWF0aW9ucztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gYW5pbWF0aW9ucy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgbGV0IGFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbaV07XHJcbiAgICAgIGlmIChhbmltYXRpb24ubmFtZSA9PSBhbmltYXRpb25OYW1lKSByZXR1cm4gYW5pbWF0aW9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRJa0NvbnN0cmFpbnQoY29uc3RyYWludE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnN0cmFpbnROYW1lID09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBpa0NvbnN0cmFpbnRzID0gdGhpcy5pa0NvbnN0cmFpbnRzO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBpa0NvbnN0cmFpbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgY29uc3RyYWludCA9IGlrQ29uc3RyYWludHNbaV07XHJcbiAgICAgIGlmIChjb25zdHJhaW50Lm5hbWUgPT0gY29uc3RyYWludE5hbWUpIHJldHVybiBjb25zdHJhaW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRUcmFuc2Zvcm1Db25zdHJhaW50KGNvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChjb25zdHJhaW50TmFtZSA9PSBudWxsKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjb25zdHJhaW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XHJcbiAgICBsZXQgdHJhbnNmb3JtQ29uc3RyYWludHMgPSB0aGlzLnRyYW5zZm9ybUNvbnN0cmFpbnRzO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSB0cmFuc2Zvcm1Db25zdHJhaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgbGV0IGNvbnN0cmFpbnQgPSB0cmFuc2Zvcm1Db25zdHJhaW50c1tpXTtcclxuICAgICAgaWYgKGNvbnN0cmFpbnQubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgcmV0dXJuIGNvbnN0cmFpbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgZmluZFBhdGhDb25zdHJhaW50KGNvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChjb25zdHJhaW50TmFtZSA9PSBudWxsKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjb25zdHJhaW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XHJcbiAgICBsZXQgcGF0aENvbnN0cmFpbnRzID0gdGhpcy5wYXRoQ29uc3RyYWludHM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHBhdGhDb25zdHJhaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgbGV0IGNvbnN0cmFpbnQgPSBwYXRoQ29uc3RyYWludHNbaV07XHJcbiAgICAgIGlmIChjb25zdHJhaW50Lm5hbWUgPT0gY29uc3RyYWludE5hbWUpIHJldHVybiBjb25zdHJhaW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRQYXRoQ29uc3RyYWludEluZGV4KHBhdGhDb25zdHJhaW50TmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAocGF0aENvbnN0cmFpbnROYW1lID09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInBhdGhDb25zdHJhaW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XHJcbiAgICBsZXQgcGF0aENvbnN0cmFpbnRzID0gdGhpcy5wYXRoQ29uc3RyYWludHM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHBhdGhDb25zdHJhaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspXHJcbiAgICAgIGlmIChwYXRoQ29uc3RyYWludHNbaV0ubmFtZSA9PSBwYXRoQ29uc3RyYWludE5hbWUpIHJldHVybiBpO1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxufVxyXG4iXX0=