@esotericsoftware/spine-core 4.3.8 → 4.3.10

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.
@@ -164,4 +164,4 @@ export class SkeletonData {
164
164
  return null;
165
165
  }
166
166
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFRL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzdDOzs7WUFHWTtBQUNaLE1BQU0sT0FBTyxZQUFZO0lBRXhCLDZHQUE2RztJQUM3RyxJQUFJLEdBQWtCLElBQUksQ0FBQztJQUUzQix5RkFBeUY7SUFDekYsS0FBSyxHQUFHLEVBQWdCLENBQUMsQ0FBQyx5QkFBeUI7SUFFbkQseURBQXlEO0lBQ3pELEtBQUssR0FBRyxFQUFnQixDQUFDLENBQUMseUJBQXlCO0lBRW5ELEtBQUssR0FBRyxFQUFZLENBQUM7SUFFckI7OztzQkFHa0I7SUFDbEIsV0FBVyxHQUFnQixJQUFJLENBQUM7SUFFaEMsNkJBQTZCO0lBQzdCLE1BQU0sR0FBRyxFQUFpQixDQUFDO0lBRTNCLGlDQUFpQztJQUNqQyxVQUFVLEdBQUcsRUFBaUIsQ0FBQztJQUUvQixxQ0FBcUM7SUFDckMsb0dBQW9HO0lBQ3BHLFdBQVcsR0FBRyxFQUFnQyxDQUFDO0lBRS9DLHNGQUFzRjtJQUN0RixDQUFDLEdBQVcsQ0FBQyxDQUFDO0lBRWQsc0ZBQXNGO0lBQ3RGLENBQUMsR0FBVyxDQUFDLENBQUM7SUFFZCwrRUFBK0U7SUFDL0UsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUVsQixnRkFBZ0Y7SUFDaEYsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUVuQjtpQkFDYTtJQUNiLGNBQWMsR0FBRyxHQUFHLENBQUM7SUFFckIsbUVBQW1FO0lBQ25FLE9BQU8sR0FBa0IsSUFBSSxDQUFDO0lBRTlCLDJHQUEyRztJQUMzRyxJQUFJLEdBQWtCLElBQUksQ0FBQztJQUUzQixlQUFlO0lBQ2Ysc0ZBQXNGO0lBQ3RGLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFFVCww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TyxVQUFlLENBQUM7UUFDOUYsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUVEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IEFuaW1hdGlvbiB9IGZyb20gXCIuL0FuaW1hdGlvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEJvbmVEYXRhIH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9Db25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBFdmVudERhdGEgfSBmcm9tIFwiLi9FdmVudERhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgU2tpbiB9IGZyb20gXCIuL1NraW4uanNcIjtcbmltcG9ydCB7IFNsaWRlckRhdGEgfSBmcm9tIFwiLi9TbGlkZXJEYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNsb3REYXRhIH0gZnJvbSBcIi4vU2xvdERhdGEuanNcIjtcblxuLyoqIFN0b3JlcyB0aGUgc2V0dXAgcG9zZSBhbmQgYWxsIG9mIHRoZSBzdGF0ZWxlc3MgZGF0YSBmb3IgYSBza2VsZXRvbi5cbiAqXG4gKiBTZWUgW0RhdGEgb2JqZWN0c10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXJ1bnRpbWUtYXJjaGl0ZWN0dXJlI0RhdGEtb2JqZWN0cykgaW4gdGhlIFNwaW5lIFJ1bnRpbWVzXG4gKiBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkRhdGEge1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBuYW1lLCB3aGljaCBieSBkZWZhdWx0IGlzIHRoZSBuYW1lIG9mIHRoZSBza2VsZXRvbiBkYXRhIGZpbGUsIGlmIHBvc3NpYmxlLiBNYXkgYmUgbnVsbC4gKi9cblx0bmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGJvbmVzLCBzb3J0ZWQgcGFyZW50IGZpcnN0LiBUaGUgcm9vdCBib25lIGlzIGFsd2F5cyB0aGUgZmlyc3QgYm9uZS4gKi9cblx0Ym9uZXMgPSBbXSBhcyBCb25lRGF0YVtdOyAvLyBPcmRlcmVkIHBhcmVudHMgZmlyc3QuXG5cblx0LyoqIFRoZSBza2VsZXRvbidzIHNsb3RzIGluIHRoZSBzZXR1cCBwb3NlIGRyYXcgb3JkZXIuICovXG5cdHNsb3RzID0gW10gYXMgU2xvdERhdGFbXTsgLy8gU2V0dXAgcG9zZSBkcmF3IG9yZGVyLlxuXG5cdHNraW5zID0gW10gYXMgU2tpbltdO1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBkZWZhdWx0IHNraW4uIEJ5IGRlZmF1bHQgdGhpcyBza2luIGNvbnRhaW5zIGFsbCBhdHRhY2htZW50cyB0aGF0IHdlcmUgbm90IGluIGEgc2tpbiBpbiBTcGluZS5cblx0ICpcblx0ICogU2VlIHtAbGluayBTa2VsZXRvbi5nZXRBdHRhY2htZW50QnlOYW1lfS5cblx0ICogTWF5IGJlIG51bGwuICovXG5cdGRlZmF1bHRTa2luOiBTa2luIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGV2ZW50cy4gKi9cblx0ZXZlbnRzID0gW10gYXMgRXZlbnREYXRhW107XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGFuaW1hdGlvbnMuICovXG5cdGFuaW1hdGlvbnMgPSBbXSBhcyBBbmltYXRpb25bXTtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgSUsgY29uc3RyYWludHMuICovXG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogcmVmZXJlbmNlIHJ1bnRpbWUgZG9lcyBub3QgcmVzdHJpY3QgdG8gc3BlY2lmaWMgdHlwZXNcblx0Y29uc3RyYWludHMgPSBbXSBhcyBDb25zdHJhaW50RGF0YTxhbnksIGFueT5bXTtcblxuXHQvKiogVGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgc2tlbGV0b24ncyBheGlzIGFsaWduZWQgYm91bmRpbmcgYm94IGluIHRoZSBzZXR1cCBwb3NlLiAqL1xuXHR4OiBudW1iZXIgPSAwO1xuXG5cdC8qKiBUaGUgWSBjb29yZGluYXRlIG9mIHRoZSBza2VsZXRvbidzIGF4aXMgYWxpZ25lZCBib3VuZGluZyBib3ggaW4gdGhlIHNldHVwIHBvc2UuICovXG5cdHk6IG51bWJlciA9IDA7XG5cblx0LyoqIFRoZSB3aWR0aCBvZiB0aGUgc2tlbGV0b24ncyBheGlzIGFsaWduZWQgYm91bmRpbmcgYm94IGluIHRoZSBzZXR1cCBwb3NlLiAqL1xuXHR3aWR0aDogbnVtYmVyID0gMDtcblxuXHQvKiogVGhlIGhlaWdodCBvZiB0aGUgc2tlbGV0b24ncyBheGlzIGFsaWduZWQgYm91bmRpbmcgYm94IGluIHRoZSBzZXR1cCBwb3NlLiAqL1xuXHRoZWlnaHQ6IG51bWJlciA9IDA7XG5cblx0LyoqIEJhc2VsaW5lIHNjYWxlIGZhY3RvciBmb3IgYXBwbHlpbmcgZGlzdGFuY2UtZGVwZW5kZW50IGVmZmVjdHMgb24gbm9uLXNjYWxhYmxlIHByb3BlcnRpZXMsIHN1Y2ggYXMgYW5nbGUgb3Igc2NhbGUuIERlZmF1bHRcblx0ICogaXMgMTAwLiAqL1xuXHRyZWZlcmVuY2VTY2FsZSA9IDEwMDtcblxuXHQvKiogVGhlIFNwaW5lIHZlcnNpb24gdXNlZCB0byBleHBvcnQgdGhlIHNrZWxldG9uIGRhdGEsIG9yIG51bGwuICovXG5cdHZlcnNpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdC8qKiBUaGUgc2tlbGV0b24gZGF0YSBoYXNoLiBUaGlzIHZhbHVlIHdpbGwgY2hhbmdlIGlmIGFueSBvZiB0aGUgc2tlbGV0b24gZGF0YSBoYXMgY2hhbmdlZC4gTWF5IGJlIG51bGwuICovXG5cdGhhc2g6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdC8vIE5vbmVzc2VudGlhbFxuXHQvKiogVGhlIGRvcGVzaGVldCBGUFMgaW4gU3BpbmUuIEF2YWlsYWJsZSBvbmx5IHdoZW4gbm9uZXNzZW50aWFsIGRhdGEgd2FzIGV4cG9ydGVkLiAqL1xuXHRmcHMgPSAzMDtcblxuXHQvKiogVGhlIHBhdGggdG8gdGhlIGltYWdlcyBmb2xkZXIgYXMgZGVmaW5lZCBpbiBTcGluZS4gQXZhaWxhYmxlIG9ubHkgd2hlbiBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuIE1heSBiZSBudWxsLiAqL1xuXHRpbWFnZXNQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuXHQvKiogVGhlIHBhdGggdG8gdGhlIGF1ZGlvIGZvbGRlciBhcyBkZWZpbmVkIGluIFNwaW5lLiBBdmFpbGFibGUgb25seSB3aGVuIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBleHBvcnRlZC4gTWF5IGJlIG51bGwuICovXG5cdGF1ZGlvUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIEZpbmRzIGEgYm9uZSBieSBjb21wYXJpbmcgZWFjaCBib25lJ3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2QgdGhhbiB0byBjYWxsIGl0XG5cdCAqIG11bHRpcGxlIHRpbWVzLlxuXHQgKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0ZmluZEJvbmUgKGJvbmVOYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIWJvbmVOYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJib25lTmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0Y29uc3QgYm9uZXMgPSB0aGlzLmJvbmVzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0aWYgKGJvbmVzW2ldLm5hbWUgPT09IGJvbmVOYW1lKSByZXR1cm4gYm9uZXNbaV07XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKiogRmluZHMgYSBzbG90IGJ5IGNvbXBhcmluZyBlYWNoIHNsb3QncyBuYW1lLiBJdCBpcyBtb3JlIGVmZmljaWVudCB0byBjYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGlzIG1ldGhvZCB0aGFuIHRvIGNhbGwgaXRcblx0ICogbXVsdGlwbGUgdGltZXMuXG5cdCAqIEByZXR1cm5zIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kU2xvdCAoc2xvdE5hbWU6IHN0cmluZykge1xuXHRcdGlmICghc2xvdE5hbWUpIHRocm93IG5ldyBFcnJvcihcInNsb3ROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRpZiAoc2xvdHNbaV0ubmFtZSA9PT0gc2xvdE5hbWUpIHJldHVybiBzbG90c1tpXTtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKiBGaW5kcyBhIHNraW4gYnkgY29tcGFyaW5nIGVhY2ggc2tpbidzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRoaXMgbWV0aG9kIHRoYW4gdG8gY2FsbCBpdFxuXHQgKiBtdWx0aXBsZSB0aW1lcy5cblx0ICogQHJldHVybnMgTWF5IGJlIG51bGwuICovXG5cdGZpbmRTa2luIChza2luTmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFza2luTmFtZSkgdGhyb3cgbmV3IEVycm9yKFwic2tpbk5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGNvbnN0IHNraW5zID0gdGhpcy5za2lucztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNraW5zLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdGlmIChza2luc1tpXS5uYW1lID09PSBza2luTmFtZSkgcmV0dXJuIHNraW5zW2ldO1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0LyoqIEZpbmRzIGFuIGV2ZW50IGJ5IGNvbXBhcmluZyBlYWNoIGV2ZW50cydzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRoaXMgbWV0aG9kIHRoYW4gdG8gY2FsbCBpdFxuXHQgKiBtdWx0aXBsZSB0aW1lcy5cblx0ICogQHJldHVybnMgTWF5IGJlIG51bGwuICovXG5cdGZpbmRFdmVudCAoZXZlbnREYXRhTmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFldmVudERhdGFOYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJldmVudERhdGFOYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBldmVudHMgPSB0aGlzLmV2ZW50cztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGV2ZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRpZiAoZXZlbnRzW2ldLm5hbWUgPT09IGV2ZW50RGF0YU5hbWUpIHJldHVybiBldmVudHNbaV07XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKiogQ29sbGVjdHMgYW5pbWF0aW9ucyB1c2VkIGJ5IHtAbGluayBTbGlkZXJEYXRhIHNsaWRlciBjb25zdHJhaW50c30uXG5cdCAqXG5cdCAqIFNsaWRlciBhbmltYXRpb25zIGFyZSBkZXNpZ25lZCB0byBiZSBhcHBsaWVkIGJ5IHNsaWRlciBjb25zdHJhaW50cyByYXRoZXIgdGhhbiBvbiB0aGVpciBvd24uIEFwcGxpY2F0aW9ucyB0aGF0IGhhdmUgYSB1c2VyXG5cdCAqIGNob29zZSBhbiBhbmltYXRpb24gbWF5IHdhbnQgdG8gZXhjbHVkZSB0aGVtLiAqL1xuXHRmaW5kU2xpZGVyQW5pbWF0aW9ucyAoYW5pbWF0aW9uczogQW5pbWF0aW9uW10pOiBBbmltYXRpb25bXSB7XG5cdFx0Y29uc3QgY29uc3RyYWludHMgPSB0aGlzLmNvbnN0cmFpbnRzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGhpcy5jb25zdHJhaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGRhdGEgPSBjb25zdHJhaW50c1tpXTtcblx0XHRcdGlmIChkYXRhIGluc3RhbmNlb2YgU2xpZGVyRGF0YSAmJiBkYXRhLmFuaW1hdGlvbiAhPSBudWxsKSBhbmltYXRpb25zLnB1c2goZGF0YS5hbmltYXRpb24pO1xuXHRcdH1cblx0XHRyZXR1cm4gYW5pbWF0aW9ucztcblx0fVxuXG5cdC8qKiBGaW5kcyBhbiBhbmltYXRpb24gYnkgY29tcGFyaW5nIGVhY2ggYW5pbWF0aW9uJ3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2QgdGhhbiB0b1xuXHQgKiBjYWxsIGl0IG11bHRpcGxlIHRpbWVzLlxuXHQgKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0ZmluZEFuaW1hdGlvbiAoYW5pbWF0aW9uTmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFhbmltYXRpb25OYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJhbmltYXRpb25OYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBhbmltYXRpb25zID0gdGhpcy5hbmltYXRpb25zO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gYW5pbWF0aW9ucy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRpZiAoYW5pbWF0aW9uc1tpXS5uYW1lID09PSBhbmltYXRpb25OYW1lKSByZXR1cm4gYW5pbWF0aW9uc1tpXTtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIC0tLSBDb25zdHJhaW50cy5cblxuXHQvKiogRmluZHMgYSBjb25zdHJhaW50IG9mIHRoZSBzcGVjaWZpZWQgdHlwZSBieSBjb21wYXJpbmcgZWFjaCBjb25zdHJhaW50cydzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mXG5cdCAgKiB0aGlzIG1ldGhvZCB0aGFuIHRvIGNhbGwgaXQgbXVsdGlwbGUgdGltZXMuICovXG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogcmVmZXJlbmNlIHJ1bnRpbWUgZG9lcyBub3QgcmVzdHJpY3QgdG8gc3BlY2lmaWMgdHlwZXNcblx0ZmluZENvbnN0cmFpbnQ8VCBleHRlbmRzIENvbnN0cmFpbnREYXRhPGFueSwgYW55Pj4gKGNvbnN0cmFpbnROYW1lOiBzdHJpbmcsIHR5cGU6IG5ldyAobmFtZTogc3RyaW5nKSA9PiBUKTogVCB8IG51bGwge1xuXHRcdGlmICghY29uc3RyYWludE5hbWUpIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRpZiAodHlwZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ0eXBlIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBjb25zdHJhaW50cyA9IHRoaXMuY29uc3RyYWludHM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aGlzLmNvbnN0cmFpbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgY29uc3RyYWludCA9IGNvbnN0cmFpbnRzW2ldO1xuXHRcdFx0aWYgKGNvbnN0cmFpbnQgaW5zdGFuY2VvZiB0eXBlICYmIGNvbnN0cmFpbnQubmFtZSA9PT0gY29uc3RyYWludE5hbWUpIHJldHVybiBjb25zdHJhaW50IGFzIFQ7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cbn1cbiJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFRL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzdDOzs7WUFHWTtBQUNaLE1BQU0sT0FBTyxZQUFZO0lBRXhCLDZHQUE2RztJQUM3RyxJQUFJLEdBQWtCLElBQUksQ0FBQztJQUUzQix5RkFBeUY7SUFDekYsS0FBSyxHQUFHLEVBQWdCLENBQUMsQ0FBQyx5QkFBeUI7SUFFbkQseURBQXlEO0lBQ3pELEtBQUssR0FBRyxFQUFnQixDQUFDLENBQUMseUJBQXlCO0lBRW5ELEtBQUssR0FBRyxFQUFZLENBQUM7SUFFckI7OztzQkFHa0I7SUFDbEIsV0FBVyxHQUFnQixJQUFJLENBQUM7SUFFaEMsNkJBQTZCO0lBQzdCLE1BQU0sR0FBRyxFQUFpQixDQUFDO0lBRTNCLGlDQUFpQztJQUNqQyxVQUFVLEdBQUcsRUFBaUIsQ0FBQztJQUUvQixxQ0FBcUM7SUFDckMsb0dBQW9HO0lBQ3BHLFdBQVcsR0FBRyxFQUFnQyxDQUFDO0lBRS9DLHNGQUFzRjtJQUN0RixDQUFDLEdBQVcsQ0FBQyxDQUFDO0lBRWQsc0ZBQXNGO0lBQ3RGLENBQUMsR0FBVyxDQUFDLENBQUM7SUFFZCwrRUFBK0U7SUFDL0UsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUVsQixnRkFBZ0Y7SUFDaEYsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUVuQjtpQkFDYTtJQUNiLGNBQWMsR0FBRyxHQUFHLENBQUM7SUFFckIsbUVBQW1FO0lBQ25FLE9BQU8sR0FBa0IsSUFBSSxDQUFDO0lBRTlCLDJHQUEyRztJQUMzRyxJQUFJLEdBQWtCLElBQUksQ0FBQztJQUUzQixlQUFlO0lBQ2Ysc0ZBQXNGO0lBQ3RGLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFFVCww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TyxVQUFlLENBQUM7UUFDOUYsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUVEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IEFuaW1hdGlvbiB9IGZyb20gXCIuL0FuaW1hdGlvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEJvbmVEYXRhIH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9Db25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBFdmVudERhdGEgfSBmcm9tIFwiLi9FdmVudERhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgU2tpbiB9IGZyb20gXCIuL1NraW4uanNcIjtcbmltcG9ydCB7IFNsaWRlckRhdGEgfSBmcm9tIFwiLi9TbGlkZXJEYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNsb3REYXRhIH0gZnJvbSBcIi4vU2xvdERhdGEuanNcIjtcblxuLyoqIFN0b3JlcyB0aGUgc2V0dXAgcG9zZSBhbmQgYWxsIG9mIHRoZSBzdGF0ZWxlc3MgZGF0YSBmb3IgYSBza2VsZXRvbi5cbiAqXG4gKiBTZWUgW0RhdGEgb2JqZWN0c10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXJ1bnRpbWUtYXJjaGl0ZWN0dXJlI0RhdGEtb2JqZWN0cykgaW4gdGhlIFNwaW5lIFJ1bnRpbWVzXG4gKiBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkRhdGEge1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBuYW1lLCB3aGljaCBieSBkZWZhdWx0IGlzIHRoZSBuYW1lIG9mIHRoZSBza2VsZXRvbiBkYXRhIGZpbGUsIGlmIHBvc3NpYmxlLiBNYXkgYmUgbnVsbC4gKi9cblx0bmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGJvbmVzLCBzb3J0ZWQgcGFyZW50IGZpcnN0LiBUaGUgcm9vdCBib25lIGlzIGFsd2F5cyB0aGUgZmlyc3QgYm9uZS4gKi9cblx0Ym9uZXMgPSBbXSBhcyBCb25lRGF0YVtdOyAvLyBPcmRlcmVkIHBhcmVudHMgZmlyc3QuXG5cblx0LyoqIFRoZSBza2VsZXRvbidzIHNsb3RzIGluIHRoZSBzZXR1cCBwb3NlIGRyYXcgb3JkZXIuICovXG5cdHNsb3RzID0gW10gYXMgU2xvdERhdGFbXTsgLy8gU2V0dXAgcG9zZSBkcmF3IG9yZGVyLlxuXG5cdHNraW5zID0gW10gYXMgU2tpbltdO1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBkZWZhdWx0IHNraW4uIEJ5IGRlZmF1bHQgdGhpcyBza2luIGNvbnRhaW5zIGFsbCBhdHRhY2htZW50cyB0aGF0IHdlcmUgbm90IGluIGEgc2tpbiBpbiBTcGluZS5cblx0ICpcblx0ICogU2VlIHtAbGluayBTa2VsZXRvbi5nZXRBdHRhY2htZW50QnlOYW1lfS5cblx0ICogTWF5IGJlIG51bGwuICovXG5cdGRlZmF1bHRTa2luOiBTa2luIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGV2ZW50cy4gKi9cblx0ZXZlbnRzID0gW10gYXMgRXZlbnREYXRhW107XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGFuaW1hdGlvbnMuICovXG5cdGFuaW1hdGlvbnMgPSBbXSBhcyBBbmltYXRpb25bXTtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgSUsgY29uc3RyYWludHMuICovXG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogcmVmZXJlbmNlIHJ1bnRpbWUgZG9lcyBub3QgcmVzdHJpY3QgdG8gc3BlY2lmaWMgdHlwZXNcblx0Y29uc3RyYWludHMgPSBbXSBhcyBDb25zdHJhaW50RGF0YTxhbnksIGFueT5bXTtcblxuXHQvKiogVGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgc2tlbGV0b24ncyBheGlzIGFsaWduZWQgYm91bmRpbmcgYm94IGluIHRoZSBzZXR1cCBwb3NlLiAqL1xuXHR4OiBudW1iZXIgPSAwO1xuXG5cdC8qKiBUaGUgWSBjb29yZGluYXRlIG9mIHRoZSBza2VsZXRvbidzIGF4aXMgYWxpZ25lZCBib3VuZGluZyBib3ggaW4gdGhlIHNldHVwIHBvc2UuICovXG5cdHk6IG51bWJlciA9IDA7XG5cblx0LyoqIFRoZSB3aWR0aCBvZiB0aGUgc2tlbGV0b24ncyBheGlzIGFsaWduZWQgYm91bmRpbmcgYm94IGluIHRoZSBzZXR1cCBwb3NlLiAqL1xuXHR3aWR0aDogbnVtYmVyID0gMDtcblxuXHQvKiogVGhlIGhlaWdodCBvZiB0aGUgc2tlbGV0b24ncyBheGlzIGFsaWduZWQgYm91bmRpbmcgYm94IGluIHRoZSBzZXR1cCBwb3NlLiAqL1xuXHRoZWlnaHQ6IG51bWJlciA9IDA7XG5cblx0LyoqIEJhc2VsaW5lIHNjYWxlIGZhY3RvciBmb3IgYXBwbHlpbmcgZGlzdGFuY2UtZGVwZW5kZW50IGVmZmVjdHMgb24gbm9uLXNjYWxhYmxlIHByb3BlcnRpZXMsIHN1Y2ggYXMgYW5nbGUgb3Igc2NhbGUuIERlZmF1bHRcblx0ICogaXMgMTAwLiAqL1xuXHRyZWZlcmVuY2VTY2FsZSA9IDEwMDtcblxuXHQvKiogVGhlIFNwaW5lIHZlcnNpb24gdXNlZCB0byBleHBvcnQgdGhlIHNrZWxldG9uIGRhdGEsIG9yIG51bGwuICovXG5cdHZlcnNpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdC8qKiBUaGUgc2tlbGV0b24gZGF0YSBoYXNoLiBUaGlzIHZhbHVlIHdpbGwgY2hhbmdlIGlmIGFueSBvZiB0aGUgc2tlbGV0b24gZGF0YSBoYXMgY2hhbmdlZC4gTWF5IGJlIG51bGwuICovXG5cdGhhc2g6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdC8vIE5vbmVzc2VudGlhbFxuXHQvKiogVGhlIGRvcGVzaGVldCBGUFMgaW4gU3BpbmUuIEF2YWlsYWJsZSBvbmx5IHdoZW4gbm9uZXNzZW50aWFsIGRhdGEgd2FzIGV4cG9ydGVkLiAqL1xuXHRmcHMgPSAzMDtcblxuXHQvKiogVGhlIHBhdGggdG8gdGhlIGltYWdlcyBmb2xkZXIgYXMgZGVmaW5lZCBpbiBTcGluZS4gQXZhaWxhYmxlIG9ubHkgd2hlbiBub25lc3NlbnRpYWwgZGF0YSB3YXMgZXhwb3J0ZWQuIE1heSBiZSBudWxsLiAqL1xuXHRpbWFnZXNQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuXHQvKiogVGhlIHBhdGggdG8gdGhlIGF1ZGlvIGZvbGRlciBhcyBkZWZpbmVkIGluIFNwaW5lLiBBdmFpbGFibGUgb25seSB3aGVuIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBleHBvcnRlZC4gTWF5IGJlIG51bGwuICovXG5cdGF1ZGlvUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIEZpbmRzIGEgYm9uZSBieSBjb21wYXJpbmcgZWFjaCBib25lJ3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2QgdGhhbiB0byBjYWxsIGl0XG5cdCAqIG11bHRpcGxlIHRpbWVzLlxuXHQgKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0ZmluZEJvbmUgKGJvbmVOYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIWJvbmVOYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJib25lTmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0Y29uc3QgYm9uZXMgPSB0aGlzLmJvbmVzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0aWYgKGJvbmVzW2ldLm5hbWUgPT09IGJvbmVOYW1lKSByZXR1cm4gYm9uZXNbaV07XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKiogRmluZHMgYSBzbG90IGJ5IGNvbXBhcmluZyBlYWNoIHNsb3QncyBuYW1lLiBJdCBpcyBtb3JlIGVmZmljaWVudCB0byBjYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGlzIG1ldGhvZCB0aGFuIHRvIGNhbGwgaXRcblx0ICogbXVsdGlwbGUgdGltZXMuXG5cdCAqIEByZXR1cm5zIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kU2xvdCAoc2xvdE5hbWU6IHN0cmluZykge1xuXHRcdGlmICghc2xvdE5hbWUpIHRocm93IG5ldyBFcnJvcihcInNsb3ROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRpZiAoc2xvdHNbaV0ubmFtZSA9PT0gc2xvdE5hbWUpIHJldHVybiBzbG90c1tpXTtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKiBGaW5kcyBhIHNraW4gYnkgY29tcGFyaW5nIGVhY2ggc2tpbidzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRoaXMgbWV0aG9kIHRoYW4gdG8gY2FsbCBpdFxuXHQgKiBtdWx0aXBsZSB0aW1lcy5cblx0ICogQHJldHVybnMgTWF5IGJlIG51bGwuICovXG5cdGZpbmRTa2luIChza2luTmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFza2luTmFtZSkgdGhyb3cgbmV3IEVycm9yKFwic2tpbk5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGNvbnN0IHNraW5zID0gdGhpcy5za2lucztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNraW5zLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdGlmIChza2luc1tpXS5uYW1lID09PSBza2luTmFtZSkgcmV0dXJuIHNraW5zW2ldO1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0LyoqIEZpbmRzIGFuIGV2ZW50IGJ5IGNvbXBhcmluZyBlYWNoIGV2ZW50cydzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRoaXMgbWV0aG9kIHRoYW4gdG8gY2FsbCBpdFxuXHQgKiBtdWx0aXBsZSB0aW1lcy5cblx0ICogQHJldHVybnMgTWF5IGJlIG51bGwuICovXG5cdGZpbmRFdmVudCAoZXZlbnREYXRhTmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFldmVudERhdGFOYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJldmVudERhdGFOYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBldmVudHMgPSB0aGlzLmV2ZW50cztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGV2ZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRpZiAoZXZlbnRzW2ldLm5hbWUgPT09IGV2ZW50RGF0YU5hbWUpIHJldHVybiBldmVudHNbaV07XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKiogQ29sbGVjdHMgYW5pbWF0aW9ucyB1c2VkIGJ5IHtAbGluayBTbGlkZXJEYXRhIHNsaWRlciBjb25zdHJhaW50c30uXG5cdCAqXG5cdCAqIFNsaWRlciBhbmltYXRpb25zIGFyZSBkZXNpZ25lZCB0byBiZSBhcHBsaWVkIGJ5IHNsaWRlciBjb25zdHJhaW50cyByYXRoZXIgdGhhbiBvbiB0aGVpciBvd24uIEFwcGxpY2F0aW9ucyB0aGF0IGhhdmUgYSB1c2VyXG5cdCAqIGNob29zZSBhbiBhbmltYXRpb24gbWF5IHdhbnQgdG8gZXhjbHVkZSB0aGVtLiAqL1xuXHRmaW5kU2xpZGVyQW5pbWF0aW9ucyAoYW5pbWF0aW9uczogQW5pbWF0aW9uW10pOiBBbmltYXRpb25bXSB7XG5cdFx0Y29uc3QgY29uc3RyYWludHMgPSB0aGlzLmNvbnN0cmFpbnRzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGhpcy5jb25zdHJhaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGRhdGEgPSBjb25zdHJhaW50c1tpXTtcblx0XHRcdGlmIChkYXRhIGluc3RhbmNlb2YgU2xpZGVyRGF0YSAmJiBkYXRhLmFuaW1hdGlvbiAhPSBudWxsKSBhbmltYXRpb25zLnB1c2goZGF0YS5hbmltYXRpb24pO1xuXHRcdH1cblx0XHRyZXR1cm4gYW5pbWF0aW9ucztcblx0fVxuXG5cdC8qKiBGaW5kcyBhbiBhbmltYXRpb24gYnkgY29tcGFyaW5nIGVhY2ggYW5pbWF0aW9uJ3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2QgdGhhbiB0b1xuXHQgKiBjYWxsIGl0IG11bHRpcGxlIHRpbWVzLlxuXHQgKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0ZmluZEFuaW1hdGlvbiAoYW5pbWF0aW9uTmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFhbmltYXRpb25OYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJhbmltYXRpb25OYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBhbmltYXRpb25zID0gdGhpcy5hbmltYXRpb25zO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gYW5pbWF0aW9ucy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRpZiAoYW5pbWF0aW9uc1tpXS5uYW1lID09PSBhbmltYXRpb25OYW1lKSByZXR1cm4gYW5pbWF0aW9uc1tpXTtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIC0tLSBDb25zdHJhaW50cy5cblxuXHQvKiogRmluZHMgYSBjb25zdHJhaW50IG9mIHRoZSBzcGVjaWZpZWQgdHlwZSBieSBjb21wYXJpbmcgZWFjaCBjb25zdHJhaW50cydzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mXG5cdCAgKiB0aGlzIG1ldGhvZCB0aGFuIHRvIGNhbGwgaXQgbXVsdGlwbGUgdGltZXMuICovXG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogcmVmZXJlbmNlIHJ1bnRpbWUgZG9lcyBub3QgcmVzdHJpY3QgdG8gc3BlY2lmaWMgdHlwZXNcblx0ZmluZENvbnN0cmFpbnQ8VCBleHRlbmRzIENvbnN0cmFpbnREYXRhPGFueSwgYW55Pj4gKGNvbnN0cmFpbnROYW1lOiBzdHJpbmcsIHR5cGU6IGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQpOiBUIHwgbnVsbCB7XG5cdFx0aWYgKCFjb25zdHJhaW50TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiY29uc3RyYWludE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGlmICh0eXBlID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInR5cGUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGNvbnN0IGNvbnN0cmFpbnRzID0gdGhpcy5jb25zdHJhaW50cztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRoaXMuY29uc3RyYWludHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBjb25zdHJhaW50ID0gY29uc3RyYWludHNbaV07XG5cdFx0XHRpZiAoY29uc3RyYWludCBpbnN0YW5jZW9mIHR5cGUgJiYgY29uc3RyYWludC5uYW1lID09PSBjb25zdHJhaW50TmFtZSkgcmV0dXJuIGNvbnN0cmFpbnQgYXMgVDtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxufVxuIl19
@@ -40,17 +40,21 @@ export class SkeletonRendererCore {
40
40
  this.renderCommands.length = 0;
41
41
  const clipper = this.clipping;
42
42
  const drawOrder = skeleton.drawOrder.appliedPose;
43
- for (let i = 0; i < skeleton.slots.length; i++) {
43
+ for (let i = 0, n = drawOrder.length; i < n; i++) {
44
44
  const slot = drawOrder[i];
45
- const attachment = slot.appliedPose.attachment;
46
- if (!attachment) {
45
+ if (!slot.bone.active) {
47
46
  clipper.clipEnd(slot);
48
47
  continue;
49
48
  }
50
49
  const pose = slot.appliedPose;
50
+ const attachment = pose.attachment;
51
+ if (!attachment) {
52
+ clipper.clipEnd(slot);
53
+ continue;
54
+ }
51
55
  const slotColor = pose.color;
52
56
  const alpha = slotColor.a;
53
- if ((alpha === 0 || !slot.bone.active) && !(attachment instanceof ClippingAttachment)) {
57
+ if (alpha === 0 && !(attachment instanceof ClippingAttachment)) {
54
58
  clipper.clipEnd(slot);
55
59
  continue;
56
60
  }
@@ -97,10 +101,16 @@ export class SkeletonRendererCore {
97
101
  texture = sequence.regions[sequenceIndex]?.texture;
98
102
  }
99
103
  else if (attachment instanceof ClippingAttachment) {
104
+ clipper.clipEnd(slot);
100
105
  clipper.clipStart(skeleton, slot, attachment);
101
106
  continue;
102
107
  }
103
108
  else {
109
+ clipper.clipEnd(slot);
110
+ continue;
111
+ }
112
+ if (!texture) {
113
+ clipper.clipEnd(slot);
104
114
  continue;
105
115
  }
106
116
  const skelColor = skeleton.color;
@@ -307,4 +317,4 @@ class CommandPool {
307
317
  this.inUse.length = 0;
308
318
  }
309
319
  }
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25SZW5kZXJlckNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b25SZW5kZXJlckNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE1BQU0sT0FBTyxvQkFBb0I7SUFDeEIsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDaEMsYUFBYSxHQUFHLElBQUksWUFBWSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1QyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUNsQyxjQUFjLEdBQW9CLEVBQUUsQ0FBQztJQUU3QyxNQUFNLENBQUUsUUFBa0IsRUFBRSxHQUFHLEdBQUcsS0FBSyxFQUFFLE9BQTBDLEVBQUUsTUFBTSxHQUFHLENBQUM7UUFDOUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU5QixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFD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SUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDO0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IENsaXBwaW5nQXR0YWNobWVudCwgTWVzaEF0dGFjaG1lbnQsIFJlZ2lvbkF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbkNsaXBwaW5nIH0gZnJvbSBcIi4vU2tlbGV0b25DbGlwcGluZy5qc1wiO1xuaW1wb3J0IHsgQmxlbmRNb2RlIH0gZnJvbSBcIi4vU2xvdERhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgQ29sb3IsIE51bWJlckFycmF5TGlrZSB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBTa2VsZXRvblJlbmRlcmVyQ29yZSB7XG5cdHByaXZhdGUgY29tbWFuZFBvb2wgPSBuZXcgQ29tbWFuZFBvb2woKTtcblx0cHJpdmF0ZSB3b3JsZFZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheSgxMiAqIDEwMjQpO1xuXHRwcml2YXRlIHF1YWRJbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KFswLCAxLCAyLCAyLCAzLCAwXSk7XG5cdHByaXZhdGUgY2xpcHBpbmcgPSBuZXcgU2tlbGV0b25DbGlwcGluZygpO1xuXHRwcml2YXRlIHJlbmRlckNvbW1hbmRzOiBSZW5kZXJDb21tYW5kW10gPSBbXTtcblxuXHRyZW5kZXIgKHNrZWxldG9uOiBTa2VsZXRvbiwgcG1hID0gZmFsc2UsIGluQ29sb3I/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSwgc3RyaWRlID0gMik6IFJlbmRlckNvbW1hbmQgfCB1bmRlZmluZWQge1xuXHRcdHRoaXMuY29tbWFuZFBvb2wucmVzZXQoKTtcblx0XHR0aGlzLnJlbmRlckNvbW1hbmRzLmxlbmd0aCA9IDA7XG5cblx0XHRjb25zdCBjbGlwcGVyID0gdGhpcy5jbGlwcGluZztcblxuXHRcdGNvbnN0IGRyYXdPcmRlciA9IHNrZWxldG9uLmRyYXdPcmRlci5hcHBsaWVkUG9zZTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNrZWxldG9uLnNsb3RzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBzbG90ID0gZHJhd09yZGVyW2ldO1xuXHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IHNsb3QuYXBwbGllZFBvc2UuYXR0YWNobWVudDtcblxuXHRcdFx0aWYgKCFhdHRhY2htZW50KSB7XG5cdFx0XHRcdGNsaXBwZXIuY2xpcEVuZChzbG90KTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHBvc2UgPSBzbG90LmFwcGxpZWRQb3NlO1xuXHRcdFx0Y29uc3Qgc2xvdENvbG9yID0gcG9zZS5jb2xvcjtcblx0XHRcdGNvbnN0IGFscGhhID0gc2xvdENvbG9yLmE7XG5cdFx0XHRpZiAoKGFscGhhID09PSAwIHx8ICFzbG90LmJvbmUuYWN0aXZlKSAmJiAhKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBDbGlwcGluZ0F0dGFjaG1lbnQpKSB7XG5cdFx0XHRcdGNsaXBwZXIuY2xpcEVuZChzbG90KTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGxldCB2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlO1xuXHRcdFx0bGV0IHZlcnRpY2VzQ291bnQ6IG51bWJlcjtcblx0XHRcdGxldCB1dnM6IE51bWJlckFycmF5TGlrZTtcblx0XHRcdGxldCBpbmRpY2VzOiBudW1iZXJbXSB8IFVpbnQxNkFycmF5O1xuXHRcdFx0bGV0IGluZGljZXNDb3VudDogbnVtYmVyO1xuXHRcdFx0bGV0IGF0dGFjaG1lbnRDb2xvcjogQ29sb3I7XG5cdFx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IHRleHR1cmUgZGVwZW5kcyBvbiB0aGUgcnVudGltZVxuXHRcdFx0bGV0IHRleHR1cmU6IGFueTtcblxuXHRcdFx0aWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBSZWdpb25BdHRhY2htZW50KSB7XG5cdFx0XHRcdGF0dGFjaG1lbnRDb2xvciA9IGF0dGFjaG1lbnQuY29sb3I7XG5cblx0XHRcdFx0aWYgKGF0dGFjaG1lbnRDb2xvci5hID09PSAwKSB7XG5cdFx0XHRcdFx0Y2xpcHBlci5jbGlwRW5kKHNsb3QpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgc2VxdWVuY2UgPSBhdHRhY2htZW50LnNlcXVlbmNlO1xuXHRcdFx0XHRjb25zdCBzZXF1ZW5jZUluZGV4ID0gc2VxdWVuY2UucmVzb2x2ZUluZGV4KHBvc2UpO1xuXHRcdFx0XHRhdHRhY2htZW50LmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNsb3QsIGF0dGFjaG1lbnQuZ2V0T2Zmc2V0cyhwb3NlKSwgdGhpcy53b3JsZFZlcnRpY2VzLCAwLCBzdHJpZGUpO1xuXG5cdFx0XHRcdHZlcnRpY2VzID0gdGhpcy53b3JsZFZlcnRpY2VzO1xuXHRcdFx0XHR2ZXJ0aWNlc0NvdW50ID0gNDtcblx0XHRcdFx0dXZzID0gc2VxdWVuY2UuZ2V0VVZzKHNlcXVlbmNlSW5kZXgpO1xuXHRcdFx0XHRpbmRpY2VzID0gdGhpcy5xdWFkSW5kaWNlcztcblx0XHRcdFx0aW5kaWNlc0NvdW50ID0gNjtcblx0XHRcdFx0dGV4dHVyZSA9IHNlcXVlbmNlLnJlZ2lvbnNbc2VxdWVuY2VJbmRleF0/LnRleHR1cmU7XG5cblx0XHRcdH0gZWxzZSBpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIE1lc2hBdHRhY2htZW50KSB7XG5cdFx0XHRcdGF0dGFjaG1lbnRDb2xvciA9IGF0dGFjaG1lbnQuY29sb3I7XG5cblx0XHRcdFx0aWYgKGF0dGFjaG1lbnRDb2xvci5hID09PSAwKSB7XG5cdFx0XHRcdFx0Y2xpcHBlci5jbGlwRW5kKHNsb3QpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHRoaXMud29ybGRWZXJ0aWNlcy5sZW5ndGggPCBhdHRhY2htZW50LndvcmxkVmVydGljZXNMZW5ndGgpXG5cdFx0XHRcdFx0dGhpcy53b3JsZFZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheShhdHRhY2htZW50LndvcmxkVmVydGljZXNMZW5ndGgpO1xuXG5cdFx0XHRcdGF0dGFjaG1lbnQuY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIDAsIGF0dGFjaG1lbnQud29ybGRWZXJ0aWNlc0xlbmd0aCwgdGhpcy53b3JsZFZlcnRpY2VzLCAwLCBzdHJpZGUpO1xuXHRcdFx0XHR2ZXJ0aWNlcyA9IHRoaXMud29ybGRWZXJ0aWNlcztcblx0XHRcdFx0dmVydGljZXNDb3VudCA9IGF0dGFjaG1lbnQud29ybGRWZXJ0aWNlc0xlbmd0aCA+PiAxO1xuXG5cdFx0XHRcdGNvbnN0IHNlcXVlbmNlID0gYXR0YWNobWVudC5zZXF1ZW5jZTtcblx0XHRcdFx0Y29uc3Qgc2VxdWVuY2VJbmRleCA9IHNlcXVlbmNlLnJlc29sdmVJbmRleChwb3NlKTtcblxuXHRcdFx0XHR1dnMgPSBzZXF1ZW5jZS5nZXRVVnMoc2VxdWVuY2VJbmRleCk7XG5cdFx0XHRcdGluZGljZXMgPSBhdHRhY2htZW50LnRyaWFuZ2xlcztcblx0XHRcdFx0aW5kaWNlc0NvdW50ID0gaW5kaWNlcy5sZW5ndGg7XG5cdFx0XHRcdHRleHR1cmUgPSBzZXF1ZW5jZS5yZWdpb25zW3NlcXVlbmNlSW5kZXhdPy50ZXh0dXJlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBDbGlwcGluZ0F0dGFjaG1lbnQpIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwU3RhcnQoc2tlbGV0b24sIHNsb3QsIGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBza2VsQ29sb3IgPSBza2VsZXRvbi5jb2xvcjtcblx0XHRcdGxldCBjb2xvcjogbnVtYmVyLCBkYXJrQ29sb3I6IG51bWJlcjtcblx0XHRcdGlmIChwbWEpIHtcblx0XHRcdFx0bGV0IGE6IG51bWJlcjtcblx0XHRcdFx0aWYgKGluQ29sb3IpIHtcblx0XHRcdFx0XHRhID0gTWF0aC5mbG9vcihpbkNvbG9yWzNdICogc2tlbENvbG9yLmEgKiBzbG90Q29sb3IuYSAqIGF0dGFjaG1lbnRDb2xvci5hICogMjU1KTtcblx0XHRcdFx0XHRjb25zdCByID0gTWF0aC5mbG9vcihhICogaW5Db2xvclswXSAqIHNrZWxDb2xvci5yICogc2xvdENvbG9yLnIgKiBhdHRhY2htZW50Q29sb3Iucik7XG5cdFx0XHRcdFx0Y29uc3QgZyA9IE1hdGguZmxvb3IoYSAqIGluQ29sb3JbMV0gKiBza2VsQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmcpO1xuXHRcdFx0XHRcdGNvbnN0IGIgPSBNYXRoLmZsb29yKGEgKiBpbkNvbG9yWzJdICogc2tlbENvbG9yLmIgKiBzbG90Q29sb3IuYiAqIGF0dGFjaG1lbnRDb2xvci5iKTtcblx0XHRcdFx0XHRjb2xvciA9IChhIDw8IDI0KSB8IChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhID0gTWF0aC5mbG9vcihza2VsQ29sb3IuYSAqIHNsb3RDb2xvci5hICogYXR0YWNobWVudENvbG9yLmEgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IHIgPSBNYXRoLmZsb29yKGEgKiBza2VsQ29sb3IuciAqIHNsb3RDb2xvci5yICogYXR0YWNobWVudENvbG9yLnIpO1xuXHRcdFx0XHRcdGNvbnN0IGcgPSBNYXRoLmZsb29yKGEgKiBza2VsQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmcpO1xuXHRcdFx0XHRcdGNvbnN0IGIgPSBNYXRoLmZsb29yKGEgKiBza2VsQ29sb3IuYiAqIHNsb3RDb2xvci5iICogYXR0YWNobWVudENvbG9yLmIpO1xuXHRcdFx0XHRcdGNvbG9yID0gKGEgPDwgMjQpIHwgKHIgPDwgMTYpIHwgKGcgPDwgOCkgfCBiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGFya0NvbG9yID0gMHhmZjAwMDAwMDtcblx0XHRcdFx0aWYgKHBvc2UuZGFya0NvbG9yKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyByLCBnLCBiIH0gPSBwb3NlLmRhcmtDb2xvcjtcblx0XHRcdFx0XHRkYXJrQ29sb3IgPSAweGZmMDAwMDAwIHxcblx0XHRcdFx0XHRcdChNYXRoLmZsb29yKHIgKiBhKSA8PCAxNikgfFxuXHRcdFx0XHRcdFx0KE1hdGguZmxvb3IoZyAqIGEpIDw8IDgpIHxcblx0XHRcdFx0XHRcdE1hdGguZmxvb3IoYiAqIGEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoaW5Db2xvcikge1xuXHRcdFx0XHRcdGNvbnN0IGEgPSBNYXRoLmZsb29yKGluQ29sb3JbM10gKiBza2VsQ29sb3IuYSAqIHNsb3RDb2xvci5hICogYXR0YWNobWVudENvbG9yLmEgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IHIgPSBNYXRoLmZsb29yKGluQ29sb3JbMF0gKiBza2VsQ29sb3IuciAqIHNsb3RDb2xvci5yICogYXR0YWNobWVudENvbG9yLnIgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IGcgPSBNYXRoLmZsb29yKGluQ29sb3JbMV0gKiBza2VsQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmcgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IGIgPSBNYXRoLmZsb29yKGluQ29sb3JbMl0gKiBza2VsQ29sb3IuYiAqIHNsb3RDb2xvci5iICogYXR0YWNobWVudENvbG9yLmIgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbG9yID0gKGEgPDwgMjQpIHwgKHIgPDwgMTYpIHwgKGcgPDwgOCkgfCBiO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IGEgPSBNYXRoLmZsb29yKHNrZWxDb2xvci5hICogc2xvdENvbG9yLmEgKiBhdHRhY2htZW50Q29sb3IuYSAqIDI1NSk7XG5cdFx0XHRcdFx0Y29uc3QgciA9IE1hdGguZmxvb3Ioc2tlbENvbG9yLnIgKiBzbG90Q29sb3IuciAqIGF0dGFjaG1lbnRDb2xvci5yICogMjU1KTtcblx0XHRcdFx0XHRjb25zdCBnID0gTWF0aC5mbG9vcihza2VsQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmcgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IGIgPSBNYXRoLmZsb29yKHNrZWxDb2xvci5iICogc2xvdENvbG9yLmIgKiBhdHRhY2htZW50Q29sb3IuYiAqIDI1NSk7XG5cdFx0XHRcdFx0Y29sb3IgPSAoYSA8PCAyNCkgfCAociA8PCAxNikgfCAoZyA8PCA4KSB8IGI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkYXJrQ29sb3IgPSAwO1xuXHRcdFx0XHRpZiAocG9zZS5kYXJrQ29sb3IpIHtcblx0XHRcdFx0XHRjb25zdCB7IHIsIGcsIGIgfSA9IHBvc2UuZGFya0NvbG9yO1xuXHRcdFx0XHRcdGRhcmtDb2xvciA9IChNYXRoLmZsb29yKHIgKiAyNTUpIDw8IDE2KSB8IChNYXRoLmZsb29yKGcgKiAyNTUpIDw8IDgpIHwgTWF0aC5mbG9vcihiICogMjU1KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY2xpcHBlci5pc0NsaXBwaW5nKCkpIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwVHJpYW5nbGVzVW5wYWNrZWQodmVydGljZXMsIDAsIGluZGljZXMsIGluZGljZXNDb3VudCwgdXZzLCBzdHJpZGUpO1xuXHRcdFx0XHR2ZXJ0aWNlcyA9IGNsaXBwZXIuY2xpcHBlZFZlcnRpY2VzVHlwZWQ7XG5cdFx0XHRcdHZlcnRpY2VzQ291bnQgPSBjbGlwcGVyLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aCAvIHN0cmlkZTtcblx0XHRcdFx0dXZzID0gY2xpcHBlci5jbGlwcGVkVVZzVHlwZWQ7XG5cdFx0XHRcdGluZGljZXMgPSBjbGlwcGVyLmNsaXBwZWRUcmlhbmdsZXNUeXBlZDtcblx0XHRcdFx0aW5kaWNlc0NvdW50ID0gY2xpcHBlci5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjbWQgPSB0aGlzLmNvbW1hbmRQb29sLmdldENvbW1hbmQodmVydGljZXNDb3VudCwgaW5kaWNlc0NvdW50LCBzdHJpZGUpO1xuXHRcdFx0Y21kLmJsZW5kTW9kZSA9IHNsb3QuZGF0YS5ibGVuZE1vZGU7XG5cdFx0XHRjbWQudGV4dHVyZSA9IHRleHR1cmU7XG5cblx0XHRcdGNtZC5wb3NpdGlvbnMuc2V0KHZlcnRpY2VzLnN1YmFycmF5KDAsIHZlcnRpY2VzQ291bnQgKiBzdHJpZGUpKTtcblx0XHRcdGNtZC51dnMuc2V0KHV2cy5zdWJhcnJheSgwLCB2ZXJ0aWNlc0NvdW50IDw8IDEpKTtcblxuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCB2ZXJ0aWNlc0NvdW50OyBqKyspIHtcblx0XHRcdFx0Y21kLmNvbG9yc1tqXSA9IGNvbG9yO1xuXHRcdFx0XHRjbWQuZGFya0NvbG9yc1tqXSA9IGRhcmtDb2xvcjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGluZGljZXMgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkge1xuXHRcdFx0XHRjbWQuaW5kaWNlcy5zZXQoaW5kaWNlcy5zdWJhcnJheSgwLCBpbmRpY2VzQ291bnQpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNtZC5pbmRpY2VzLnNldChpbmRpY2VzLnNsaWNlKDAsIGluZGljZXNDb3VudCkpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnJlbmRlckNvbW1hbmRzLnB1c2goY21kKTtcblx0XHRcdGNsaXBwZXIuY2xpcEVuZChzbG90KTtcblx0XHR9XG5cblx0XHRjbGlwcGVyLmNsaXBFbmQoKTtcblx0XHRyZXR1cm4gdGhpcy5iYXRjaENvbW1hbmRzKHN0cmlkZSk7XG5cdH1cblxuXHRwcml2YXRlIGJhdGNoU3ViQ29tbWFuZHMgKGNvbW1hbmRzOiBSZW5kZXJDb21tYW5kW10sIGZpcnN0OiBudW1iZXIsIGxhc3Q6IG51bWJlcixcblx0XHRudW1WZXJ0aWNlczogbnVtYmVyLCBudW1JbmRpY2VzOiBudW1iZXIsIHN0cmlkZTogbnVtYmVyKTogUmVuZGVyQ29tbWFuZCB7XG5cblx0XHRjb25zdCBmaXJzdENtZCA9IGNvbW1hbmRzW2ZpcnN0XTtcblx0XHRjb25zdCBiYXRjaGVkID0gdGhpcy5jb21tYW5kUG9vbC5nZXRDb21tYW5kKG51bVZlcnRpY2VzLCBudW1JbmRpY2VzLCBzdHJpZGUpO1xuXG5cdFx0YmF0Y2hlZC5ibGVuZE1vZGUgPSBmaXJzdENtZC5ibGVuZE1vZGU7XG5cdFx0YmF0Y2hlZC50ZXh0dXJlID0gZmlyc3RDbWQudGV4dHVyZTtcblxuXHRcdGxldCBwb3NpdGlvbnNPZmZzZXQgPSAwO1xuXHRcdGxldCB1dnNPZmZzZXQgPSAwO1xuXHRcdGxldCBjb2xvcnNPZmZzZXQgPSAwO1xuXHRcdGxldCBpbmRpY2VzT2Zmc2V0ID0gMDtcblx0XHRsZXQgdmVydGV4T2Zmc2V0ID0gMDtcblxuXHRcdGZvciAobGV0IGkgPSBmaXJzdDsgaSA8PSBsYXN0OyBpKyspIHtcblx0XHRcdGNvbnN0IGNtZCA9IGNvbW1hbmRzW2ldO1xuXG5cdFx0XHRiYXRjaGVkLnBvc2l0aW9ucy5zZXQoY21kLnBvc2l0aW9ucywgcG9zaXRpb25zT2Zmc2V0KTtcblx0XHRcdHBvc2l0aW9uc09mZnNldCArPSBjbWQubnVtVmVydGljZXMgKiBzdHJpZGU7XG5cblx0XHRcdGJhdGNoZWQudXZzLnNldChjbWQudXZzLCB1dnNPZmZzZXQpO1xuXHRcdFx0dXZzT2Zmc2V0ICs9IGNtZC5udW1WZXJ0aWNlcyA8PCAxO1xuXG5cdFx0XHRiYXRjaGVkLmNvbG9ycy5zZXQoY21kLmNvbG9ycywgY29sb3JzT2Zmc2V0KTtcblx0XHRcdGJhdGNoZWQuZGFya0NvbG9ycy5zZXQoY21kLmRhcmtDb2xvcnMsIGNvbG9yc09mZnNldCk7XG5cdFx0XHRjb2xvcnNPZmZzZXQgKz0gY21kLm51bVZlcnRpY2VzO1xuXG5cdFx0XHQvLyBjYW5ub3QgZmFzdCBjb3B5IC0gaW5kaWNlcyBuZWVkIHZlcnRleCBvZmZzZXQgYWRqdXN0bWVudFxuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBjbWQubnVtSW5kaWNlczsgaisrKVxuXHRcdFx0XHRiYXRjaGVkLmluZGljZXNbaW5kaWNlc09mZnNldCArIGpdID0gY21kLmluZGljZXNbal0gKyB2ZXJ0ZXhPZmZzZXQ7XG5cblx0XHRcdGluZGljZXNPZmZzZXQgKz0gY21kLm51bUluZGljZXM7XG5cdFx0XHR2ZXJ0ZXhPZmZzZXQgKz0gY21kLm51bVZlcnRpY2VzO1xuXHRcdH1cblxuXHRcdHJldHVybiBiYXRjaGVkO1xuXHR9XG5cblx0cHJpdmF0ZSBiYXRjaENvbW1hbmRzIChzdHJpZGU6IG51bWJlcik6IFJlbmRlckNvbW1hbmQgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLnJlbmRlckNvbW1hbmRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuXHRcdGxldCByb290OiBSZW5kZXJDb21tYW5kIHwgdW5kZWZpbmVkO1xuXHRcdGxldCBsYXN0OiBSZW5kZXJDb21tYW5kIHwgdW5kZWZpbmVkO1xuXG5cdFx0bGV0IGZpcnN0ID0gdGhpcy5yZW5kZXJDb21tYW5kc1swXTtcblx0XHRsZXQgc3RhcnRJbmRleCA9IDA7XG5cdFx0bGV0IGkgPSAxO1xuXHRcdGxldCBudW1WZXJ0aWNlcyA9IGZpcnN0Lm51bVZlcnRpY2VzO1xuXHRcdGxldCBudW1JbmRpY2VzID0gZmlyc3QubnVtSW5kaWNlcztcblxuXHRcdHdoaWxlIChpIDw9IHRoaXMucmVuZGVyQ29tbWFuZHMubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCBjbWQgPSBpIDwgdGhpcy5yZW5kZXJDb21tYW5kcy5sZW5ndGggPyB0aGlzLnJlbmRlckNvbW1hbmRzW2ldIDogbnVsbDtcblxuXHRcdFx0aWYgKGNtZCAmJiBjbWQubnVtVmVydGljZXMgPT09IDAgJiYgY21kLm51bUluZGljZXMgPT09IDApIHtcblx0XHRcdFx0aSsrO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgY2FuQmF0Y2ggPSBjbWQgIT09IG51bGwgJiZcblx0XHRcdFx0Y21kLnRleHR1cmUgPT09IGZpcnN0LnRleHR1cmUgJiZcblx0XHRcdFx0Y21kLmJsZW5kTW9kZSA9PT0gZmlyc3QuYmxlbmRNb2RlICYmXG5cdFx0XHRcdGNtZC5jb2xvcnNbMF0gPT09IGZpcnN0LmNvbG9yc1swXSAmJlxuXHRcdFx0XHRjbWQuZGFya0NvbG9yc1swXSA9PT0gZmlyc3QuZGFya0NvbG9yc1swXSAmJlxuXHRcdFx0XHRudW1JbmRpY2VzICsgY21kLm51bUluZGljZXMgPCAweGZmZmY7XG5cdFx0XHRpZiAoY2FuQmF0Y2gpIHtcblx0XHRcdFx0bnVtVmVydGljZXMgKz0gY21kLm51bVZlcnRpY2VzO1xuXHRcdFx0XHRudW1JbmRpY2VzICs9IGNtZC5udW1JbmRpY2VzO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgYmF0Y2hlZCA9IHRoaXMuYmF0Y2hTdWJDb21tYW5kcyh0aGlzLnJlbmRlckNvbW1hbmRzLCBzdGFydEluZGV4LCBpIC0gMSxcblx0XHRcdFx0XHRudW1WZXJ0aWNlcywgbnVtSW5kaWNlcywgc3RyaWRlKTtcblxuXHRcdFx0XHRpZiAoIWxhc3QpIHtcblx0XHRcdFx0XHRyb290ID0gbGFzdCA9IGJhdGNoZWQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGFzdC5uZXh0ID0gYmF0Y2hlZDtcblx0XHRcdFx0XHRsYXN0ID0gYmF0Y2hlZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpID09PSB0aGlzLnJlbmRlckNvbW1hbmRzLmxlbmd0aCkgYnJlYWs7XG5cblx0XHRcdFx0Zmlyc3QgPSB0aGlzLnJlbmRlckNvbW1hbmRzW2ldO1xuXHRcdFx0XHRzdGFydEluZGV4ID0gaTtcblx0XHRcdFx0bnVtVmVydGljZXMgPSBmaXJzdC5udW1WZXJ0aWNlcztcblx0XHRcdFx0bnVtSW5kaWNlcyA9IGZpcnN0Lm51bUluZGljZXM7XG5cdFx0XHR9XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJvb3Q7XG5cdH1cbn1cblxuLy8gdmFsdWVzIHdpdGggdW5kZXIgc2NvcmUgaXMgdGhlIG9yaWdpbmFsIHNpemVkIGFycmF5LCBiaWdnZXIgdGhhbiBuZWNlc3Nhcnlcbi8vIHZhbHVlcyB3aXRob3V0IHVuZGVyIHNjb3JlIGlzIGEgdmlldyBvZiB0aGUgb3JpZ25hbCBhcnJheSwgc2l6ZWQgYXMgbmVlZGVkXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckNvbW1hbmQge1xuXHRwb3NpdGlvbnM6IEZsb2F0MzJBcnJheTtcblx0dXZzOiBGbG9hdDMyQXJyYXk7XG5cdGNvbG9yczogVWludDMyQXJyYXk7XG5cdGRhcmtDb2xvcnM6IFVpbnQzMkFycmF5O1xuXHRpbmRpY2VzOiBVaW50MTZBcnJheTtcblx0X3Bvc2l0aW9uczogRmxvYXQzMkFycmF5O1xuXHRfdXZzOiBGbG9hdDMyQXJyYXk7XG5cdF9jb2xvcnM6IFVpbnQzMkFycmF5O1xuXHRfZGFya0NvbG9yczogVWludDMyQXJyYXk7XG5cdF9pbmRpY2VzOiBVaW50MTZBcnJheTtcblx0bnVtVmVydGljZXM6IG51bWJlcjtcblx0bnVtSW5kaWNlczogbnVtYmVyO1xuXHRibGVuZE1vZGU6IEJsZW5kTW9kZTtcblx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiB0ZXh0dXJlIGRlcGVuZHMgb24gdGhlIHJ1bnRpbWVcblx0dGV4dHVyZTogYW55O1xuXHRuZXh0PzogUmVuZGVyQ29tbWFuZDtcbn1cblxuY2xhc3MgQ29tbWFuZFBvb2wge1xuXHRwcml2YXRlIHBvb2w6IFJlbmRlckNvbW1hbmRbXSA9IFtdO1xuXHRwcml2YXRlIGluVXNlOiBSZW5kZXJDb21tYW5kW10gPSBbXTtcblxuXHRnZXRDb21tYW5kIChudW1WZXJ0aWNlczogbnVtYmVyLCBudW1JbmRpY2VzOiBudW1iZXIsIHN0cmlkZTogbnVtYmVyKTogUmVuZGVyQ29tbWFuZCB7XG5cdFx0bGV0IGNtZDogUmVuZGVyQ29tbWFuZCB8IHVuZGVmaW5lZDtcblx0XHRmb3IgKGNvbnN0IGMgb2YgdGhpcy5wb29sKSB7XG5cdFx0XHRpZiAoYy5fcG9zaXRpb25zLmxlbmd0aCA+PSBudW1WZXJ0aWNlcyAqIHN0cmlkZSAmJiBjLl9pbmRpY2VzLmxlbmd0aCA+PSBudW1JbmRpY2VzKSB7XG5cdFx0XHRcdGNtZCA9IGM7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghY21kKSB7XG5cdFx0XHRjb25zdCBfcG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShudW1WZXJ0aWNlcyAqIHN0cmlkZSk7XG5cdFx0XHRjb25zdCBfdXZzID0gbmV3IEZsb2F0MzJBcnJheShudW1WZXJ0aWNlcyA8PCAxKTtcblx0XHRcdGNvbnN0IF9jb2xvcnMgPSBuZXcgVWludDMyQXJyYXkobnVtVmVydGljZXMpO1xuXHRcdFx0Y29uc3QgX2RhcmtDb2xvcnMgPSBuZXcgVWludDMyQXJyYXkobnVtVmVydGljZXMpO1xuXHRcdFx0Y29uc3QgX2luZGljZXMgPSBuZXcgVWludDE2QXJyYXkobnVtSW5kaWNlcyk7XG5cdFx0XHRjbWQgPSB7XG5cdFx0XHRcdHBvc2l0aW9uczogX3Bvc2l0aW9ucyxcblx0XHRcdFx0dXZzOiBfdXZzLFxuXHRcdFx0XHRjb2xvcnM6IF9jb2xvcnMsXG5cdFx0XHRcdGRhcmtDb2xvcnM6IF9kYXJrQ29sb3JzLFxuXHRcdFx0XHRpbmRpY2VzOiBfaW5kaWNlcyxcblx0XHRcdFx0X3Bvc2l0aW9ucyxcblx0XHRcdFx0X3V2cyxcblx0XHRcdFx0X2NvbG9ycyxcblx0XHRcdFx0X2RhcmtDb2xvcnMsXG5cdFx0XHRcdF9pbmRpY2VzLFxuXHRcdFx0XHRudW1WZXJ0aWNlcyxcblx0XHRcdFx0bnVtSW5kaWNlcyxcblx0XHRcdFx0YmxlbmRNb2RlOiBCbGVuZE1vZGUuTm9ybWFsLFxuXHRcdFx0XHR0ZXh0dXJlOiBudWxsXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnBvb2wuc3BsaWNlKHRoaXMucG9vbC5pbmRleE9mKGNtZCksIDEpO1xuXHRcdFx0Y21kLm5leHQgPSB1bmRlZmluZWQ7XG5cdFx0XHRjbWQubnVtVmVydGljZXMgPSBudW1WZXJ0aWNlcztcblx0XHRcdGNtZC5udW1JbmRpY2VzID0gbnVtSW5kaWNlcztcblxuXHRcdFx0Y21kLnBvc2l0aW9ucyA9IGNtZC5fcG9zaXRpb25zLnN1YmFycmF5KDAsIG51bVZlcnRpY2VzICogc3RyaWRlKTtcblx0XHRcdGNtZC51dnMgPSBjbWQuX3V2cy5zdWJhcnJheSgwLCBudW1WZXJ0aWNlcyA8PCAxKTtcblx0XHRcdGNtZC5jb2xvcnMgPSBjbWQuX2NvbG9ycy5zdWJhcnJheSgwLCBudW1WZXJ0aWNlcyk7XG5cdFx0XHRjbWQuZGFya0NvbG9ycyA9IGNtZC5fZGFya0NvbG9ycy5zdWJhcnJheSgwLCBudW1WZXJ0aWNlcyk7XG5cdFx0XHRjbWQuaW5kaWNlcyA9IGNtZC5faW5kaWNlcy5zdWJhcnJheSgwLCBudW1JbmRpY2VzKTtcblx0XHR9XG5cblx0XHR0aGlzLmluVXNlLnB1c2goY21kKTtcblx0XHRyZXR1cm4gY21kO1xuXHR9XG5cblx0cmVzZXQgKCk6IHZvaWQge1xuXHRcdHRoaXMucG9vbC5wdXNoKC4uLnRoaXMuaW5Vc2UpO1xuXHRcdHRoaXMuaW5Vc2UubGVuZ3RoID0gMDtcblx0fVxufSJdfQ==
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25SZW5kZXJlckNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b25SZW5kZXJlckNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE1BQU0sT0FBTyxvQkFBb0I7SUFDeEIsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDaEMsYUFBYSxHQUFHLElBQUksWUFBWSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1QyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUNsQyxjQUFjLEdBQW9CLEVBQUUsQ0FBQztJQUU3QyxNQUFNLENBQUUsUUFBa0IsRUFBRSxHQUFHLEdBQUcsS0FBSyxFQUFFLE9BQTBDLEVBQUUsTUFBTSxHQUFHLENBQUM7UUFDOUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU5QixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFD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QUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNsRCxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMxRCxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDO0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IENsaXBwaW5nQXR0YWNobWVudCwgTWVzaEF0dGFjaG1lbnQsIFJlZ2lvbkF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbkNsaXBwaW5nIH0gZnJvbSBcIi4vU2tlbGV0b25DbGlwcGluZy5qc1wiO1xuaW1wb3J0IHsgQmxlbmRNb2RlIH0gZnJvbSBcIi4vU2xvdERhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgQ29sb3IsIE51bWJlckFycmF5TGlrZSB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBTa2VsZXRvblJlbmRlcmVyQ29yZSB7XG5cdHByaXZhdGUgY29tbWFuZFBvb2wgPSBuZXcgQ29tbWFuZFBvb2woKTtcblx0cHJpdmF0ZSB3b3JsZFZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheSgxMiAqIDEwMjQpO1xuXHRwcml2YXRlIHF1YWRJbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KFswLCAxLCAyLCAyLCAzLCAwXSk7XG5cdHByaXZhdGUgY2xpcHBpbmcgPSBuZXcgU2tlbGV0b25DbGlwcGluZygpO1xuXHRwcml2YXRlIHJlbmRlckNvbW1hbmRzOiBSZW5kZXJDb21tYW5kW10gPSBbXTtcblxuXHRyZW5kZXIgKHNrZWxldG9uOiBTa2VsZXRvbiwgcG1hID0gZmFsc2UsIGluQ29sb3I/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSwgc3RyaWRlID0gMik6IFJlbmRlckNvbW1hbmQgfCB1bmRlZmluZWQge1xuXHRcdHRoaXMuY29tbWFuZFBvb2wucmVzZXQoKTtcblx0XHR0aGlzLnJlbmRlckNvbW1hbmRzLmxlbmd0aCA9IDA7XG5cblx0XHRjb25zdCBjbGlwcGVyID0gdGhpcy5jbGlwcGluZztcblxuXHRcdGNvbnN0IGRyYXdPcmRlciA9IHNrZWxldG9uLmRyYXdPcmRlci5hcHBsaWVkUG9zZTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGRyYXdPcmRlci5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IHNsb3QgPSBkcmF3T3JkZXJbaV07XG5cdFx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwRW5kKHNsb3QpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcG9zZSA9IHNsb3QuYXBwbGllZFBvc2U7XG5cdFx0XHRjb25zdCBhdHRhY2htZW50ID0gcG9zZS5hdHRhY2htZW50O1xuXG5cdFx0XHRpZiAoIWF0dGFjaG1lbnQpIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwRW5kKHNsb3QpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgc2xvdENvbG9yID0gcG9zZS5jb2xvcjtcblx0XHRcdGNvbnN0IGFscGhhID0gc2xvdENvbG9yLmE7XG5cdFx0XHRpZiAoYWxwaGEgPT09IDAgJiYgIShhdHRhY2htZW50IGluc3RhbmNlb2YgQ2xpcHBpbmdBdHRhY2htZW50KSkge1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBFbmQoc2xvdCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgdmVydGljZXM6IE51bWJlckFycmF5TGlrZTtcblx0XHRcdGxldCB2ZXJ0aWNlc0NvdW50OiBudW1iZXI7XG5cdFx0XHRsZXQgdXZzOiBOdW1iZXJBcnJheUxpa2U7XG5cdFx0XHRsZXQgaW5kaWNlczogbnVtYmVyW10gfCBVaW50MTZBcnJheTtcblx0XHRcdGxldCBpbmRpY2VzQ291bnQ6IG51bWJlcjtcblx0XHRcdGxldCBhdHRhY2htZW50Q29sb3I6IENvbG9yO1xuXHRcdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiB0ZXh0dXJlIGRlcGVuZHMgb24gdGhlIHJ1bnRpbWVcblx0XHRcdGxldCB0ZXh0dXJlOiBhbnk7XG5cblx0XHRcdGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgUmVnaW9uQXR0YWNobWVudCkge1xuXHRcdFx0XHRhdHRhY2htZW50Q29sb3IgPSBhdHRhY2htZW50LmNvbG9yO1xuXG5cdFx0XHRcdGlmIChhdHRhY2htZW50Q29sb3IuYSA9PT0gMCkge1xuXHRcdFx0XHRcdGNsaXBwZXIuY2xpcEVuZChzbG90KTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHNlcXVlbmNlID0gYXR0YWNobWVudC5zZXF1ZW5jZTtcblx0XHRcdFx0Y29uc3Qgc2VxdWVuY2VJbmRleCA9IHNlcXVlbmNlLnJlc29sdmVJbmRleChwb3NlKTtcblx0XHRcdFx0YXR0YWNobWVudC5jb21wdXRlV29ybGRWZXJ0aWNlcyhzbG90LCBhdHRhY2htZW50LmdldE9mZnNldHMocG9zZSksIHRoaXMud29ybGRWZXJ0aWNlcywgMCwgc3RyaWRlKTtcblxuXHRcdFx0XHR2ZXJ0aWNlcyA9IHRoaXMud29ybGRWZXJ0aWNlcztcblx0XHRcdFx0dmVydGljZXNDb3VudCA9IDQ7XG5cdFx0XHRcdHV2cyA9IHNlcXVlbmNlLmdldFVWcyhzZXF1ZW5jZUluZGV4KTtcblx0XHRcdFx0aW5kaWNlcyA9IHRoaXMucXVhZEluZGljZXM7XG5cdFx0XHRcdGluZGljZXNDb3VudCA9IDY7XG5cdFx0XHRcdHRleHR1cmUgPSBzZXF1ZW5jZS5yZWdpb25zW3NlcXVlbmNlSW5kZXhdPy50ZXh0dXJlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBNZXNoQXR0YWNobWVudCkge1xuXHRcdFx0XHRhdHRhY2htZW50Q29sb3IgPSBhdHRhY2htZW50LmNvbG9yO1xuXG5cdFx0XHRcdGlmIChhdHRhY2htZW50Q29sb3IuYSA9PT0gMCkge1xuXHRcdFx0XHRcdGNsaXBwZXIuY2xpcEVuZChzbG90KTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLndvcmxkVmVydGljZXMubGVuZ3RoIDwgYXR0YWNobWVudC53b3JsZFZlcnRpY2VzTGVuZ3RoKVxuXHRcdFx0XHRcdHRoaXMud29ybGRWZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoYXR0YWNobWVudC53b3JsZFZlcnRpY2VzTGVuZ3RoKTtcblxuXHRcdFx0XHRhdHRhY2htZW50LmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAwLCBhdHRhY2htZW50LndvcmxkVmVydGljZXNMZW5ndGgsIHRoaXMud29ybGRWZXJ0aWNlcywgMCwgc3RyaWRlKTtcblx0XHRcdFx0dmVydGljZXMgPSB0aGlzLndvcmxkVmVydGljZXM7XG5cdFx0XHRcdHZlcnRpY2VzQ291bnQgPSBhdHRhY2htZW50LndvcmxkVmVydGljZXNMZW5ndGggPj4gMTtcblxuXHRcdFx0XHRjb25zdCBzZXF1ZW5jZSA9IGF0dGFjaG1lbnQuc2VxdWVuY2U7XG5cdFx0XHRcdGNvbnN0IHNlcXVlbmNlSW5kZXggPSBzZXF1ZW5jZS5yZXNvbHZlSW5kZXgocG9zZSk7XG5cblx0XHRcdFx0dXZzID0gc2VxdWVuY2UuZ2V0VVZzKHNlcXVlbmNlSW5kZXgpO1xuXHRcdFx0XHRpbmRpY2VzID0gYXR0YWNobWVudC50cmlhbmdsZXM7XG5cdFx0XHRcdGluZGljZXNDb3VudCA9IGluZGljZXMubGVuZ3RoO1xuXHRcdFx0XHR0ZXh0dXJlID0gc2VxdWVuY2UucmVnaW9uc1tzZXF1ZW5jZUluZGV4XT8udGV4dHVyZTtcblxuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgQ2xpcHBpbmdBdHRhY2htZW50KSB7XG5cdFx0XHRcdGNsaXBwZXIuY2xpcEVuZChzbG90KTtcblx0XHRcdFx0Y2xpcHBlci5jbGlwU3RhcnQoc2tlbGV0b24sIHNsb3QsIGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsaXBwZXIuY2xpcEVuZChzbG90KTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghdGV4dHVyZSkge1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBFbmQoc2xvdCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBza2VsQ29sb3IgPSBza2VsZXRvbi5jb2xvcjtcblx0XHRcdGxldCBjb2xvcjogbnVtYmVyLCBkYXJrQ29sb3I6IG51bWJlcjtcblx0XHRcdGlmIChwbWEpIHtcblx0XHRcdFx0bGV0IGE6IG51bWJlcjtcblx0XHRcdFx0aWYgKGluQ29sb3IpIHtcblx0XHRcdFx0XHRhID0gTWF0aC5mbG9vcihpbkNvbG9yWzNdICogc2tlbENvbG9yLmEgKiBzbG90Q29sb3IuYSAqIGF0dGFjaG1lbnRDb2xvci5hICogMjU1KTtcblx0XHRcdFx0XHRjb25zdCByID0gTWF0aC5mbG9vcihhICogaW5Db2xvclswXSAqIHNrZWxDb2xvci5yICogc2xvdENvbG9yLnIgKiBhdHRhY2htZW50Q29sb3Iucik7XG5cdFx0XHRcdFx0Y29uc3QgZyA9IE1hdGguZmxvb3IoYSAqIGluQ29sb3JbMV0gKiBza2VsQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmcpO1xuXHRcdFx0XHRcdGNvbnN0IGIgPSBNYXRoLmZsb29yKGEgKiBpbkNvbG9yWzJdICogc2tlbENvbG9yLmIgKiBzbG90Q29sb3IuYiAqIGF0dGFjaG1lbnRDb2xvci5iKTtcblx0XHRcdFx0XHRjb2xvciA9IChhIDw8IDI0KSB8IChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhID0gTWF0aC5mbG9vcihza2VsQ29sb3IuYSAqIHNsb3RDb2xvci5hICogYXR0YWNobWVudENvbG9yLmEgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IHIgPSBNYXRoLmZsb29yKGEgKiBza2VsQ29sb3IuciAqIHNsb3RDb2xvci5yICogYXR0YWNobWVudENvbG9yLnIpO1xuXHRcdFx0XHRcdGNvbnN0IGcgPSBNYXRoLmZsb29yKGEgKiBza2VsQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmcpO1xuXHRcdFx0XHRcdGNvbnN0IGIgPSBNYXRoLmZsb29yKGEgKiBza2VsQ29sb3IuYiAqIHNsb3RDb2xvci5iICogYXR0YWNobWVudENvbG9yLmIpO1xuXHRcdFx0XHRcdGNvbG9yID0gKGEgPDwgMjQpIHwgKHIgPDwgMTYpIHwgKGcgPDwgOCkgfCBiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGFya0NvbG9yID0gMHhmZjAwMDAwMDtcblx0XHRcdFx0aWYgKHBvc2UuZGFya0NvbG9yKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyByLCBnLCBiIH0gPSBwb3NlLmRhcmtDb2xvcjtcblx0XHRcdFx0XHRkYXJrQ29sb3IgPSAweGZmMDAwMDAwIHxcblx0XHRcdFx0XHRcdChNYXRoLmZsb29yKHIgKiBhKSA8PCAxNikgfFxuXHRcdFx0XHRcdFx0KE1hdGguZmxvb3IoZyAqIGEpIDw8IDgpIHxcblx0XHRcdFx0XHRcdE1hdGguZmxvb3IoYiAqIGEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoaW5Db2xvcikge1xuXHRcdFx0XHRcdGNvbnN0IGEgPSBNYXRoLmZsb29yKGluQ29sb3JbM10gKiBza2VsQ29sb3IuYSAqIHNsb3RDb2xvci5hICogYXR0YWNobWVudENvbG9yLmEgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IHIgPSBNYXRoLmZsb29yKGluQ29sb3JbMF0gKiBza2VsQ29sb3IuciAqIHNsb3RDb2xvci5yICogYXR0YWNobWVudENvbG9yLnIgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IGcgPSBNYXRoLmZsb29yKGluQ29sb3JbMV0gKiBza2VsQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmcgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IGIgPSBNYXRoLmZsb29yKGluQ29sb3JbMl0gKiBza2VsQ29sb3IuYiAqIHNsb3RDb2xvci5iICogYXR0YWNobWVudENvbG9yLmIgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbG9yID0gKGEgPDwgMjQpIHwgKHIgPDwgMTYpIHwgKGcgPDwgOCkgfCBiO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IGEgPSBNYXRoLmZsb29yKHNrZWxDb2xvci5hICogc2xvdENvbG9yLmEgKiBhdHRhY2htZW50Q29sb3IuYSAqIDI1NSk7XG5cdFx0XHRcdFx0Y29uc3QgciA9IE1hdGguZmxvb3Ioc2tlbENvbG9yLnIgKiBzbG90Q29sb3IuciAqIGF0dGFjaG1lbnRDb2xvci5yICogMjU1KTtcblx0XHRcdFx0XHRjb25zdCBnID0gTWF0aC5mbG9vcihza2VsQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmcgKiAyNTUpO1xuXHRcdFx0XHRcdGNvbnN0IGIgPSBNYXRoLmZsb29yKHNrZWxDb2xvci5iICogc2xvdENvbG9yLmIgKiBhdHRhY2htZW50Q29sb3IuYiAqIDI1NSk7XG5cdFx0XHRcdFx0Y29sb3IgPSAoYSA8PCAyNCkgfCAociA8PCAxNikgfCAoZyA8PCA4KSB8IGI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkYXJrQ29sb3IgPSAwO1xuXHRcdFx0XHRpZiAocG9zZS5kYXJrQ29sb3IpIHtcblx0XHRcdFx0XHRjb25zdCB7IHIsIGcsIGIgfSA9IHBvc2UuZGFya0NvbG9yO1xuXHRcdFx0XHRcdGRhcmtDb2xvciA9IChNYXRoLmZsb29yKHIgKiAyNTUpIDw8IDE2KSB8IChNYXRoLmZsb29yKGcgKiAyNTUpIDw8IDgpIHwgTWF0aC5mbG9vcihiICogMjU1KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY2xpcHBlci5pc0NsaXBwaW5nKCkpIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwVHJpYW5nbGVzVW5wYWNrZWQodmVydGljZXMsIDAsIGluZGljZXMsIGluZGljZXNDb3VudCwgdXZzLCBzdHJpZGUpO1xuXHRcdFx0XHR2ZXJ0aWNlcyA9IGNsaXBwZXIuY2xpcHBlZFZlcnRpY2VzVHlwZWQ7XG5cdFx0XHRcdHZlcnRpY2VzQ291bnQgPSBjbGlwcGVyLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aCAvIHN0cmlkZTtcblx0XHRcdFx0dXZzID0gY2xpcHBlci5jbGlwcGVkVVZzVHlwZWQ7XG5cdFx0XHRcdGluZGljZXMgPSBjbGlwcGVyLmNsaXBwZWRUcmlhbmdsZXNUeXBlZDtcblx0XHRcdFx0aW5kaWNlc0NvdW50ID0gY2xpcHBlci5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjbWQgPSB0aGlzLmNvbW1hbmRQb29sLmdldENvbW1hbmQodmVydGljZXNDb3VudCwgaW5kaWNlc0NvdW50LCBzdHJpZGUpO1xuXHRcdFx0Y21kLmJsZW5kTW9kZSA9IHNsb3QuZGF0YS5ibGVuZE1vZGU7XG5cdFx0XHRjbWQudGV4dHVyZSA9IHRleHR1cmU7XG5cblx0XHRcdGNtZC5wb3NpdGlvbnMuc2V0KHZlcnRpY2VzLnN1YmFycmF5KDAsIHZlcnRpY2VzQ291bnQgKiBzdHJpZGUpKTtcblx0XHRcdGNtZC51dnMuc2V0KHV2cy5zdWJhcnJheSgwLCB2ZXJ0aWNlc0NvdW50IDw8IDEpKTtcblxuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCB2ZXJ0aWNlc0NvdW50OyBqKyspIHtcblx0XHRcdFx0Y21kLmNvbG9yc1tqXSA9IGNvbG9yO1xuXHRcdFx0XHRjbWQuZGFya0NvbG9yc1tqXSA9IGRhcmtDb2xvcjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGluZGljZXMgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkge1xuXHRcdFx0XHRjbWQuaW5kaWNlcy5zZXQoaW5kaWNlcy5zdWJhcnJheSgwLCBpbmRpY2VzQ291bnQpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNtZC5pbmRpY2VzLnNldChpbmRpY2VzLnNsaWNlKDAsIGluZGljZXNDb3VudCkpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnJlbmRlckNvbW1hbmRzLnB1c2goY21kKTtcblx0XHRcdGNsaXBwZXIuY2xpcEVuZChzbG90KTtcblx0XHR9XG5cblx0XHRjbGlwcGVyLmNsaXBFbmQoKTtcblx0XHRyZXR1cm4gdGhpcy5iYXRjaENvbW1hbmRzKHN0cmlkZSk7XG5cdH1cblxuXHRwcml2YXRlIGJhdGNoU3ViQ29tbWFuZHMgKGNvbW1hbmRzOiBSZW5kZXJDb21tYW5kW10sIGZpcnN0OiBudW1iZXIsIGxhc3Q6IG51bWJlcixcblx0XHRudW1WZXJ0aWNlczogbnVtYmVyLCBudW1JbmRpY2VzOiBudW1iZXIsIHN0cmlkZTogbnVtYmVyKTogUmVuZGVyQ29tbWFuZCB7XG5cblx0XHRjb25zdCBmaXJzdENtZCA9IGNvbW1hbmRzW2ZpcnN0XTtcblx0XHRjb25zdCBiYXRjaGVkID0gdGhpcy5jb21tYW5kUG9vbC5nZXRDb21tYW5kKG51bVZlcnRpY2VzLCBudW1JbmRpY2VzLCBzdHJpZGUpO1xuXG5cdFx0YmF0Y2hlZC5ibGVuZE1vZGUgPSBmaXJzdENtZC5ibGVuZE1vZGU7XG5cdFx0YmF0Y2hlZC50ZXh0dXJlID0gZmlyc3RDbWQudGV4dHVyZTtcblxuXHRcdGxldCBwb3NpdGlvbnNPZmZzZXQgPSAwO1xuXHRcdGxldCB1dnNPZmZzZXQgPSAwO1xuXHRcdGxldCBjb2xvcnNPZmZzZXQgPSAwO1xuXHRcdGxldCBpbmRpY2VzT2Zmc2V0ID0gMDtcblx0XHRsZXQgdmVydGV4T2Zmc2V0ID0gMDtcblxuXHRcdGZvciAobGV0IGkgPSBmaXJzdDsgaSA8PSBsYXN0OyBpKyspIHtcblx0XHRcdGNvbnN0IGNtZCA9IGNvbW1hbmRzW2ldO1xuXG5cdFx0XHRiYXRjaGVkLnBvc2l0aW9ucy5zZXQoY21kLnBvc2l0aW9ucywgcG9zaXRpb25zT2Zmc2V0KTtcblx0XHRcdHBvc2l0aW9uc09mZnNldCArPSBjbWQubnVtVmVydGljZXMgKiBzdHJpZGU7XG5cblx0XHRcdGJhdGNoZWQudXZzLnNldChjbWQudXZzLCB1dnNPZmZzZXQpO1xuXHRcdFx0dXZzT2Zmc2V0ICs9IGNtZC5udW1WZXJ0aWNlcyA8PCAxO1xuXG5cdFx0XHRiYXRjaGVkLmNvbG9ycy5zZXQoY21kLmNvbG9ycywgY29sb3JzT2Zmc2V0KTtcblx0XHRcdGJhdGNoZWQuZGFya0NvbG9ycy5zZXQoY21kLmRhcmtDb2xvcnMsIGNvbG9yc09mZnNldCk7XG5cdFx0XHRjb2xvcnNPZmZzZXQgKz0gY21kLm51bVZlcnRpY2VzO1xuXG5cdFx0XHQvLyBjYW5ub3QgZmFzdCBjb3B5IC0gaW5kaWNlcyBuZWVkIHZlcnRleCBvZmZzZXQgYWRqdXN0bWVudFxuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBjbWQubnVtSW5kaWNlczsgaisrKVxuXHRcdFx0XHRiYXRjaGVkLmluZGljZXNbaW5kaWNlc09mZnNldCArIGpdID0gY21kLmluZGljZXNbal0gKyB2ZXJ0ZXhPZmZzZXQ7XG5cblx0XHRcdGluZGljZXNPZmZzZXQgKz0gY21kLm51bUluZGljZXM7XG5cdFx0XHR2ZXJ0ZXhPZmZzZXQgKz0gY21kLm51bVZlcnRpY2VzO1xuXHRcdH1cblxuXHRcdHJldHVybiBiYXRjaGVkO1xuXHR9XG5cblx0cHJpdmF0ZSBiYXRjaENvbW1hbmRzIChzdHJpZGU6IG51bWJlcik6IFJlbmRlckNvbW1hbmQgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLnJlbmRlckNvbW1hbmRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuXHRcdGxldCByb290OiBSZW5kZXJDb21tYW5kIHwgdW5kZWZpbmVkO1xuXHRcdGxldCBsYXN0OiBSZW5kZXJDb21tYW5kIHwgdW5kZWZpbmVkO1xuXG5cdFx0bGV0IGZpcnN0ID0gdGhpcy5yZW5kZXJDb21tYW5kc1swXTtcblx0XHRsZXQgc3RhcnRJbmRleCA9IDA7XG5cdFx0bGV0IGkgPSAxO1xuXHRcdGxldCBudW1WZXJ0aWNlcyA9IGZpcnN0Lm51bVZlcnRpY2VzO1xuXHRcdGxldCBudW1JbmRpY2VzID0gZmlyc3QubnVtSW5kaWNlcztcblxuXHRcdHdoaWxlIChpIDw9IHRoaXMucmVuZGVyQ29tbWFuZHMubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCBjbWQgPSBpIDwgdGhpcy5yZW5kZXJDb21tYW5kcy5sZW5ndGggPyB0aGlzLnJlbmRlckNvbW1hbmRzW2ldIDogbnVsbDtcblxuXHRcdFx0aWYgKGNtZCAmJiBjbWQubnVtVmVydGljZXMgPT09IDAgJiYgY21kLm51bUluZGljZXMgPT09IDApIHtcblx0XHRcdFx0aSsrO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgY2FuQmF0Y2ggPSBjbWQgIT09IG51bGwgJiZcblx0XHRcdFx0Y21kLnRleHR1cmUgPT09IGZpcnN0LnRleHR1cmUgJiZcblx0XHRcdFx0Y21kLmJsZW5kTW9kZSA9PT0gZmlyc3QuYmxlbmRNb2RlICYmXG5cdFx0XHRcdGNtZC5jb2xvcnNbMF0gPT09IGZpcnN0LmNvbG9yc1swXSAmJlxuXHRcdFx0XHRjbWQuZGFya0NvbG9yc1swXSA9PT0gZmlyc3QuZGFya0NvbG9yc1swXSAmJlxuXHRcdFx0XHRudW1JbmRpY2VzICsgY21kLm51bUluZGljZXMgPCAweGZmZmY7XG5cdFx0XHRpZiAoY2FuQmF0Y2gpIHtcblx0XHRcdFx0bnVtVmVydGljZXMgKz0gY21kLm51bVZlcnRpY2VzO1xuXHRcdFx0XHRudW1JbmRpY2VzICs9IGNtZC5udW1JbmRpY2VzO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgYmF0Y2hlZCA9IHRoaXMuYmF0Y2hTdWJDb21tYW5kcyh0aGlzLnJlbmRlckNvbW1hbmRzLCBzdGFydEluZGV4LCBpIC0gMSxcblx0XHRcdFx0XHRudW1WZXJ0aWNlcywgbnVtSW5kaWNlcywgc3RyaWRlKTtcblxuXHRcdFx0XHRpZiAoIWxhc3QpIHtcblx0XHRcdFx0XHRyb290ID0gbGFzdCA9IGJhdGNoZWQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGFzdC5uZXh0ID0gYmF0Y2hlZDtcblx0XHRcdFx0XHRsYXN0ID0gYmF0Y2hlZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpID09PSB0aGlzLnJlbmRlckNvbW1hbmRzLmxlbmd0aCkgYnJlYWs7XG5cblx0XHRcdFx0Zmlyc3QgPSB0aGlzLnJlbmRlckNvbW1hbmRzW2ldO1xuXHRcdFx0XHRzdGFydEluZGV4ID0gaTtcblx0XHRcdFx0bnVtVmVydGljZXMgPSBmaXJzdC5udW1WZXJ0aWNlcztcblx0XHRcdFx0bnVtSW5kaWNlcyA9IGZpcnN0Lm51bUluZGljZXM7XG5cdFx0XHR9XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJvb3Q7XG5cdH1cbn1cblxuLy8gdmFsdWVzIHdpdGggdW5kZXIgc2NvcmUgaXMgdGhlIG9yaWdpbmFsIHNpemVkIGFycmF5LCBiaWdnZXIgdGhhbiBuZWNlc3Nhcnlcbi8vIHZhbHVlcyB3aXRob3V0IHVuZGVyIHNjb3JlIGlzIGEgdmlldyBvZiB0aGUgb3JpZ25hbCBhcnJheSwgc2l6ZWQgYXMgbmVlZGVkXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckNvbW1hbmQge1xuXHRwb3NpdGlvbnM6IEZsb2F0MzJBcnJheTtcblx0dXZzOiBGbG9hdDMyQXJyYXk7XG5cdGNvbG9yczogVWludDMyQXJyYXk7XG5cdGRhcmtDb2xvcnM6IFVpbnQzMkFycmF5O1xuXHRpbmRpY2VzOiBVaW50MTZBcnJheTtcblx0X3Bvc2l0aW9uczogRmxvYXQzMkFycmF5O1xuXHRfdXZzOiBGbG9hdDMyQXJyYXk7XG5cdF9jb2xvcnM6IFVpbnQzMkFycmF5O1xuXHRfZGFya0NvbG9yczogVWludDMyQXJyYXk7XG5cdF9pbmRpY2VzOiBVaW50MTZBcnJheTtcblx0bnVtVmVydGljZXM6IG51bWJlcjtcblx0bnVtSW5kaWNlczogbnVtYmVyO1xuXHRibGVuZE1vZGU6IEJsZW5kTW9kZTtcblx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiB0ZXh0dXJlIGRlcGVuZHMgb24gdGhlIHJ1bnRpbWVcblx0dGV4dHVyZTogYW55O1xuXHRuZXh0PzogUmVuZGVyQ29tbWFuZDtcbn1cblxuY2xhc3MgQ29tbWFuZFBvb2wge1xuXHRwcml2YXRlIHBvb2w6IFJlbmRlckNvbW1hbmRbXSA9IFtdO1xuXHRwcml2YXRlIGluVXNlOiBSZW5kZXJDb21tYW5kW10gPSBbXTtcblxuXHRnZXRDb21tYW5kIChudW1WZXJ0aWNlczogbnVtYmVyLCBudW1JbmRpY2VzOiBudW1iZXIsIHN0cmlkZTogbnVtYmVyKTogUmVuZGVyQ29tbWFuZCB7XG5cdFx0bGV0IGNtZDogUmVuZGVyQ29tbWFuZCB8IHVuZGVmaW5lZDtcblx0XHRmb3IgKGNvbnN0IGMgb2YgdGhpcy5wb29sKSB7XG5cdFx0XHRpZiAoYy5fcG9zaXRpb25zLmxlbmd0aCA+PSBudW1WZXJ0aWNlcyAqIHN0cmlkZSAmJiBjLl9pbmRpY2VzLmxlbmd0aCA+PSBudW1JbmRpY2VzKSB7XG5cdFx0XHRcdGNtZCA9IGM7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghY21kKSB7XG5cdFx0XHRjb25zdCBfcG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheShudW1WZXJ0aWNlcyAqIHN0cmlkZSk7XG5cdFx0XHRjb25zdCBfdXZzID0gbmV3IEZsb2F0MzJBcnJheShudW1WZXJ0aWNlcyA8PCAxKTtcblx0XHRcdGNvbnN0IF9jb2xvcnMgPSBuZXcgVWludDMyQXJyYXkobnVtVmVydGljZXMpO1xuXHRcdFx0Y29uc3QgX2RhcmtDb2xvcnMgPSBuZXcgVWludDMyQXJyYXkobnVtVmVydGljZXMpO1xuXHRcdFx0Y29uc3QgX2luZGljZXMgPSBuZXcgVWludDE2QXJyYXkobnVtSW5kaWNlcyk7XG5cdFx0XHRjbWQgPSB7XG5cdFx0XHRcdHBvc2l0aW9uczogX3Bvc2l0aW9ucyxcblx0XHRcdFx0dXZzOiBfdXZzLFxuXHRcdFx0XHRjb2xvcnM6IF9jb2xvcnMsXG5cdFx0XHRcdGRhcmtDb2xvcnM6IF9kYXJrQ29sb3JzLFxuXHRcdFx0XHRpbmRpY2VzOiBfaW5kaWNlcyxcblx0XHRcdFx0X3Bvc2l0aW9ucyxcblx0XHRcdFx0X3V2cyxcblx0XHRcdFx0X2NvbG9ycyxcblx0XHRcdFx0X2RhcmtDb2xvcnMsXG5cdFx0XHRcdF9pbmRpY2VzLFxuXHRcdFx0XHRudW1WZXJ0aWNlcyxcblx0XHRcdFx0bnVtSW5kaWNlcyxcblx0XHRcdFx0YmxlbmRNb2RlOiBCbGVuZE1vZGUuTm9ybWFsLFxuXHRcdFx0XHR0ZXh0dXJlOiBudWxsXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnBvb2wuc3BsaWNlKHRoaXMucG9vbC5pbmRleE9mKGNtZCksIDEpO1xuXHRcdFx0Y21kLm5leHQgPSB1bmRlZmluZWQ7XG5cdFx0XHRjbWQubnVtVmVydGljZXMgPSBudW1WZXJ0aWNlcztcblx0XHRcdGNtZC5udW1JbmRpY2VzID0gbnVtSW5kaWNlcztcblxuXHRcdFx0Y21kLnBvc2l0aW9ucyA9IGNtZC5fcG9zaXRpb25zLnN1YmFycmF5KDAsIG51bVZlcnRpY2VzICogc3RyaWRlKTtcblx0XHRcdGNtZC51dnMgPSBjbWQuX3V2cy5zdWJhcnJheSgwLCBudW1WZXJ0aWNlcyA8PCAxKTtcblx0XHRcdGNtZC5jb2xvcnMgPSBjbWQuX2NvbG9ycy5zdWJhcnJheSgwLCBudW1WZXJ0aWNlcyk7XG5cdFx0XHRjbWQuZGFya0NvbG9ycyA9IGNtZC5fZGFya0NvbG9ycy5zdWJhcnJheSgwLCBudW1WZXJ0aWNlcyk7XG5cdFx0XHRjbWQuaW5kaWNlcyA9IGNtZC5faW5kaWNlcy5zdWJhcnJheSgwLCBudW1JbmRpY2VzKTtcblx0XHR9XG5cblx0XHR0aGlzLmluVXNlLnB1c2goY21kKTtcblx0XHRyZXR1cm4gY21kO1xuXHR9XG5cblx0cmVzZXQgKCk6IHZvaWQge1xuXHRcdHRoaXMucG9vbC5wdXNoKC4uLnRoaXMuaW5Vc2UpO1xuXHRcdHRoaXMuaW5Vc2UubGVuZ3RoID0gMDtcblx0fVxufSJdfQ==
@@ -65,14 +65,14 @@ export class TransformConstraint extends Constraint {
65
65
  if (localSource)
66
66
  source.validateLocalTransform(skeleton);
67
67
  const fromItems = data.properties;
68
- const fn = data.properties.length, update = skeleton._update;
68
+ const fn = data.properties.length;
69
69
  const bones = this.bones;
70
70
  for (let i = 0, n = this.bones.length; i < n; i++) {
71
71
  const bone = bones[i];
72
72
  if (localTarget)
73
73
  bone.modifyLocal(skeleton);
74
74
  else
75
- bone.modifyWorld(update);
75
+ bone.modifyWorld(skeleton);
76
76
  for (let f = 0; f < fn; f++) {
77
77
  const from = fromItems[f];
78
78
  const value = from.value(skeleton, source, localSource, offsets) - from.offset;
@@ -116,4 +116,4 @@ export class TransformConstraint extends Constraint {
116
116
  return this.source.active;
117
117
  }
118
118
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNmb3JtQ29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9UcmFuc2Zvcm1Db25zdHJhaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUkvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUd2Qzs7bUhBRW1IO0FBQ25ILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxVQUFpRjtJQUV6SCxvRUFBb0U7SUFDcEUsS0FBSyxDQUFrQjtJQUV2Qiw4RUFBOEU7SUFDOUUsTUFBTSxDQUFPO0lBRWIsWUFBYSxJQUE2QixFQUFFLFFBQWtCO1FBQzdELEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSx1QkFBdUIsRUFBRSxFQUFFLElBQUksdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBZ0IsQ0FBQztRQUM5QixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLE1BQU0sSUFBSSxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FB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QUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMzQixRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNqQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWM7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7Q0FFRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuL0JvbmVQb3NlLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50IH0gZnJvbSBcIi4vQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c2ljcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlIH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludFBvc2UuanNcIjtcbmltcG9ydCB7IE1hdGhVdGlscyB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cblxuLyoqIEFkanVzdHMgdGhlIHdvcmxkIHRyYW5zZm9ybSBvZiB0aGUgY29uc3RyYWluZWQgYm9uZXMgdG8gbWF0Y2ggdGhhdCBvZiB0aGUgc291cmNlIGJvbmUuXG4gKlxuICogU2VlIFtUcmFuc2Zvcm0gY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS10cmFuc2Zvcm0tY29uc3RyYWludHMpIGluIHRoZSBTcGluZSBVc2VyIEd1aWRlLiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZm9ybUNvbnN0cmFpbnQgZXh0ZW5kcyBDb25zdHJhaW50PFRyYW5zZm9ybUNvbnN0cmFpbnQsIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhLCBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZT4ge1xuXG5cdC8qKiBUaGUgYm9uZXMgdGhhdCB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoaXMgdHJhbnNmb3JtIGNvbnN0cmFpbnQuICovXG5cdGJvbmVzOiBBcnJheTxCb25lUG9zZT47XG5cblx0LyoqIFRoZSBib25lIHdob3NlIHdvcmxkIHRyYW5zZm9ybSB3aWxsIGJlIGNvcGllZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZXMuICovXG5cdHNvdXJjZTogQm9uZTtcblxuXHRjb25zdHJ1Y3RvciAoZGF0YTogVHJhbnNmb3JtQ29uc3RyYWludERhdGEsIHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHN1cGVyKGRhdGEsIG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSgpLCBuZXcgVHJhbnNmb3JtQ29uc3RyYWludFBvc2UoKSk7XG5cdFx0aWYgKCFza2VsZXRvbikgdGhyb3cgbmV3IEVycm9yKFwic2tlbGV0b24gY2Fubm90IGJlIG51bGwuXCIpO1xuXG5cdFx0dGhpcy5ib25lcyA9IFtdIGFzIEJvbmVQb3NlW107XG5cdFx0Zm9yIChjb25zdCBib25lRGF0YSBvZiBkYXRhLmJvbmVzKVxuXHRcdFx0dGhpcy5ib25lcy5wdXNoKHNrZWxldG9uLmJvbmVzW2JvbmVEYXRhLmluZGV4XS5jb25zdHJhaW5lZFBvc2UpO1xuXG5cdFx0Y29uc3Qgc291cmNlID0gc2tlbGV0b24uYm9uZXNbZGF0YS5zb3VyY2UuaW5kZXhdO1xuXHRcdGlmIChzb3VyY2UgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwic291cmNlIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLnNvdXJjZSA9IHNvdXJjZTtcblx0fVxuXG5cdHB1YmxpYyBjb3B5IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHR2YXIgY29weSA9IG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50KHRoaXMuZGF0YSwgc2tlbGV0b24pO1xuXHRcdGNvcHkucG9zZS5zZXQodGhpcy5wb3NlKTtcblx0XHRyZXR1cm4gY29weTtcblx0fVxuXG5cdHVwZGF0ZSAoc2tlbGV0b246IFNrZWxldG9uLCBwaHlzaWNzOiBQaHlzaWNzKSB7XG5cdFx0Y29uc3QgcCA9IHRoaXMuYXBwbGllZFBvc2U7XG5cdFx0aWYgKHAubWl4Um90YXRlID09PSAwICYmIHAubWl4WCA9PT0gMCAmJiBwLm1peFkgPT09IDAgJiYgcC5taXhTY2FsZVggPT09IDAgJiYgcC5taXhTY2FsZVkgPT09IDAgJiYgcC5taXhTaGVhclkgPT09IDApIHJldHVybjtcblxuXHRcdGNvbnN0IGRhdGEgPSB0aGlzLmRhdGE7XG5cdFx0Y29uc3QgbG9jYWxTb3VyY2UgPSBkYXRhLmxvY2FsU291cmNlLCBsb2NhbFRhcmdldCA9IGRhdGEubG9jYWxUYXJnZXQsIGFkZGl0aXZlID0gZGF0YS5hZGRpdGl2ZSwgY2xhbXAgPSBkYXRhLmNsYW1wO1xuXHRcdGNvbnN0IG9mZnNldHMgPSBkYXRhLm9mZnNldHM7XG5cdFx0Y29uc3Qgc291cmNlID0gdGhpcy5zb3VyY2UuYXBwbGllZFBvc2U7XG5cdFx0aWYgKGxvY2FsU291cmNlKSBzb3VyY2UudmFsaWRhdGVMb2NhbFRyYW5zZm9ybShza2VsZXRvbik7XG5cdFx0Y29uc3QgZnJvbUl0ZW1zID0gZGF0YS5wcm9wZXJ0aWVzO1xuXHRcdGNvbnN0IGZuID0gZGF0YS5wcm9wZXJ0aWVzLmxlbmd0aCwgdXBkYXRlID0gc2tlbGV0b24uX3VwZGF0ZTtcblx0XHRjb25zdCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aGlzLmJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0aWYgKGxvY2FsVGFyZ2V0KVxuXHRcdFx0XHRib25lLm1vZGlmeUxvY2FsKHNrZWxldG9uKTtcblx0XHRcdGVsc2Vcblx0XHRcdFx0Ym9uZS5tb2RpZnlXb3JsZCh1cGRhdGUpO1xuXHRcdFx0Zm9yIChsZXQgZiA9IDA7IGYgPCBmbjsgZisrKSB7XG5cdFx0XHRcdGNvbnN0IGZyb20gPSBmcm9tSXRlbXNbZl07XG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gZnJvbS52YWx1ZShza2VsZXRvbiwgc291cmNlLCBsb2NhbFNvdXJjZSwgb2Zmc2V0cykgLSBmcm9tLm9mZnNldDtcblx0XHRcdFx0Y29uc3QgdG9JdGVtcyA9IGZyb20udG87XG5cdFx0XHRcdGZvciAobGV0IHQgPSAwLCB0biA9IGZyb20udG8ubGVuZ3RoOyB0IDwgdG47IHQrKykge1xuXHRcdFx0XHRcdGNvbnN0IHRvID0gdG9JdGVtc1t0XTtcblx0XHRcdFx0XHRpZiAodG8ubWl4KHApICE9PSAwKSB7XG5cdFx0XHRcdFx0XHRsZXQgY2xhbXBlZCA9IHRvLm9mZnNldCArIHZhbHVlICogdG8uc2NhbGU7XG5cdFx0XHRcdFx0XHRpZiAoY2xhbXApIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRvLm9mZnNldCA8IHRvLm1heClcblx0XHRcdFx0XHRcdFx0XHRjbGFtcGVkID0gTWF0aFV0aWxzLmNsYW1wKGNsYW1wZWQsIHRvLm9mZnNldCwgdG8ubWF4KTtcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdGNsYW1wZWQgPSBNYXRoVXRpbHMuY2xhbXAoY2xhbXBlZCwgdG8ubWF4LCB0by5vZmZzZXQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dG8uYXBwbHkoc2tlbGV0b24sIHAsIGJvbmUsIGNsYW1wZWQsIGxvY2FsVGFyZ2V0LCBhZGRpdGl2ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0c29ydCAoc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0aWYgKCF0aGlzLmRhdGEubG9jYWxTb3VyY2UpIHNrZWxldG9uLnNvcnRCb25lKHRoaXMuc291cmNlKTtcblx0XHRjb25zdCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Y29uc3QgYm9uZUNvdW50ID0gdGhpcy5ib25lcy5sZW5ndGg7XG5cdFx0Y29uc3Qgd29ybGRUYXJnZXQgPSAhdGhpcy5kYXRhLmxvY2FsVGFyZ2V0O1xuXHRcdGlmICh3b3JsZFRhcmdldCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdFx0c2tlbGV0b24uc29ydEJvbmUoYm9uZXNbaV0uYm9uZSk7XG5cdFx0fVxuXHRcdHNrZWxldG9uLl91cGRhdGVDYWNoZS5wdXNoKHRoaXMpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspIHtcblx0XHRcdGNvbnN0IGJvbmUgPSBib25lc1tpXS5ib25lO1xuXHRcdFx0c2tlbGV0b24uc29ydFJlc2V0KGJvbmUuY2hpbGRyZW4pO1xuXHRcdFx0c2tlbGV0b24uY29uc3RyYWluZWQoYm9uZSk7XG5cdFx0fVxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspXG5cdFx0XHRib25lc1tpXS5ib25lLnNvcnRlZCA9IHdvcmxkVGFyZ2V0O1xuXHR9XG5cblx0aXNTb3VyY2VBY3RpdmUgKCkge1xuXHRcdHJldHVybiB0aGlzLnNvdXJjZS5hY3RpdmU7XG5cdH1cblxufVxuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNmb3JtQ29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9UcmFuc2Zvcm1Db25zdHJhaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUkvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUd2Qzs7bUhBRW1IO0FBQ25ILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxVQUFpRjtJQUV6SCxvRUFBb0U7SUFDcEUsS0FBSyxDQUFrQjtJQUV2Qiw4RUFBOEU7SUFDOUUsTUFBTSxDQUFPO0lBRWIsWUFBYSxJQUE2QixFQUFFLFFBQWtCO1FBQzdELEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSx1QkFBdUIsRUFBRSxFQUFFLElBQUksdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBZ0IsQ0FBQztRQUM5QixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLE1BQU0sSUFBSSxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FB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RUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMzQixRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNqQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWM7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7Q0FFRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuL0JvbmVQb3NlLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50IH0gZnJvbSBcIi4vQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c2ljcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFRyYW5zZm9ybUNvbnN0cmFpbnRQb3NlIH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludFBvc2UuanNcIjtcbmltcG9ydCB7IE1hdGhVdGlscyB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cblxuLyoqIEFkanVzdHMgdGhlIHdvcmxkIHRyYW5zZm9ybSBvZiB0aGUgY29uc3RyYWluZWQgYm9uZXMgdG8gbWF0Y2ggdGhhdCBvZiB0aGUgc291cmNlIGJvbmUuXG4gKlxuICogU2VlIFtUcmFuc2Zvcm0gY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS10cmFuc2Zvcm0tY29uc3RyYWludHMpIGluIHRoZSBTcGluZSBVc2VyIEd1aWRlLiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZm9ybUNvbnN0cmFpbnQgZXh0ZW5kcyBDb25zdHJhaW50PFRyYW5zZm9ybUNvbnN0cmFpbnQsIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhLCBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZT4ge1xuXG5cdC8qKiBUaGUgYm9uZXMgdGhhdCB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoaXMgdHJhbnNmb3JtIGNvbnN0cmFpbnQuICovXG5cdGJvbmVzOiBBcnJheTxCb25lUG9zZT47XG5cblx0LyoqIFRoZSBib25lIHdob3NlIHdvcmxkIHRyYW5zZm9ybSB3aWxsIGJlIGNvcGllZCB0byB0aGUgY29uc3RyYWluZWQgYm9uZXMuICovXG5cdHNvdXJjZTogQm9uZTtcblxuXHRjb25zdHJ1Y3RvciAoZGF0YTogVHJhbnNmb3JtQ29uc3RyYWludERhdGEsIHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHN1cGVyKGRhdGEsIG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50UG9zZSgpLCBuZXcgVHJhbnNmb3JtQ29uc3RyYWludFBvc2UoKSk7XG5cdFx0aWYgKCFza2VsZXRvbikgdGhyb3cgbmV3IEVycm9yKFwic2tlbGV0b24gY2Fubm90IGJlIG51bGwuXCIpO1xuXG5cdFx0dGhpcy5ib25lcyA9IFtdIGFzIEJvbmVQb3NlW107XG5cdFx0Zm9yIChjb25zdCBib25lRGF0YSBvZiBkYXRhLmJvbmVzKVxuXHRcdFx0dGhpcy5ib25lcy5wdXNoKHNrZWxldG9uLmJvbmVzW2JvbmVEYXRhLmluZGV4XS5jb25zdHJhaW5lZFBvc2UpO1xuXG5cdFx0Y29uc3Qgc291cmNlID0gc2tlbGV0b24uYm9uZXNbZGF0YS5zb3VyY2UuaW5kZXhdO1xuXHRcdGlmIChzb3VyY2UgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwic291cmNlIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLnNvdXJjZSA9IHNvdXJjZTtcblx0fVxuXG5cdHB1YmxpYyBjb3B5IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHR2YXIgY29weSA9IG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50KHRoaXMuZGF0YSwgc2tlbGV0b24pO1xuXHRcdGNvcHkucG9zZS5zZXQodGhpcy5wb3NlKTtcblx0XHRyZXR1cm4gY29weTtcblx0fVxuXG5cdHVwZGF0ZSAoc2tlbGV0b246IFNrZWxldG9uLCBwaHlzaWNzOiBQaHlzaWNzKSB7XG5cdFx0Y29uc3QgcCA9IHRoaXMuYXBwbGllZFBvc2U7XG5cdFx0aWYgKHAubWl4Um90YXRlID09PSAwICYmIHAubWl4WCA9PT0gMCAmJiBwLm1peFkgPT09IDAgJiYgcC5taXhTY2FsZVggPT09IDAgJiYgcC5taXhTY2FsZVkgPT09IDAgJiYgcC5taXhTaGVhclkgPT09IDApIHJldHVybjtcblxuXHRcdGNvbnN0IGRhdGEgPSB0aGlzLmRhdGE7XG5cdFx0Y29uc3QgbG9jYWxTb3VyY2UgPSBkYXRhLmxvY2FsU291cmNlLCBsb2NhbFRhcmdldCA9IGRhdGEubG9jYWxUYXJnZXQsIGFkZGl0aXZlID0gZGF0YS5hZGRpdGl2ZSwgY2xhbXAgPSBkYXRhLmNsYW1wO1xuXHRcdGNvbnN0IG9mZnNldHMgPSBkYXRhLm9mZnNldHM7XG5cdFx0Y29uc3Qgc291cmNlID0gdGhpcy5zb3VyY2UuYXBwbGllZFBvc2U7XG5cdFx0aWYgKGxvY2FsU291cmNlKSBzb3VyY2UudmFsaWRhdGVMb2NhbFRyYW5zZm9ybShza2VsZXRvbik7XG5cdFx0Y29uc3QgZnJvbUl0ZW1zID0gZGF0YS5wcm9wZXJ0aWVzO1xuXHRcdGNvbnN0IGZuID0gZGF0YS5wcm9wZXJ0aWVzLmxlbmd0aDtcblx0XHRjb25zdCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aGlzLmJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0aWYgKGxvY2FsVGFyZ2V0KVxuXHRcdFx0XHRib25lLm1vZGlmeUxvY2FsKHNrZWxldG9uKTtcblx0XHRcdGVsc2Vcblx0XHRcdFx0Ym9uZS5tb2RpZnlXb3JsZChza2VsZXRvbik7XG5cdFx0XHRmb3IgKGxldCBmID0gMDsgZiA8IGZuOyBmKyspIHtcblx0XHRcdFx0Y29uc3QgZnJvbSA9IGZyb21JdGVtc1tmXTtcblx0XHRcdFx0Y29uc3QgdmFsdWUgPSBmcm9tLnZhbHVlKHNrZWxldG9uLCBzb3VyY2UsIGxvY2FsU291cmNlLCBvZmZzZXRzKSAtIGZyb20ub2Zmc2V0O1xuXHRcdFx0XHRjb25zdCB0b0l0ZW1zID0gZnJvbS50bztcblx0XHRcdFx0Zm9yIChsZXQgdCA9IDAsIHRuID0gZnJvbS50by5sZW5ndGg7IHQgPCB0bjsgdCsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgdG8gPSB0b0l0ZW1zW3RdO1xuXHRcdFx0XHRcdGlmICh0by5taXgocCkgIT09IDApIHtcblx0XHRcdFx0XHRcdGxldCBjbGFtcGVkID0gdG8ub2Zmc2V0ICsgdmFsdWUgKiB0by5zY2FsZTtcblx0XHRcdFx0XHRcdGlmIChjbGFtcCkge1xuXHRcdFx0XHRcdFx0XHRpZiAodG8ub2Zmc2V0IDwgdG8ubWF4KVxuXHRcdFx0XHRcdFx0XHRcdGNsYW1wZWQgPSBNYXRoVXRpbHMuY2xhbXAoY2xhbXBlZCwgdG8ub2Zmc2V0LCB0by5tYXgpO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0Y2xhbXBlZCA9IE1hdGhVdGlscy5jbGFtcChjbGFtcGVkLCB0by5tYXgsIHRvLm9mZnNldCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0by5hcHBseShza2VsZXRvbiwgcCwgYm9uZSwgY2xhbXBlZCwgbG9jYWxUYXJnZXQsIGFkZGl0aXZlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRzb3J0IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRpZiAoIXRoaXMuZGF0YS5sb2NhbFNvdXJjZSkgc2tlbGV0b24uc29ydEJvbmUodGhpcy5zb3VyY2UpO1xuXHRcdGNvbnN0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRjb25zdCBib25lQ291bnQgPSB0aGlzLmJvbmVzLmxlbmd0aDtcblx0XHRjb25zdCB3b3JsZFRhcmdldCA9ICF0aGlzLmRhdGEubG9jYWxUYXJnZXQ7XG5cdFx0aWYgKHdvcmxkVGFyZ2V0KSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKVxuXHRcdFx0XHRza2VsZXRvbi5zb3J0Qm9uZShib25lc1tpXS5ib25lKTtcblx0XHR9XG5cdFx0c2tlbGV0b24uX3VwZGF0ZUNhY2hlLnB1c2godGhpcyk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKykge1xuXHRcdFx0Y29uc3QgYm9uZSA9IGJvbmVzW2ldLmJvbmU7XG5cdFx0XHRza2VsZXRvbi5zb3J0UmVzZXQoYm9uZS5jaGlsZHJlbik7XG5cdFx0XHRza2VsZXRvbi5jb25zdHJhaW5lZChib25lKTtcblx0XHR9XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdGJvbmVzW2ldLmJvbmUuc29ydGVkID0gd29ybGRUYXJnZXQ7XG5cdH1cblxuXHRpc1NvdXJjZUFjdGl2ZSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc291cmNlLmFjdGl2ZTtcblx0fVxuXG59XG4iXX0=