@esotericsoftware/spine-phaser-v3 4.2.94 → 4.2.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -314,7 +314,10 @@ class SpineAtlasFile extends Phaser.Loader.MultiFile {
314
314
  textures.push(line);
315
315
  }
316
316
  }
317
- let basePath = (file.src.match(/^.*\//) ?? "").toString();
317
+ let fileUrl = file.url;
318
+ if (typeof fileUrl === "object")
319
+ fileUrl = file.src;
320
+ let basePath = (fileUrl.match(/^.*\//) ?? "").toString();
318
321
  if (this.loader.path && this.loader.path.length > 0 && basePath.startsWith(this.loader.path))
319
322
  basePath = basePath.slice(this.loader.path.length);
320
323
  for (var i = 0; i < textures.length; i++) {
@@ -350,4 +353,4 @@ class SpineAtlasFile extends Phaser.Loader.MultiFile {
350
353
  }
351
354
  }
352
355
  }
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BpbmVQbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU3BpbmVQbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFnQixZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDbkssT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLDZCQUE2QixJQUFJLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hNLE9BQU8sRUFBRSxlQUFlLEVBQWlDLE1BQU0sc0JBQXNCLENBQUM7QUFFdEYsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFtQnRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO0lBQzFELElBQUksQ0FBYztJQUNWLE9BQU8sQ0FBVTtJQUN6QixFQUFFLENBQStCO0lBQ2pDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBeUIsSUFBSSxDQUFDO0lBQ3RELElBQUksYUFBYTtRQUNoQixPQUFPLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsY0FBYyxDQUEwQjtJQUN4QyxjQUFjLENBQThFO0lBQ3BGLGlCQUFpQixDQUF5QjtJQUMxQyxVQUFVLENBQXlCO0lBRTNDLFlBQWEsS0FBbUIsRUFBRSxhQUEyQyxFQUFFLFNBQWlCO1FBQy9GLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxF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QyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQ2hELEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUN0QyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM5QyxDQUFDO2dCQUNGLENBQUM7cUJBQU0sQ0FBQztvQkFDUCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNqSSxJQUFJLENBQUMsSUFBSSxHQUFHO3dCQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDZixrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO3FCQUMzQyxDQUFDO29CQUNGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbkIsQ0FBQztZQUNGLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBDYW52YXNUZXh0dXJlLCBTa2VsZXRvblJlbmRlcmVyIH0gZnJvbSBcIkBlc290ZXJpY3NvZnR3YXJlL3NwaW5lLWNhbnZhc1wiO1xuaW1wb3J0IHsgQXRsYXNBdHRhY2htZW50TG9hZGVyLCBHTFRleHR1cmUsIFNjZW5lUmVuZGVyZXIsIFNrZWxldG9uLCBTa2VsZXRvbkJpbmFyeSwgU2tlbGV0b25EYXRhLCBTa2VsZXRvbkpzb24sIFRleHR1cmVBdGxhcyB9IGZyb20gXCJAZXNvdGVyaWNzb2Z0d2FyZS9zcGluZS13ZWJnbFwiXG5pbXBvcnQgKiBhcyBQaGFzZXIgZnJvbSBcInBoYXNlclwiO1xuaW1wb3J0IHsgU1BJTkVfQVRMQVNfQ0FDSEVfS0VZLCBTUElORV9BVExBU19GSUxFX1RZUEUsIFNQSU5FX0dBTUVfT0JKRUNUX1RZUEUsIFNQSU5FX1NLRUxFVE9OX0ZJTEVfQ0FDSEVfS0VZIGFzIFNQSU5FX1NLRUxFVE9OX0RBVEFfQ0FDSEVfS0VZLCBTUElORV9TS0VMRVRPTl9EQVRBX0ZJTEVfVFlQRSB9IGZyb20gXCIuL2tleXMuanNcIjtcbmltcG9ydCB7IFNwaW5lR2FtZU9iamVjdCwgU3BpbmVHYW1lT2JqZWN0Qm91bmRzUHJvdmlkZXIgfSBmcm9tIFwiLi9TcGluZUdhbWVPYmplY3QuanNcIjtcblxuU2tlbGV0b24ueURvd24gPSB0cnVlO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2JqZWN0IHVzZWQgd2hlbiBjcmVhdGluZyB7QGxpbmsgU3BpbmVHYW1lT2JqZWN0fSBpbnN0YW5jZXMgdmlhIGEgc2NlbmUnc1xuICoge0BsaW5rIEdhbWVPYmplY3RDcmVhdG9yfSAoYFNjZW5lLm1ha2VgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGluZUdhbWVPYmplY3RDb25maWcgZXh0ZW5kcyBQaGFzZXIuVHlwZXMuR2FtZU9iamVjdHMuR2FtZU9iamVjdENvbmZpZyB7XG5cdC8qKiBUaGUgeC1wb3NpdGlvbiBvZiB0aGUgb2JqZWN0LCBvcHRpb25hbCwgZGVmYXVsdDogMCAqL1xuXHR4PzogbnVtYmVyLFxuXHQvKiogVGhlIHktcG9zaXRpb24gb2YgdGhlIG9iamVjdCwgb3B0aW9uYWwsIGRlZmF1bHQ6IDAgKi9cblx0eT86IG51bWJlcixcblx0LyoqIFRoZSBza2VsZXRvbiBkYXRhIGtleSAqL1xuXHRkYXRhS2V5OiBzdHJpbmcsXG5cdC8qKiBUaGUgYXRsYXMga2V5ICovXG5cdGF0bGFzS2V5OiBzdHJpbmdcblx0LyoqIFRoZSBib3VuZHMgcHJvdmlkZXIsIG9wdGlvbmFsLCBkZWZhdWx0OiBgU2V0dXBQb3NlQm91bmRzUHJvdmlkZXJgICovXG5cdGJvdW5kc1Byb3ZpZGVyPzogU3BpbmVHYW1lT2JqZWN0Qm91bmRzUHJvdmlkZXJcbn1cblxuLyoqXG4gKiB7QGxpbmsgU2NlbmVQbHVnaW59IGltcGxlbWVudGF0aW9uIGFkZGluZyBTcGluZSBSdW50aW1lIGNhcGFiaWxpdGllcyB0byBhIHNjZW5lLlxuICpcbiAqIFRoZSBzY2VuZSdzIHtAbGluayBMb2FkZXJQbHVnaW59IChgU2NlbmUubG9hZGApIGdldHMgdGhlc2UgYWRkaXRpb25hbCBmdW5jdGlvbnM6XG4gKiAqIGBzcGluZUJpbmFyeShrZXk6IHN0cmluZywgdXJsOiBzdHJpbmcsIHhoclNldHRpbmdzPzogWEhSU2V0dGluZ3NPYmplY3QpYDogbG9hZHMgYSBza2VsZXRvbiBiaW5hcnkgYC5za2VsYCBmaWxlIGZyb20gdGhlIGB1cmxgLlxuICogKiBgc3BpbmVKc29uKGtleTogc3RyaW5nLCB1cmw6IHN0cmluZywgeGhyU2V0dGluZ3M/OiBYSFJTZXR0aW5nc09iamVjdClgOiBsb2FkcyBhIHNrZWxldG9uIGJpbmFyeSBgLnNrZWxgIGZpbGUgZnJvbSB0aGUgYHVybGAuXG4gKiAqIGBzcGluZUF0bGFzKGtleTogc3RyaW5nLCB1cmw6IHN0cmluZywgcHJlbXVsdGlwbGllZEFscGhhOiBib29sZWFuID0gdHJ1ZSwgeGhyU2V0dGluZ3M/OiBYSFJTZXR0aW5nc09iamVjdClgOiBsb2FkcyBhIHRleHR1cmUgYXRsYXMgYC5hdGxhc2AgZmlsZSBmcm9tIHRoZSBgdXJsYCBhcyB3ZWxsIGFzIGl0cyBjb3JyZXBvbmRpbmcgdGV4dHVyZSBhdGxhcyBwYWdlIGltYWdlcy5cbiAqXG4gKiBUaGUgc2NlbmUncyB7QGxpbmsgR2FtZU9iamVjdEZhY3Rvcnl9IChgU2NlbmUuYWRkYCkgZ2V0cyB0aGVzZSBhZGRpdGlvbmFsIGZ1bmN0aW9uczpcbiAqICogYHNwaW5lKHg6IG51bWJlciwgeTogbnVtYmVyLCBkYXRhS2V5OiBzdHJpbmcsIGF0bGFzS2V5OiBzdHJpbmcsIGJvdW5kc1Byb3ZpZGVyOiBTcGluZUdhbWVPYmplY3RCb3VuZHNQcm92aWRlciA9IFNldHVwUG9zZUJvdW5kc1Byb3ZpZGVyKCkpYDpcbiAqICAgIGNyZWF0ZXMgYSBuZXcge0BsaW5rIFNwaW5lR2FtZU9iamVjdH0gZnJvbSB0aGUgZGF0YSBhbmQgYXRsYXMgYXQgcG9zaXRpb24gYCh4LCB5KWAsIHVzaW5nIHRoZSB7QGxpbmsgQm91bmRzUHJvdmlkZXJ9IHRvIGNhbGN1bGF0ZSBpdHMgYm91bmRpbmcgYm94LiBUaGUgb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHNjZW5lLlxuICpcbiAqIFRoZSBzY2VuZSdzIHtAbGluayBHYW1lT2JqZWN0Q3JlYXRvcn0gKGBTY2VuZS5tYWtlYCkgZ2V0cyB0aGVzZSBhZGRpdGlvbmFsIGZ1bmN0aW9uczpcbiAqICogYHNwaW5lKGNvbmZpZzogU3BpbmVHYW1lT2JqZWN0Q29uZmlnKWA6IGNyZWF0ZXMgYSBuZXcge0BsaW5rIFNwaW5lR2FtZU9iamVjdH0gZnJvbSB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbiBvYmplY3QuXG4gKlxuICogVGhlIHBsdWdpbiBoYXMgYWRkaXRpb25hbCBwdWJsaWMgbWV0aG9kcyB0byB3b3JrIHdpdGggU3BpbmUgUnVudGltZSBjb3JlIEFQSSBvYmplY3RzOlxuICogKiBgZ2V0QXRsYXMoYXRsYXNLZXk6IHN0cmluZylgOiByZXR1cm5zIHRoZSB7QGxpbmsgVGV4dHVyZUF0bGFzfSBpbnN0YW5jZSBmb3IgdGhlIGdpdmVuIGF0bGFzIGtleS5cbiAqICogYGdldFNrZWxldG9uRGF0YShza2VsZXRvbkRhdGFLZXk6IHN0cmluZylgOiByZXR1cm5zIHRoZSB7QGxpbmsgU2tlbGV0b25EYXRhfSBpbnN0YW5jZSBmb3IgdGhlIGdpdmVuIHNrZWxldG9uIGRhdGEga2V5LlxuICogKiBgY3JlYXRlU2tlbGV0b24oc2tlbGV0b25EYXRhS2V5OiBzdHJpbmcsIGF0bGFzS2V5OiBzdHJpbmcsIHByZW11bHRpcGxpZWRBbHBoYTogYm9vbGVhbiA9IHRydWUpYDogY3JlYXRlcyBhIG5ldyB7QGxpbmsgU2tlbGV0b259IGluc3RhbmNlIGZyb20gdGhlIGdpdmVuIHNrZWxldG9uIGRhdGEgYW5kIGF0bGFzIGtleS5cbiAqICogYGlzUHJlbXVsdGlwbGllZEFscGhhKGF0bGFzS2V5OiBzdHJpbmcpYDogcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGF0bGFzIHdpdGggdGhlIGdpdmVuIGtleSBoYXMgcHJlbXVsdGlwbGllZCBhbHBoYS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNwaW5lUGx1Z2luIGV4dGVuZHMgUGhhc2VyLlBsdWdpbnMuU2NlbmVQbHVnaW4ge1xuXHRnYW1lOiBQaGFzZXIuR2FtZTtcblx0cHJpdmF0ZSBpc1dlYkdMOiBib29sZWFuO1xuXHRnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0IHwgbnVsbDtcblx0c3RhdGljIGdhbWVXZWJHTFJlbmRlcmVyOiBTY2VuZVJlbmRlcmVyIHwgbnVsbCA9IG51bGw7XG5cdGdldCB3ZWJHTFJlbmRlcmVyICgpOiBTY2VuZVJlbmRlcmVyIHwgbnVsbCB7XG5cdFx0cmV0dXJuIFNwaW5lUGx1Z2luLmdhbWVXZWJHTFJlbmRlcmVyO1xuXHR9XG5cdGNhbnZhc1JlbmRlcmVyOiBTa2VsZXRvblJlbmRlcmVyIHwgbnVsbDtcblx0cGhhc2VyUmVuZGVyZXI6IFBoYXNlci5SZW5kZXJlci5DYW52YXMuQ2FudmFzUmVuZGVyZXIgfCBQaGFzZXIuUmVuZGVyZXIuV2ViR0wuV2ViR0xSZW5kZXJlcjtcblx0cHJpdmF0ZSBza2VsZXRvbkRhdGFDYWNoZTogUGhhc2VyLkNhY2hlLkJhc2VDYWNoZTtcblx0cHJpdmF0ZSBhdGxhc0NhY2hlOiBQaGFzZXIuQ2FjaGUuQmFzZUNhY2hlO1xuXG5cdGNvbnN0cnVjdG9yIChzY2VuZTogUGhhc2VyLlNjZW5lLCBwbHVnaW5NYW5hZ2VyOiBQaGFzZXIuUGx1Z2lucy5QbHVnaW5NYW5hZ2VyLCBwbHVnaW5LZXk6IHN0cmluZykge1xuXHRcdHN1cGVyKHNjZW5lLCBwbHVnaW5NYW5hZ2VyLCBwbHVnaW5LZXkpO1xuXHRcdHRoaXMuZ2FtZSA9IHBsdWdpbk1hbmFnZXIuZ2FtZTtcblx0XHR0aGlzLmlzV2ViR0wgPSB0aGlzLmdhbWUuY29uZmlnLnJlbmRlclR5cGUgPT09IDI7XG5cdFx0dGhpcy5nbCA9IHRoaXMuaXNXZWJHTCA/ICh0aGlzLmdhbWUucmVuZGVyZXIgYXMgUGhhc2VyLlJlbmRlcmVyLldlYkdMLldlYkdMUmVuZGVyZXIpLmdsIDogbnVsbDtcblx0XHR0aGlzLnBoYXNlclJlbmRlcmVyID0gdGhpcy5nYW1lLnJlbmRlcmVyO1xuXHRcdHRoaXMuY2FudmFzUmVuZGVyZXIgPSBudWxsO1xuXHRcdHRoaXMuc2tlbGV0b25EYXRhQ2FjaGUgPSB0aGlzLmdhbWUuY2FjaGUuYWRkQ3VzdG9tKFNQSU5FX1NLRUxFVE9OX0RBVEFfQ0FDSEVfS0VZKTtcblx0XHR0aGlzLmF0bGFzQ2FjaGUgPSB0aGlzLmdhbWUuY2FjaGUuYWRkQ3VzdG9tKFNQSU5FX0FUTEFTX0NBQ0hFX0tFWSk7XG5cblx0XHRsZXQgc2tlbGV0b25Kc29uRmlsZUNhbGxiYWNrID0gZnVuY3Rpb24gKHRoaXM6IGFueSwga2V5OiBzdHJpbmcsXG5cdFx0XHR1cmw6IHN0cmluZyxcblx0XHRcdHhoclNldHRpbmdzOiBQaGFzZXIuVHlwZXMuTG9hZGVyLlhIUlNldHRpbmdzT2JqZWN0KSB7XG5cdFx0XHRsZXQgZmlsZSA9IG5ldyBTcGluZVNrZWxldG9uRGF0YUZpbGUodGhpcyBhcyBhbnksIGtleSwgdXJsLCBTcGluZVNrZWxldG9uRGF0YUZpbGVUeXBlLmpzb24sIHhoclNldHRpbmdzKTtcblx0XHRcdHRoaXMuYWRkRmlsZShmaWxlLmZpbGVzKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH07XG5cdFx0cGx1Z2luTWFuYWdlci5yZWdpc3RlckZpbGVUeXBlKFwic3BpbmVKc29uXCIsIHNrZWxldG9uSnNvbkZpbGVDYWxsYmFjaywgc2NlbmUpO1xuXG5cdFx0bGV0IHNrZWxldG9uQmluYXJ5RmlsZUNhbGxiYWNrID0gZnVuY3Rpb24gKHRoaXM6IGFueSwga2V5OiBzdHJpbmcsXG5cdFx0XHR1cmw6IHN0cmluZyxcblx0XHRcdHhoclNldHRpbmdzOiBQaGFzZXIuVHlwZXMuTG9hZGVyLlhIUlNldHRpbmdzT2JqZWN0KSB7XG5cdFx0XHRsZXQgZmlsZSA9IG5ldyBTcGluZVNrZWxldG9uRGF0YUZpbGUodGhpcyBhcyBhbnksIGtleSwgdXJsLCBTcGluZVNrZWxldG9uRGF0YUZpbGVUeXBlLmJpbmFyeSwgeGhyU2V0dGluZ3MpO1xuXHRcdFx0dGhpcy5hZGRGaWxlKGZpbGUuZmlsZXMpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fTtcblx0XHRwbHVnaW5NYW5hZ2VyLnJlZ2lzdGVyRmlsZVR5cGUoXCJzcGluZUJpbmFyeVwiLCBza2VsZXRvbkJpbmFyeUZpbGVDYWxsYmFjaywgc2NlbmUpO1xuXG5cdFx0bGV0IGF0bGFzRmlsZUNhbGxiYWNrID0gZnVuY3Rpb24gKHRoaXM6IGFueSwga2V5OiBzdHJpbmcsXG5cdFx0XHR1cmw6IHN0cmluZyxcblx0XHRcdHByZW11bHRpcGxpZWRBbHBoYTogYm9vbGVhbixcblx0XHRcdHhoclNldHRpbmdzOiBQaGFzZXIuVHlwZXMuTG9hZGVyLlhIUlNldHRpbmdzT2JqZWN0KSB7XG5cdFx0XHRsZXQgZmlsZSA9IG5ldyBTcGluZUF0bGFzRmlsZSh0aGlzIGFzIGFueSwga2V5LCB1cmwsIHByZW11bHRpcGxpZWRBbHBoYSwgeGhyU2V0dGluZ3MpO1xuXHRcdFx0dGhpcy5hZGRGaWxlKGZpbGUuZmlsZXMpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fTtcblx0XHRwbHVnaW5NYW5hZ2VyLnJlZ2lzdGVyRmlsZVR5cGUoXCJzcGluZUF0bGFzXCIsIGF0bGFzRmlsZUNhbGxiYWNrLCBzY2VuZSk7XG5cblx0XHRsZXQgYWRkU3BpbmVHYW1lT2JqZWN0ID0gZnVuY3Rpb24gKHRoaXM6IFBoYXNlci5HYW1lT2JqZWN0cy5HYW1lT2JqZWN0RmFjdG9yeSwgeDogbnVtYmVyLCB5OiBudW1iZXIsIGRhdGFLZXk6IHN0cmluZywgYXRsYXNLZXk6IHN0cmluZywgYm91bmRzUHJvdmlkZXI6IFNwaW5lR2FtZU9iamVjdEJvdW5kc1Byb3ZpZGVyKSB7XG5cdFx0XHRpZiAodGhpcy5zY2VuZS5zeXMucmVuZGVyZXIgaW5zdGFuY2VvZiBQaGFzZXIuUmVuZGVyZXIuV2ViR0wuV2ViR0xSZW5kZXJlcikge1xuXHRcdFx0XHR0aGlzLnNjZW5lLnN5cy5yZW5kZXJlci5waXBlbGluZXMuY2xlYXIoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgc3BpbmVQbHVnaW4gPSAodGhpcy5zY2VuZS5zeXMgYXMgYW55KVtwbHVnaW5LZXldIGFzIFNwaW5lUGx1Z2luO1xuXHRcdFx0bGV0IGdhbWVPYmplY3QgPSBuZXcgU3BpbmVHYW1lT2JqZWN0KHRoaXMuc2NlbmUsIHNwaW5lUGx1Z2luLCB4LCB5LCBkYXRhS2V5LCBhdGxhc0tleSwgYm91bmRzUHJvdmlkZXIpO1xuXHRcdFx0dGhpcy5kaXNwbGF5TGlzdC5hZGQoZ2FtZU9iamVjdCk7XG5cdFx0XHR0aGlzLnVwZGF0ZUxpc3QuYWRkKGdhbWVPYmplY3QpO1xuXG5cdFx0XHRpZiAodGhpcy5zY2VuZS5zeXMucmVuZGVyZXIgaW5zdGFuY2VvZiBQaGFzZXIuUmVuZGVyZXIuV2ViR0wuV2ViR0xSZW5kZXJlcikge1xuXHRcdFx0XHR0aGlzLnNjZW5lLnN5cy5yZW5kZXJlci5waXBlbGluZXMucmViaW5kKCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBnYW1lT2JqZWN0O1xuXHRcdH07XG5cblx0XHRsZXQgbWFrZVNwaW5lR2FtZU9iamVjdCA9IGZ1bmN0aW9uICh0aGlzOiBQaGFzZXIuR2FtZU9iamVjdHMuR2FtZU9iamVjdEZhY3RvcnksIGNvbmZpZzogU3BpbmVHYW1lT2JqZWN0Q29uZmlnLCBhZGRUb1NjZW5lOiBib29sZWFuID0gZmFsc2UpIHtcblx0XHRcdGlmICh0aGlzLnNjZW5lLnN5cy5yZW5kZXJlciBpbnN0YW5jZW9mIFBoYXNlci5SZW5kZXJlci5XZWJHTC5XZWJHTFJlbmRlcmVyKSB7XG5cdFx0XHRcdHRoaXMuc2NlbmUuc3lzLnJlbmRlcmVyLnBpcGVsaW5lcy5jbGVhcigpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgeCA9IGNvbmZpZy54ID8gY29uZmlnLnggOiAwO1xuXHRcdFx0bGV0IHkgPSBjb25maWcueSA/IGNvbmZpZy55IDogMDtcblx0XHRcdGxldCBib3VuZHNQcm92aWRlciA9IGNvbmZpZy5ib3VuZHNQcm92aWRlciA/IGNvbmZpZy5ib3VuZHNQcm92aWRlciA6IHVuZGVmaW5lZDtcblxuXHRcdFx0Y29uc3Qgc3BpbmVQbHVnaW4gPSAodGhpcy5zY2VuZS5zeXMgYXMgYW55KVtwbHVnaW5LZXldIGFzIFNwaW5lUGx1Z2luO1xuXHRcdFx0bGV0IGdhbWVPYmplY3QgPSBuZXcgU3BpbmVHYW1lT2JqZWN0KHRoaXMuc2NlbmUsIHNwaW5lUGx1Z2luLCB4LCB5LCBjb25maWcuZGF0YUtleSwgY29uZmlnLmF0bGFzS2V5LCBib3VuZHNQcm92aWRlcik7XG5cdFx0XHRpZiAoYWRkVG9TY2VuZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNvbmZpZy5hZGQgPSBhZGRUb1NjZW5lO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5zY2VuZS5zeXMucmVuZGVyZXIgaW5zdGFuY2VvZiBQaGFzZXIuUmVuZGVyZXIuV2ViR0wuV2ViR0xSZW5kZXJlcikge1xuXHRcdFx0XHR0aGlzLnNjZW5lLnN5cy5yZW5kZXJlci5waXBlbGluZXMucmViaW5kKCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBQaGFzZXIuR2FtZU9iamVjdHMuQnVpbGRHYW1lT2JqZWN0KHRoaXMuc2NlbmUsIGdhbWVPYmplY3QsIGNvbmZpZyk7XG5cdFx0fVxuXHRcdHBsdWdpbk1hbmFnZXIucmVnaXN0ZXJHYW1lT2JqZWN0KCh3aW5kb3cgYXMgYW55KS5TUElORV9HQU1FX09CSkVDVF9UWVBFID8gKHdpbmRvdyBhcyBhbnkpLlNQSU5FX0dBTUVfT0JKRUNUX1RZUEUgOiBTUElORV9HQU1FX09CSkVDVF9UWVBFLCBhZGRTcGluZUdhbWVPYmplY3QsIG1ha2VTcGluZUdhbWVPYmplY3QpO1xuXHR9XG5cblx0c3RhdGljIHJlbmRlcmVySWQgPSAwO1xuXHRib290ICgpIHtcblx0XHRpZiAodGhpcy5pc1dlYkdMICYmIHRoaXMuZ2wpIHtcblx0XHRcdFNwaW5lUGx1Z2luLmdhbWVXZWJHTFJlbmRlcmVyIHx8PSBuZXcgU2NlbmVSZW5kZXJlcigodGhpcy5nYW1lLnJlbmRlcmVyIGFzIFBoYXNlci5SZW5kZXJlci5XZWJHTC5XZWJHTFJlbmRlcmVyKS5jYW52YXMsIHRoaXMuZ2wsIHRydWUpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5zY2VuZSkge1xuXHRcdFx0dGhpcy5jYW52YXNSZW5kZXJlciB8fD0gbmV3IFNrZWxldG9uUmVuZGVyZXIodGhpcy5zY2VuZS5zeXMuY29udGV4dCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5vblJlc2l6ZSgpO1xuXHRcdGlmICh0aGlzLnN5c3RlbXMpIHtcblx0XHRcdHRoaXMuc3lzdGVtcy5ldmVudHMub25jZShcImRlc3Ryb3lcIiwgdGhpcy5kZXN0cm95LCB0aGlzKTtcblx0XHRcdHRoaXMuc3lzdGVtcy5ldmVudHMub24oXCJzdGFydFwiLCB0aGlzLm9uU3RhcnQsIHRoaXMpO1xuXHRcdFx0dGhpcy5zeXN0ZW1zLmV2ZW50cy5vbihcInNodXRkb3duXCIsIHRoaXMuc2h1dGRvd24sIHRoaXMpO1xuXHRcdH1cblxuXHRcdHRoaXMuZ2FtZS5ldmVudHMub25jZShcImRlc3Ryb3lcIiwgdGhpcy5nYW1lRGVzdHJveSwgdGhpcyk7XG5cdH1cblxuXHRvblJlc2l6ZSAoKSB7XG5cdFx0Y29uc3QgcGhhc2VyUmVuZGVyZXIgPSB0aGlzLmdhbWUucmVuZGVyZXI7XG5cdFx0Y29uc3Qgc2NlbmVSZW5kZXJlciA9IHRoaXMud2ViR0xSZW5kZXJlcjtcblxuXHRcdGlmIChwaGFzZXJSZW5kZXJlciAmJiBzY2VuZVJlbmRlcmVyKSB7XG5cdFx0XHRjb25zdCB2aWV3cG9ydFdpZHRoID0gcGhhc2VyUmVuZGVyZXIud2lkdGg7XG5cdFx0XHRjb25zdCB2aWV3cG9ydEhlaWdodCA9IHBoYXNlclJlbmRlcmVyLmhlaWdodDtcblx0XHRcdHNjZW5lUmVuZGVyZXIuY2FtZXJhLnBvc2l0aW9uLnggPSB2aWV3cG9ydFdpZHRoIC8gMjtcblx0XHRcdHNjZW5lUmVuZGVyZXIuY2FtZXJhLnBvc2l0aW9uLnkgPSB2aWV3cG9ydEhlaWdodCAvIDI7XG5cdFx0XHRzY2VuZVJlbmRlcmVyLmNhbWVyYS51cC55ID0gLTE7XG5cdFx0XHRzY2VuZVJlbmRlcmVyLmNhbWVyYS5kaXJlY3Rpb24ueiA9IDE7XG5cdFx0XHRzY2VuZVJlbmRlcmVyLmNhbWVyYS5zZXRWaWV3cG9ydCh2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCk7XG5cdFx0fVxuXHR9XG5cblx0b25TdGFydCAoKSB7XG5cdFx0dGhpcy5nYW1lLnNjYWxlLm9uKFBoYXNlci5TY2FsZS5FdmVudHMuUkVTSVpFLCB0aGlzLm9uUmVzaXplLCB0aGlzKTtcblx0fVxuXG5cdHNodXRkb3duICgpIHtcblx0XHRpZiAodGhpcy5pc1dlYkdMKSB7XG5cdFx0XHR0aGlzLmdhbWUuc2NhbGUub2ZmKFBoYXNlci5TY2FsZS5FdmVudHMuUkVTSVpFLCB0aGlzLm9uUmVzaXplLCB0aGlzKTtcblx0XHR9XG5cdH1cblxuXHRkZXN0cm95ICgpIHtcblx0XHR0aGlzLnNodXRkb3duKCk7XG5cdFx0dGhpcy5zeXN0ZW1zPy5ldmVudHMub2ZmKFwic3RhcnRcIiwgdGhpcy5vblN0YXJ0LCB0aGlzKTtcblx0XHR0aGlzLnN5c3RlbXM/LmV2ZW50cy5vZmYoXCJzaHV0ZG93blwiLCB0aGlzLnNodXRkb3duLCB0aGlzKTtcblx0fVxuXG5cdGdhbWVEZXN0cm95ICgpIHtcblx0XHR0aGlzLnBsdWdpbk1hbmFnZXIucmVtb3ZlR2FtZU9iamVjdCgod2luZG93IGFzIGFueSkuU1BJTkVfR0FNRV9PQkpFQ1RfVFlQRSA/ICh3aW5kb3cgYXMgYW55KS5TUElORV9HQU1FX09CSkVDVF9UWVBFIDogU1BJTkVfR0FNRV9PQkpFQ1RfVFlQRSwgdHJ1ZSwgdHJ1ZSk7XG5cdFx0aWYgKHRoaXMud2ViR0xSZW5kZXJlcikgdGhpcy53ZWJHTFJlbmRlcmVyLmRpc3Bvc2UoKTtcblx0XHRTcGluZVBsdWdpbi5nYW1lV2ViR0xSZW5kZXJlciA9IG51bGw7XG5cdH1cblxuXHQvKiogUmV0dXJucyB0aGUgVGV4dHVyZUF0bGFzIGluc3RhbmNlIGZvciB0aGUgZ2l2ZW4ga2V5ICovXG5cdGdldEF0bGFzIChhdGxhc0tleTogc3RyaW5nKSB7XG5cdFx0bGV0IGF0bGFzOiBUZXh0dXJlQXRsYXM7XG5cdFx0aWYgKHRoaXMuYXRsYXNDYWNoZS5leGlzdHMoYXRsYXNLZXkpKSB7XG5cdFx0XHRhdGxhcyA9IHRoaXMuYXRsYXNDYWNoZS5nZXQoYXRsYXNLZXkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsZXQgYXRsYXNGaWxlID0gdGhpcy5nYW1lLmNhY2hlLnRleHQuZ2V0KGF0bGFzS2V5KSBhcyB7IGRhdGE6IHN0cmluZywgcHJlbXVsdGlwbGllZEFscGhhOiBib29sZWFuIH07XG5cdFx0XHRhdGxhcyA9IG5ldyBUZXh0dXJlQXRsYXMoYXRsYXNGaWxlLmRhdGEpO1xuXHRcdFx0aWYgKHRoaXMuaXNXZWJHTCkge1xuXHRcdFx0XHRsZXQgZ2wgPSB0aGlzLmdsITtcblx0XHRcdFx0Y29uc3QgcGhhc2VyVW5wYWNrUG1hVmFsdWUgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMKTtcblx0XHRcdFx0aWYgKHBoYXNlclVucGFja1BtYVZhbHVlKSBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsIGZhbHNlKTtcblx0XHRcdFx0Zm9yIChsZXQgYXRsYXNQYWdlIG9mIGF0bGFzLnBhZ2VzKSB7XG5cdFx0XHRcdFx0YXRsYXNQYWdlLnNldFRleHR1cmUobmV3IEdMVGV4dHVyZShnbCwgdGhpcy5nYW1lLnRleHR1cmVzLmdldChhdGxhc0tleSArIFwiIVwiICsgYXRsYXNQYWdlLm5hbWUpLmdldFNvdXJjZUltYWdlKCkgYXMgSFRNTEltYWdlRWxlbWVudCB8IEltYWdlQml0bWFwLCBmYWxzZSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwaGFzZXJVbnBhY2tQbWFWYWx1ZSkgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCB0cnVlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAobGV0IGF0bGFzUGFnZSBvZiBhdGxhcy5wYWdlcykge1xuXHRcdFx0XHRcdGF0bGFzUGFnZS5zZXRUZXh0dXJlKG5ldyBDYW52YXNUZXh0dXJlKHRoaXMuZ2FtZS50ZXh0dXJlcy5nZXQoYXRsYXNLZXkgKyBcIiFcIiArIGF0bGFzUGFnZS5uYW1lKS5nZXRTb3VyY2VJbWFnZSgpIGFzIEhUTUxJbWFnZUVsZW1lbnQgfCBJbWFnZUJpdG1hcCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmF0bGFzQ2FjaGUuYWRkKGF0bGFzS2V5LCBhdGxhcyk7XG5cdFx0fVxuXHRcdHJldHVybiBhdGxhcztcblx0fVxuXG5cdC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIFRleHR1cmVBdGxhcyB1c2VzIHByZW11bHRpcGxpZWQgYWxwaGEgKi9cblx0aXNBdGxhc1ByZW11bHRpcGxpZWQgKGF0bGFzS2V5OiBzdHJpbmcpIHtcblx0XHRsZXQgYXRsYXNGaWxlID0gdGhpcy5nYW1lLmNhY2hlLnRleHQuZ2V0KGF0bGFzS2V5KTtcblx0XHRpZiAoIWF0bGFzRmlsZSkgcmV0dXJuIGZhbHNlO1xuXHRcdHJldHVybiBhdGxhc0ZpbGUucHJlbXVsdGlwbGllZEFscGhhO1xuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIFNrZWxldG9uRGF0YSBpbnN0YW5jZSBmb3IgdGhlIGdpdmVuIGRhdGEgYW5kIGF0bGFzIGtleSAqL1xuXHRnZXRTa2VsZXRvbkRhdGEgKGRhdGFLZXk6IHN0cmluZywgYXRsYXNLZXk6IHN0cmluZykge1xuXHRcdGNvbnN0IGF0bGFzID0gdGhpcy5nZXRBdGxhcyhhdGxhc0tleSlcblx0XHRjb25zdCBjb21iaW5lZEtleSA9IGRhdGFLZXkgKyBhdGxhc0tleTtcblx0XHRsZXQgc2tlbGV0b25EYXRhOiBTa2VsZXRvbkRhdGE7XG5cdFx0aWYgKHRoaXMuc2tlbGV0b25EYXRhQ2FjaGUuZXhpc3RzKGNvbWJpbmVkS2V5KSkge1xuXHRcdFx0c2tlbGV0b25EYXRhID0gdGhpcy5za2VsZXRvbkRhdGFDYWNoZS5nZXQoY29tYmluZWRLZXkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodGhpcy5nYW1lLmNhY2hlLmpzb24uZXhpc3RzKGRhdGFLZXkpKSB7XG5cdFx0XHRcdGxldCBqc29uRmlsZSA9IHRoaXMuZ2FtZS5jYWNoZS5qc29uLmdldChkYXRhS2V5KSBhcyBhbnk7XG5cdFx0XHRcdGxldCBqc29uID0gbmV3IFNrZWxldG9uSnNvbihuZXcgQXRsYXNBdHRhY2htZW50TG9hZGVyKGF0bGFzKSk7XG5cdFx0XHRcdHNrZWxldG9uRGF0YSA9IGpzb24ucmVhZFNrZWxldG9uRGF0YShqc29uRmlsZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgYmluYXJ5RmlsZSA9IHRoaXMuZ2FtZS5jYWNoZS5iaW5hcnkuZ2V0KGRhdGFLZXkpIGFzIEFycmF5QnVmZmVyO1xuXHRcdFx0XHRsZXQgYmluYXJ5ID0gbmV3IFNrZWxldG9uQmluYXJ5KG5ldyBBdGxhc0F0dGFjaG1lbnRMb2FkZXIoYXRsYXMpKTtcblx0XHRcdFx0c2tlbGV0b25EYXRhID0gYmluYXJ5LnJlYWRTa2VsZXRvbkRhdGEobmV3IFVpbnQ4QXJyYXkoYmluYXJ5RmlsZSkpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5za2VsZXRvbkRhdGFDYWNoZS5hZGQoY29tYmluZWRLZXksIHNrZWxldG9uRGF0YSk7XG5cdFx0fVxuXHRcdHJldHVybiBza2VsZXRvbkRhdGE7XG5cdH1cblxuXHQvKiogQ3JlYXRlcyBhIG5ldyBTa2VsZXRvbiBpbnN0YW5jZSBmcm9tIHRoZSBkYXRhIGFuZCBhdGxhcy4gKi9cblx0Y3JlYXRlU2tlbGV0b24gKGRhdGFLZXk6IHN0cmluZywgYXRsYXNLZXk6IHN0cmluZykge1xuXHRcdHJldHVybiBuZXcgU2tlbGV0b24odGhpcy5nZXRTa2VsZXRvbkRhdGEoZGF0YUtleSwgYXRsYXNLZXkpKTtcblx0fVxufVxuXG5lbnVtIFNwaW5lU2tlbGV0b25EYXRhRmlsZVR5cGUge1xuXHRqc29uLFxuXHRiaW5hcnlcbn1cblxuaW50ZXJmYWNlIFNwaW5lU2tlbGV0b25EYXRhRmlsZUNvbmZpZyB7XG5cdGtleTogc3RyaW5nO1xuXHR1cmw6IHN0cmluZztcblx0dHlwZTogXCJzcGluZUpzb25cIiB8IFwic3BpbmVCaW5hcnlcIjtcblx0eGhyU2V0dGluZ3M/OiBQaGFzZXIuVHlwZXMuTG9hZGVyLlhIUlNldHRpbmdzT2JqZWN0XG59XG5cbmNsYXNzIFNwaW5lU2tlbGV0b25EYXRhRmlsZSBleHRlbmRzIFBoYXNlci5Mb2FkZXIuTXVsdGlGaWxlIHtcblx0Y29uc3RydWN0b3IgKGxvYWRlcjogUGhhc2VyLkxvYWRlci5Mb2FkZXJQbHVnaW4sIGtleTogc3RyaW5nIHwgU3BpbmVTa2VsZXRvbkRhdGFGaWxlQ29uZmlnLCB1cmw/OiBzdHJpbmcsIHB1YmxpYyBmaWxlVHlwZT86IFNwaW5lU2tlbGV0b25EYXRhRmlsZVR5cGUsIHhoclNldHRpbmdzPzogUGhhc2VyLlR5cGVzLkxvYWRlci5YSFJTZXR0aW5nc09iamVjdCkge1xuXHRcdGlmICh0eXBlb2Yga2V5ICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRjb25zdCBjb25maWcgPSBrZXk7XG5cdFx0XHRrZXkgPSBjb25maWcua2V5O1xuXHRcdFx0dXJsID0gY29uZmlnLnVybDtcblx0XHRcdGZpbGVUeXBlID0gY29uZmlnLnR5cGUgPT09IFwic3BpbmVKc29uXCIgPyBTcGluZVNrZWxldG9uRGF0YUZpbGVUeXBlLmpzb24gOiBTcGluZVNrZWxldG9uRGF0YUZpbGVUeXBlLmJpbmFyeTtcblx0XHRcdHhoclNldHRpbmdzID0gY29uZmlnLnhoclNldHRpbmdzO1xuXHRcdH1cblx0XHRsZXQgZmlsZSA9IG51bGw7XG5cdFx0bGV0IGlzSnNvbiA9IGZpbGVUeXBlID09IFNwaW5lU2tlbGV0b25EYXRhRmlsZVR5cGUuanNvbjtcblx0XHRpZiAoaXNKc29uKSB7XG5cdFx0XHRmaWxlID0gbmV3IFBoYXNlci5Mb2FkZXIuRmlsZVR5cGVzLkpTT05GaWxlKGxvYWRlciwge1xuXHRcdFx0XHRrZXk6IGtleSxcblx0XHRcdFx0dXJsOiB1cmwsXG5cdFx0XHRcdGV4dGVuc2lvbjogXCJqc29uXCIsXG5cdFx0XHRcdHhoclNldHRpbmdzOiB4aHJTZXR0aW5ncyxcblx0XHRcdH0gYXMgUGhhc2VyLlR5cGVzLkxvYWRlci5GaWxlVHlwZXMuSlNPTkZpbGVDb25maWcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmaWxlID0gbmV3IFBoYXNlci5Mb2FkZXIuRmlsZVR5cGVzLkJpbmFyeUZpbGUobG9hZGVyLCB7XG5cdFx0XHRcdGtleToga2V5LFxuXHRcdFx0XHR1cmw6IHVybCxcblx0XHRcdFx0ZXh0ZW5zaW9uOiBcInNrZWxcIixcblx0XHRcdFx0eGhyU2V0dGluZ3M6IHhoclNldHRpbmdzLFxuXHRcdFx0fSBhcyBQaGFzZXIuVHlwZXMuTG9hZGVyLkZpbGVUeXBlcy5CaW5hcnlGaWxlQ29uZmlnKTtcblx0XHR9XG5cdFx0c3VwZXIobG9hZGVyLCBTUElORV9TS0VMRVRPTl9EQVRBX0ZJTEVfVFlQRSwga2V5LCBbZmlsZV0pO1xuXHR9XG5cblx0b25GaWxlQ29tcGxldGUgKGZpbGU6IFBoYXNlci5Mb2FkZXIuRmlsZSkge1xuXHRcdHRoaXMucGVuZGluZy0tO1xuXHR9XG5cblx0YWRkVG9DYWNoZSAoKSB7XG5cdFx0aWYgKHRoaXMuaXNSZWFkeVRvUHJvY2VzcygpKSB0aGlzLmZpbGVzWzBdLmFkZFRvQ2FjaGUoKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgU3BpbmVBdGxhc0ZpbGVDb25maWcge1xuXHRrZXk6IHN0cmluZztcblx0dXJsOiBzdHJpbmc7XG5cdHByZW11bHRpcGxpZWRBbHBoYT86IGJvb2xlYW47XG5cdHhoclNldHRpbmdzPzogUGhhc2VyLlR5cGVzLkxvYWRlci5YSFJTZXR0aW5nc09iamVjdDtcbn1cblxuY2xhc3MgU3BpbmVBdGxhc0ZpbGUgZXh0ZW5kcyBQaGFzZXIuTG9hZGVyLk11bHRpRmlsZSB7XG5cdGNvbnN0cnVjdG9yIChsb2FkZXI6IFBoYXNlci5Mb2FkZXIuTG9hZGVyUGx1Z2luLCBrZXk6IHN0cmluZyB8IFNwaW5lQXRsYXNGaWxlQ29uZmlnLCB1cmw/OiBzdHJpbmcsIHB1YmxpYyBwcmVtdWx0aXBsaWVkQWxwaGE/OiBib29sZWFuLCB4aHJTZXR0aW5ncz86IFBoYXNlci5UeXBlcy5Mb2FkZXIuWEhSU2V0dGluZ3NPYmplY3QpIHtcblx0XHRpZiAodHlwZW9mIGtleSAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0Y29uc3QgY29uZmlnID0ga2V5O1xuXHRcdFx0a2V5ID0gY29uZmlnLmtleTtcblx0XHRcdHVybCA9IGNvbmZpZy51cmw7XG5cdFx0XHRwcmVtdWx0aXBsaWVkQWxwaGEgPSBjb25maWcucHJlbXVsdGlwbGllZEFscGhhO1xuXHRcdFx0eGhyU2V0dGluZ3MgPSBjb25maWcueGhyU2V0dGluZ3M7XG5cdFx0fVxuXG5cdFx0c3VwZXIobG9hZGVyLCBTUElORV9BVExBU19GSUxFX1RZUEUsIGtleSwgW1xuXHRcdFx0bmV3IFBoYXNlci5Mb2FkZXIuRmlsZVR5cGVzLlRleHRGaWxlKGxvYWRlciwge1xuXHRcdFx0XHRrZXk6IGtleSxcblx0XHRcdFx0dXJsOiB1cmwsXG5cdFx0XHRcdHhoclNldHRpbmdzOiB4aHJTZXR0aW5ncyxcblx0XHRcdFx0ZXh0ZW5zaW9uOiBcImF0bGFzXCJcblx0XHRcdH0pXG5cdFx0XSk7XG5cdH1cblxuXHRvbkZpbGVDb21wbGV0ZSAoZmlsZTogUGhhc2VyLkxvYWRlci5GaWxlKSB7XG5cdFx0aWYgKHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKSAhPSAtMSkge1xuXHRcdFx0dGhpcy5wZW5kaW5nLS07XG5cblx0XHRcdGlmIChmaWxlLnR5cGUgPT0gXCJ0ZXh0XCIpIHtcblx0XHRcdFx0dmFyIGxpbmVzID0gZmlsZS5kYXRhLnNwbGl0KC9cXHJcXG58XFxyfFxcbi8pO1xuXHRcdFx0XHRsZXQgdGV4dHVyZXMgPSBbXTtcblx0XHRcdFx0dGV4dHVyZXMucHVzaChsaW5lc1swXSk7XG5cdFx0XHRcdGZvciAodmFyIHQgPSAxOyB0IDwgbGluZXMubGVuZ3RoOyB0KyspIHtcblx0XHRcdFx0XHR2YXIgbGluZSA9IGxpbmVzW3RdO1xuXHRcdFx0XHRcdGlmIChsaW5lLnRyaW0oKSA9PT0gJycgJiYgdCA8IGxpbmVzLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0XHRcdGxpbmUgPSBsaW5lc1t0ICsgMV07XG5cdFx0XHRcdFx0XHR0ZXh0dXJlcy5wdXNoKGxpbmUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBiYXNlUGF0aCA9IChmaWxlLnNyYy5tYXRjaCgvXi4qXFwvLykgPz8gXCJcIikudG9TdHJpbmcoKTtcblx0XHRcdFx0aWYgKHRoaXMubG9hZGVyLnBhdGggJiYgdGhpcy5sb2FkZXIucGF0aC5sZW5ndGggPiAwICYmIGJhc2VQYXRoLnN0YXJ0c1dpdGgodGhpcy5sb2FkZXIucGF0aCkpXG5cdFx0XHRcdFx0YmFzZVBhdGggPSBiYXNlUGF0aC5zbGljZSh0aGlzLmxvYWRlci5wYXRoLmxlbmd0aCk7XG5cblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0dXJlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciB1cmwgPSBiYXNlUGF0aCArIHRleHR1cmVzW2ldO1xuXHRcdFx0XHRcdHZhciBrZXkgPSBmaWxlLmtleSArIFwiIVwiICsgdGV4dHVyZXNbaV07XG5cdFx0XHRcdFx0dmFyIGltYWdlID0gbmV3IFBoYXNlci5Mb2FkZXIuRmlsZVR5cGVzLkltYWdlRmlsZSh0aGlzLmxvYWRlciwga2V5LCB1cmwpO1xuXG5cdFx0XHRcdFx0aWYgKCF0aGlzLmxvYWRlci5rZXlFeGlzdHMoaW1hZ2UpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmFkZFRvTXVsdGlGaWxlKGltYWdlKTtcblx0XHRcdFx0XHRcdHRoaXMubG9hZGVyLmFkZEZpbGUoaW1hZ2UpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGFkZFRvQ2FjaGUgKCkge1xuXHRcdGlmICh0aGlzLmlzUmVhZHlUb1Byb2Nlc3MoKSkge1xuXHRcdFx0bGV0IHRleHR1cmVNYW5hZ2VyID0gdGhpcy5sb2FkZXIudGV4dHVyZU1hbmFnZXI7XG5cdFx0XHRmb3IgKGxldCBmaWxlIG9mIHRoaXMuZmlsZXMpIHtcblx0XHRcdFx0aWYgKGZpbGUudHlwZSA9PSBcImltYWdlXCIpIHtcblx0XHRcdFx0XHRpZiAoIXRleHR1cmVNYW5hZ2VyLmV4aXN0cyhmaWxlLmtleSkpIHtcblx0XHRcdFx0XHRcdHRleHR1cmVNYW5hZ2VyLmFkZEltYWdlKGZpbGUua2V5LCBmaWxlLmRhdGEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRoaXMucHJlbXVsdGlwbGllZEFscGhhID8/IChmaWxlLmRhdGEuaW5kZXhPZihcInBtYTogdHJ1ZVwiKSA+PSAwIHx8IGZpbGUuZGF0YS5pbmRleE9mKFwicG1hOnRydWVcIikgPj0gMCk7XG5cdFx0XHRcdFx0ZmlsZS5kYXRhID0ge1xuXHRcdFx0XHRcdFx0ZGF0YTogZmlsZS5kYXRhLFxuXHRcdFx0XHRcdFx0cHJlbXVsdGlwbGllZEFscGhhOiB0aGlzLnByZW11bHRpcGxpZWRBbHBoYSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGZpbGUuYWRkVG9DYWNoZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iXX0=
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BpbmVQbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU3BpbmVQbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFnQixZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDbkssT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLDZCQUE2QixJQUFJLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hNLE9BQU8sRUFBRSxlQUFlLEVBQWlDLE1BQU0sc0JBQXNCLENBQUM7QUFFdEYsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFtQnRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO0lBQzFELElBQUksQ0FBYztJQUNWLE9BQU8sQ0FBVTtJQUN6QixFQUFFLENBQStCO0lBQ2pDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBeUIsSUFBSSxDQUFDO0lBQ3RELElBQUksYUFBYTtRQUNoQixPQUFPLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsY0FBYyxDQUEwQjtJQUN4QyxjQUFjLENBQThFO0lBQ3BGLGlCQUFpQixDQUF5QjtJQUMxQyxVQUFVLENBQXlCO0lBRTNDLFlBQWEsS0FBbUIsRUFBRSxhQUEyQyxFQUFFLFNBQWlCO1FBQy9GLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxF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QUNGLENBQUM7SUFDRixDQUFDO0lBRUQsVUFBVTtRQUNULElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztZQUM3QixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztZQUNoRCxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDdEMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUMsQ0FBQztnQkFDRixDQUFDO3FCQUFNLENBQUM7b0JBQ1AsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDakksSUFBSSxDQUFDLElBQUksR0FBRzt3QkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2Ysa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtxQkFDM0MsQ0FBQztvQkFDRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ25CLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQ2FudmFzVGV4dHVyZSwgU2tlbGV0b25SZW5kZXJlciB9IGZyb20gXCJAZXNvdGVyaWNzb2Z0d2FyZS9zcGluZS1jYW52YXNcIjtcbmltcG9ydCB7IEF0bGFzQXR0YWNobWVudExvYWRlciwgR0xUZXh0dXJlLCBTY2VuZVJlbmRlcmVyLCBTa2VsZXRvbiwgU2tlbGV0b25CaW5hcnksIFNrZWxldG9uRGF0YSwgU2tlbGV0b25Kc29uLCBUZXh0dXJlQXRsYXMgfSBmcm9tIFwiQGVzb3Rlcmljc29mdHdhcmUvc3BpbmUtd2ViZ2xcIlxuaW1wb3J0ICogYXMgUGhhc2VyIGZyb20gXCJwaGFzZXJcIjtcbmltcG9ydCB7IFNQSU5FX0FUTEFTX0NBQ0hFX0tFWSwgU1BJTkVfQVRMQVNfRklMRV9UWVBFLCBTUElORV9HQU1FX09CSkVDVF9UWVBFLCBTUElORV9TS0VMRVRPTl9GSUxFX0NBQ0hFX0tFWSBhcyBTUElORV9TS0VMRVRPTl9EQVRBX0NBQ0hFX0tFWSwgU1BJTkVfU0tFTEVUT05fREFUQV9GSUxFX1RZUEUgfSBmcm9tIFwiLi9rZXlzLmpzXCI7XG5pbXBvcnQgeyBTcGluZUdhbWVPYmplY3QsIFNwaW5lR2FtZU9iamVjdEJvdW5kc1Byb3ZpZGVyIH0gZnJvbSBcIi4vU3BpbmVHYW1lT2JqZWN0LmpzXCI7XG5cblNrZWxldG9uLnlEb3duID0gdHJ1ZTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9iamVjdCB1c2VkIHdoZW4gY3JlYXRpbmcge0BsaW5rIFNwaW5lR2FtZU9iamVjdH0gaW5zdGFuY2VzIHZpYSBhIHNjZW5lJ3NcbiAqIHtAbGluayBHYW1lT2JqZWN0Q3JlYXRvcn0gKGBTY2VuZS5tYWtlYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbmVHYW1lT2JqZWN0Q29uZmlnIGV4dGVuZHMgUGhhc2VyLlR5cGVzLkdhbWVPYmplY3RzLkdhbWVPYmplY3RDb25maWcge1xuXHQvKiogVGhlIHgtcG9zaXRpb24gb2YgdGhlIG9iamVjdCwgb3B0aW9uYWwsIGRlZmF1bHQ6IDAgKi9cblx0eD86IG51bWJlcixcblx0LyoqIFRoZSB5LXBvc2l0aW9uIG9mIHRoZSBvYmplY3QsIG9wdGlvbmFsLCBkZWZhdWx0OiAwICovXG5cdHk/OiBudW1iZXIsXG5cdC8qKiBUaGUgc2tlbGV0b24gZGF0YSBrZXkgKi9cblx0ZGF0YUtleTogc3RyaW5nLFxuXHQvKiogVGhlIGF0bGFzIGtleSAqL1xuXHRhdGxhc0tleTogc3RyaW5nXG5cdC8qKiBUaGUgYm91bmRzIHByb3ZpZGVyLCBvcHRpb25hbCwgZGVmYXVsdDogYFNldHVwUG9zZUJvdW5kc1Byb3ZpZGVyYCAqL1xuXHRib3VuZHNQcm92aWRlcj86IFNwaW5lR2FtZU9iamVjdEJvdW5kc1Byb3ZpZGVyXG59XG5cbi8qKlxuICoge0BsaW5rIFNjZW5lUGx1Z2lufSBpbXBsZW1lbnRhdGlvbiBhZGRpbmcgU3BpbmUgUnVudGltZSBjYXBhYmlsaXRpZXMgdG8gYSBzY2VuZS5cbiAqXG4gKiBUaGUgc2NlbmUncyB7QGxpbmsgTG9hZGVyUGx1Z2lufSAoYFNjZW5lLmxvYWRgKSBnZXRzIHRoZXNlIGFkZGl0aW9uYWwgZnVuY3Rpb25zOlxuICogKiBgc3BpbmVCaW5hcnkoa2V5OiBzdHJpbmcsIHVybDogc3RyaW5nLCB4aHJTZXR0aW5ncz86IFhIUlNldHRpbmdzT2JqZWN0KWA6IGxvYWRzIGEgc2tlbGV0b24gYmluYXJ5IGAuc2tlbGAgZmlsZSBmcm9tIHRoZSBgdXJsYC5cbiAqICogYHNwaW5lSnNvbihrZXk6IHN0cmluZywgdXJsOiBzdHJpbmcsIHhoclNldHRpbmdzPzogWEhSU2V0dGluZ3NPYmplY3QpYDogbG9hZHMgYSBza2VsZXRvbiBiaW5hcnkgYC5za2VsYCBmaWxlIGZyb20gdGhlIGB1cmxgLlxuICogKiBgc3BpbmVBdGxhcyhrZXk6IHN0cmluZywgdXJsOiBzdHJpbmcsIHByZW11bHRpcGxpZWRBbHBoYTogYm9vbGVhbiA9IHRydWUsIHhoclNldHRpbmdzPzogWEhSU2V0dGluZ3NPYmplY3QpYDogbG9hZHMgYSB0ZXh0dXJlIGF0bGFzIGAuYXRsYXNgIGZpbGUgZnJvbSB0aGUgYHVybGAgYXMgd2VsbCBhcyBpdHMgY29ycmVwb25kaW5nIHRleHR1cmUgYXRsYXMgcGFnZSBpbWFnZXMuXG4gKlxuICogVGhlIHNjZW5lJ3Mge0BsaW5rIEdhbWVPYmplY3RGYWN0b3J5fSAoYFNjZW5lLmFkZGApIGdldHMgdGhlc2UgYWRkaXRpb25hbCBmdW5jdGlvbnM6XG4gKiAqIGBzcGluZSh4OiBudW1iZXIsIHk6IG51bWJlciwgZGF0YUtleTogc3RyaW5nLCBhdGxhc0tleTogc3RyaW5nLCBib3VuZHNQcm92aWRlcjogU3BpbmVHYW1lT2JqZWN0Qm91bmRzUHJvdmlkZXIgPSBTZXR1cFBvc2VCb3VuZHNQcm92aWRlcigpKWA6XG4gKiAgICBjcmVhdGVzIGEgbmV3IHtAbGluayBTcGluZUdhbWVPYmplY3R9IGZyb20gdGhlIGRhdGEgYW5kIGF0bGFzIGF0IHBvc2l0aW9uIGAoeCwgeSlgLCB1c2luZyB0aGUge0BsaW5rIEJvdW5kc1Byb3ZpZGVyfSB0byBjYWxjdWxhdGUgaXRzIGJvdW5kaW5nIGJveC4gVGhlIG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBzY2VuZS5cbiAqXG4gKiBUaGUgc2NlbmUncyB7QGxpbmsgR2FtZU9iamVjdENyZWF0b3J9IChgU2NlbmUubWFrZWApIGdldHMgdGhlc2UgYWRkaXRpb25hbCBmdW5jdGlvbnM6XG4gKiAqIGBzcGluZShjb25maWc6IFNwaW5lR2FtZU9iamVjdENvbmZpZylgOiBjcmVhdGVzIGEgbmV3IHtAbGluayBTcGluZUdhbWVPYmplY3R9IGZyb20gdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICpcbiAqIFRoZSBwbHVnaW4gaGFzIGFkZGl0aW9uYWwgcHVibGljIG1ldGhvZHMgdG8gd29yayB3aXRoIFNwaW5lIFJ1bnRpbWUgY29yZSBBUEkgb2JqZWN0czpcbiAqICogYGdldEF0bGFzKGF0bGFzS2V5OiBzdHJpbmcpYDogcmV0dXJucyB0aGUge0BsaW5rIFRleHR1cmVBdGxhc30gaW5zdGFuY2UgZm9yIHRoZSBnaXZlbiBhdGxhcyBrZXkuXG4gKiAqIGBnZXRTa2VsZXRvbkRhdGEoc2tlbGV0b25EYXRhS2V5OiBzdHJpbmcpYDogcmV0dXJucyB0aGUge0BsaW5rIFNrZWxldG9uRGF0YX0gaW5zdGFuY2UgZm9yIHRoZSBnaXZlbiBza2VsZXRvbiBkYXRhIGtleS5cbiAqICogYGNyZWF0ZVNrZWxldG9uKHNrZWxldG9uRGF0YUtleTogc3RyaW5nLCBhdGxhc0tleTogc3RyaW5nLCBwcmVtdWx0aXBsaWVkQWxwaGE6IGJvb2xlYW4gPSB0cnVlKWA6IGNyZWF0ZXMgYSBuZXcge0BsaW5rIFNrZWxldG9ufSBpbnN0YW5jZSBmcm9tIHRoZSBnaXZlbiBza2VsZXRvbiBkYXRhIGFuZCBhdGxhcyBrZXkuXG4gKiAqIGBpc1ByZW11bHRpcGxpZWRBbHBoYShhdGxhc0tleTogc3RyaW5nKWA6IHJldHVybnMgYHRydWVgIGlmIHRoZSBhdGxhcyB3aXRoIHRoZSBnaXZlbiBrZXkgaGFzIHByZW11bHRpcGxpZWQgYWxwaGEuXG4gKi9cbmV4cG9ydCBjbGFzcyBTcGluZVBsdWdpbiBleHRlbmRzIFBoYXNlci5QbHVnaW5zLlNjZW5lUGx1Z2luIHtcblx0Z2FtZTogUGhhc2VyLkdhbWU7XG5cdHByaXZhdGUgaXNXZWJHTDogYm9vbGVhbjtcblx0Z2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCB8IG51bGw7XG5cdHN0YXRpYyBnYW1lV2ViR0xSZW5kZXJlcjogU2NlbmVSZW5kZXJlciB8IG51bGwgPSBudWxsO1xuXHRnZXQgd2ViR0xSZW5kZXJlciAoKTogU2NlbmVSZW5kZXJlciB8IG51bGwge1xuXHRcdHJldHVybiBTcGluZVBsdWdpbi5nYW1lV2ViR0xSZW5kZXJlcjtcblx0fVxuXHRjYW52YXNSZW5kZXJlcjogU2tlbGV0b25SZW5kZXJlciB8IG51bGw7XG5cdHBoYXNlclJlbmRlcmVyOiBQaGFzZXIuUmVuZGVyZXIuQ2FudmFzLkNhbnZhc1JlbmRlcmVyIHwgUGhhc2VyLlJlbmRlcmVyLldlYkdMLldlYkdMUmVuZGVyZXI7XG5cdHByaXZhdGUgc2tlbGV0b25EYXRhQ2FjaGU6IFBoYXNlci5DYWNoZS5CYXNlQ2FjaGU7XG5cdHByaXZhdGUgYXRsYXNDYWNoZTogUGhhc2VyLkNhY2hlLkJhc2VDYWNoZTtcblxuXHRjb25zdHJ1Y3RvciAoc2NlbmU6IFBoYXNlci5TY2VuZSwgcGx1Z2luTWFuYWdlcjogUGhhc2VyLlBsdWdpbnMuUGx1Z2luTWFuYWdlciwgcGx1Z2luS2V5OiBzdHJpbmcpIHtcblx0XHRzdXBlcihzY2VuZSwgcGx1Z2luTWFuYWdlciwgcGx1Z2luS2V5KTtcblx0XHR0aGlzLmdhbWUgPSBwbHVnaW5NYW5hZ2VyLmdhbWU7XG5cdFx0dGhpcy5pc1dlYkdMID0gdGhpcy5nYW1lLmNvbmZpZy5yZW5kZXJUeXBlID09PSAyO1xuXHRcdHRoaXMuZ2wgPSB0aGlzLmlzV2ViR0wgPyAodGhpcy5nYW1lLnJlbmRlcmVyIGFzIFBoYXNlci5SZW5kZXJlci5XZWJHTC5XZWJHTFJlbmRlcmVyKS5nbCA6IG51bGw7XG5cdFx0dGhpcy5waGFzZXJSZW5kZXJlciA9IHRoaXMuZ2FtZS5yZW5kZXJlcjtcblx0XHR0aGlzLmNhbnZhc1JlbmRlcmVyID0gbnVsbDtcblx0XHR0aGlzLnNrZWxldG9uRGF0YUNhY2hlID0gdGhpcy5nYW1lLmNhY2hlLmFkZEN1c3RvbShTUElORV9TS0VMRVRPTl9EQVRBX0NBQ0hFX0tFWSk7XG5cdFx0dGhpcy5hdGxhc0NhY2hlID0gdGhpcy5nYW1lLmNhY2hlLmFkZEN1c3RvbShTUElORV9BVExBU19DQUNIRV9LRVkpO1xuXG5cdFx0bGV0IHNrZWxldG9uSnNvbkZpbGVDYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIGtleTogc3RyaW5nLFxuXHRcdFx0dXJsOiBzdHJpbmcsXG5cdFx0XHR4aHJTZXR0aW5nczogUGhhc2VyLlR5cGVzLkxvYWRlci5YSFJTZXR0aW5nc09iamVjdCkge1xuXHRcdFx0bGV0IGZpbGUgPSBuZXcgU3BpbmVTa2VsZXRvbkRhdGFGaWxlKHRoaXMgYXMgYW55LCBrZXksIHVybCwgU3BpbmVTa2VsZXRvbkRhdGFGaWxlVHlwZS5qc29uLCB4aHJTZXR0aW5ncyk7XG5cdFx0XHR0aGlzLmFkZEZpbGUoZmlsZS5maWxlcyk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9O1xuXHRcdHBsdWdpbk1hbmFnZXIucmVnaXN0ZXJGaWxlVHlwZShcInNwaW5lSnNvblwiLCBza2VsZXRvbkpzb25GaWxlQ2FsbGJhY2ssIHNjZW5lKTtcblxuXHRcdGxldCBza2VsZXRvbkJpbmFyeUZpbGVDYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIGtleTogc3RyaW5nLFxuXHRcdFx0dXJsOiBzdHJpbmcsXG5cdFx0XHR4aHJTZXR0aW5nczogUGhhc2VyLlR5cGVzLkxvYWRlci5YSFJTZXR0aW5nc09iamVjdCkge1xuXHRcdFx0bGV0IGZpbGUgPSBuZXcgU3BpbmVTa2VsZXRvbkRhdGFGaWxlKHRoaXMgYXMgYW55LCBrZXksIHVybCwgU3BpbmVTa2VsZXRvbkRhdGFGaWxlVHlwZS5iaW5hcnksIHhoclNldHRpbmdzKTtcblx0XHRcdHRoaXMuYWRkRmlsZShmaWxlLmZpbGVzKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH07XG5cdFx0cGx1Z2luTWFuYWdlci5yZWdpc3RlckZpbGVUeXBlKFwic3BpbmVCaW5hcnlcIiwgc2tlbGV0b25CaW5hcnlGaWxlQ2FsbGJhY2ssIHNjZW5lKTtcblxuXHRcdGxldCBhdGxhc0ZpbGVDYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIGtleTogc3RyaW5nLFxuXHRcdFx0dXJsOiBzdHJpbmcsXG5cdFx0XHRwcmVtdWx0aXBsaWVkQWxwaGE6IGJvb2xlYW4sXG5cdFx0XHR4aHJTZXR0aW5nczogUGhhc2VyLlR5cGVzLkxvYWRlci5YSFJTZXR0aW5nc09iamVjdCkge1xuXHRcdFx0bGV0IGZpbGUgPSBuZXcgU3BpbmVBdGxhc0ZpbGUodGhpcyBhcyBhbnksIGtleSwgdXJsLCBwcmVtdWx0aXBsaWVkQWxwaGEsIHhoclNldHRpbmdzKTtcblx0XHRcdHRoaXMuYWRkRmlsZShmaWxlLmZpbGVzKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH07XG5cdFx0cGx1Z2luTWFuYWdlci5yZWdpc3RlckZpbGVUeXBlKFwic3BpbmVBdGxhc1wiLCBhdGxhc0ZpbGVDYWxsYmFjaywgc2NlbmUpO1xuXG5cdFx0bGV0IGFkZFNwaW5lR2FtZU9iamVjdCA9IGZ1bmN0aW9uICh0aGlzOiBQaGFzZXIuR2FtZU9iamVjdHMuR2FtZU9iamVjdEZhY3RvcnksIHg6IG51bWJlciwgeTogbnVtYmVyLCBkYXRhS2V5OiBzdHJpbmcsIGF0bGFzS2V5OiBzdHJpbmcsIGJvdW5kc1Byb3ZpZGVyOiBTcGluZUdhbWVPYmplY3RCb3VuZHNQcm92aWRlcikge1xuXHRcdFx0aWYgKHRoaXMuc2NlbmUuc3lzLnJlbmRlcmVyIGluc3RhbmNlb2YgUGhhc2VyLlJlbmRlcmVyLldlYkdMLldlYkdMUmVuZGVyZXIpIHtcblx0XHRcdFx0dGhpcy5zY2VuZS5zeXMucmVuZGVyZXIucGlwZWxpbmVzLmNsZWFyKCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHNwaW5lUGx1Z2luID0gKHRoaXMuc2NlbmUuc3lzIGFzIGFueSlbcGx1Z2luS2V5XSBhcyBTcGluZVBsdWdpbjtcblx0XHRcdGxldCBnYW1lT2JqZWN0ID0gbmV3IFNwaW5lR2FtZU9iamVjdCh0aGlzLnNjZW5lLCBzcGluZVBsdWdpbiwgeCwgeSwgZGF0YUtleSwgYXRsYXNLZXksIGJvdW5kc1Byb3ZpZGVyKTtcblx0XHRcdHRoaXMuZGlzcGxheUxpc3QuYWRkKGdhbWVPYmplY3QpO1xuXHRcdFx0dGhpcy51cGRhdGVMaXN0LmFkZChnYW1lT2JqZWN0KTtcblxuXHRcdFx0aWYgKHRoaXMuc2NlbmUuc3lzLnJlbmRlcmVyIGluc3RhbmNlb2YgUGhhc2VyLlJlbmRlcmVyLldlYkdMLldlYkdMUmVuZGVyZXIpIHtcblx0XHRcdFx0dGhpcy5zY2VuZS5zeXMucmVuZGVyZXIucGlwZWxpbmVzLnJlYmluZCgpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZ2FtZU9iamVjdDtcblx0XHR9O1xuXG5cdFx0bGV0IG1ha2VTcGluZUdhbWVPYmplY3QgPSBmdW5jdGlvbiAodGhpczogUGhhc2VyLkdhbWVPYmplY3RzLkdhbWVPYmplY3RGYWN0b3J5LCBjb25maWc6IFNwaW5lR2FtZU9iamVjdENvbmZpZywgYWRkVG9TY2VuZTogYm9vbGVhbiA9IGZhbHNlKSB7XG5cdFx0XHRpZiAodGhpcy5zY2VuZS5zeXMucmVuZGVyZXIgaW5zdGFuY2VvZiBQaGFzZXIuUmVuZGVyZXIuV2ViR0wuV2ViR0xSZW5kZXJlcikge1xuXHRcdFx0XHR0aGlzLnNjZW5lLnN5cy5yZW5kZXJlci5waXBlbGluZXMuY2xlYXIoKTtcblx0XHRcdH1cblxuXHRcdFx0bGV0IHggPSBjb25maWcueCA/IGNvbmZpZy54IDogMDtcblx0XHRcdGxldCB5ID0gY29uZmlnLnkgPyBjb25maWcueSA6IDA7XG5cdFx0XHRsZXQgYm91bmRzUHJvdmlkZXIgPSBjb25maWcuYm91bmRzUHJvdmlkZXIgPyBjb25maWcuYm91bmRzUHJvdmlkZXIgOiB1bmRlZmluZWQ7XG5cblx0XHRcdGNvbnN0IHNwaW5lUGx1Z2luID0gKHRoaXMuc2NlbmUuc3lzIGFzIGFueSlbcGx1Z2luS2V5XSBhcyBTcGluZVBsdWdpbjtcblx0XHRcdGxldCBnYW1lT2JqZWN0ID0gbmV3IFNwaW5lR2FtZU9iamVjdCh0aGlzLnNjZW5lLCBzcGluZVBsdWdpbiwgeCwgeSwgY29uZmlnLmRhdGFLZXksIGNvbmZpZy5hdGxhc0tleSwgYm91bmRzUHJvdmlkZXIpO1xuXHRcdFx0aWYgKGFkZFRvU2NlbmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRjb25maWcuYWRkID0gYWRkVG9TY2VuZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMuc2NlbmUuc3lzLnJlbmRlcmVyIGluc3RhbmNlb2YgUGhhc2VyLlJlbmRlcmVyLldlYkdMLldlYkdMUmVuZGVyZXIpIHtcblx0XHRcdFx0dGhpcy5zY2VuZS5zeXMucmVuZGVyZXIucGlwZWxpbmVzLnJlYmluZCgpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gUGhhc2VyLkdhbWVPYmplY3RzLkJ1aWxkR2FtZU9iamVjdCh0aGlzLnNjZW5lLCBnYW1lT2JqZWN0LCBjb25maWcpO1xuXHRcdH1cblx0XHRwbHVnaW5NYW5hZ2VyLnJlZ2lzdGVyR2FtZU9iamVjdCgod2luZG93IGFzIGFueSkuU1BJTkVfR0FNRV9PQkpFQ1RfVFlQRSA/ICh3aW5kb3cgYXMgYW55KS5TUElORV9HQU1FX09CSkVDVF9UWVBFIDogU1BJTkVfR0FNRV9PQkpFQ1RfVFlQRSwgYWRkU3BpbmVHYW1lT2JqZWN0LCBtYWtlU3BpbmVHYW1lT2JqZWN0KTtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXJlcklkID0gMDtcblx0Ym9vdCAoKSB7XG5cdFx0aWYgKHRoaXMuaXNXZWJHTCAmJiB0aGlzLmdsKSB7XG5cdFx0XHRTcGluZVBsdWdpbi5nYW1lV2ViR0xSZW5kZXJlciB8fD0gbmV3IFNjZW5lUmVuZGVyZXIoKHRoaXMuZ2FtZS5yZW5kZXJlciBhcyBQaGFzZXIuUmVuZGVyZXIuV2ViR0wuV2ViR0xSZW5kZXJlcikuY2FudmFzLCB0aGlzLmdsLCB0cnVlKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuc2NlbmUpIHtcblx0XHRcdHRoaXMuY2FudmFzUmVuZGVyZXIgfHw9IG5ldyBTa2VsZXRvblJlbmRlcmVyKHRoaXMuc2NlbmUuc3lzLmNvbnRleHQpO1xuXHRcdH1cblxuXHRcdHRoaXMub25SZXNpemUoKTtcblx0XHRpZiAodGhpcy5zeXN0ZW1zKSB7XG5cdFx0XHR0aGlzLnN5c3RlbXMuZXZlbnRzLm9uY2UoXCJkZXN0cm95XCIsIHRoaXMuZGVzdHJveSwgdGhpcyk7XG5cdFx0XHR0aGlzLnN5c3RlbXMuZXZlbnRzLm9uKFwic3RhcnRcIiwgdGhpcy5vblN0YXJ0LCB0aGlzKTtcblx0XHRcdHRoaXMuc3lzdGVtcy5ldmVudHMub24oXCJzaHV0ZG93blwiLCB0aGlzLnNodXRkb3duLCB0aGlzKTtcblx0XHR9XG5cblx0XHR0aGlzLmdhbWUuZXZlbnRzLm9uY2UoXCJkZXN0cm95XCIsIHRoaXMuZ2FtZURlc3Ryb3ksIHRoaXMpO1xuXHR9XG5cblx0b25SZXNpemUgKCkge1xuXHRcdGNvbnN0IHBoYXNlclJlbmRlcmVyID0gdGhpcy5nYW1lLnJlbmRlcmVyO1xuXHRcdGNvbnN0IHNjZW5lUmVuZGVyZXIgPSB0aGlzLndlYkdMUmVuZGVyZXI7XG5cblx0XHRpZiAocGhhc2VyUmVuZGVyZXIgJiYgc2NlbmVSZW5kZXJlcikge1xuXHRcdFx0Y29uc3Qgdmlld3BvcnRXaWR0aCA9IHBoYXNlclJlbmRlcmVyLndpZHRoO1xuXHRcdFx0Y29uc3Qgdmlld3BvcnRIZWlnaHQgPSBwaGFzZXJSZW5kZXJlci5oZWlnaHQ7XG5cdFx0XHRzY2VuZVJlbmRlcmVyLmNhbWVyYS5wb3NpdGlvbi54ID0gdmlld3BvcnRXaWR0aCAvIDI7XG5cdFx0XHRzY2VuZVJlbmRlcmVyLmNhbWVyYS5wb3NpdGlvbi55ID0gdmlld3BvcnRIZWlnaHQgLyAyO1xuXHRcdFx0c2NlbmVSZW5kZXJlci5jYW1lcmEudXAueSA9IC0xO1xuXHRcdFx0c2NlbmVSZW5kZXJlci5jYW1lcmEuZGlyZWN0aW9uLnogPSAxO1xuXHRcdFx0c2NlbmVSZW5kZXJlci5jYW1lcmEuc2V0Vmlld3BvcnQodmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpO1xuXHRcdH1cblx0fVxuXG5cdG9uU3RhcnQgKCkge1xuXHRcdHRoaXMuZ2FtZS5zY2FsZS5vbihQaGFzZXIuU2NhbGUuRXZlbnRzLlJFU0laRSwgdGhpcy5vblJlc2l6ZSwgdGhpcyk7XG5cdH1cblxuXHRzaHV0ZG93biAoKSB7XG5cdFx0aWYgKHRoaXMuaXNXZWJHTCkge1xuXHRcdFx0dGhpcy5nYW1lLnNjYWxlLm9mZihQaGFzZXIuU2NhbGUuRXZlbnRzLlJFU0laRSwgdGhpcy5vblJlc2l6ZSwgdGhpcyk7XG5cdFx0fVxuXHR9XG5cblx0ZGVzdHJveSAoKSB7XG5cdFx0dGhpcy5zaHV0ZG93bigpO1xuXHRcdHRoaXMuc3lzdGVtcz8uZXZlbnRzLm9mZihcInN0YXJ0XCIsIHRoaXMub25TdGFydCwgdGhpcyk7XG5cdFx0dGhpcy5zeXN0ZW1zPy5ldmVudHMub2ZmKFwic2h1dGRvd25cIiwgdGhpcy5zaHV0ZG93biwgdGhpcyk7XG5cdH1cblxuXHRnYW1lRGVzdHJveSAoKSB7XG5cdFx0dGhpcy5wbHVnaW5NYW5hZ2VyLnJlbW92ZUdhbWVPYmplY3QoKHdpbmRvdyBhcyBhbnkpLlNQSU5FX0dBTUVfT0JKRUNUX1RZUEUgPyAod2luZG93IGFzIGFueSkuU1BJTkVfR0FNRV9PQkpFQ1RfVFlQRSA6IFNQSU5FX0dBTUVfT0JKRUNUX1RZUEUsIHRydWUsIHRydWUpO1xuXHRcdGlmICh0aGlzLndlYkdMUmVuZGVyZXIpIHRoaXMud2ViR0xSZW5kZXJlci5kaXNwb3NlKCk7XG5cdFx0U3BpbmVQbHVnaW4uZ2FtZVdlYkdMUmVuZGVyZXIgPSBudWxsO1xuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIFRleHR1cmVBdGxhcyBpbnN0YW5jZSBmb3IgdGhlIGdpdmVuIGtleSAqL1xuXHRnZXRBdGxhcyAoYXRsYXNLZXk6IHN0cmluZykge1xuXHRcdGxldCBhdGxhczogVGV4dHVyZUF0bGFzO1xuXHRcdGlmICh0aGlzLmF0bGFzQ2FjaGUuZXhpc3RzKGF0bGFzS2V5KSkge1xuXHRcdFx0YXRsYXMgPSB0aGlzLmF0bGFzQ2FjaGUuZ2V0KGF0bGFzS2V5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGV0IGF0bGFzRmlsZSA9IHRoaXMuZ2FtZS5jYWNoZS50ZXh0LmdldChhdGxhc0tleSkgYXMgeyBkYXRhOiBzdHJpbmcsIHByZW11bHRpcGxpZWRBbHBoYTogYm9vbGVhbiB9O1xuXHRcdFx0YXRsYXMgPSBuZXcgVGV4dHVyZUF0bGFzKGF0bGFzRmlsZS5kYXRhKTtcblx0XHRcdGlmICh0aGlzLmlzV2ViR0wpIHtcblx0XHRcdFx0bGV0IGdsID0gdGhpcy5nbCE7XG5cdFx0XHRcdGNvbnN0IHBoYXNlclVucGFja1BtYVZhbHVlID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCk7XG5cdFx0XHRcdGlmIChwaGFzZXJVbnBhY2tQbWFWYWx1ZSkgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCBmYWxzZSk7XG5cdFx0XHRcdGZvciAobGV0IGF0bGFzUGFnZSBvZiBhdGxhcy5wYWdlcykge1xuXHRcdFx0XHRcdGF0bGFzUGFnZS5zZXRUZXh0dXJlKG5ldyBHTFRleHR1cmUoZ2wsIHRoaXMuZ2FtZS50ZXh0dXJlcy5nZXQoYXRsYXNLZXkgKyBcIiFcIiArIGF0bGFzUGFnZS5uYW1lKS5nZXRTb3VyY2VJbWFnZSgpIGFzIEhUTUxJbWFnZUVsZW1lbnQgfCBJbWFnZUJpdG1hcCwgZmFsc2UpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocGhhc2VyVW5wYWNrUG1hVmFsdWUpIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwgdHJ1ZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKGxldCBhdGxhc1BhZ2Ugb2YgYXRsYXMucGFnZXMpIHtcblx0XHRcdFx0XHRhdGxhc1BhZ2Uuc2V0VGV4dHVyZShuZXcgQ2FudmFzVGV4dHVyZSh0aGlzLmdhbWUudGV4dHVyZXMuZ2V0KGF0bGFzS2V5ICsgXCIhXCIgKyBhdGxhc1BhZ2UubmFtZSkuZ2V0U291cmNlSW1hZ2UoKSBhcyBIVE1MSW1hZ2VFbGVtZW50IHwgSW1hZ2VCaXRtYXApKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5hdGxhc0NhY2hlLmFkZChhdGxhc0tleSwgYXRsYXMpO1xuXHRcdH1cblx0XHRyZXR1cm4gYXRsYXM7XG5cdH1cblxuXHQvKiogUmV0dXJucyB3aGV0aGVyIHRoZSBUZXh0dXJlQXRsYXMgdXNlcyBwcmVtdWx0aXBsaWVkIGFscGhhICovXG5cdGlzQXRsYXNQcmVtdWx0aXBsaWVkIChhdGxhc0tleTogc3RyaW5nKSB7XG5cdFx0bGV0IGF0bGFzRmlsZSA9IHRoaXMuZ2FtZS5jYWNoZS50ZXh0LmdldChhdGxhc0tleSk7XG5cdFx0aWYgKCFhdGxhc0ZpbGUpIHJldHVybiBmYWxzZTtcblx0XHRyZXR1cm4gYXRsYXNGaWxlLnByZW11bHRpcGxpZWRBbHBoYTtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIHRoZSBTa2VsZXRvbkRhdGEgaW5zdGFuY2UgZm9yIHRoZSBnaXZlbiBkYXRhIGFuZCBhdGxhcyBrZXkgKi9cblx0Z2V0U2tlbGV0b25EYXRhIChkYXRhS2V5OiBzdHJpbmcsIGF0bGFzS2V5OiBzdHJpbmcpIHtcblx0XHRjb25zdCBhdGxhcyA9IHRoaXMuZ2V0QXRsYXMoYXRsYXNLZXkpXG5cdFx0Y29uc3QgY29tYmluZWRLZXkgPSBkYXRhS2V5ICsgYXRsYXNLZXk7XG5cdFx0bGV0IHNrZWxldG9uRGF0YTogU2tlbGV0b25EYXRhO1xuXHRcdGlmICh0aGlzLnNrZWxldG9uRGF0YUNhY2hlLmV4aXN0cyhjb21iaW5lZEtleSkpIHtcblx0XHRcdHNrZWxldG9uRGF0YSA9IHRoaXMuc2tlbGV0b25EYXRhQ2FjaGUuZ2V0KGNvbWJpbmVkS2V5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMuZ2FtZS5jYWNoZS5qc29uLmV4aXN0cyhkYXRhS2V5KSkge1xuXHRcdFx0XHRsZXQganNvbkZpbGUgPSB0aGlzLmdhbWUuY2FjaGUuanNvbi5nZXQoZGF0YUtleSkgYXMgYW55O1xuXHRcdFx0XHRsZXQganNvbiA9IG5ldyBTa2VsZXRvbkpzb24obmV3IEF0bGFzQXR0YWNobWVudExvYWRlcihhdGxhcykpO1xuXHRcdFx0XHRza2VsZXRvbkRhdGEgPSBqc29uLnJlYWRTa2VsZXRvbkRhdGEoanNvbkZpbGUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bGV0IGJpbmFyeUZpbGUgPSB0aGlzLmdhbWUuY2FjaGUuYmluYXJ5LmdldChkYXRhS2V5KSBhcyBBcnJheUJ1ZmZlcjtcblx0XHRcdFx0bGV0IGJpbmFyeSA9IG5ldyBTa2VsZXRvbkJpbmFyeShuZXcgQXRsYXNBdHRhY2htZW50TG9hZGVyKGF0bGFzKSk7XG5cdFx0XHRcdHNrZWxldG9uRGF0YSA9IGJpbmFyeS5yZWFkU2tlbGV0b25EYXRhKG5ldyBVaW50OEFycmF5KGJpbmFyeUZpbGUpKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc2tlbGV0b25EYXRhQ2FjaGUuYWRkKGNvbWJpbmVkS2V5LCBza2VsZXRvbkRhdGEpO1xuXHRcdH1cblx0XHRyZXR1cm4gc2tlbGV0b25EYXRhO1xuXHR9XG5cblx0LyoqIENyZWF0ZXMgYSBuZXcgU2tlbGV0b24gaW5zdGFuY2UgZnJvbSB0aGUgZGF0YSBhbmQgYXRsYXMuICovXG5cdGNyZWF0ZVNrZWxldG9uIChkYXRhS2V5OiBzdHJpbmcsIGF0bGFzS2V5OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gbmV3IFNrZWxldG9uKHRoaXMuZ2V0U2tlbGV0b25EYXRhKGRhdGFLZXksIGF0bGFzS2V5KSk7XG5cdH1cbn1cblxuZW51bSBTcGluZVNrZWxldG9uRGF0YUZpbGVUeXBlIHtcblx0anNvbixcblx0YmluYXJ5XG59XG5cbmludGVyZmFjZSBTcGluZVNrZWxldG9uRGF0YUZpbGVDb25maWcge1xuXHRrZXk6IHN0cmluZztcblx0dXJsOiBzdHJpbmc7XG5cdHR5cGU6IFwic3BpbmVKc29uXCIgfCBcInNwaW5lQmluYXJ5XCI7XG5cdHhoclNldHRpbmdzPzogUGhhc2VyLlR5cGVzLkxvYWRlci5YSFJTZXR0aW5nc09iamVjdFxufVxuXG5jbGFzcyBTcGluZVNrZWxldG9uRGF0YUZpbGUgZXh0ZW5kcyBQaGFzZXIuTG9hZGVyLk11bHRpRmlsZSB7XG5cdGNvbnN0cnVjdG9yIChsb2FkZXI6IFBoYXNlci5Mb2FkZXIuTG9hZGVyUGx1Z2luLCBrZXk6IHN0cmluZyB8IFNwaW5lU2tlbGV0b25EYXRhRmlsZUNvbmZpZywgdXJsPzogc3RyaW5nLCBwdWJsaWMgZmlsZVR5cGU/OiBTcGluZVNrZWxldG9uRGF0YUZpbGVUeXBlLCB4aHJTZXR0aW5ncz86IFBoYXNlci5UeXBlcy5Mb2FkZXIuWEhSU2V0dGluZ3NPYmplY3QpIHtcblx0XHRpZiAodHlwZW9mIGtleSAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0Y29uc3QgY29uZmlnID0ga2V5O1xuXHRcdFx0a2V5ID0gY29uZmlnLmtleTtcblx0XHRcdHVybCA9IGNvbmZpZy51cmw7XG5cdFx0XHRmaWxlVHlwZSA9IGNvbmZpZy50eXBlID09PSBcInNwaW5lSnNvblwiID8gU3BpbmVTa2VsZXRvbkRhdGFGaWxlVHlwZS5qc29uIDogU3BpbmVTa2VsZXRvbkRhdGFGaWxlVHlwZS5iaW5hcnk7XG5cdFx0XHR4aHJTZXR0aW5ncyA9IGNvbmZpZy54aHJTZXR0aW5ncztcblx0XHR9XG5cdFx0bGV0IGZpbGUgPSBudWxsO1xuXHRcdGxldCBpc0pzb24gPSBmaWxlVHlwZSA9PSBTcGluZVNrZWxldG9uRGF0YUZpbGVUeXBlLmpzb247XG5cdFx0aWYgKGlzSnNvbikge1xuXHRcdFx0ZmlsZSA9IG5ldyBQaGFzZXIuTG9hZGVyLkZpbGVUeXBlcy5KU09ORmlsZShsb2FkZXIsIHtcblx0XHRcdFx0a2V5OiBrZXksXG5cdFx0XHRcdHVybDogdXJsLFxuXHRcdFx0XHRleHRlbnNpb246IFwianNvblwiLFxuXHRcdFx0XHR4aHJTZXR0aW5nczogeGhyU2V0dGluZ3MsXG5cdFx0XHR9IGFzIFBoYXNlci5UeXBlcy5Mb2FkZXIuRmlsZVR5cGVzLkpTT05GaWxlQ29uZmlnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZmlsZSA9IG5ldyBQaGFzZXIuTG9hZGVyLkZpbGVUeXBlcy5CaW5hcnlGaWxlKGxvYWRlciwge1xuXHRcdFx0XHRrZXk6IGtleSxcblx0XHRcdFx0dXJsOiB1cmwsXG5cdFx0XHRcdGV4dGVuc2lvbjogXCJza2VsXCIsXG5cdFx0XHRcdHhoclNldHRpbmdzOiB4aHJTZXR0aW5ncyxcblx0XHRcdH0gYXMgUGhhc2VyLlR5cGVzLkxvYWRlci5GaWxlVHlwZXMuQmluYXJ5RmlsZUNvbmZpZyk7XG5cdFx0fVxuXHRcdHN1cGVyKGxvYWRlciwgU1BJTkVfU0tFTEVUT05fREFUQV9GSUxFX1RZUEUsIGtleSwgW2ZpbGVdKTtcblx0fVxuXG5cdG9uRmlsZUNvbXBsZXRlIChmaWxlOiBQaGFzZXIuTG9hZGVyLkZpbGUpIHtcblx0XHR0aGlzLnBlbmRpbmctLTtcblx0fVxuXG5cdGFkZFRvQ2FjaGUgKCkge1xuXHRcdGlmICh0aGlzLmlzUmVhZHlUb1Byb2Nlc3MoKSkgdGhpcy5maWxlc1swXS5hZGRUb0NhY2hlKCk7XG5cdH1cbn1cblxuaW50ZXJmYWNlIFNwaW5lQXRsYXNGaWxlQ29uZmlnIHtcblx0a2V5OiBzdHJpbmc7XG5cdHVybDogc3RyaW5nO1xuXHRwcmVtdWx0aXBsaWVkQWxwaGE/OiBib29sZWFuO1xuXHR4aHJTZXR0aW5ncz86IFBoYXNlci5UeXBlcy5Mb2FkZXIuWEhSU2V0dGluZ3NPYmplY3Q7XG59XG5cbmNsYXNzIFNwaW5lQXRsYXNGaWxlIGV4dGVuZHMgUGhhc2VyLkxvYWRlci5NdWx0aUZpbGUge1xuXHRjb25zdHJ1Y3RvciAobG9hZGVyOiBQaGFzZXIuTG9hZGVyLkxvYWRlclBsdWdpbiwga2V5OiBzdHJpbmcgfCBTcGluZUF0bGFzRmlsZUNvbmZpZywgdXJsPzogc3RyaW5nLCBwdWJsaWMgcHJlbXVsdGlwbGllZEFscGhhPzogYm9vbGVhbiwgeGhyU2V0dGluZ3M/OiBQaGFzZXIuVHlwZXMuTG9hZGVyLlhIUlNldHRpbmdzT2JqZWN0KSB7XG5cdFx0aWYgKHR5cGVvZiBrZXkgIT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGNvbnN0IGNvbmZpZyA9IGtleTtcblx0XHRcdGtleSA9IGNvbmZpZy5rZXk7XG5cdFx0XHR1cmwgPSBjb25maWcudXJsO1xuXHRcdFx0cHJlbXVsdGlwbGllZEFscGhhID0gY29uZmlnLnByZW11bHRpcGxpZWRBbHBoYTtcblx0XHRcdHhoclNldHRpbmdzID0gY29uZmlnLnhoclNldHRpbmdzO1xuXHRcdH1cblxuXHRcdHN1cGVyKGxvYWRlciwgU1BJTkVfQVRMQVNfRklMRV9UWVBFLCBrZXksIFtcblx0XHRcdG5ldyBQaGFzZXIuTG9hZGVyLkZpbGVUeXBlcy5UZXh0RmlsZShsb2FkZXIsIHtcblx0XHRcdFx0a2V5OiBrZXksXG5cdFx0XHRcdHVybDogdXJsLFxuXHRcdFx0XHR4aHJTZXR0aW5nczogeGhyU2V0dGluZ3MsXG5cdFx0XHRcdGV4dGVuc2lvbjogXCJhdGxhc1wiXG5cdFx0XHR9KVxuXHRcdF0pO1xuXHR9XG5cblx0b25GaWxlQ29tcGxldGUgKGZpbGU6IFBoYXNlci5Mb2FkZXIuRmlsZSkge1xuXHRcdGlmICh0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSkgIT0gLTEpIHtcblx0XHRcdHRoaXMucGVuZGluZy0tO1xuXG5cdFx0XHRpZiAoZmlsZS50eXBlID09IFwidGV4dFwiKSB7XG5cdFx0XHRcdHZhciBsaW5lcyA9IGZpbGUuZGF0YS5zcGxpdCgvXFxyXFxufFxccnxcXG4vKTtcblx0XHRcdFx0bGV0IHRleHR1cmVzID0gW107XG5cdFx0XHRcdHRleHR1cmVzLnB1c2gobGluZXNbMF0pO1xuXHRcdFx0XHRmb3IgKHZhciB0ID0gMTsgdCA8IGxpbmVzLmxlbmd0aDsgdCsrKSB7XG5cdFx0XHRcdFx0dmFyIGxpbmUgPSBsaW5lc1t0XTtcblx0XHRcdFx0XHRpZiAobGluZS50cmltKCkgPT09ICcnICYmIHQgPCBsaW5lcy5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdFx0XHRsaW5lID0gbGluZXNbdCArIDFdO1xuXHRcdFx0XHRcdFx0dGV4dHVyZXMucHVzaChsaW5lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgZmlsZVVybCA9IGZpbGUudXJsO1xuXHRcdFx0XHRpZiAodHlwZW9mIGZpbGVVcmwgPT09IFwib2JqZWN0XCIpIGZpbGVVcmwgPSBmaWxlLnNyYztcblx0XHRcdFx0bGV0IGJhc2VQYXRoID0gKGZpbGVVcmwubWF0Y2goL14uKlxcLy8pID8/IFwiXCIpLnRvU3RyaW5nKCk7XG5cdFx0XHRcdGlmICh0aGlzLmxvYWRlci5wYXRoICYmIHRoaXMubG9hZGVyLnBhdGgubGVuZ3RoID4gMCAmJiBiYXNlUGF0aC5zdGFydHNXaXRoKHRoaXMubG9hZGVyLnBhdGgpKVxuXHRcdFx0XHRcdGJhc2VQYXRoID0gYmFzZVBhdGguc2xpY2UodGhpcy5sb2FkZXIucGF0aC5sZW5ndGgpO1xuXG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dHVyZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgdXJsID0gYmFzZVBhdGggKyB0ZXh0dXJlc1tpXTtcblx0XHRcdFx0XHR2YXIga2V5ID0gZmlsZS5rZXkgKyBcIiFcIiArIHRleHR1cmVzW2ldO1xuXHRcdFx0XHRcdHZhciBpbWFnZSA9IG5ldyBQaGFzZXIuTG9hZGVyLkZpbGVUeXBlcy5JbWFnZUZpbGUodGhpcy5sb2FkZXIsIGtleSwgdXJsKTtcblxuXHRcdFx0XHRcdGlmICghdGhpcy5sb2FkZXIua2V5RXhpc3RzKGltYWdlKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5hZGRUb011bHRpRmlsZShpbWFnZSk7XG5cdFx0XHRcdFx0XHR0aGlzLmxvYWRlci5hZGRGaWxlKGltYWdlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhZGRUb0NhY2hlICgpIHtcblx0XHRpZiAodGhpcy5pc1JlYWR5VG9Qcm9jZXNzKCkpIHtcblx0XHRcdGxldCB0ZXh0dXJlTWFuYWdlciA9IHRoaXMubG9hZGVyLnRleHR1cmVNYW5hZ2VyO1xuXHRcdFx0Zm9yIChsZXQgZmlsZSBvZiB0aGlzLmZpbGVzKSB7XG5cdFx0XHRcdGlmIChmaWxlLnR5cGUgPT0gXCJpbWFnZVwiKSB7XG5cdFx0XHRcdFx0aWYgKCF0ZXh0dXJlTWFuYWdlci5leGlzdHMoZmlsZS5rZXkpKSB7XG5cdFx0XHRcdFx0XHR0ZXh0dXJlTWFuYWdlci5hZGRJbWFnZShmaWxlLmtleSwgZmlsZS5kYXRhKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0aGlzLnByZW11bHRpcGxpZWRBbHBoYSA/PyAoZmlsZS5kYXRhLmluZGV4T2YoXCJwbWE6IHRydWVcIikgPj0gMCB8fCBmaWxlLmRhdGEuaW5kZXhPZihcInBtYTp0cnVlXCIpID49IDApO1xuXHRcdFx0XHRcdGZpbGUuZGF0YSA9IHtcblx0XHRcdFx0XHRcdGRhdGE6IGZpbGUuZGF0YSxcblx0XHRcdFx0XHRcdHByZW11bHRpcGxpZWRBbHBoYTogdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRmaWxlLmFkZFRvQ2FjaGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl19
@@ -81,4 +81,4 @@ varying LOWP vec4 v_color;
81
81
  void main () {
82
82
  gl_FragColor = v_color;
83
83
  }
84
- `;return new fe(e,s,i)}},Us=class{constructor(t,e,s,i){this.attributes=e,this.context=t instanceof be?t:new be(t),this.elementsPerVertex=0;for(let r=0;r<e.length;r++)this.elementsPerVertex+=e[r].numElements;this.vertices=new Float32Array(s*this.elementsPerVertex),this.indices=new Uint16Array(i),this.context.addRestorable(this)}context;vertices;verticesBuffer=null;verticesLength=0;dirtyVertices=!1;indices;indicesBuffer=null;indicesLength=0;dirtyIndices=!1;elementsPerVertex=0;getAttributes(){return this.attributes}maxVertices(){return this.vertices.length/this.elementsPerVertex}numVertices(){return this.verticesLength/this.elementsPerVertex}setVerticesLength(t){this.dirtyVertices=!0,this.verticesLength=t}getVertices(){return this.vertices}maxIndices(){return this.indices.length}numIndices(){return this.indicesLength}setIndicesLength(t){this.dirtyIndices=!0,this.indicesLength=t}getIndices(){return this.indices}getVertexSizeInFloats(){let t=0;for(var e=0;e<this.attributes.length;e++){let s=this.attributes[e];t+=s.numElements}return t}setVertices(t){if(this.dirtyVertices=!0,t.length>this.vertices.length)throw Error("Mesh can't store more than "+this.maxVertices()+" vertices");this.vertices.set(t,0),this.verticesLength=t.length}setIndices(t){if(this.dirtyIndices=!0,t.length>this.indices.length)throw Error("Mesh can't store more than "+this.maxIndices()+" indices");this.indices.set(t,0),this.indicesLength=t.length}draw(t,e){this.drawWithOffset(t,e,0,this.indicesLength>0?this.indicesLength:this.verticesLength/this.elementsPerVertex)}drawWithOffset(t,e,s,i){let r=this.context.gl;(this.dirtyVertices||this.dirtyIndices)&&this.update(),this.bind(t),this.indicesLength>0?r.drawElements(e,i,r.UNSIGNED_SHORT,s*2):r.drawArrays(e,s,i),this.unbind(t)}bind(t){let e=this.context.gl;e.bindBuffer(e.ARRAY_BUFFER,this.verticesBuffer);let s=0;for(let i=0;i<this.attributes.length;i++){let r=this.attributes[i],h=t.getAttributeLocation(r.name);e.enableVertexAttribArray(h),e.vertexAttribPointer(h,r.numElements,e.FLOAT,!1,this.elementsPerVertex*4,s*4),s+=r.numElements}this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.indicesBuffer)}unbind(t){let e=this.context.gl;for(let s=0;s<this.attributes.length;s++){let i=this.attributes[s],r=t.getAttributeLocation(i.name);e.disableVertexAttribArray(r)}e.bindBuffer(e.ARRAY_BUFFER,null),this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}update(){let t=this.context.gl;this.dirtyVertices&&(this.verticesBuffer||(this.verticesBuffer=t.createBuffer()),t.bindBuffer(t.ARRAY_BUFFER,this.verticesBuffer),t.bufferData(t.ARRAY_BUFFER,this.vertices.subarray(0,this.verticesLength),t.DYNAMIC_DRAW),this.dirtyVertices=!1),this.dirtyIndices&&(this.indicesBuffer||(this.indicesBuffer=t.createBuffer()),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indicesBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices.subarray(0,this.indicesLength),t.DYNAMIC_DRAW),this.dirtyIndices=!1)}restore(){this.verticesBuffer=null,this.indicesBuffer=null,this.update()}dispose(){this.context.removeRestorable(this);let t=this.context.gl;t.deleteBuffer(this.verticesBuffer),t.deleteBuffer(this.indicesBuffer)}},$e=class{constructor(t,e,s){this.name=t,this.type=e,this.numElements=s}},Ct=class extends $e{constructor(){super(Me.POSITION,0,2)}},un=class extends $e{constructor(){super(Me.POSITION,0,3)}},Ws=class extends $e{constructor(t=0){super(Me.TEXCOORDS+(t==0?"":t),0,2)}},St=class extends $e{constructor(){super(Me.COLOR,0,4)}},Oi=class extends $e{constructor(){super(Me.COLOR2,0,4)}},Ni=(t=>(t[t.Float=0]="Float",t))(Ni||{}),Xe=1,mn=769,Di=770,Ui=771,Wi=774,zs=class He{static disableCulling=!1;context;drawCalls=0;static globalDrawCalls=0;isDrawing=!1;mesh;shader=null;lastTexture=null;verticesLength=0;indicesLength=0;srcColorBlend;srcAlphaBlend;dstBlend;cullWasEnabled=!1;constructor(e,s=!0,i=10920){if(i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=e instanceof be?e:new be(e);let r=s?[new Ct,new St,new Ws,new Oi]:[new Ct,new St,new Ws];this.mesh=new Us(e,r,i,i*3);let h=this.context.gl;this.srcColorBlend=h.SRC_ALPHA,this.srcAlphaBlend=h.ONE,this.dstBlend=h.ONE_MINUS_SRC_ALPHA}begin(e){if(this.isDrawing)throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()");this.drawCalls=0,this.shader=e,this.lastTexture=null,this.isDrawing=!0;let s=this.context.gl;s.enable(s.BLEND),s.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend),He.disableCulling&&(this.cullWasEnabled=s.isEnabled(s.CULL_FACE),this.cullWasEnabled&&s.disable(s.CULL_FACE))}static blendModesGL=[{srcRgb:Di,srcRgbPma:Xe,dstRgb:Ui,srcAlpha:Xe},{srcRgb:Di,srcRgbPma:Xe,dstRgb:Xe,srcAlpha:Xe},{srcRgb:Wi,srcRgbPma:Wi,dstRgb:Ui,srcAlpha:Xe},{srcRgb:Xe,srcRgbPma:Xe,dstRgb:mn,srcAlpha:Xe}];setBlendMode(e,s){const i=He.blendModesGL[e],r=s?i.srcRgbPma:i.srcRgb,h=i.srcAlpha,l=i.dstRgb;if(this.srcColorBlend==r&&this.srcAlphaBlend==h&&this.dstBlend==l)return;this.srcColorBlend=r,this.srcAlphaBlend=h,this.dstBlend=l,this.isDrawing&&this.flush(),this.context.gl.blendFuncSeparate(r,l,h,l)}draw(e,s,i){e!=this.lastTexture?(this.flush(),this.lastTexture=e):(this.verticesLength+s.length>this.mesh.getVertices().length||this.indicesLength+i.length>this.mesh.getIndices().length)&&this.flush();let r=this.mesh.numVertices();this.mesh.getVertices().set(s,this.verticesLength),this.verticesLength+=s.length,this.mesh.setVerticesLength(this.verticesLength);let h=this.mesh.getIndices();for(let l=this.indicesLength,n=0;n<i.length;l++,n++)h[l]=i[n]+r;this.indicesLength+=i.length,this.mesh.setIndicesLength(this.indicesLength)}flush(){if(this.verticesLength!=0){if(!this.lastTexture)throw new Error("No texture set.");if(!this.shader)throw new Error("No shader set.");this.lastTexture.bind(),this.mesh.draw(this.shader,this.context.gl.TRIANGLES),this.verticesLength=0,this.indicesLength=0,this.mesh.setVerticesLength(0),this.mesh.setIndicesLength(0),this.drawCalls++,He.globalDrawCalls++}}end(){if(!this.isDrawing)throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()");(this.verticesLength>0||this.indicesLength>0)&&this.flush(),this.shader=null,this.lastTexture=null,this.isDrawing=!1;let e=this.context.gl;e.disable(e.BLEND),He.disableCulling&&this.cullWasEnabled&&e.enable(e.CULL_FACE)}getDrawCalls(){return this.drawCalls}static getAndResetGlobalDrawCalls(){let e=He.globalDrawCalls;return He.globalDrawCalls=0,e}dispose(){this.mesh.dispose()}},Gs=class{context;isDrawing=!1;mesh;shapeType=4;color=new K(1,1,1,1);shader=null;vertexIndex=0;tmp=new Ue;srcColorBlend;srcAlphaBlend;dstBlend;constructor(t,e=10920){if(e>10920)throw new Error("Can't have more than 10920 triangles per batch: "+e);this.context=t instanceof be?t:new be(t),this.mesh=new Us(t,[new Ct,new St],e,0);let s=this.context.gl;this.srcColorBlend=s.SRC_ALPHA,this.srcAlphaBlend=s.ONE,this.dstBlend=s.ONE_MINUS_SRC_ALPHA}begin(t){if(this.isDrawing)throw new Error("ShapeRenderer.begin() has already been called");this.shader=t,this.vertexIndex=0,this.isDrawing=!0;let e=this.context.gl;e.enable(e.BLEND),e.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend)}setBlendMode(t,e,s){this.srcColorBlend=t,this.srcAlphaBlend=e,this.dstBlend=s,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(t,s,e,s))}setColor(t){this.color.setFromColor(t)}setColorWith(t,e,s,i){this.color.set(t,e,s,i)}point(t,e,s){this.check(0,1),s||(s=this.color),this.vertex(t,e,s)}line(t,e,s,i,r){this.check(1,2);let h=this.mesh.getVertices(),l=this.vertexIndex;r||(r=this.color),this.vertex(t,e,r),this.vertex(s,i,r)}triangle(t,e,s,i,r,h,l,n,a,o){this.check(t?4:1,3);let c=this.mesh.getVertices(),d=this.vertexIndex;n||(n=this.color),a||(a=this.color),o||(o=this.color),t?(this.vertex(e,s,n),this.vertex(i,r,a),this.vertex(h,l,o)):(this.vertex(e,s,n),this.vertex(i,r,a),this.vertex(i,r,n),this.vertex(h,l,a),this.vertex(h,l,n),this.vertex(e,s,a))}quad(t,e,s,i,r,h,l,n,a,o,c,d,f){this.check(t?4:1,3);let m=this.mesh.getVertices(),u=this.vertexIndex;o||(o=this.color),c||(c=this.color),d||(d=this.color),f||(f=this.color),t?(this.vertex(e,s,o),this.vertex(i,r,c),this.vertex(h,l,d),this.vertex(h,l,d),this.vertex(n,a,f),this.vertex(e,s,o)):(this.vertex(e,s,o),this.vertex(i,r,c),this.vertex(i,r,c),this.vertex(h,l,d),this.vertex(h,l,d),this.vertex(n,a,f),this.vertex(n,a,f),this.vertex(e,s,o))}rect(t,e,s,i,r,h){this.quad(t,e,s,e+i,s,e+i,s+r,e,s+r,h,h,h,h)}rectLine(t,e,s,i,r,h,l){this.check(t?4:1,8),l||(l=this.color);let n=this.tmp.set(r-s,e-i);n.normalize(),h*=.5;let a=n.x*h,o=n.y*h;t?(this.vertex(e+a,s+o,l),this.vertex(e-a,s-o,l),this.vertex(i+a,r+o,l),this.vertex(i-a,r-o,l),this.vertex(i+a,r+o,l),this.vertex(e-a,s-o,l)):(this.vertex(e+a,s+o,l),this.vertex(e-a,s-o,l),this.vertex(i+a,r+o,l),this.vertex(i-a,r-o,l),this.vertex(i+a,r+o,l),this.vertex(e+a,s+o,l),this.vertex(i-a,r-o,l),this.vertex(e-a,s-o,l))}x(t,e,s){this.line(t-s,e-s,t+s,e+s),this.line(t-s,e+s,t+s,e-s)}polygon(t,e,s,i){if(s<3)throw new Error("Polygon must contain at least 3 vertices");this.check(1,s*2),i||(i=this.color);let r=this.mesh.getVertices(),h=this.vertexIndex;e<<=1,s<<=1;let l=t[e],n=t[e+1],a=e+s;for(let o=e,c=e+s-2;o<c;o+=2){let d=t[o],f=t[o+1],m=0,u=0;o+2>=a?(m=l,u=n):(m=t[o+2],u=t[o+3]),this.vertex(d,f,i),this.vertex(m,u,i)}}circle(t,e,s,i,r,h=0){if(h==0&&(h=Math.max(1,6*P.cbrt(i)|0)),h<=0)throw new Error("segments must be > 0.");r||(r=this.color);let l=2*P.PI/h,n=Math.cos(l),a=Math.sin(l),o=i,c=0;if(t){this.check(4,h*3+3),h--;for(let f=0;f<h;f++){this.vertex(e,s,r),this.vertex(e+o,s+c,r);let m=o;o=n*o-a*c,c=a*m+n*c,this.vertex(e+o,s+c,r)}this.vertex(e,s,r),this.vertex(e+o,s+c,r)}else{this.check(1,h*2+2);for(let f=0;f<h;f++){this.vertex(e+o,s+c,r);let m=o;o=n*o-a*c,c=a*m+n*c,this.vertex(e+o,s+c,r)}this.vertex(e+o,s+c,r)}let d=o;o=i,c=0,this.vertex(e+o,s+c,r)}curve(t,e,s,i,r,h,l,n,a,o){this.check(1,a*2+2),o||(o=this.color);let c=1/a,d=c*c,f=c*c*c,m=3*c,u=3*d,g=6*d,p=6*f,b=t-s*2+r,x=e-i*2+h,w=(s-r)*3-t+l,v=(i-h)*3-e+n,y=t,A=e,C=(s-t)*m+b*u+w*f,S=(i-e)*m+x*u+v*f,T=b*g+w*p,k=x*g+v*p,Y=w*p,F=v*p;for(;a-- >0;)this.vertex(y,A,o),y+=C,A+=S,C+=T,S+=k,T+=Y,k+=F,this.vertex(y,A,o);this.vertex(y,A,o),this.vertex(l,n,o)}vertex(t,e,s){let i=this.vertexIndex,r=this.mesh.getVertices();r[i++]=t,r[i++]=e,r[i++]=s.r,r[i++]=s.g,r[i++]=s.b,r[i++]=s.a,this.vertexIndex=i}end(){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");this.flush();let t=this.context.gl;t.disable(t.BLEND),this.isDrawing=!1}flush(){if(this.vertexIndex!=0){if(!this.shader)throw new Error("No shader set.");this.mesh.setVerticesLength(this.vertexIndex),this.mesh.draw(this.shader,this.shapeType),this.vertexIndex=0}}check(t,e){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");if(this.shapeType==t)if(this.mesh.maxVertices()-this.mesh.numVertices()<e)this.flush();else return;else this.flush(),this.shapeType=t}dispose(){this.mesh.dispose()}},zi=(t=>(t[t.Point=0]="Point",t[t.Line=1]="Line",t[t.Filled=4]="Filled",t))(zi||{}),Gi=class ei{boneLineColor=new K(1,0,0,1);boneOriginColor=new K(0,1,0,1);attachmentLineColor=new K(0,0,1,.5);triangleLineColor=new K(1,.64,0,.5);pathColor=new K().setFromString("FF7F00");clipColor=new K(.8,0,0,2);aabbColor=new K(0,1,0,.5);drawBones=!0;drawRegionAttachments=!0;drawBoundingBoxes=!0;drawMeshHull=!0;drawMeshTriangles=!0;drawPaths=!0;drawSkeletonXY=!1;drawClipping=!0;premultipliedAlpha=!1;scale=1;boneWidth=2;context;bounds=new Fi;temp=new Array;vertices=X.newFloatArray(2*1024);static LIGHT_GRAY=new K(192/255,192/255,192/255,1);static GREEN=new K(0,1,0,1);constructor(e){this.context=e instanceof be?e:new be(e)}draw(e,s,i){let r=s.x,h=s.y,l=this.context.gl,n=this.premultipliedAlpha?l.ONE:l.SRC_ALPHA;e.setBlendMode(n,l.ONE,l.ONE_MINUS_SRC_ALPHA);let a=s.bones;if(this.drawBones){e.setColor(this.boneLineColor);for(let o=0,c=a.length;o<c;o++){let d=a[o];if(i&&i.indexOf(d.data.name)>-1||!d.parent)continue;let f=d.data.length*d.a+d.worldX,m=d.data.length*d.c+d.worldY;e.rectLine(!0,d.worldX,d.worldY,f,m,this.boneWidth*this.scale)}this.drawSkeletonXY&&e.x(r,h,4*this.scale)}if(this.drawRegionAttachments){e.setColor(this.attachmentLineColor);let o=s.slots;for(let c=0,d=o.length;c<d;c++){let f=o[c],m=f.getAttachment();if(m instanceof de){let u=m,g=this.vertices;u.computeWorldVertices(f,g,0,2),e.line(g[0],g[1],g[2],g[3]),e.line(g[2],g[3],g[4],g[5]),e.line(g[4],g[5],g[6],g[7]),e.line(g[6],g[7],g[0],g[1])}}}if(this.drawMeshHull||this.drawMeshTriangles){let o=s.slots;for(let c=0,d=o.length;c<d;c++){let f=o[c];if(!f.bone.active)continue;let m=f.getAttachment();if(!(m instanceof ze))continue;let u=m,g=this.vertices;u.computeWorldVertices(f,0,u.worldVerticesLength,g,0,2);let p=u.triangles,b=u.hullLength;if(this.drawMeshTriangles){e.setColor(this.triangleLineColor);for(let x=0,w=p.length;x<w;x+=3){let v=p[x]*2,y=p[x+1]*2,A=p[x+2]*2;e.triangle(!1,g[v],g[v+1],g[y],g[y+1],g[A],g[A+1])}}if(this.drawMeshHull&&b>0){e.setColor(this.attachmentLineColor),b=(b>>1)*2;let x=g[b-2],w=g[b-1];for(let v=0,y=b;v<y;v+=2){let A=g[v],C=g[v+1];e.line(A,C,x,w),x=A,w=C}}}}if(this.drawBoundingBoxes){let o=this.bounds;o.update(s,!0),e.setColor(this.aabbColor),e.rect(!1,o.minX,o.minY,o.getWidth(),o.getHeight());let c=o.polygons,d=o.boundingBoxes;for(let f=0,m=c.length;f<m;f++){let u=c[f];e.setColor(d[f].color),e.polygon(u,0,u.length)}}if(this.drawPaths){let o=s.slots;for(let c=0,d=o.length;c<d;c++){let f=o[c];if(!f.bone.active)continue;let m=f.getAttachment();if(!(m instanceof Ke))continue;let u=m,g=u.worldVerticesLength,p=this.temp=X.setArraySize(this.temp,g,0);u.computeWorldVertices(f,0,g,p,0,2);let b=this.pathColor,x=p[2],w=p[3],v=0,y=0;if(u.closed){e.setColor(b);let A=p[0],C=p[1],S=p[g-2],T=p[g-1];v=p[g-4],y=p[g-3],e.curve(x,w,A,C,S,T,v,y,32),e.setColor(ei.LIGHT_GRAY),e.line(x,w,A,C),e.line(v,y,S,T)}g-=4;for(let A=4;A<g;A+=6){let C=p[A],S=p[A+1],T=p[A+2],k=p[A+3];v=p[A+4],y=p[A+5],e.setColor(b),e.curve(x,w,C,S,T,k,v,y,32),e.setColor(ei.LIGHT_GRAY),e.line(x,w,C,S),e.line(v,y,T,k),x=v,w=y}}}if(this.drawBones){e.setColor(this.boneOriginColor);for(let o=0,c=a.length;o<c;o++){let d=a[o];i&&i.indexOf(d.data.name)>-1||e.circle(!0,d.worldX,d.worldY,3*this.scale,this.boneOriginColor,8)}}if(this.drawClipping){let o=s.slots;e.setColor(this.clipColor);for(let c=0,d=o.length;c<d;c++){let f=o[c];if(!f.bone.active)continue;let m=f.getAttachment();if(!(m instanceof at))continue;let u=m,g=u.worldVerticesLength,p=this.temp=X.setArraySize(this.temp,g,0);u.computeWorldVertices(f,0,g,p,0,2);for(let b=0,x=p.length;b<x;b+=2){let w=p[b],v=p[b+1],y=p[(b+2)%p.length],A=p[(b+3)%p.length];e.line(w,v,y,A)}}}}dispose(){}},gn=class{constructor(t,e,s){this.vertices=t,this.numVertices=e,this.numFloats=s}},qi=class vr{static QUAD_TRIANGLES=[0,1,2,2,3,0];premultipliedAlpha=!1;tempColor=new K;tempColor2=new K;vertices;vertexSize=8;twoColorTint=!1;renderable=new gn([],0,0);clipper=new At;temp=new Ue;temp2=new Ue;temp3=new K;temp4=new K;constructor(e,s=!0){this.twoColorTint=s,s&&(this.vertexSize+=4),this.vertices=X.newFloatArray(this.vertexSize*1024)}draw(e,s,i=-1,r=-1,h=null){let l=this.clipper,n=this.premultipliedAlpha,a=this.twoColorTint,o=null,c=this.renderable,d,f,m=s.drawOrder,u,g=s.color,p=a?12:8,b=!1;i==-1&&(b=!0);for(let x=0,w=m.length;x<w;x++){let v=l.isClipping()?2:p,y=m[x];if(!y.bone.active){l.clipEndWithSlot(y);continue}if(i>=0&&i==y.data.index&&(b=!0),!b){l.clipEndWithSlot(y);continue}r>=0&&r==y.data.index&&(b=!1);let A=y.getAttachment(),C;if(A instanceof de){let S=A;c.vertices=this.vertices,c.numVertices=4,c.numFloats=v<<2,S.computeWorldVertices(y,c.vertices,0,v),f=vr.QUAD_TRIANGLES,d=S.uvs,C=S.region.texture,u=S.color}else if(A instanceof ze){let S=A;c.vertices=this.vertices,c.numVertices=S.worldVerticesLength>>1,c.numFloats=c.numVertices*v,c.numFloats>c.vertices.length&&(c.vertices=this.vertices=X.newFloatArray(c.numFloats)),S.computeWorldVertices(y,0,S.worldVerticesLength,c.vertices,0,v),f=S.triangles,C=S.region.texture,d=S.uvs,u=S.color}else if(A instanceof at){let S=A;l.clipStart(y,S);continue}else{l.clipEndWithSlot(y);continue}if(C){let S=y.color,T=this.tempColor;T.r=g.r*S.r*u.r,T.g=g.g*S.g*u.g,T.b=g.b*S.b*u.b,T.a=g.a*S.a*u.a,n&&(T.r*=T.a,T.g*=T.a,T.b*=T.a);let k=this.tempColor2;y.darkColor?(n?(k.r=y.darkColor.r*T.a,k.g=y.darkColor.g*T.a,k.b=y.darkColor.b*T.a):k.setFromColor(y.darkColor),k.a=n?1:0):k.set(0,0,0,1);let Y=y.data.blendMode;if(Y!=o&&(o=Y,e.setBlendMode(o,n)),l.isClipping()){l.clipTriangles(c.vertices,f,f.length,d,T,k,a);let F=new Float32Array(l.clippedVertices),L=l.clippedTriangles;h&&h(F,F.length,p),e.draw(C,F,L)}else{let F=c.vertices;if(a)for(let E=2,R=0,B=c.numFloats;E<B;E+=p,R+=2)F[E]=T.r,F[E+1]=T.g,F[E+2]=T.b,F[E+3]=T.a,F[E+4]=d[R],F[E+5]=d[R+1],F[E+6]=k.r,F[E+7]=k.g,F[E+8]=k.b,F[E+9]=k.a;else for(let E=2,R=0,B=c.numFloats;E<B;E+=p,R+=2)F[E]=T.r,F[E+1]=T.g,F[E+2]=T.b,F[E+3]=T.a,F[E+4]=d[R],F[E+5]=d[R+1];let L=c.vertices.subarray(0,c.numFloats);h&&h(c.vertices,c.numFloats,p),e.draw(C,L,f)}}l.clipEndWithSlot(y)}l.clipEnd()}getSkeletonClipping(){return this.clipper}},I=[0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0],Tt=[0,1,2,2,3,0],It=new K(1,1,1,1),qs=class{context;canvas;camera;batcher;twoColorTint=!1;batcherShader;shapes;shapesShader;activeRenderer=null;skeletonRenderer;skeletonDebugRenderer;constructor(t,e,s=!0){this.canvas=t,this.context=e instanceof be?e:new be(e),this.twoColorTint=s,this.camera=new Bi(t.width,t.height),this.batcherShader=s?Me.newTwoColoredTextured(this.context):Me.newColoredTextured(this.context),this.batcher=new zs(this.context,s),this.shapesShader=Me.newColored(this.context),this.shapes=new Gs(this.context),this.skeletonRenderer=new qi(this.context,s),this.skeletonDebugRenderer=new Gi(this.context)}dispose(){this.batcher.dispose(),this.batcherShader.dispose(),this.shapes.dispose(),this.shapesShader.dispose(),this.skeletonDebugRenderer.dispose()}begin(){this.camera.update(),this.enableRenderer(this.batcher)}drawSkeleton(t,e=!1,s=-1,i=-1,r=null){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=e,this.skeletonRenderer.draw(this.batcher,t,s,i,r)}drawSkeletonDebug(t,e=!1,s){this.enableRenderer(this.shapes),this.skeletonDebugRenderer.premultipliedAlpha=e,this.skeletonDebugRenderer.draw(this.shapes,t,s)}drawTexture(t,e,s,i,r,h){this.enableRenderer(this.batcher),h||(h=It);var l=0;I[l++]=e,I[l++]=s,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=0,I[l++]=1,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e+i,I[l++]=s,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=1,I[l++]=1,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e+i,I[l++]=s+r,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=1,I[l++]=0,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e,I[l++]=s+r,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=0,I[l++]=0,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l]=0),this.batcher.draw(t,I,Tt)}drawTextureUV(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.batcher),o||(o=It);var c=0;I[c++]=e,I[c++]=s,I[c++]=o.r,I[c++]=o.g,I[c++]=o.b,I[c++]=o.a,I[c++]=h,I[c++]=l,this.twoColorTint&&(I[c++]=0,I[c++]=0,I[c++]=0,I[c++]=0),I[c++]=e+i,I[c++]=s,I[c++]=o.r,I[c++]=o.g,I[c++]=o.b,I[c++]=o.a,I[c++]=n,I[c++]=l,this.twoColorTint&&(I[c++]=0,I[c++]=0,I[c++]=0,I[c++]=0),I[c++]=e+i,I[c++]=s+r,I[c++]=o.r,I[c++]=o.g,I[c++]=o.b,I[c++]=o.a,I[c++]=n,I[c++]=a,this.twoColorTint&&(I[c++]=0,I[c++]=0,I[c++]=0,I[c++]=0),I[c++]=e,I[c++]=s+r,I[c++]=o.r,I[c++]=o.g,I[c++]=o.b,I[c++]=o.a,I[c++]=h,I[c++]=a,this.twoColorTint&&(I[c++]=0,I[c++]=0,I[c++]=0,I[c]=0),this.batcher.draw(t,I,Tt)}drawTextureRotated(t,e,s,i,r,h,l,n,a){this.enableRenderer(this.batcher),a||(a=It);let o=e+h,c=s+l,d=-h,f=-l,m=i-h,u=r-l,g=d,p=f,b=d,x=u,w=m,v=u,y=m,A=f,C=0,S=0,T=0,k=0,Y=0,F=0,L=0,E=0;if(n!=0){let B=P.cosDeg(n),se=P.sinDeg(n);C=B*g-se*p,S=se*g+B*p,L=B*b-se*x,E=se*b+B*x,Y=B*w-se*v,F=se*w+B*v,T=Y+(C-L),k=F+(S-E)}else C=g,S=p,L=b,E=x,Y=w,F=v,T=y,k=A;C+=o,S+=c,T+=o,k+=c,Y+=o,F+=c,L+=o,E+=c;var R=0;I[R++]=C,I[R++]=S,I[R++]=a.r,I[R++]=a.g,I[R++]=a.b,I[R++]=a.a,I[R++]=0,I[R++]=1,this.twoColorTint&&(I[R++]=0,I[R++]=0,I[R++]=0,I[R++]=0),I[R++]=T,I[R++]=k,I[R++]=a.r,I[R++]=a.g,I[R++]=a.b,I[R++]=a.a,I[R++]=1,I[R++]=1,this.twoColorTint&&(I[R++]=0,I[R++]=0,I[R++]=0,I[R++]=0),I[R++]=Y,I[R++]=F,I[R++]=a.r,I[R++]=a.g,I[R++]=a.b,I[R++]=a.a,I[R++]=1,I[R++]=0,this.twoColorTint&&(I[R++]=0,I[R++]=0,I[R++]=0,I[R++]=0),I[R++]=L,I[R++]=E,I[R++]=a.r,I[R++]=a.g,I[R++]=a.b,I[R++]=a.a,I[R++]=0,I[R++]=0,this.twoColorTint&&(I[R++]=0,I[R++]=0,I[R++]=0,I[R]=0),this.batcher.draw(t,I,Tt)}drawRegion(t,e,s,i,r,h){this.enableRenderer(this.batcher),h||(h=It);var l=0;I[l++]=e,I[l++]=s,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=t.u,I[l++]=t.v2,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e+i,I[l++]=s,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=t.u2,I[l++]=t.v2,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e+i,I[l++]=s+r,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=t.u2,I[l++]=t.v,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e,I[l++]=s+r,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=t.u,I[l++]=t.v,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l]=0),this.batcher.draw(t.page.texture,I,Tt)}line(t,e,s,i,r,h){this.enableRenderer(this.shapes),this.shapes.line(t,e,s,i,r)}triangle(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.shapes),this.shapes.triangle(t,e,s,i,r,h,l,n,a,o)}quad(t,e,s,i,r,h,l,n,a,o,c,d,f){this.enableRenderer(this.shapes),this.shapes.quad(t,e,s,i,r,h,l,n,a,o,c,d,f)}rect(t,e,s,i,r,h){this.enableRenderer(this.shapes),this.shapes.rect(t,e,s,i,r,h)}rectLine(t,e,s,i,r,h,l){this.enableRenderer(this.shapes),this.shapes.rectLine(t,e,s,i,r,h,l)}polygon(t,e,s,i){this.enableRenderer(this.shapes),this.shapes.polygon(t,e,s,i)}circle(t,e,s,i,r,h=0){this.enableRenderer(this.shapes),this.shapes.circle(t,e,s,i,r,h)}curve(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.shapes),this.shapes.curve(t,e,s,i,r,h,l,n,a,o)}end(){this.activeRenderer===this.batcher?this.batcher.end():this.activeRenderer===this.shapes&&this.shapes.end(),this.activeRenderer=null}resize(t){let e=this.canvas;var s=window.devicePixelRatio||1,i=Math.round(e.clientWidth*s),r=Math.round(e.clientHeight*s);if((e.width!=i||e.height!=r)&&(e.width=i,e.height=r),this.context.gl.viewport(0,0,e.width,e.height),t===1)this.camera.setViewport(i,r);else if(t===2){let h=e.width,l=e.height,n=this.camera.viewportWidth,a=this.camera.viewportHeight,o=a/n,c=l/h,d=o<c?n/h:a/l;this.camera.setViewport(h*d,l*d)}this.camera.update()}enableRenderer(t){this.activeRenderer!==t&&(this.end(),t instanceof zs?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(Me.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):t instanceof Gs?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(Me.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},_i=(t=>(t[t.Stretch=0]="Stretch",t[t.Expand=1]="Expand",t[t.Fit=2]="Fit",t))(_i||{}),et,qe,_s=0,xn=1,Hs=1,Et=165,Mt=108,Re=163,pn=class{renderer;logo=null;spinner=null;angle=0;fadeOut=0;fadeIn=0;timeKeeper=new Ot;backgroundColor=new K(.135,.135,.135,1);tempColor=new K;constructor(t){if(this.renderer=t,this.timeKeeper.maxDelta=9,!qe){let e=navigator.userAgent.indexOf("Safari")>-1,s=()=>_s++;qe=new Image,qe.src=bn,e||(qe.crossOrigin="anonymous"),qe.onload=s,et=new Image,et.src=wn,e||(et.crossOrigin="anonymous"),et.onload=s}}dispose(){this.logo?.dispose(),this.spinner?.dispose()}draw(t=!1){if(_s<2||t&&this.fadeOut>Hs)return;this.timeKeeper.update();let e=Math.abs(Math.sin(this.timeKeeper.totalTime+.25));this.angle-=this.timeKeeper.delta*200*(1+1.5*Math.pow(e,5));let s=this.tempColor,i=this.renderer,r=i.canvas,h=i.context.gl;if(i.resize(1),i.camera.position.set(r.width/2,r.height/2,0),i.batcher.setBlendMode(0,!0),t){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>Hs)return;s.setFromColor(this.backgroundColor),e=1-this.fadeOut/Hs,e=1-(e-1)*(e-1),s.a*=e,s.a>0&&(i.camera.zoom=1,i.begin(),i.quad(!0,0,0,r.width,0,r.width,r.height,0,r.height,s,s,s,s),i.end())}else this.fadeIn+=this.timeKeeper.delta,this.backgroundColor.a>0&&(h.clearColor(this.backgroundColor.r,this.backgroundColor.g,this.backgroundColor.b,this.backgroundColor.a),h.clear(h.COLOR_BUFFER_BIT)),e=1;e*=Math.min(this.fadeIn/xn,1),s.set(e,e,e,e),this.logo||(this.logo=new Ge(i.context,qe),this.spinner=new Ge(i.context,et)),i.camera.zoom=Math.max(1,Re/r.height),i.begin(),i.drawTexture(this.logo,(r.width-Et)/2,(r.height-Mt)/2,Et,Mt,s),this.spinner&&i.drawTextureRotated(this.spinner,(r.width-Re)/2,(r.height-Re)/2,Re,Re,Re/2,Re/2,this.angle,s),i.end()}drawInCoordinates(t,e){if(_s<2)return;this.timeKeeper.update();let s=this.renderer;s.batcher.setBlendMode(0,!0),this.logo||(this.logo=new Ge(s.context,qe),this.spinner=new Ge(s.context,et));const i=t-Et/2,r=e-Mt/2;s.drawTexture(this.logo,i,r,Et,Mt),this.angle-=this.timeKeeper.delta*500,this.spinner&&s.drawTextureRotated(this.spinner,i,r-25,Re,Re,Re/2,Re/2,this.angle)}},wn="data:image/png;base64,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",bn="data:image/png;base64,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",vn=class{constructor(t,e){this.config=e,e.pathPrefix||(e.pathPrefix=""),e.app||(e.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{},dispose:()=>{}}),e.webglConfig||(e.webglConfig={alpha:!0}),this.htmlCanvas=t,this.context=new be(t,e.webglConfig),this.renderer=new qs(t,this.context),this.gl=this.context.gl,this.assetManager=new Xi(this.context,e.pathPrefix),this.input=new Ds(t),e.app.loadAssets&&e.app.loadAssets(this);let s=()=>{this.disposed||(requestAnimationFrame(s),this.time.update(),e.app.update&&e.app.update(this,this.time.delta),e.app.render&&e.app.render(this))},i=()=>{if(!this.disposed){if(this.assetManager.isLoadingComplete()){this.assetManager.hasErrors()?e.app.error&&e.app.error(this,this.assetManager.getErrors()):(e.app.initialize&&e.app.initialize(this),s());return}requestAnimationFrame(i)}};requestAnimationFrame(i)}context;time=new Ot;htmlCanvas;gl;renderer;assetManager;input;disposed=!1;clear(t,e,s,i){this.gl.clearColor(t,e,s,i),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}dispose(){this.config.app.dispose&&this.config.app.dispose(this),this.disposed=!0}};import*as ye from"Phaser";var yn="esotericsoftware.spine.skeletonFile.cache",An="esotericsoftware.spine.atlas.cache",Cn="spineSkeletonData",Sn="spineAtlasData",js="spine",Oe=Phaser.GameObjects.Components,Hi=Oe.ComputedSize,ji=Oe.Depth,Zi=Oe.Flip,Ji=Oe.ScrollFactor,Ki=Oe.Transform,Qi=Oe.Visible,$i=Oe.Origin,er=Oe.Alpha;function Be(...t){return e=>(Phaser.Class.mixin(e,t),e)}var tr=Be(Hi),sr=Be(ji),ir=Be(Zi),rr=Be(Ji),nr=Be(Ki),ar=Be(Qi),lr=Be($i),or=Be(er),Tn=class extends Phaser.GameObjects.GameObject{constructor(t,e){super(t,e)}},In=class{constructor(t,e,s,i){this.x=t,this.y=e,this.width=s,this.height=i}calculateBounds(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},hr=class{constructor(t=!1){this.clipping=t}calculateBounds(t){if(!t.skeleton)return{x:0,y:0,width:0,height:0};const e=new Qe(t.skeleton.data);e.setToSetupPose(),e.updateWorldTransform(2);const s=e.getBoundsRect(this.clipping?new At:void 0);return s.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:s}},En=class{constructor(t,e=[],s=.05,i=!1){this.animation=t,this.skins=e,this.timeStep=s,this.clipping=i}calculateBounds(t){if(!t.skeleton||!t.animationState)return{x:0,y:0,width:0,height:0};const e=new xs(t.animationState.data),s=new Qe(t.skeleton.data),i=this.clipping?new At:void 0,r=s.data;if(this.skins.length>0){let l=new ot("custom-skin");for(const n of this.skins){const a=r.findSkin(n);a!=null&&l.addSkin(a)}s.setSkin(l)}s.setToSetupPose();const h=this.animation!=null?r.findAnimation(this.animation):null;if(h==null){s.updateWorldTransform(2);const l=s.getBoundsRect(i);return l.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:l}else{let l=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY;e.clearTracks(),e.setAnimationWith(0,h,!1);const c=Math.max(h.duration/this.timeStep,1);for(let f=0;f<c;f++){const m=f>0?this.timeStep:0;e.update(m),e.apply(s),s.update(m),s.updateWorldTransform(2);const u=s.getBoundsRect(i);l=Math.min(l,u.x),n=Math.min(n,u.y),a=Math.max(a,u.x+u.width),o=Math.max(o,u.y+u.height)}const d={x:l,y:n,width:a-l,height:o-n};return d.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:d}}},Zs=class extends sr(lr(tr(ir(rr(nr(ar(or(Tn)))))))){constructor(t,e,s,i,r,h,l=new hr){super(t,window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:js),this.plugin=e,this.boundsProvider=l,this.setPosition(s,i),this.premultipliedAlpha=this.plugin.isAtlasPremultiplied(h),this.skeleton=this.plugin.createSkeleton(r,h),this.animationStateData=new pi(this.skeleton.data),this.animationState=new xs(this.animationStateData),this.skeleton.updateWorldTransform(2),this.updateSize()}blendMode=-1;skeleton;animationStateData;animationState;beforeUpdateWorldTransforms=()=>{};afterUpdateWorldTransforms=()=>{};premultipliedAlpha=!1;offsetX=0;offsetY=0;updateSize(){if(!this.skeleton)return;let t=this.boundsProvider.calculateBounds(this);this.width=t.width,this.height=t.height,this.setDisplayOrigin(-t.x,-t.y),this.offsetX=-t.x,this.offsetY=-t.y}skeletonToPhaserWorldCoordinates(t){let e=this.getWorldTransformMatrix(),s=e.a,i=e.b,r=e.c,h=e.d,l=e.tx,n=e.ty,a=t.x,o=t.y;t.x=a*s+o*r+l,t.y=a*i+o*h+n}phaserWorldCoordinatesToSkeleton(t){let e=this.getWorldTransformMatrix();e=e.invert();let s=e.a,i=e.b,r=e.c,h=e.d,l=e.tx,n=e.ty,a=t.x,o=t.y;t.x=a*s+o*r+l,t.y=a*i+o*h+n}phaserWorldCoordinatesToBone(t,e){this.phaserWorldCoordinatesToSkeleton(t),e.parent?e.parent.worldToLocal(t):e.worldToLocal(t)}updatePose(t){this.animationState.update(t/1e3),this.animationState.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(t/1e3),this.skeleton.updateWorldTransform(2),this.afterUpdateWorldTransforms(this)}preUpdate(t,e){!this.skeleton||!this.animationState||this.updatePose(e)}preDestroy(){}willRender(t){var e=15,s=!this.skeleton||!(e!==this.renderFlags||this.cameraFilter!==0&&this.cameraFilter&t.id);if(this.visible||(s=!1),!s&&this.parentContainer&&this.plugin.webGLRenderer){var i=this.plugin.webGLRenderer;this.plugin.gl&&this.plugin.phaserRenderer instanceof Phaser.Renderer.WebGL.WebGLRenderer&&i.batcher.isDrawing&&(i.end(),this.plugin.phaserRenderer.pipelines.rebind())}return s}renderWebGL(t,e,s,i){if(!this.skeleton||!this.animationState||!this.plugin.webGLRenderer)return;let r=this.plugin.webGLRenderer;t.newType&&(t.pipelines.clear(),r.begin()),s.addToRenderList(e);let h=Phaser.GameObjects.GetCalcMatrix(e,s,i).calc,l=h.a,n=h.b,a=h.c,o=h.d,c=h.tx,d=h.ty,f=e.offsetX-e.displayOriginX,m=e.offsetY-e.displayOriginY;r.drawSkeleton(e.skeleton,e.premultipliedAlpha,-1,-1,(u,g,p)=>{for(let b=0;b<g;b+=p){let x=u[b]+f,w=u[b+1]+m;u[b]=x*l+w*a+c,u[b+1]=x*n+w*o+d}}),t.nextTypeMatch||(r.end(),t.pipelines.rebind())}renderCanvas(t,e,s,i){if(!this.skeleton||!this.animationState||!this.plugin.canvasRenderer)return;let r=t.currentContext,h=this.plugin.canvasRenderer;h.ctx=r,s.addToRenderList(e);let l=Phaser.GameObjects.GetCalcMatrix(e,s,i).calc,n=this.skeleton;n.x=l.tx,n.y=l.ty,n.scaleX=l.scaleX,n.scaleY=l.scaleY;let a=n.getRootBone();a.rotation=-P.radiansToDegrees*l.rotationNormalized,this.skeleton.updateWorldTransform(2),r.save(),h.draw(n),r.restore()}};Qe.yDown=!0;var Js=class Pt extends ye.Plugins.ScenePlugin{game;isWebGL;gl;static gameWebGLRenderer=null;get webGLRenderer(){return Pt.gameWebGLRenderer}canvasRenderer;phaserRenderer;skeletonDataCache;atlasCache;constructor(e,s,i){super(e,s,i),this.game=s.game,this.isWebGL=this.game.config.renderType===2,this.gl=this.isWebGL?this.game.renderer.gl:null,this.phaserRenderer=this.game.renderer,this.canvasRenderer=null,this.skeletonDataCache=this.game.cache.addCustom(yn),this.atlasCache=this.game.cache.addCustom(An);let r=function(o,c,d){let f=new cr(this,o,c,0,d);return this.addFile(f.files),this};s.registerFileType("spineJson",r,e);let h=function(o,c,d){let f=new cr(this,o,c,1,d);return this.addFile(f.files),this};s.registerFileType("spineBinary",h,e);let l=function(o,c,d,f){let m=new Mn(this,o,c,d,f);return this.addFile(m.files),this};s.registerFileType("spineAtlas",l,e);let n=function(o,c,d,f,m){this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();const u=this.scene.sys[i];let g=new Zs(this.scene,u,o,c,d,f,m);return this.displayList.add(g),this.updateList.add(g),this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),g},a=function(o,c=!1){this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();let d=o.x?o.x:0,f=o.y?o.y:0,m=o.boundsProvider?o.boundsProvider:void 0;const u=this.scene.sys[i];let g=new Zs(this.scene,u,d,f,o.dataKey,o.atlasKey,m);return c!==void 0&&(o.add=c),this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),ye.GameObjects.BuildGameObject(this.scene,g,o)};s.registerGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:js,n,a)}static rendererId=0;boot(){this.isWebGL&&this.gl?Pt.gameWebGLRenderer||=new qs(this.game.renderer.canvas,this.gl,!0):this.scene&&(this.canvasRenderer||=new dn(this.scene.sys.context)),this.onResize(),this.systems&&(this.systems.events.once("destroy",this.destroy,this),this.systems.events.on("start",this.onStart,this),this.systems.events.on("shutdown",this.shutdown,this)),this.game.events.once("destroy",this.gameDestroy,this)}onResize(){const e=this.game.renderer,s=this.webGLRenderer;if(e&&s){const i=e.width,r=e.height;s.camera.position.x=i/2,s.camera.position.y=r/2,s.camera.up.y=-1,s.camera.direction.z=1,s.camera.setViewport(i,r)}}onStart(){this.game.scale.on(ye.Scale.Events.RESIZE,this.onResize,this)}shutdown(){this.isWebGL&&this.game.scale.off(ye.Scale.Events.RESIZE,this.onResize,this)}destroy(){this.shutdown(),this.systems?.events.off("start",this.onStart,this),this.systems?.events.off("shutdown",this.shutdown,this)}gameDestroy(){this.pluginManager.removeGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:js,!0,!0),this.webGLRenderer&&this.webGLRenderer.dispose(),Pt.gameWebGLRenderer=null}getAtlas(e){let s;if(this.atlasCache.exists(e))s=this.atlasCache.get(e);else{let i=this.game.cache.text.get(e);if(s=new vt(i.data),this.isWebGL){let r=this.gl;const h=r.getParameter(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL);h&&r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);for(let l of s.pages)l.setTexture(new Ge(r,this.game.textures.get(e+"!"+l.name).getSourceImage(),!1));h&&r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}else for(let r of s.pages)r.setTexture(new hn(this.game.textures.get(e+"!"+r.name).getSourceImage()));this.atlasCache.add(e,s)}return s}isAtlasPremultiplied(e){let s=this.game.cache.text.get(e);return s?s.premultipliedAlpha:!1}getSkeletonData(e,s){const i=this.getAtlas(s),r=e+s;let h;if(this.skeletonDataCache.exists(r))h=this.skeletonDataCache.get(r);else{if(this.game.cache.json.exists(e)){let l=this.game.cache.json.get(e);h=new Pi(new As(i)).readSkeletonData(l)}else{let l=this.game.cache.binary.get(e);h=new ki(new As(i)).readSkeletonData(new Uint8Array(l))}this.skeletonDataCache.add(r,h)}return h}createSkeleton(e,s){return new Qe(this.getSkeletonData(e,s))}},cr=class extends ye.Loader.MultiFile{constructor(t,e,s,i,r){if(typeof e!="string"){const n=e;e=n.key,s=n.url,i=n.type==="spineJson"?0:1,r=n.xhrSettings}let h=null;i==0?h=new ye.Loader.FileTypes.JSONFile(t,{key:e,url:s,extension:"json",xhrSettings:r}):h=new ye.Loader.FileTypes.BinaryFile(t,{key:e,url:s,extension:"skel",xhrSettings:r}),super(t,Cn,e,[h]),this.fileType=i}onFileComplete(t){this.pending--}addToCache(){this.isReadyToProcess()&&this.files[0].addToCache()}},Mn=class extends ye.Loader.MultiFile{constructor(t,e,s,i,r){if(typeof e!="string"){const h=e;e=h.key,s=h.url,i=h.premultipliedAlpha,r=h.xhrSettings}super(t,Sn,e,[new ye.Loader.FileTypes.TextFile(t,{key:e,url:s,xhrSettings:r,extension:"atlas"})]),this.premultipliedAlpha=i}onFileComplete(t){if(this.files.indexOf(t)!=-1&&(this.pending--,t.type=="text")){var e=t.data.split(/\r\n|\r|\n/);let a=[];a.push(e[0]);for(var s=1;s<e.length;s++){var i=e[s];i.trim()===""&&s<e.length-1&&(i=e[s+1],a.push(i))}let o=(t.src.match(/^.*\//)??"").toString();this.loader.path&&this.loader.path.length>0&&o.startsWith(this.loader.path)&&(o=o.slice(this.loader.path.length));for(var r=0;r<a.length;r++){var h=o+a[r],l=t.key+"!"+a[r],n=new ye.Loader.FileTypes.ImageFile(this.loader,l,h);this.loader.keyExists(n)||(this.addToMultiFile(n),this.loader.addFile(n))}}}addToCache(){if(this.isReadyToProcess()){let t=this.loader.textureManager;for(let e of this.files)e.type=="image"?t.exists(e.key)||t.addImage(e.key,e.data):(this.premultipliedAlpha=this.premultipliedAlpha??(e.data.indexOf("pma: true")>=0||e.data.indexOf("pma:true")>=0),e.data={data:e.data,premultipliedAlpha:this.premultipliedAlpha},e.addToCache())}}};window.spine={SpinePlugin:Js},window["spine.SpinePlugin"]=Js;export{In as AABBRectangleBoundsProvider,er as Alpha,or as AlphaMixin,Qt as AlphaTimeline,ut as Animation,xs as AnimationState,Tr as AnimationStateAdapter,pi as AnimationStateData,Ci as AssetCache,Xi as AssetManager,Ai as AssetManagerBase,As as AtlasAttachmentLoader,Nt as Attachment,We as AttachmentTimeline,Yi as BinaryInput,Bs as BlendMode,Ss as Bone,Cs as BoneData,vs as BoundingBoxAttachment,xi as CURRENT,fn as CameraController,at as ClippingAttachment,K as Color,Oi as Color2Attribute,St as ColorAttribute,Hi as ComputedSize,tr as ComputedSizeMixin,lt as ConstraintData,Ie as CurveTimeline,Ce as CurveTimeline1,mt as CurveTimeline2,Cr as DebugUtils,ts as DeformTimeline,ji as Depth,sr as DepthMixin,Ts as Downloader,Je as DrawOrderTimeline,Is as Event,Es as EventData,ui as EventQueue,gt as EventTimeline,mi as EventType,ps as FIRST,Ir as FakeTexture,Zi as Flip,ir as FlipMixin,Ge as GLTexture,pt as HOLD_FIRST,gi as HOLD_MIX,ws as HOLD_SUBSEQUENT,Si as IkConstraint,Ms as IkConstraintData,ss as IkConstraintTimeline,yt as Inherit,Zt as InheritTimeline,Ds as Input,yr as IntSet,ni as Interpolation,pn as LoadingScreen,V as M00,G as M01,q as M02,O as M03,_ as M10,N as M11,H as M12,D as M13,j as M20,Z as M21,U as M22,W as M23,Q as M30,$ as M31,ee as M32,J as M33,be as ManagedWebGLRenderingContext,P as MathUtils,ht as Matrix4,Us as Mesh,ze as MeshAttachment,ci as MixBlend,di as MixDirection,$i as Origin,lr as OriginMixin,Bi as OrthoCamera,Ke as PathAttachment,Ti as PathConstraint,Rs as PathConstraintData,as as PathConstraintMixTimeline,rs as PathConstraintPositionTimeline,ns as PathConstraintSpacingTimeline,Mi as Physics,hs as PhysicsConstraintDampingTimeline,fs as PhysicsConstraintGravityTimeline,ls as PhysicsConstraintInertiaTimeline,cs as PhysicsConstraintMassTimeline,us as PhysicsConstraintMixTimeline,ms as PhysicsConstraintResetTimeline,os as PhysicsConstraintStrengthTimeline,Ve as PhysicsConstraintTimeline,ds as PhysicsConstraintWindTimeline,yi as PointAttachment,zs as PolygonBatcher,rt as Pool,Ct as Position2Attribute,un as Position3Attribute,ks as PositionMode,ai as Pow,Ar as PowOut,es as RGB2Timeline,$t as RGBA2Timeline,Jt as RGBATimeline,Kt as RGBTimeline,de as RegionAttachment,_i as ResizeMode,Fs as RotateMode,nt as RotateTimeline,bs as SETUP,xt as SUBSEQUENT,zt as ScaleTimeline,Gt as ScaleXTimeline,qt as ScaleYTimeline,qs as SceneRenderer,Ji as ScrollFactor,rr as ScrollFactorMixin,gs as SequenceTimeline,hr as SetupPoseBoundsProvider,Me as Shader,Gs as ShapeRenderer,zi as ShapeType,_t as ShearTimeline,Ht as ShearXTimeline,jt as ShearYTimeline,Qe as Skeleton,ki as SkeletonBinary,Fi as SkeletonBounds,At as SkeletonClipping,Ls as SkeletonData,Gi as SkeletonDebugRenderer,Pi as SkeletonJson,qi as SkeletonRenderer,ot as Skin,Ps as SkinEntry,En as SkinsAndAnimationBoundsProvider,Ii as Slot,Xs as SlotData,Ys as SpacingMode,vn as SpineCanvas,Zs as SpineGameObject,Js as SpinePlugin,Vt as StringSet,Ws as TexCoordAttribute,wt as Texture,vt as TextureAtlas,vi as TextureAtlasPage,ys as TextureAtlasRegion,bt as TextureFilter,bi as TextureRegion,wi as TextureWrap,Ot as TimeKeeper,ue as Timeline,Vi as Touch,fi as TrackEntry,Ki as Transform,Ei as TransformConstraint,Vs as TransformConstraintData,is as TransformConstraintTimeline,nr as TransformMixin,Dt as TranslateTimeline,Ut as TranslateXTimeline,Wt as TranslateYTimeline,Li as Triangulator,X as Utils,Ue as Vector2,Se as Vector3,Fe as VertexAttachment,$e as VertexAttribute,Ni as VertexAttributeType,Qi as Visible,ar as VisibleMixin,Sr as WindowedMean,Be as createMixin};
84
+ `;return new fe(e,s,i)}},Us=class{constructor(t,e,s,i){this.attributes=e,this.context=t instanceof be?t:new be(t),this.elementsPerVertex=0;for(let r=0;r<e.length;r++)this.elementsPerVertex+=e[r].numElements;this.vertices=new Float32Array(s*this.elementsPerVertex),this.indices=new Uint16Array(i),this.context.addRestorable(this)}context;vertices;verticesBuffer=null;verticesLength=0;dirtyVertices=!1;indices;indicesBuffer=null;indicesLength=0;dirtyIndices=!1;elementsPerVertex=0;getAttributes(){return this.attributes}maxVertices(){return this.vertices.length/this.elementsPerVertex}numVertices(){return this.verticesLength/this.elementsPerVertex}setVerticesLength(t){this.dirtyVertices=!0,this.verticesLength=t}getVertices(){return this.vertices}maxIndices(){return this.indices.length}numIndices(){return this.indicesLength}setIndicesLength(t){this.dirtyIndices=!0,this.indicesLength=t}getIndices(){return this.indices}getVertexSizeInFloats(){let t=0;for(var e=0;e<this.attributes.length;e++){let s=this.attributes[e];t+=s.numElements}return t}setVertices(t){if(this.dirtyVertices=!0,t.length>this.vertices.length)throw Error("Mesh can't store more than "+this.maxVertices()+" vertices");this.vertices.set(t,0),this.verticesLength=t.length}setIndices(t){if(this.dirtyIndices=!0,t.length>this.indices.length)throw Error("Mesh can't store more than "+this.maxIndices()+" indices");this.indices.set(t,0),this.indicesLength=t.length}draw(t,e){this.drawWithOffset(t,e,0,this.indicesLength>0?this.indicesLength:this.verticesLength/this.elementsPerVertex)}drawWithOffset(t,e,s,i){let r=this.context.gl;(this.dirtyVertices||this.dirtyIndices)&&this.update(),this.bind(t),this.indicesLength>0?r.drawElements(e,i,r.UNSIGNED_SHORT,s*2):r.drawArrays(e,s,i),this.unbind(t)}bind(t){let e=this.context.gl;e.bindBuffer(e.ARRAY_BUFFER,this.verticesBuffer);let s=0;for(let i=0;i<this.attributes.length;i++){let r=this.attributes[i],h=t.getAttributeLocation(r.name);e.enableVertexAttribArray(h),e.vertexAttribPointer(h,r.numElements,e.FLOAT,!1,this.elementsPerVertex*4,s*4),s+=r.numElements}this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.indicesBuffer)}unbind(t){let e=this.context.gl;for(let s=0;s<this.attributes.length;s++){let i=this.attributes[s],r=t.getAttributeLocation(i.name);e.disableVertexAttribArray(r)}e.bindBuffer(e.ARRAY_BUFFER,null),this.indicesLength>0&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}update(){let t=this.context.gl;this.dirtyVertices&&(this.verticesBuffer||(this.verticesBuffer=t.createBuffer()),t.bindBuffer(t.ARRAY_BUFFER,this.verticesBuffer),t.bufferData(t.ARRAY_BUFFER,this.vertices.subarray(0,this.verticesLength),t.DYNAMIC_DRAW),this.dirtyVertices=!1),this.dirtyIndices&&(this.indicesBuffer||(this.indicesBuffer=t.createBuffer()),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indicesBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices.subarray(0,this.indicesLength),t.DYNAMIC_DRAW),this.dirtyIndices=!1)}restore(){this.verticesBuffer=null,this.indicesBuffer=null,this.update()}dispose(){this.context.removeRestorable(this);let t=this.context.gl;t.deleteBuffer(this.verticesBuffer),t.deleteBuffer(this.indicesBuffer)}},$e=class{constructor(t,e,s){this.name=t,this.type=e,this.numElements=s}},Ct=class extends $e{constructor(){super(Me.POSITION,0,2)}},un=class extends $e{constructor(){super(Me.POSITION,0,3)}},Ws=class extends $e{constructor(t=0){super(Me.TEXCOORDS+(t==0?"":t),0,2)}},St=class extends $e{constructor(){super(Me.COLOR,0,4)}},Oi=class extends $e{constructor(){super(Me.COLOR2,0,4)}},Ni=(t=>(t[t.Float=0]="Float",t))(Ni||{}),Xe=1,mn=769,Di=770,Ui=771,Wi=774,zs=class He{static disableCulling=!1;context;drawCalls=0;static globalDrawCalls=0;isDrawing=!1;mesh;shader=null;lastTexture=null;verticesLength=0;indicesLength=0;srcColorBlend;srcAlphaBlend;dstBlend;cullWasEnabled=!1;constructor(e,s=!0,i=10920){if(i>10920)throw new Error("Can't have more than 10920 triangles per batch: "+i);this.context=e instanceof be?e:new be(e);let r=s?[new Ct,new St,new Ws,new Oi]:[new Ct,new St,new Ws];this.mesh=new Us(e,r,i,i*3);let h=this.context.gl;this.srcColorBlend=h.SRC_ALPHA,this.srcAlphaBlend=h.ONE,this.dstBlend=h.ONE_MINUS_SRC_ALPHA}begin(e){if(this.isDrawing)throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()");this.drawCalls=0,this.shader=e,this.lastTexture=null,this.isDrawing=!0;let s=this.context.gl;s.enable(s.BLEND),s.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend),He.disableCulling&&(this.cullWasEnabled=s.isEnabled(s.CULL_FACE),this.cullWasEnabled&&s.disable(s.CULL_FACE))}static blendModesGL=[{srcRgb:Di,srcRgbPma:Xe,dstRgb:Ui,srcAlpha:Xe},{srcRgb:Di,srcRgbPma:Xe,dstRgb:Xe,srcAlpha:Xe},{srcRgb:Wi,srcRgbPma:Wi,dstRgb:Ui,srcAlpha:Xe},{srcRgb:Xe,srcRgbPma:Xe,dstRgb:mn,srcAlpha:Xe}];setBlendMode(e,s){const i=He.blendModesGL[e],r=s?i.srcRgbPma:i.srcRgb,h=i.srcAlpha,l=i.dstRgb;if(this.srcColorBlend==r&&this.srcAlphaBlend==h&&this.dstBlend==l)return;this.srcColorBlend=r,this.srcAlphaBlend=h,this.dstBlend=l,this.isDrawing&&this.flush(),this.context.gl.blendFuncSeparate(r,l,h,l)}draw(e,s,i){e!=this.lastTexture?(this.flush(),this.lastTexture=e):(this.verticesLength+s.length>this.mesh.getVertices().length||this.indicesLength+i.length>this.mesh.getIndices().length)&&this.flush();let r=this.mesh.numVertices();this.mesh.getVertices().set(s,this.verticesLength),this.verticesLength+=s.length,this.mesh.setVerticesLength(this.verticesLength);let h=this.mesh.getIndices();for(let l=this.indicesLength,n=0;n<i.length;l++,n++)h[l]=i[n]+r;this.indicesLength+=i.length,this.mesh.setIndicesLength(this.indicesLength)}flush(){if(this.verticesLength!=0){if(!this.lastTexture)throw new Error("No texture set.");if(!this.shader)throw new Error("No shader set.");this.lastTexture.bind(),this.mesh.draw(this.shader,this.context.gl.TRIANGLES),this.verticesLength=0,this.indicesLength=0,this.mesh.setVerticesLength(0),this.mesh.setIndicesLength(0),this.drawCalls++,He.globalDrawCalls++}}end(){if(!this.isDrawing)throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()");(this.verticesLength>0||this.indicesLength>0)&&this.flush(),this.shader=null,this.lastTexture=null,this.isDrawing=!1;let e=this.context.gl;e.disable(e.BLEND),He.disableCulling&&this.cullWasEnabled&&e.enable(e.CULL_FACE)}getDrawCalls(){return this.drawCalls}static getAndResetGlobalDrawCalls(){let e=He.globalDrawCalls;return He.globalDrawCalls=0,e}dispose(){this.mesh.dispose()}},Gs=class{context;isDrawing=!1;mesh;shapeType=4;color=new K(1,1,1,1);shader=null;vertexIndex=0;tmp=new Ue;srcColorBlend;srcAlphaBlend;dstBlend;constructor(t,e=10920){if(e>10920)throw new Error("Can't have more than 10920 triangles per batch: "+e);this.context=t instanceof be?t:new be(t),this.mesh=new Us(t,[new Ct,new St],e,0);let s=this.context.gl;this.srcColorBlend=s.SRC_ALPHA,this.srcAlphaBlend=s.ONE,this.dstBlend=s.ONE_MINUS_SRC_ALPHA}begin(t){if(this.isDrawing)throw new Error("ShapeRenderer.begin() has already been called");this.shader=t,this.vertexIndex=0,this.isDrawing=!0;let e=this.context.gl;e.enable(e.BLEND),e.blendFuncSeparate(this.srcColorBlend,this.dstBlend,this.srcAlphaBlend,this.dstBlend)}setBlendMode(t,e,s){this.srcColorBlend=t,this.srcAlphaBlend=e,this.dstBlend=s,this.isDrawing&&(this.flush(),this.context.gl.blendFuncSeparate(t,s,e,s))}setColor(t){this.color.setFromColor(t)}setColorWith(t,e,s,i){this.color.set(t,e,s,i)}point(t,e,s){this.check(0,1),s||(s=this.color),this.vertex(t,e,s)}line(t,e,s,i,r){this.check(1,2);let h=this.mesh.getVertices(),l=this.vertexIndex;r||(r=this.color),this.vertex(t,e,r),this.vertex(s,i,r)}triangle(t,e,s,i,r,h,l,n,a,o){this.check(t?4:1,3);let c=this.mesh.getVertices(),d=this.vertexIndex;n||(n=this.color),a||(a=this.color),o||(o=this.color),t?(this.vertex(e,s,n),this.vertex(i,r,a),this.vertex(h,l,o)):(this.vertex(e,s,n),this.vertex(i,r,a),this.vertex(i,r,n),this.vertex(h,l,a),this.vertex(h,l,n),this.vertex(e,s,a))}quad(t,e,s,i,r,h,l,n,a,o,c,d,f){this.check(t?4:1,3);let m=this.mesh.getVertices(),u=this.vertexIndex;o||(o=this.color),c||(c=this.color),d||(d=this.color),f||(f=this.color),t?(this.vertex(e,s,o),this.vertex(i,r,c),this.vertex(h,l,d),this.vertex(h,l,d),this.vertex(n,a,f),this.vertex(e,s,o)):(this.vertex(e,s,o),this.vertex(i,r,c),this.vertex(i,r,c),this.vertex(h,l,d),this.vertex(h,l,d),this.vertex(n,a,f),this.vertex(n,a,f),this.vertex(e,s,o))}rect(t,e,s,i,r,h){this.quad(t,e,s,e+i,s,e+i,s+r,e,s+r,h,h,h,h)}rectLine(t,e,s,i,r,h,l){this.check(t?4:1,8),l||(l=this.color);let n=this.tmp.set(r-s,e-i);n.normalize(),h*=.5;let a=n.x*h,o=n.y*h;t?(this.vertex(e+a,s+o,l),this.vertex(e-a,s-o,l),this.vertex(i+a,r+o,l),this.vertex(i-a,r-o,l),this.vertex(i+a,r+o,l),this.vertex(e-a,s-o,l)):(this.vertex(e+a,s+o,l),this.vertex(e-a,s-o,l),this.vertex(i+a,r+o,l),this.vertex(i-a,r-o,l),this.vertex(i+a,r+o,l),this.vertex(e+a,s+o,l),this.vertex(i-a,r-o,l),this.vertex(e-a,s-o,l))}x(t,e,s){this.line(t-s,e-s,t+s,e+s),this.line(t-s,e+s,t+s,e-s)}polygon(t,e,s,i){if(s<3)throw new Error("Polygon must contain at least 3 vertices");this.check(1,s*2),i||(i=this.color);let r=this.mesh.getVertices(),h=this.vertexIndex;e<<=1,s<<=1;let l=t[e],n=t[e+1],a=e+s;for(let o=e,c=e+s-2;o<c;o+=2){let d=t[o],f=t[o+1],m=0,u=0;o+2>=a?(m=l,u=n):(m=t[o+2],u=t[o+3]),this.vertex(d,f,i),this.vertex(m,u,i)}}circle(t,e,s,i,r,h=0){if(h==0&&(h=Math.max(1,6*P.cbrt(i)|0)),h<=0)throw new Error("segments must be > 0.");r||(r=this.color);let l=2*P.PI/h,n=Math.cos(l),a=Math.sin(l),o=i,c=0;if(t){this.check(4,h*3+3),h--;for(let f=0;f<h;f++){this.vertex(e,s,r),this.vertex(e+o,s+c,r);let m=o;o=n*o-a*c,c=a*m+n*c,this.vertex(e+o,s+c,r)}this.vertex(e,s,r),this.vertex(e+o,s+c,r)}else{this.check(1,h*2+2);for(let f=0;f<h;f++){this.vertex(e+o,s+c,r);let m=o;o=n*o-a*c,c=a*m+n*c,this.vertex(e+o,s+c,r)}this.vertex(e+o,s+c,r)}let d=o;o=i,c=0,this.vertex(e+o,s+c,r)}curve(t,e,s,i,r,h,l,n,a,o){this.check(1,a*2+2),o||(o=this.color);let c=1/a,d=c*c,f=c*c*c,m=3*c,u=3*d,g=6*d,p=6*f,b=t-s*2+r,x=e-i*2+h,w=(s-r)*3-t+l,v=(i-h)*3-e+n,y=t,A=e,C=(s-t)*m+b*u+w*f,S=(i-e)*m+x*u+v*f,T=b*g+w*p,k=x*g+v*p,Y=w*p,F=v*p;for(;a-- >0;)this.vertex(y,A,o),y+=C,A+=S,C+=T,S+=k,T+=Y,k+=F,this.vertex(y,A,o);this.vertex(y,A,o),this.vertex(l,n,o)}vertex(t,e,s){let i=this.vertexIndex,r=this.mesh.getVertices();r[i++]=t,r[i++]=e,r[i++]=s.r,r[i++]=s.g,r[i++]=s.b,r[i++]=s.a,this.vertexIndex=i}end(){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");this.flush();let t=this.context.gl;t.disable(t.BLEND),this.isDrawing=!1}flush(){if(this.vertexIndex!=0){if(!this.shader)throw new Error("No shader set.");this.mesh.setVerticesLength(this.vertexIndex),this.mesh.draw(this.shader,this.shapeType),this.vertexIndex=0}}check(t,e){if(!this.isDrawing)throw new Error("ShapeRenderer.begin() has not been called");if(this.shapeType==t)if(this.mesh.maxVertices()-this.mesh.numVertices()<e)this.flush();else return;else this.flush(),this.shapeType=t}dispose(){this.mesh.dispose()}},zi=(t=>(t[t.Point=0]="Point",t[t.Line=1]="Line",t[t.Filled=4]="Filled",t))(zi||{}),Gi=class ei{boneLineColor=new K(1,0,0,1);boneOriginColor=new K(0,1,0,1);attachmentLineColor=new K(0,0,1,.5);triangleLineColor=new K(1,.64,0,.5);pathColor=new K().setFromString("FF7F00");clipColor=new K(.8,0,0,2);aabbColor=new K(0,1,0,.5);drawBones=!0;drawRegionAttachments=!0;drawBoundingBoxes=!0;drawMeshHull=!0;drawMeshTriangles=!0;drawPaths=!0;drawSkeletonXY=!1;drawClipping=!0;premultipliedAlpha=!1;scale=1;boneWidth=2;context;bounds=new Fi;temp=new Array;vertices=X.newFloatArray(2*1024);static LIGHT_GRAY=new K(192/255,192/255,192/255,1);static GREEN=new K(0,1,0,1);constructor(e){this.context=e instanceof be?e:new be(e)}draw(e,s,i){let r=s.x,h=s.y,l=this.context.gl,n=this.premultipliedAlpha?l.ONE:l.SRC_ALPHA;e.setBlendMode(n,l.ONE,l.ONE_MINUS_SRC_ALPHA);let a=s.bones;if(this.drawBones){e.setColor(this.boneLineColor);for(let o=0,c=a.length;o<c;o++){let d=a[o];if(i&&i.indexOf(d.data.name)>-1||!d.parent)continue;let f=d.data.length*d.a+d.worldX,m=d.data.length*d.c+d.worldY;e.rectLine(!0,d.worldX,d.worldY,f,m,this.boneWidth*this.scale)}this.drawSkeletonXY&&e.x(r,h,4*this.scale)}if(this.drawRegionAttachments){e.setColor(this.attachmentLineColor);let o=s.slots;for(let c=0,d=o.length;c<d;c++){let f=o[c],m=f.getAttachment();if(m instanceof de){let u=m,g=this.vertices;u.computeWorldVertices(f,g,0,2),e.line(g[0],g[1],g[2],g[3]),e.line(g[2],g[3],g[4],g[5]),e.line(g[4],g[5],g[6],g[7]),e.line(g[6],g[7],g[0],g[1])}}}if(this.drawMeshHull||this.drawMeshTriangles){let o=s.slots;for(let c=0,d=o.length;c<d;c++){let f=o[c];if(!f.bone.active)continue;let m=f.getAttachment();if(!(m instanceof ze))continue;let u=m,g=this.vertices;u.computeWorldVertices(f,0,u.worldVerticesLength,g,0,2);let p=u.triangles,b=u.hullLength;if(this.drawMeshTriangles){e.setColor(this.triangleLineColor);for(let x=0,w=p.length;x<w;x+=3){let v=p[x]*2,y=p[x+1]*2,A=p[x+2]*2;e.triangle(!1,g[v],g[v+1],g[y],g[y+1],g[A],g[A+1])}}if(this.drawMeshHull&&b>0){e.setColor(this.attachmentLineColor),b=(b>>1)*2;let x=g[b-2],w=g[b-1];for(let v=0,y=b;v<y;v+=2){let A=g[v],C=g[v+1];e.line(A,C,x,w),x=A,w=C}}}}if(this.drawBoundingBoxes){let o=this.bounds;o.update(s,!0),e.setColor(this.aabbColor),e.rect(!1,o.minX,o.minY,o.getWidth(),o.getHeight());let c=o.polygons,d=o.boundingBoxes;for(let f=0,m=c.length;f<m;f++){let u=c[f];e.setColor(d[f].color),e.polygon(u,0,u.length)}}if(this.drawPaths){let o=s.slots;for(let c=0,d=o.length;c<d;c++){let f=o[c];if(!f.bone.active)continue;let m=f.getAttachment();if(!(m instanceof Ke))continue;let u=m,g=u.worldVerticesLength,p=this.temp=X.setArraySize(this.temp,g,0);u.computeWorldVertices(f,0,g,p,0,2);let b=this.pathColor,x=p[2],w=p[3],v=0,y=0;if(u.closed){e.setColor(b);let A=p[0],C=p[1],S=p[g-2],T=p[g-1];v=p[g-4],y=p[g-3],e.curve(x,w,A,C,S,T,v,y,32),e.setColor(ei.LIGHT_GRAY),e.line(x,w,A,C),e.line(v,y,S,T)}g-=4;for(let A=4;A<g;A+=6){let C=p[A],S=p[A+1],T=p[A+2],k=p[A+3];v=p[A+4],y=p[A+5],e.setColor(b),e.curve(x,w,C,S,T,k,v,y,32),e.setColor(ei.LIGHT_GRAY),e.line(x,w,C,S),e.line(v,y,T,k),x=v,w=y}}}if(this.drawBones){e.setColor(this.boneOriginColor);for(let o=0,c=a.length;o<c;o++){let d=a[o];i&&i.indexOf(d.data.name)>-1||e.circle(!0,d.worldX,d.worldY,3*this.scale,this.boneOriginColor,8)}}if(this.drawClipping){let o=s.slots;e.setColor(this.clipColor);for(let c=0,d=o.length;c<d;c++){let f=o[c];if(!f.bone.active)continue;let m=f.getAttachment();if(!(m instanceof at))continue;let u=m,g=u.worldVerticesLength,p=this.temp=X.setArraySize(this.temp,g,0);u.computeWorldVertices(f,0,g,p,0,2);for(let b=0,x=p.length;b<x;b+=2){let w=p[b],v=p[b+1],y=p[(b+2)%p.length],A=p[(b+3)%p.length];e.line(w,v,y,A)}}}}dispose(){}},gn=class{constructor(t,e,s){this.vertices=t,this.numVertices=e,this.numFloats=s}},qi=class vr{static QUAD_TRIANGLES=[0,1,2,2,3,0];premultipliedAlpha=!1;tempColor=new K;tempColor2=new K;vertices;vertexSize=8;twoColorTint=!1;renderable=new gn([],0,0);clipper=new At;temp=new Ue;temp2=new Ue;temp3=new K;temp4=new K;constructor(e,s=!0){this.twoColorTint=s,s&&(this.vertexSize+=4),this.vertices=X.newFloatArray(this.vertexSize*1024)}draw(e,s,i=-1,r=-1,h=null){let l=this.clipper,n=this.premultipliedAlpha,a=this.twoColorTint,o=null,c=this.renderable,d,f,m=s.drawOrder,u,g=s.color,p=a?12:8,b=!1;i==-1&&(b=!0);for(let x=0,w=m.length;x<w;x++){let v=l.isClipping()?2:p,y=m[x];if(!y.bone.active){l.clipEndWithSlot(y);continue}if(i>=0&&i==y.data.index&&(b=!0),!b){l.clipEndWithSlot(y);continue}r>=0&&r==y.data.index&&(b=!1);let A=y.getAttachment(),C;if(A instanceof de){let S=A;c.vertices=this.vertices,c.numVertices=4,c.numFloats=v<<2,S.computeWorldVertices(y,c.vertices,0,v),f=vr.QUAD_TRIANGLES,d=S.uvs,C=S.region.texture,u=S.color}else if(A instanceof ze){let S=A;c.vertices=this.vertices,c.numVertices=S.worldVerticesLength>>1,c.numFloats=c.numVertices*v,c.numFloats>c.vertices.length&&(c.vertices=this.vertices=X.newFloatArray(c.numFloats)),S.computeWorldVertices(y,0,S.worldVerticesLength,c.vertices,0,v),f=S.triangles,C=S.region.texture,d=S.uvs,u=S.color}else if(A instanceof at){let S=A;l.clipStart(y,S);continue}else{l.clipEndWithSlot(y);continue}if(C){let S=y.color,T=this.tempColor;T.r=g.r*S.r*u.r,T.g=g.g*S.g*u.g,T.b=g.b*S.b*u.b,T.a=g.a*S.a*u.a,n&&(T.r*=T.a,T.g*=T.a,T.b*=T.a);let k=this.tempColor2;y.darkColor?(n?(k.r=y.darkColor.r*T.a,k.g=y.darkColor.g*T.a,k.b=y.darkColor.b*T.a):k.setFromColor(y.darkColor),k.a=n?1:0):k.set(0,0,0,1);let Y=y.data.blendMode;if(Y!=o&&(o=Y,e.setBlendMode(o,n)),l.isClipping()){l.clipTriangles(c.vertices,f,f.length,d,T,k,a);let F=new Float32Array(l.clippedVertices),L=l.clippedTriangles;h&&h(F,F.length,p),e.draw(C,F,L)}else{let F=c.vertices;if(a)for(let E=2,R=0,B=c.numFloats;E<B;E+=p,R+=2)F[E]=T.r,F[E+1]=T.g,F[E+2]=T.b,F[E+3]=T.a,F[E+4]=d[R],F[E+5]=d[R+1],F[E+6]=k.r,F[E+7]=k.g,F[E+8]=k.b,F[E+9]=k.a;else for(let E=2,R=0,B=c.numFloats;E<B;E+=p,R+=2)F[E]=T.r,F[E+1]=T.g,F[E+2]=T.b,F[E+3]=T.a,F[E+4]=d[R],F[E+5]=d[R+1];let L=c.vertices.subarray(0,c.numFloats);h&&h(c.vertices,c.numFloats,p),e.draw(C,L,f)}}l.clipEndWithSlot(y)}l.clipEnd()}getSkeletonClipping(){return this.clipper}},I=[0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0],Tt=[0,1,2,2,3,0],It=new K(1,1,1,1),qs=class{context;canvas;camera;batcher;twoColorTint=!1;batcherShader;shapes;shapesShader;activeRenderer=null;skeletonRenderer;skeletonDebugRenderer;constructor(t,e,s=!0){this.canvas=t,this.context=e instanceof be?e:new be(e),this.twoColorTint=s,this.camera=new Bi(t.width,t.height),this.batcherShader=s?Me.newTwoColoredTextured(this.context):Me.newColoredTextured(this.context),this.batcher=new zs(this.context,s),this.shapesShader=Me.newColored(this.context),this.shapes=new Gs(this.context),this.skeletonRenderer=new qi(this.context,s),this.skeletonDebugRenderer=new Gi(this.context)}dispose(){this.batcher.dispose(),this.batcherShader.dispose(),this.shapes.dispose(),this.shapesShader.dispose(),this.skeletonDebugRenderer.dispose()}begin(){this.camera.update(),this.enableRenderer(this.batcher)}drawSkeleton(t,e=!1,s=-1,i=-1,r=null){this.enableRenderer(this.batcher),this.skeletonRenderer.premultipliedAlpha=e,this.skeletonRenderer.draw(this.batcher,t,s,i,r)}drawSkeletonDebug(t,e=!1,s){this.enableRenderer(this.shapes),this.skeletonDebugRenderer.premultipliedAlpha=e,this.skeletonDebugRenderer.draw(this.shapes,t,s)}drawTexture(t,e,s,i,r,h){this.enableRenderer(this.batcher),h||(h=It);var l=0;I[l++]=e,I[l++]=s,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=0,I[l++]=1,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e+i,I[l++]=s,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=1,I[l++]=1,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e+i,I[l++]=s+r,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=1,I[l++]=0,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e,I[l++]=s+r,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=0,I[l++]=0,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l]=0),this.batcher.draw(t,I,Tt)}drawTextureUV(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.batcher),o||(o=It);var c=0;I[c++]=e,I[c++]=s,I[c++]=o.r,I[c++]=o.g,I[c++]=o.b,I[c++]=o.a,I[c++]=h,I[c++]=l,this.twoColorTint&&(I[c++]=0,I[c++]=0,I[c++]=0,I[c++]=0),I[c++]=e+i,I[c++]=s,I[c++]=o.r,I[c++]=o.g,I[c++]=o.b,I[c++]=o.a,I[c++]=n,I[c++]=l,this.twoColorTint&&(I[c++]=0,I[c++]=0,I[c++]=0,I[c++]=0),I[c++]=e+i,I[c++]=s+r,I[c++]=o.r,I[c++]=o.g,I[c++]=o.b,I[c++]=o.a,I[c++]=n,I[c++]=a,this.twoColorTint&&(I[c++]=0,I[c++]=0,I[c++]=0,I[c++]=0),I[c++]=e,I[c++]=s+r,I[c++]=o.r,I[c++]=o.g,I[c++]=o.b,I[c++]=o.a,I[c++]=h,I[c++]=a,this.twoColorTint&&(I[c++]=0,I[c++]=0,I[c++]=0,I[c]=0),this.batcher.draw(t,I,Tt)}drawTextureRotated(t,e,s,i,r,h,l,n,a){this.enableRenderer(this.batcher),a||(a=It);let o=e+h,c=s+l,d=-h,f=-l,m=i-h,u=r-l,g=d,p=f,b=d,x=u,w=m,v=u,y=m,A=f,C=0,S=0,T=0,k=0,Y=0,F=0,L=0,E=0;if(n!=0){let B=P.cosDeg(n),se=P.sinDeg(n);C=B*g-se*p,S=se*g+B*p,L=B*b-se*x,E=se*b+B*x,Y=B*w-se*v,F=se*w+B*v,T=Y+(C-L),k=F+(S-E)}else C=g,S=p,L=b,E=x,Y=w,F=v,T=y,k=A;C+=o,S+=c,T+=o,k+=c,Y+=o,F+=c,L+=o,E+=c;var R=0;I[R++]=C,I[R++]=S,I[R++]=a.r,I[R++]=a.g,I[R++]=a.b,I[R++]=a.a,I[R++]=0,I[R++]=1,this.twoColorTint&&(I[R++]=0,I[R++]=0,I[R++]=0,I[R++]=0),I[R++]=T,I[R++]=k,I[R++]=a.r,I[R++]=a.g,I[R++]=a.b,I[R++]=a.a,I[R++]=1,I[R++]=1,this.twoColorTint&&(I[R++]=0,I[R++]=0,I[R++]=0,I[R++]=0),I[R++]=Y,I[R++]=F,I[R++]=a.r,I[R++]=a.g,I[R++]=a.b,I[R++]=a.a,I[R++]=1,I[R++]=0,this.twoColorTint&&(I[R++]=0,I[R++]=0,I[R++]=0,I[R++]=0),I[R++]=L,I[R++]=E,I[R++]=a.r,I[R++]=a.g,I[R++]=a.b,I[R++]=a.a,I[R++]=0,I[R++]=0,this.twoColorTint&&(I[R++]=0,I[R++]=0,I[R++]=0,I[R]=0),this.batcher.draw(t,I,Tt)}drawRegion(t,e,s,i,r,h){this.enableRenderer(this.batcher),h||(h=It);var l=0;I[l++]=e,I[l++]=s,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=t.u,I[l++]=t.v2,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e+i,I[l++]=s,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=t.u2,I[l++]=t.v2,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e+i,I[l++]=s+r,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=t.u2,I[l++]=t.v,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l++]=0),I[l++]=e,I[l++]=s+r,I[l++]=h.r,I[l++]=h.g,I[l++]=h.b,I[l++]=h.a,I[l++]=t.u,I[l++]=t.v,this.twoColorTint&&(I[l++]=0,I[l++]=0,I[l++]=0,I[l]=0),this.batcher.draw(t.page.texture,I,Tt)}line(t,e,s,i,r,h){this.enableRenderer(this.shapes),this.shapes.line(t,e,s,i,r)}triangle(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.shapes),this.shapes.triangle(t,e,s,i,r,h,l,n,a,o)}quad(t,e,s,i,r,h,l,n,a,o,c,d,f){this.enableRenderer(this.shapes),this.shapes.quad(t,e,s,i,r,h,l,n,a,o,c,d,f)}rect(t,e,s,i,r,h){this.enableRenderer(this.shapes),this.shapes.rect(t,e,s,i,r,h)}rectLine(t,e,s,i,r,h,l){this.enableRenderer(this.shapes),this.shapes.rectLine(t,e,s,i,r,h,l)}polygon(t,e,s,i){this.enableRenderer(this.shapes),this.shapes.polygon(t,e,s,i)}circle(t,e,s,i,r,h=0){this.enableRenderer(this.shapes),this.shapes.circle(t,e,s,i,r,h)}curve(t,e,s,i,r,h,l,n,a,o){this.enableRenderer(this.shapes),this.shapes.curve(t,e,s,i,r,h,l,n,a,o)}end(){this.activeRenderer===this.batcher?this.batcher.end():this.activeRenderer===this.shapes&&this.shapes.end(),this.activeRenderer=null}resize(t){let e=this.canvas;var s=window.devicePixelRatio||1,i=Math.round(e.clientWidth*s),r=Math.round(e.clientHeight*s);if((e.width!=i||e.height!=r)&&(e.width=i,e.height=r),this.context.gl.viewport(0,0,e.width,e.height),t===1)this.camera.setViewport(i,r);else if(t===2){let h=e.width,l=e.height,n=this.camera.viewportWidth,a=this.camera.viewportHeight,o=a/n,c=l/h,d=o<c?n/h:a/l;this.camera.setViewport(h*d,l*d)}this.camera.update()}enableRenderer(t){this.activeRenderer!==t&&(this.end(),t instanceof zs?(this.batcherShader.bind(),this.batcherShader.setUniform4x4f(Me.MVP_MATRIX,this.camera.projectionView.values),this.batcherShader.setUniformi("u_texture",0),this.batcher.begin(this.batcherShader),this.activeRenderer=this.batcher):t instanceof Gs?(this.shapesShader.bind(),this.shapesShader.setUniform4x4f(Me.MVP_MATRIX,this.camera.projectionView.values),this.shapes.begin(this.shapesShader),this.activeRenderer=this.shapes):this.activeRenderer=this.skeletonDebugRenderer)}},_i=(t=>(t[t.Stretch=0]="Stretch",t[t.Expand=1]="Expand",t[t.Fit=2]="Fit",t))(_i||{}),et,qe,_s=0,xn=1,Hs=1,Et=165,Mt=108,Re=163,pn=class{renderer;logo=null;spinner=null;angle=0;fadeOut=0;fadeIn=0;timeKeeper=new Ot;backgroundColor=new K(.135,.135,.135,1);tempColor=new K;constructor(t){if(this.renderer=t,this.timeKeeper.maxDelta=9,!qe){let e=navigator.userAgent.indexOf("Safari")>-1,s=()=>_s++;qe=new Image,qe.src=bn,e||(qe.crossOrigin="anonymous"),qe.onload=s,et=new Image,et.src=wn,e||(et.crossOrigin="anonymous"),et.onload=s}}dispose(){this.logo?.dispose(),this.spinner?.dispose()}draw(t=!1){if(_s<2||t&&this.fadeOut>Hs)return;this.timeKeeper.update();let e=Math.abs(Math.sin(this.timeKeeper.totalTime+.25));this.angle-=this.timeKeeper.delta*200*(1+1.5*Math.pow(e,5));let s=this.tempColor,i=this.renderer,r=i.canvas,h=i.context.gl;if(i.resize(1),i.camera.position.set(r.width/2,r.height/2,0),i.batcher.setBlendMode(0,!0),t){if(this.fadeOut+=this.timeKeeper.delta*(this.timeKeeper.totalTime<1?2:1),this.fadeOut>Hs)return;s.setFromColor(this.backgroundColor),e=1-this.fadeOut/Hs,e=1-(e-1)*(e-1),s.a*=e,s.a>0&&(i.camera.zoom=1,i.begin(),i.quad(!0,0,0,r.width,0,r.width,r.height,0,r.height,s,s,s,s),i.end())}else this.fadeIn+=this.timeKeeper.delta,this.backgroundColor.a>0&&(h.clearColor(this.backgroundColor.r,this.backgroundColor.g,this.backgroundColor.b,this.backgroundColor.a),h.clear(h.COLOR_BUFFER_BIT)),e=1;e*=Math.min(this.fadeIn/xn,1),s.set(e,e,e,e),this.logo||(this.logo=new Ge(i.context,qe),this.spinner=new Ge(i.context,et)),i.camera.zoom=Math.max(1,Re/r.height),i.begin(),i.drawTexture(this.logo,(r.width-Et)/2,(r.height-Mt)/2,Et,Mt,s),this.spinner&&i.drawTextureRotated(this.spinner,(r.width-Re)/2,(r.height-Re)/2,Re,Re,Re/2,Re/2,this.angle,s),i.end()}drawInCoordinates(t,e){if(_s<2)return;this.timeKeeper.update();let s=this.renderer;s.batcher.setBlendMode(0,!0),this.logo||(this.logo=new Ge(s.context,qe),this.spinner=new Ge(s.context,et));const i=t-Et/2,r=e-Mt/2;s.drawTexture(this.logo,i,r,Et,Mt),this.angle-=this.timeKeeper.delta*500,this.spinner&&s.drawTextureRotated(this.spinner,i,r-25,Re,Re,Re/2,Re/2,this.angle)}},wn="data:image/png;base64,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",bn="data:image/png;base64,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",vn=class{constructor(t,e){this.config=e,e.pathPrefix||(e.pathPrefix=""),e.app||(e.app={loadAssets:()=>{},initialize:()=>{},update:()=>{},render:()=>{},error:()=>{},dispose:()=>{}}),e.webglConfig||(e.webglConfig={alpha:!0}),this.htmlCanvas=t,this.context=new be(t,e.webglConfig),this.renderer=new qs(t,this.context),this.gl=this.context.gl,this.assetManager=new Xi(this.context,e.pathPrefix),this.input=new Ds(t),e.app.loadAssets&&e.app.loadAssets(this);let s=()=>{this.disposed||(requestAnimationFrame(s),this.time.update(),e.app.update&&e.app.update(this,this.time.delta),e.app.render&&e.app.render(this))},i=()=>{if(!this.disposed){if(this.assetManager.isLoadingComplete()){this.assetManager.hasErrors()?e.app.error&&e.app.error(this,this.assetManager.getErrors()):(e.app.initialize&&e.app.initialize(this),s());return}requestAnimationFrame(i)}};requestAnimationFrame(i)}context;time=new Ot;htmlCanvas;gl;renderer;assetManager;input;disposed=!1;clear(t,e,s,i){this.gl.clearColor(t,e,s,i),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}dispose(){this.config.app.dispose&&this.config.app.dispose(this),this.disposed=!0}};import*as ye from"Phaser";var yn="esotericsoftware.spine.skeletonFile.cache",An="esotericsoftware.spine.atlas.cache",Cn="spineSkeletonData",Sn="spineAtlasData",js="spine",Oe=Phaser.GameObjects.Components,Hi=Oe.ComputedSize,ji=Oe.Depth,Zi=Oe.Flip,Ji=Oe.ScrollFactor,Ki=Oe.Transform,Qi=Oe.Visible,$i=Oe.Origin,er=Oe.Alpha;function Be(...t){return e=>(Phaser.Class.mixin(e,t),e)}var tr=Be(Hi),sr=Be(ji),ir=Be(Zi),rr=Be(Ji),nr=Be(Ki),ar=Be(Qi),lr=Be($i),or=Be(er),Tn=class extends Phaser.GameObjects.GameObject{constructor(t,e){super(t,e)}},In=class{constructor(t,e,s,i){this.x=t,this.y=e,this.width=s,this.height=i}calculateBounds(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},hr=class{constructor(t=!1){this.clipping=t}calculateBounds(t){if(!t.skeleton)return{x:0,y:0,width:0,height:0};const e=new Qe(t.skeleton.data);e.setToSetupPose(),e.updateWorldTransform(2);const s=e.getBoundsRect(this.clipping?new At:void 0);return s.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:s}},En=class{constructor(t,e=[],s=.05,i=!1){this.animation=t,this.skins=e,this.timeStep=s,this.clipping=i}calculateBounds(t){if(!t.skeleton||!t.animationState)return{x:0,y:0,width:0,height:0};const e=new xs(t.animationState.data),s=new Qe(t.skeleton.data),i=this.clipping?new At:void 0,r=s.data;if(this.skins.length>0){let l=new ot("custom-skin");for(const n of this.skins){const a=r.findSkin(n);a!=null&&l.addSkin(a)}s.setSkin(l)}s.setToSetupPose();const h=this.animation!=null?r.findAnimation(this.animation):null;if(h==null){s.updateWorldTransform(2);const l=s.getBoundsRect(i);return l.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:l}else{let l=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY;e.clearTracks(),e.setAnimationWith(0,h,!1);const c=Math.max(h.duration/this.timeStep,1);for(let f=0;f<c;f++){const m=f>0?this.timeStep:0;e.update(m),e.apply(s),s.update(m),s.updateWorldTransform(2);const u=s.getBoundsRect(i);l=Math.min(l,u.x),n=Math.min(n,u.y),a=Math.max(a,u.x+u.width),o=Math.max(o,u.y+u.height)}const d={x:l,y:n,width:a-l,height:o-n};return d.width==Number.NEGATIVE_INFINITY?{x:0,y:0,width:0,height:0}:d}}},Zs=class extends sr(lr(tr(ir(rr(nr(ar(or(Tn)))))))){constructor(t,e,s,i,r,h,l=new hr){super(t,window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:js),this.plugin=e,this.boundsProvider=l,this.setPosition(s,i),this.premultipliedAlpha=this.plugin.isAtlasPremultiplied(h),this.skeleton=this.plugin.createSkeleton(r,h),this.animationStateData=new pi(this.skeleton.data),this.animationState=new xs(this.animationStateData),this.skeleton.updateWorldTransform(2),this.updateSize()}blendMode=-1;skeleton;animationStateData;animationState;beforeUpdateWorldTransforms=()=>{};afterUpdateWorldTransforms=()=>{};premultipliedAlpha=!1;offsetX=0;offsetY=0;updateSize(){if(!this.skeleton)return;let t=this.boundsProvider.calculateBounds(this);this.width=t.width,this.height=t.height,this.setDisplayOrigin(-t.x,-t.y),this.offsetX=-t.x,this.offsetY=-t.y}skeletonToPhaserWorldCoordinates(t){let e=this.getWorldTransformMatrix(),s=e.a,i=e.b,r=e.c,h=e.d,l=e.tx,n=e.ty,a=t.x,o=t.y;t.x=a*s+o*r+l,t.y=a*i+o*h+n}phaserWorldCoordinatesToSkeleton(t){let e=this.getWorldTransformMatrix();e=e.invert();let s=e.a,i=e.b,r=e.c,h=e.d,l=e.tx,n=e.ty,a=t.x,o=t.y;t.x=a*s+o*r+l,t.y=a*i+o*h+n}phaserWorldCoordinatesToBone(t,e){this.phaserWorldCoordinatesToSkeleton(t),e.parent?e.parent.worldToLocal(t):e.worldToLocal(t)}updatePose(t){this.animationState.update(t/1e3),this.animationState.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(t/1e3),this.skeleton.updateWorldTransform(2),this.afterUpdateWorldTransforms(this)}preUpdate(t,e){!this.skeleton||!this.animationState||this.updatePose(e)}preDestroy(){}willRender(t){var e=15,s=!this.skeleton||!(e!==this.renderFlags||this.cameraFilter!==0&&this.cameraFilter&t.id);if(this.visible||(s=!1),!s&&this.parentContainer&&this.plugin.webGLRenderer){var i=this.plugin.webGLRenderer;this.plugin.gl&&this.plugin.phaserRenderer instanceof Phaser.Renderer.WebGL.WebGLRenderer&&i.batcher.isDrawing&&(i.end(),this.plugin.phaserRenderer.pipelines.rebind())}return s}renderWebGL(t,e,s,i){if(!this.skeleton||!this.animationState||!this.plugin.webGLRenderer)return;let r=this.plugin.webGLRenderer;t.newType&&(t.pipelines.clear(),r.begin()),s.addToRenderList(e);let h=Phaser.GameObjects.GetCalcMatrix(e,s,i).calc,l=h.a,n=h.b,a=h.c,o=h.d,c=h.tx,d=h.ty,f=e.offsetX-e.displayOriginX,m=e.offsetY-e.displayOriginY;r.drawSkeleton(e.skeleton,e.premultipliedAlpha,-1,-1,(u,g,p)=>{for(let b=0;b<g;b+=p){let x=u[b]+f,w=u[b+1]+m;u[b]=x*l+w*a+c,u[b+1]=x*n+w*o+d}}),t.nextTypeMatch||(r.end(),t.pipelines.rebind())}renderCanvas(t,e,s,i){if(!this.skeleton||!this.animationState||!this.plugin.canvasRenderer)return;let r=t.currentContext,h=this.plugin.canvasRenderer;h.ctx=r,s.addToRenderList(e);let l=Phaser.GameObjects.GetCalcMatrix(e,s,i).calc,n=this.skeleton;n.x=l.tx,n.y=l.ty,n.scaleX=l.scaleX,n.scaleY=l.scaleY;let a=n.getRootBone();a.rotation=-P.radiansToDegrees*l.rotationNormalized,this.skeleton.updateWorldTransform(2),r.save(),h.draw(n),r.restore()}};Qe.yDown=!0;var Js=class Pt extends ye.Plugins.ScenePlugin{game;isWebGL;gl;static gameWebGLRenderer=null;get webGLRenderer(){return Pt.gameWebGLRenderer}canvasRenderer;phaserRenderer;skeletonDataCache;atlasCache;constructor(e,s,i){super(e,s,i),this.game=s.game,this.isWebGL=this.game.config.renderType===2,this.gl=this.isWebGL?this.game.renderer.gl:null,this.phaserRenderer=this.game.renderer,this.canvasRenderer=null,this.skeletonDataCache=this.game.cache.addCustom(yn),this.atlasCache=this.game.cache.addCustom(An);let r=function(o,c,d){let f=new cr(this,o,c,0,d);return this.addFile(f.files),this};s.registerFileType("spineJson",r,e);let h=function(o,c,d){let f=new cr(this,o,c,1,d);return this.addFile(f.files),this};s.registerFileType("spineBinary",h,e);let l=function(o,c,d,f){let m=new Mn(this,o,c,d,f);return this.addFile(m.files),this};s.registerFileType("spineAtlas",l,e);let n=function(o,c,d,f,m){this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();const u=this.scene.sys[i];let g=new Zs(this.scene,u,o,c,d,f,m);return this.displayList.add(g),this.updateList.add(g),this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),g},a=function(o,c=!1){this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.clear();let d=o.x?o.x:0,f=o.y?o.y:0,m=o.boundsProvider?o.boundsProvider:void 0;const u=this.scene.sys[i];let g=new Zs(this.scene,u,d,f,o.dataKey,o.atlasKey,m);return c!==void 0&&(o.add=c),this.scene.sys.renderer instanceof ye.Renderer.WebGL.WebGLRenderer&&this.scene.sys.renderer.pipelines.rebind(),ye.GameObjects.BuildGameObject(this.scene,g,o)};s.registerGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:js,n,a)}static rendererId=0;boot(){this.isWebGL&&this.gl?Pt.gameWebGLRenderer||=new qs(this.game.renderer.canvas,this.gl,!0):this.scene&&(this.canvasRenderer||=new dn(this.scene.sys.context)),this.onResize(),this.systems&&(this.systems.events.once("destroy",this.destroy,this),this.systems.events.on("start",this.onStart,this),this.systems.events.on("shutdown",this.shutdown,this)),this.game.events.once("destroy",this.gameDestroy,this)}onResize(){const e=this.game.renderer,s=this.webGLRenderer;if(e&&s){const i=e.width,r=e.height;s.camera.position.x=i/2,s.camera.position.y=r/2,s.camera.up.y=-1,s.camera.direction.z=1,s.camera.setViewport(i,r)}}onStart(){this.game.scale.on(ye.Scale.Events.RESIZE,this.onResize,this)}shutdown(){this.isWebGL&&this.game.scale.off(ye.Scale.Events.RESIZE,this.onResize,this)}destroy(){this.shutdown(),this.systems?.events.off("start",this.onStart,this),this.systems?.events.off("shutdown",this.shutdown,this)}gameDestroy(){this.pluginManager.removeGameObject(window.SPINE_GAME_OBJECT_TYPE?window.SPINE_GAME_OBJECT_TYPE:js,!0,!0),this.webGLRenderer&&this.webGLRenderer.dispose(),Pt.gameWebGLRenderer=null}getAtlas(e){let s;if(this.atlasCache.exists(e))s=this.atlasCache.get(e);else{let i=this.game.cache.text.get(e);if(s=new vt(i.data),this.isWebGL){let r=this.gl;const h=r.getParameter(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL);h&&r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);for(let l of s.pages)l.setTexture(new Ge(r,this.game.textures.get(e+"!"+l.name).getSourceImage(),!1));h&&r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}else for(let r of s.pages)r.setTexture(new hn(this.game.textures.get(e+"!"+r.name).getSourceImage()));this.atlasCache.add(e,s)}return s}isAtlasPremultiplied(e){let s=this.game.cache.text.get(e);return s?s.premultipliedAlpha:!1}getSkeletonData(e,s){const i=this.getAtlas(s),r=e+s;let h;if(this.skeletonDataCache.exists(r))h=this.skeletonDataCache.get(r);else{if(this.game.cache.json.exists(e)){let l=this.game.cache.json.get(e);h=new Pi(new As(i)).readSkeletonData(l)}else{let l=this.game.cache.binary.get(e);h=new ki(new As(i)).readSkeletonData(new Uint8Array(l))}this.skeletonDataCache.add(r,h)}return h}createSkeleton(e,s){return new Qe(this.getSkeletonData(e,s))}},cr=class extends ye.Loader.MultiFile{constructor(t,e,s,i,r){if(typeof e!="string"){const n=e;e=n.key,s=n.url,i=n.type==="spineJson"?0:1,r=n.xhrSettings}let h=null;i==0?h=new ye.Loader.FileTypes.JSONFile(t,{key:e,url:s,extension:"json",xhrSettings:r}):h=new ye.Loader.FileTypes.BinaryFile(t,{key:e,url:s,extension:"skel",xhrSettings:r}),super(t,Cn,e,[h]),this.fileType=i}onFileComplete(t){this.pending--}addToCache(){this.isReadyToProcess()&&this.files[0].addToCache()}},Mn=class extends ye.Loader.MultiFile{constructor(t,e,s,i,r){if(typeof e!="string"){const h=e;e=h.key,s=h.url,i=h.premultipliedAlpha,r=h.xhrSettings}super(t,Sn,e,[new ye.Loader.FileTypes.TextFile(t,{key:e,url:s,xhrSettings:r,extension:"atlas"})]),this.premultipliedAlpha=i}onFileComplete(t){if(this.files.indexOf(t)!=-1&&(this.pending--,t.type=="text")){var e=t.data.split(/\r\n|\r|\n/);let a=[];a.push(e[0]);for(var s=1;s<e.length;s++){var i=e[s];i.trim()===""&&s<e.length-1&&(i=e[s+1],a.push(i))}let o=t.url;typeof o=="object"&&(o=t.src);let c=(o.match(/^.*\//)??"").toString();this.loader.path&&this.loader.path.length>0&&c.startsWith(this.loader.path)&&(c=c.slice(this.loader.path.length));for(var r=0;r<a.length;r++){var h=c+a[r],l=t.key+"!"+a[r],n=new ye.Loader.FileTypes.ImageFile(this.loader,l,h);this.loader.keyExists(n)||(this.addToMultiFile(n),this.loader.addFile(n))}}}addToCache(){if(this.isReadyToProcess()){let t=this.loader.textureManager;for(let e of this.files)e.type=="image"?t.exists(e.key)||t.addImage(e.key,e.data):(this.premultipliedAlpha=this.premultipliedAlpha??(e.data.indexOf("pma: true")>=0||e.data.indexOf("pma:true")>=0),e.data={data:e.data,premultipliedAlpha:this.premultipliedAlpha},e.addToCache())}}};window.spine={SpinePlugin:Js},window["spine.SpinePlugin"]=Js;export{In as AABBRectangleBoundsProvider,er as Alpha,or as AlphaMixin,Qt as AlphaTimeline,ut as Animation,xs as AnimationState,Tr as AnimationStateAdapter,pi as AnimationStateData,Ci as AssetCache,Xi as AssetManager,Ai as AssetManagerBase,As as AtlasAttachmentLoader,Nt as Attachment,We as AttachmentTimeline,Yi as BinaryInput,Bs as BlendMode,Ss as Bone,Cs as BoneData,vs as BoundingBoxAttachment,xi as CURRENT,fn as CameraController,at as ClippingAttachment,K as Color,Oi as Color2Attribute,St as ColorAttribute,Hi as ComputedSize,tr as ComputedSizeMixin,lt as ConstraintData,Ie as CurveTimeline,Ce as CurveTimeline1,mt as CurveTimeline2,Cr as DebugUtils,ts as DeformTimeline,ji as Depth,sr as DepthMixin,Ts as Downloader,Je as DrawOrderTimeline,Is as Event,Es as EventData,ui as EventQueue,gt as EventTimeline,mi as EventType,ps as FIRST,Ir as FakeTexture,Zi as Flip,ir as FlipMixin,Ge as GLTexture,pt as HOLD_FIRST,gi as HOLD_MIX,ws as HOLD_SUBSEQUENT,Si as IkConstraint,Ms as IkConstraintData,ss as IkConstraintTimeline,yt as Inherit,Zt as InheritTimeline,Ds as Input,yr as IntSet,ni as Interpolation,pn as LoadingScreen,V as M00,G as M01,q as M02,O as M03,_ as M10,N as M11,H as M12,D as M13,j as M20,Z as M21,U as M22,W as M23,Q as M30,$ as M31,ee as M32,J as M33,be as ManagedWebGLRenderingContext,P as MathUtils,ht as Matrix4,Us as Mesh,ze as MeshAttachment,ci as MixBlend,di as MixDirection,$i as Origin,lr as OriginMixin,Bi as OrthoCamera,Ke as PathAttachment,Ti as PathConstraint,Rs as PathConstraintData,as as PathConstraintMixTimeline,rs as PathConstraintPositionTimeline,ns as PathConstraintSpacingTimeline,Mi as Physics,hs as PhysicsConstraintDampingTimeline,fs as PhysicsConstraintGravityTimeline,ls as PhysicsConstraintInertiaTimeline,cs as PhysicsConstraintMassTimeline,us as PhysicsConstraintMixTimeline,ms as PhysicsConstraintResetTimeline,os as PhysicsConstraintStrengthTimeline,Ve as PhysicsConstraintTimeline,ds as PhysicsConstraintWindTimeline,yi as PointAttachment,zs as PolygonBatcher,rt as Pool,Ct as Position2Attribute,un as Position3Attribute,ks as PositionMode,ai as Pow,Ar as PowOut,es as RGB2Timeline,$t as RGBA2Timeline,Jt as RGBATimeline,Kt as RGBTimeline,de as RegionAttachment,_i as ResizeMode,Fs as RotateMode,nt as RotateTimeline,bs as SETUP,xt as SUBSEQUENT,zt as ScaleTimeline,Gt as ScaleXTimeline,qt as ScaleYTimeline,qs as SceneRenderer,Ji as ScrollFactor,rr as ScrollFactorMixin,gs as SequenceTimeline,hr as SetupPoseBoundsProvider,Me as Shader,Gs as ShapeRenderer,zi as ShapeType,_t as ShearTimeline,Ht as ShearXTimeline,jt as ShearYTimeline,Qe as Skeleton,ki as SkeletonBinary,Fi as SkeletonBounds,At as SkeletonClipping,Ls as SkeletonData,Gi as SkeletonDebugRenderer,Pi as SkeletonJson,qi as SkeletonRenderer,ot as Skin,Ps as SkinEntry,En as SkinsAndAnimationBoundsProvider,Ii as Slot,Xs as SlotData,Ys as SpacingMode,vn as SpineCanvas,Zs as SpineGameObject,Js as SpinePlugin,Vt as StringSet,Ws as TexCoordAttribute,wt as Texture,vt as TextureAtlas,vi as TextureAtlasPage,ys as TextureAtlasRegion,bt as TextureFilter,bi as TextureRegion,wi as TextureWrap,Ot as TimeKeeper,ue as Timeline,Vi as Touch,fi as TrackEntry,Ki as Transform,Ei as TransformConstraint,Vs as TransformConstraintData,is as TransformConstraintTimeline,nr as TransformMixin,Dt as TranslateTimeline,Ut as TranslateXTimeline,Wt as TranslateYTimeline,Li as Triangulator,X as Utils,Ue as Vector2,Se as Vector3,Fe as VertexAttachment,$e as VertexAttribute,Ni as VertexAttributeType,Qi as Visible,ar as VisibleMixin,Sr as WindowedMean,Be as createMixin};
@@ -14755,7 +14755,9 @@ var SpineAtlasFile = class extends Phaser2.Loader.MultiFile {
14755
14755
  textures.push(line);
14756
14756
  }
14757
14757
  }
14758
- let basePath = (file.src.match(/^.*\//) ?? "").toString();
14758
+ let fileUrl = file.url;
14759
+ if (typeof fileUrl === "object") fileUrl = file.src;
14760
+ let basePath = (fileUrl.match(/^.*\//) ?? "").toString();
14759
14761
  if (this.loader.path && this.loader.path.length > 0 && basePath.startsWith(this.loader.path))
14760
14762
  basePath = basePath.slice(this.loader.path.length);
14761
14763
  for (var i = 0; i < textures.length; i++) {