Socket
Socket
Sign inDemoInstall

@glimmer/runtime

Package Overview
Dependencies
Maintainers
10
Versions
289
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/runtime - npm Package Compare versions

Comparing version 0.23.0-alpha.9 to 0.23.0-alpha.10

9

dist/commonjs/es2017/lib/vm/append.js

@@ -72,3 +72,2 @@ 'use strict';

exports.EvaluationStack = EvaluationStack;
let i = 0;
class VM {

@@ -153,5 +152,2 @@ constructor(env, scope, dynamicScope, elementStack) {

return() {
if (this.pc === this.ra + 4) {
throw "ZOMG";
}
this.pc = this.ra;

@@ -306,5 +302,2 @@ }

let opcode;
if (i++ > 100000) {
throw "zomg";
}
if (opcode = this.nextStatement(env)) {

@@ -340,2 +333,2 @@ _opcodes.APPEND_OPCODES.evaluate(this, opcode, opcode.type);

exports.default = VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUN0QyxBQUFPLEFBQUUsQUFBSyxBQUFxQyxBQUFNLEFBQWdCLEFBQUM7O0FBRTFFLEFBQU8sQUFBdUIsQUFBSyxBQUFFLEFBQVUsQUFBRSxBQUFTLEFBQWtCLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDMUcsQUFBTyxBQUE0RCxBQUFZLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUU1RyxBQUFPLEFBQUUsQUFBVyxBQUFFLEFBQXVCLEFBQUUsQUFBZSxBQUFFLEFBQU0sQUFBd0IsQUFBQzs7QUFDL0YsQUFBTyxBQUFXLEFBQWUsQUFBRSxBQUFTLEFBQWUsQUFBTSxBQUFVLEFBQUM7O0FBQzVFLEFBQU8sQUFBWSxBQUFNLEFBQWlCLEFBQUMsQUFFM0MsQUFBTyxBQUNMLEFBQWMsQUFFZixBQUFNLEFBQVksQUFBQyxBQWdCcEIsQUFBTTs7Ozs7OztBQVNKLGdCQUFvQixBQUFlLE9BQVMsQUFBVSxJQUFTLEFBQVU7QUFBckQsYUFBSyxRQUFMLEFBQUssQUFBVTtBQUFTLGFBQUUsS0FBRixBQUFFLEFBQVE7QUFBUyxhQUFFLEtBQUYsQUFBRSxBQUFRO0FBQ3ZFLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDcEI7QUFBQztBQVZELEFBQU0sV0FBQyxBQUFLO0FBQ1YsQUFBTSxlQUFDLElBQUksQUFBSSxLQUFDLEFBQUUsSUFBRSxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUM3QjtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQU8sUUFBQyxBQUF1QjtBQUNwQyxBQUFNLGVBQUMsSUFBSSxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBRSxTQUFFLEFBQUMsR0FBRSxBQUFRLFNBQUMsQUFBTSxTQUFHLEFBQUMs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QyxHQUFFLEFBQUMsQUFBRSxLQUFFLEFBQUM7QUFDdEMsZ0JBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQUssTUFBQyxBQUFDLEFBQUMsQUFBQyxBQUFDO0FBQzlDLEFBQUssa0JBQUMsQUFBRyxJQUFDLEFBQUksTUFBRSxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBa0MsQUFBQyxBQUFDLEFBQ3BFO0FBQUMsQUFDSDtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUsIER5bmFtaWNTY29wZSwgRW52aXJvbm1lbnQsIE9wY29kZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVsZW1lbnRTdGFjayB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgT3B0aW9uLCBEZXN0cm95YWJsZSwgU3RhY2ssIExpbmtlZExpc3QsIExpc3RTbGljZSwgT3BhcXVlLCBhc3NlcnQsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgUmVmZXJlbmNlSXRlcmF0b3IsIFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBDb21waWxlZER5bmFtaWNQcm9ncmFtIH0gZnJvbSAnLi4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgRGlkTW9kaWZ5T3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBWTVN0YXRlLCBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSwgQmxvY2tPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5cbmltcG9ydCB7XG4gIEFQUEVORF9PUENPREVTLFxuICBVcGRhdGluZ09wY29kZVxufSBmcm9tICcuLi9vcGNvZGVzJztcblxuaW1wb3J0IHtcbiAgQ29uc3RhbnRzLFxuICBDb25zdGFudFN0cmluZ1xufSBmcm9tICcuLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1ZNIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZTtcbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKTogdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgQ2FwdHVyZWRTdGFjayA9IE9wYXF1ZVtdO1xuXG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvblN0YWNrIHtcbiAgc3RhdGljIGVtcHR5KCk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKFtdLCAwLCAtMSk7XG4gIH1cblxuICBzdGF0aWMgcmVzdG9yZShzbmFwc2hvdDogQ2FwdHVyZWRTdGFjayk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdGFjazogT3BhcXVlW10sIHB1YmxpYyBmcDogbnVtYmVyLCBwdWJsaWMgc3A6IG51bWJlcikge1xuICAgIE9iamVjdC5zZWFsKHRoaXMpO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gIH1cblxuICBwdXNoKHZhbHVlOiBPcGFxdWUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrWysrdGhpcy5zcF0gPSB2YWx1ZTtcbiAgfVxuXG4gIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApOiB2b2lkIHtcbiAgICB0aGlzLnB1c2godGhpcy5zdGFja1twb3NpdGlvbl0pO1xuICB9XG5cbiAgcG9wPFQ+KG4gPSAxKTogVCB7XG4gICAgbGV0IHRvcCA9IHRoaXMuc3RhY2tbdGhpcy5zcF0gYXMgVDtcbiAgICB0aGlzLnNwIC09IG47XG4gICAgcmV0dXJuIHRvcDtcbiAgfVxuXG4gIHBlZWs8VD4oKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcF0gYXMgVDtcbiAgfVxuXG4gIGZyb21CYXNlPFQ+KG9mZnNldDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGZyb21Ub3A8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgY2FwdHVyZShpdGVtczogbnVtYmVyKTogQ2FwdHVyZWRTdGFjayB7XG4gICAgbGV0IGVuZCA9IHRoaXMuc3AgKyAxO1xuICAgIGxldCBzdGFydCA9IGVuZCAtIGl0ZW1zO1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgdG9BcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3JSZXN1bHQ8VD4gPSB7XG4gIGRvbmU6IGZhbHNlO1xuICB2YWx1ZTogbnVsbDtcbn0gfCB7XG4gIGRvbmU6IHRydWU7XG4gIHZhbHVlOiBUO1xufTtcblxubGV0IGkgPSAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHJpdmF0ZSBkeW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHByaXZhdGUgc2NvcGVTdGFjayA9IG5ldyBTdGFjazxTY29wZT4oKTtcbiAgcHVibGljIHVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBjYWNoZUdyb3VwcyA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHVibGljIHN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG5cbiAgLyoqIFJlZ2lzdGVycyAqKi9cblxuICBwcml2YXRlIHBjID0gLTE7XG4gIHByaXZhdGUgcmEgPSAtMTtcblxuICBwcml2YXRlIGdldCBmcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZnAoZnA6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gIH1cblxuICBwcml2YXRlIHNldCBzcChzcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICB9XG5cbiAgcHVibGljIHMwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgczE6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MDogYW55ID0gbnVsbDtcbiAgcHVibGljIHQxOiBhbnkgPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQge1xuICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiBUKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gIH1cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KC0xKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwocGM6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhyYTogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHJhO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICBpZiAodGhpcy5wYyA9PT0gKHRoaXMucmEgKyA0KSkge1xuICAgICAgdGhyb3cgXCJaT01HXCI7XG4gICAgfVxuXG4gICAgdGhpcy5wYyA9IHRoaXMucmE7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhbChcbiAgICBlbnY6IEVudmlyb25tZW50LFxuICAgIHNlbGY6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjayxcbiAgICBwcm9ncmFtOiBDb21waWxlZER5bmFtaWNQcm9ncmFtXG4gICkge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgcHJvZ3JhbS5zeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCk7XG4gICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgICB2bS5wYyA9IHByb2dyYW0uc3RhcnQ7XG4gICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzY29wZTogU2NvcGUsXG4gICAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICAgcHJpdmF0ZSBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjayxcbiAgKSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKVxuICAgIH07XG4gIH1cblxuICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgdGhpcy5jYWNoZUdyb3Vwcy5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICB9XG5cbiAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAvLyAgICAgICAgSnVtcElmTm90TW9kaWZpZWQoRU5EKVxuICAgIC8vICAgICAgICAoaGVhZClcbiAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgLy8gICAgICAgICh0YWlsKVxuICAgIC8vICAgICAgICBEaWRNb2RpZnlcbiAgICAvLyBFTkQ6ICAgTm9vcFxuXG4gICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcblxuICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuXG4gICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcblxuICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgfVxuXG4gIGVudGVyKGFyZ3M6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKGFyZ3MpO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcblxuICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgfVxuXG4gIGl0ZXJhdGUobWVtbzogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTogVHJ5T3Bjb2RlIHtcbiAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgIHN0YWNrLnB1c2godmFsdWUpO1xuICAgIHN0YWNrLnB1c2gobWVtbyk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMik7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuXG4gICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcbiAgfVxuXG4gIGVudGVySXRlbShrZXk6IHN0cmluZywgb3Bjb2RlOiBUcnlPcGNvZGUpIHtcbiAgICB0aGlzLmxpc3RCbG9jaygpLm1hcFtrZXldID0gb3Bjb2RlO1xuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIGVudGVyTGlzdChzdGFydDogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8QmxvY2tPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlazxSZWZlcmVuY2VJdGVyYXRvcj4oKS5hcnRpZmFjdHM7XG5cbiAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGFydCwgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuXG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wdXNoKG9wY29kZSk7XG5cbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChvcGNvZGUuY2hpbGRyZW4pO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCk7XG5cbiAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gIH1cblxuICBsaXN0QmxvY2soKTogTGlzdEJsb2NrT3Bjb2RlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMubGlzdEJsb2NrU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGEgbGlzdCBibG9jaycpO1xuICB9XG5cbiAgdXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiBleHBlY3QodGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCB1cGRhdGluZyBvcGNvZGUgb24gdGhlIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpO1xuICB9XG5cbiAgZWxlbWVudHMoKTogRWxlbWVudFN0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gIH1cblxuICBzY29wZSgpOiBTY29wZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnNjb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHNjb3BlIG9uIHRoZSBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBkeW5hbWljIHNjb3BlIG9uIHRoZSBkeW5hbWljIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gIH1cblxuICBwdXNoQ2FsbGVyU2NvcGUoY2hpbGRTY29wZSA9IGZhbHNlKSB7XG4gICAgbGV0IGNhbGxlclNjb3BlID0gZXhwZWN0KHRoaXMuc2NvcGUoKS5nZXRDYWxsZXJTY29wZSgpLCAncHVzaENhbGxlclNjb3BlIGlzIGNhbGxlZCB3aGVuIGEgY2FsbGVyIHNjb3BlIGlzIHByZXNlbnQnKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChjaGlsZFNjb3BlID8gY2FsbGVyU2NvcGUuY2hpbGQoKSA6IGNhbGxlclNjb3BlKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlciwgYmluZENhbGxlcjogYm9vbGVhbik6IFNjb3BlIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5zaXplZChzaXplKTtcbiAgICBpZiAoYmluZENhbGxlcikgc2NvcGUuYmluZENhbGxlclNjb3BlKHRoaXMuc2NvcGUoKSk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmVsZW1lbnRzKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIC8vLyBFWEVDVVRJT05cblxuICBleGVjdXRlKHN0YXJ0OiBudW1iZXIsIGluaXRpYWxpemU/OiAodm06IFZNKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0IHtcbiAgICB0aGlzLnBjID0gc3RhcnQ7XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCByZXN1bHQ6IEl0ZXJhdG9yUmVzdWx0PFJlbmRlclJlc3VsdD47XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQudmFsdWUgYXMgUmVuZGVyUmVzdWx0O1xuICB9XG5cbiAgbmV4dCgpOiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+IHtcbiAgICBsZXQgeyBlbnYsIHVwZGF0aW5nT3Bjb2RlU3RhY2ssIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICBsZXQgb3Bjb2RlOiBPcHRpb248T3Bjb2RlPjtcblxuICAgIGlmIChpKysgPiAxMDAwMDApIHtcbiAgICAgIHRocm93IFwiem9tZ1wiO1xuICAgIH1cblxuICAgIGlmIChvcGNvZGUgPSB0aGlzLm5leHRTdGF0ZW1lbnQoZW52KSkge1xuICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0KFxuICAgICAgICBlbnYsXG4gICAgICAgIGV4cGVjdCh1cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpLCAndGhlcmUgc2hvdWxkIGJlIGEgZmluYWwgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyksXG4gICAgICAgIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpXG4gICAgICApXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dFN0YXRlbWVudChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPE9wY29kZT4ge1xuICAgIGxldCB7IHBjIH0gPSB0aGlzO1xuXG4gICAgaWYgKHBjID09PSAtMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHByb2dyYW0gPSBlbnYucHJvZ3JhbTtcbiAgICB0aGlzLnBjICs9IDQ7XG4gICAgcmV0dXJuIHByb2dyYW0ub3Bjb2RlKHBjKTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogT3Bjb2RlKSB7XG4gICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBDb25zdGFudFN0cmluZ1tdKSB7XG4gICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcblxuICAgIGZvcihsZXQgaT1uYW1lcy5sZW5ndGggLSAxOyBpPj0wOyBpLS0pIHtcbiAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCkpO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUN0QyxBQUFPLEFBQUUsQUFBSyxBQUFxQyxBQUFNLEFBQWdCLEFBQUM7O0FBRTFFLEFBQU8sQUFBdUIsQUFBSyxBQUFFLEFBQVUsQUFBRSxBQUFTLEFBQWtCLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDMUcsQUFBTyxBQUE0RCxBQUFZLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUU1RyxBQUFPLEFBQUUsQUFBVyxBQUFFLEFBQXVCLEFBQUUsQUFBZSxBQUFFLEFBQU0sQUFBd0IsQUFBQzs7QUFDL0YsQUFBTyxBQUFXLEFBQWUsQUFBRSxBQUFTLEFBQWUsQUFBTSxBQUFVLEFBQUM7O0FBQzVFLEFBQU8sQUFBWSxBQUFNLEFBQWlCLEFBQUMsQUFFM0MsQUFBTyxBQUNMLEFBQWMsQUFFZixBQUFNLEFBQVksQUFBQyxBQWdCcEIsQUFBTTs7Ozs7OztBQVNKLGdCQUFvQixBQUFlLE9BQVMsQUFBVSxJQUFTLEFBQVU7QUFBckQsYUFBSyxRQUFMLEFBQUssQUFBVTtBQUFTLGFBQUUsS0FBRixBQUFFLEFBQVE7QUFBUyxhQUFFLEtBQUYsQUFBRSxBQUFRO0FBQ3ZFLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDcEI7QUFBQztBQVZELEFBQU0sV0FBQyxBQUFLO0FBQ1YsQUFBTSxlQUFDLElBQUksQUFBSSxLQUFDLEFBQUUsSUFBRSxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUM3QjtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQU8sUUFBQyxBQUF1QjtBQUNwQyxBQUFNLGVBQUMsSUFBSSxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBRSxTQUFFLEFBQUMsR0FBRSxBQUFRLFNBQUMsQUFBTSxTQUFHLEFBQUMs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IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50LCBPcGNvZGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIE9wYXF1ZSwgYXNzZXJ0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFJlZmVyZW5jZUl0ZXJhdG9yLCBQYXRoUmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBjb21iaW5lU2xpY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgVk1TdGF0ZSwgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUsIEJsb2NrT3Bjb2RlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuXG5pbXBvcnQge1xuICBBUFBFTkRfT1BDT0RFUyxcbiAgVXBkYXRpbmdPcGNvZGVcbn0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7XG4gIENvbnN0YW50cyxcbiAgQ29uc3RhbnRTdHJpbmdcbn0gZnJvbSAnLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNWTSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGU7XG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIENhcHR1cmVkU3RhY2sgPSBPcGFxdWVbXTtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25TdGFjayB7XG4gIHN0YXRpYyBlbXB0eSgpOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhbXSwgMCwgLTEpO1xuICB9XG5cbiAgc3RhdGljIHJlc3RvcmUoc25hcHNob3Q6IENhcHR1cmVkU3RhY2spOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhzbmFwc2hvdC5zbGljZSgpLCAwLCBzbmFwc2hvdC5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RhY2s6IE9wYXF1ZVtdLCBwdWJsaWMgZnA6IG51bWJlciwgcHVibGljIHNwOiBudW1iZXIpIHtcbiAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3AgPT09IC0xO1xuICB9XG5cbiAgcHVzaCh2YWx1ZTogT3BhcXVlKTogdm9pZCB7XG4gICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gIH1cblxuICBkdXAocG9zaXRpb24gPSB0aGlzLnNwKTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgfVxuXG4gIHBvcDxUPihuID0gMSk6IFQge1xuICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gICAgdGhpcy5zcCAtPSBuO1xuICAgIHJldHVybiB0b3A7XG4gIH1cblxuICBwZWVrPFQ+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gIH1cblxuICBmcm9tQmFzZTxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuZnAgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBmcm9tVG9wPFQ+KG9mZnNldDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcCAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGNhcHR1cmUoaXRlbXM6IG51bWJlcik6IENhcHR1cmVkU3RhY2sge1xuICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2UodGhpcy5mcCwgdGhpcy5zcCArIDEpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEl0ZXJhdG9yUmVzdWx0PFQ+ID0ge1xuICBkb25lOiBmYWxzZTtcbiAgdmFsdWU6IG51bGw7XG59IHwge1xuICBkb25lOiB0cnVlO1xuICB2YWx1ZTogVDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZNIGltcGxlbWVudHMgUHVibGljVk0ge1xuICBwcml2YXRlIGR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcHJpdmF0ZSBzY29wZVN0YWNrID0gbmV3IFN0YWNrPFNjb3BlPigpO1xuICBwdWJsaWMgdXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGNhY2hlR3JvdXBzID0gbmV3IFN0YWNrPE9wdGlvbjxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBsaXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjazxMaXN0QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cztcblxuICBwdWJsaWMgc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2suZW1wdHkoKTtcblxuICAvKiogUmVnaXN0ZXJzICoqL1xuXG4gIHByaXZhdGUgcGMgPSAtMTtcbiAgcHJpdmF0ZSByYSA9IC0xO1xuXG4gIHByaXZhdGUgZ2V0IGZwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gIH1cblxuICBwcml2YXRlIHNldCBmcChmcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5mcCA9IGZwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc3AoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zcDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IHNwKHNwOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gIH1cblxuICBwdWJsaWMgczA6IGFueSA9IG51bGw7XG4gIHB1YmxpYyBzMTogYW55ID0gbnVsbDtcbiAgcHVibGljIHQwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgdDE6IGFueSA9IG51bGw7XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgZmV0Y2gocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgfVxuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3RlciwgdmFsdWU6IFQpIHtcbiAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMucmEpO1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zcCAtIDE7XG4gICAgLy8gdGhpcy5mcCA9IHRoaXMuc3AgKyAxO1xuICB9XG5cbiAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICB0aGlzLnJhID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KDApO1xuICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlPG51bWJlcj4oLTEpO1xuICB9XG5cbiAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICBnb3RvKHBjOiBudW1iZXIpIHtcbiAgICB0aGlzLnBjID0gcGM7XG4gIH1cblxuICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgY2FsbChwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHRoaXMucGM7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gIHJldHVyblRvKHJhOiBudW1iZXIpIHtcbiAgICB0aGlzLnJhID0gcmE7XG4gIH1cblxuICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgcmV0dXJuKCkge1xuICAgIHRoaXMucGMgPSB0aGlzLnJhO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWwoXG4gICAgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzZWxmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICAgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICAgcHJvZ3JhbTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbVxuICApIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgdm0ucGMgPSBwcm9ncmFtLnN0YXJ0O1xuICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2NvcGU6IFNjb3BlLFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIHByaXZhdGUgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlcik6IFZNU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncylcbiAgICB9O1xuICB9XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgLy8gICAgICAgICguLi4uKVxuICAgIC8vICAgICAgICAodGFpbClcbiAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgLy8gRU5EOiAgIE5vb3BcblxuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICBsZXQgbWFya2VyID0gdGhpcy5jYWNoZUdyb3Vwcy5wb3AoKTtcbiAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcblxuICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG5cbiAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gIH1cblxuICBpdGVyYXRlKG1lbW86IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdmFsdWU6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk6IFRyeU9wY29kZSB7XG4gICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICBzdGFjay5wdXNoKG1lbW8pO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcblxuICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gIH1cblxuICBlbnRlckl0ZW0oa2V5OiBzdHJpbmcsIG9wY29kZTogVHJ5T3Bjb2RlKSB7XG4gICAgdGhpcy5saXN0QmxvY2soKS5tYXBba2V5XSA9IG9wY29kZTtcbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBlbnRlckxpc3Qoc3RhcnQ6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PEJsb2NrT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDApO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWs8UmVmZXJlbmNlSXRlcmF0b3I+KCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhcnQsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcblxuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucHVzaChvcGNvZGUpO1xuXG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWRFbnRlcihvcGNvZGU6IEJsb2NrT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gob3Bjb2RlLmNoaWxkcmVuKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCkgYXMgQmxvY2tPcGNvZGU7XG5cbiAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICB9XG5cbiAgbGlzdEJsb2NrKCk6IExpc3RCbG9ja09wY29kZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgfVxuXG4gIHVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICB9XG5cbiAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgIGxldCBjYWxsZXJTY29wZSA9IGV4cGVjdCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSwgJ3B1c2hDYWxsZXJTY29wZSBpcyBjYWxsZWQgd2hlbiBhIGNhbGxlciBzY29wZSBpcyBwcmVzZW50Jyk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIsIGJpbmRDYWxsZXI6IGJvb2xlYW4pOiBTY29wZSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShzdGFydDogbnVtYmVyLCBpbml0aWFsaXplPzogKHZtOiBWTSkgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgdGhpcy5wYyA9IHN0YXJ0O1xuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgcmVzdWx0OiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+O1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlIGFzIFJlbmRlclJlc3VsdDtcbiAgfVxuXG4gIG5leHQoKTogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZTogT3B0aW9uPE9wY29kZT47XG5cbiAgICBpZiAob3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudikpIHtcbiAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbmU6IHRydWUsXG4gICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChcbiAgICAgICAgZW52LFxuICAgICAgICBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLFxuICAgICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5leHRTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxPcGNvZGU+IHtcbiAgICBsZXQgeyBwYyB9ID0gdGhpcztcblxuICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgdGhpcy5wYyArPSA0O1xuICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogQ29uc3RhbnRTdHJpbmdbXSkge1xuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9bmFtZXMubGVuZ3RoIC0gMTsgaT49MDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==

13

dist/commonjs/es5/lib/vm/append.js

@@ -106,3 +106,2 @@ "use strict";

}();
var i = 0;

@@ -197,5 +196,2 @@ var VM = function () {

VM.prototype.return = function _return() {
if (this.pc === this.ra + 4) {
throw "ZOMG";
}
this.pc = this.ra;

@@ -387,5 +383,2 @@ };

var opcode = void 0;
if (i++ > 100000) {
throw "zomg";
}
if (opcode = this.nextStatement(env)) {

@@ -418,4 +411,4 @@ _opcodes.APPEND_OPCODES.evaluate(this, opcode, opcode.type);

var scope = this.dynamicScope();
for (var _i = names.length - 1; _i >= 0; _i--) {
var name = this.constants.getString(names[_i]);
for (var i = names.length - 1; i >= 0; i--) {
var name = this.constants.getString(names[i]);
scope.set(name, this.stack.pop());

@@ -447,2 +440,2 @@ }

exports.default = VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUN0QyxBQUFPLEFBQUUsQUFBSyxBQUFxQyxBQUFNLEFBQWdCLEFBQUM7O0FBRTFFLEFBQU8sQUFBdUIsQUFBSyxBQUFFLEFBQVUsQUFBRSxBQUFTLEFBQWtCLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDMUcsQUFBTyxBQUE0RCxBQUFZLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUU1RyxBQUFPLEFBQUUsQUFBVyxBQUFFLEFBQXVCLEFBQUUsQUFBZSxBQUFFLEFBQU0sQUFBd0IsQUFBQzs7QUFDL0YsQUFBTyxBQUFXLEFBQWUsQUFBRSxBQUFTLEFBQWUsQUFBTSxBQUFVLEFBQUM7O0FBQzVFLEFBQU8sQUFBWSxBQUFNLEFBQWlCLEFBQUMsQUFFM0MsQUFBTyxBQUNMLEFBQWMsQUFFZixBQUFNLEFBQVksQUFBQyxBQWdCcEIsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0REFTSjs2QkFBb0IsQUFBZSxPQUFTLEFBQVUsSUFBUyxBQUFVOzhCQUFyRDs7YUFBSyxRQUFMLEFBQUssQUFBVSxBQUFTO2FBQUUsS0FBRixBQUFFLEFBQVEsQUFBUzthQUFFLEtBQUYsQUFBRSxBQUFRLEFBQ3ZFLEFBQU07ZUFBQyxBQUFJLEtBVGIsQUFBTSxBQVNRLEFBQUksQUFBQyxBQUFDLEFBQ3BCLEFBQUM7OztvQkFWTSxBQUFLLHlCQUNWLEFBQU07ZUFBQyxJQUFJLEFBQUksS0FBQyxBQUFFLElBQUUsQUFBQyxHQUFFLENBQUMsQUFBQyxBQUFDLEFBQUMsQUFDN0IsQUFBQyxBQUVELEFBQU07OztvQkFBQyxBQUFPLDJCQUFDLEFBQXVCLFVBQ3BDLEFBQU07ZUFBQyxJQUFJLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBSyxBQUFFLFNBQUUsQUFBQyxHQUFF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QUksT0FBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQVMsVUFBQyxBQUFLLE1BQUMsQUFBQyxBQUFDLEFBQUMsQUFBQyxBQUM5QyxBQUFLO2tCQUFDLEFBQUcsSUFBQyxBQUFJLE1BQUUsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFHLEFBQWtDLEFBQUMsQUFBQyxBQUNwRSxBQUFDLEFBQ0g7QUFBQyxBQUNGOzs7Ozt5QkFuVkcsQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUUsQUFBQyxBQUN2QixBQUFDLEFBRUQsQUFBWSxBQUFFOzt1QkFBQyxBQUFVLElBQ3ZCLEFBQUk7aUJBQUMsQUFBSyxNQUFDLEFBQUUsS0FBRyxBQUFFLEFBQUMsQUFDckIsQUFBQyxBQUVELEFBQVksQUFBRTs7Ozt5QkFDWixBQUFNO21CQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBRSxBQUFDLEFBQ3ZCLEFBQUMsQUFFRCxBQUFZLEFBQUU7O3VCQUFDLEFBQVUsSUFDdkIsQUFBSTtpQkFBQyxBQUFLLE1BQUMsQUFBRSxLQUFHLEFBQUUsQUFBQyxBQUNyQixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50LCBPcGNvZGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIE9wYXF1ZSwgYXNzZXJ0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFJlZmVyZW5jZUl0ZXJhdG9yLCBQYXRoUmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBjb21iaW5lU2xpY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgVk1TdGF0ZSwgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUsIEJsb2NrT3Bjb2RlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuXG5pbXBvcnQge1xuICBBUFBFTkRfT1BDT0RFUyxcbiAgVXBkYXRpbmdPcGNvZGVcbn0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7XG4gIENvbnN0YW50cyxcbiAgQ29uc3RhbnRTdHJpbmdcbn0gZnJvbSAnLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNWTSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGU7XG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIENhcHR1cmVkU3RhY2sgPSBPcGFxdWVbXTtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25TdGFjayB7XG4gIHN0YXRpYyBlbXB0eSgpOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhbXSwgMCwgLTEpO1xuICB9XG5cbiAgc3RhdGljIHJlc3RvcmUoc25hcHNob3Q6IENhcHR1cmVkU3RhY2spOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhzbmFwc2hvdC5zbGljZSgpLCAwLCBzbmFwc2hvdC5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RhY2s6IE9wYXF1ZVtdLCBwdWJsaWMgZnA6IG51bWJlciwgcHVibGljIHNwOiBudW1iZXIpIHtcbiAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3AgPT09IC0xO1xuICB9XG5cbiAgcHVzaCh2YWx1ZTogT3BhcXVlKTogdm9pZCB7XG4gICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gIH1cblxuICBkdXAocG9zaXRpb24gPSB0aGlzLnNwKTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgfVxuXG4gIHBvcDxUPihuID0gMSk6IFQge1xuICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gICAgdGhpcy5zcCAtPSBuO1xuICAgIHJldHVybiB0b3A7XG4gIH1cblxuICBwZWVrPFQ+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gIH1cblxuICBmcm9tQmFzZTxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuZnAgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBmcm9tVG9wPFQ+KG9mZnNldDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcCAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGNhcHR1cmUoaXRlbXM6IG51bWJlcik6IENhcHR1cmVkU3RhY2sge1xuICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2UodGhpcy5mcCwgdGhpcy5zcCArIDEpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEl0ZXJhdG9yUmVzdWx0PFQ+ID0ge1xuICBkb25lOiBmYWxzZTtcbiAgdmFsdWU6IG51bGw7XG59IHwge1xuICBkb25lOiB0cnVlO1xuICB2YWx1ZTogVDtcbn07XG5cbmxldCBpID0gMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0gaW1wbGVtZW50cyBQdWJsaWNWTSB7XG4gIHByaXZhdGUgZHluYW1pY1Njb3BlU3RhY2sgPSBuZXcgU3RhY2s8RHluYW1pY1Njb3BlPigpO1xuICBwcml2YXRlIHNjb3BlU3RhY2sgPSBuZXcgU3RhY2s8U2NvcGU+KCk7XG4gIHB1YmxpYyB1cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgY2FjaGVHcm91cHMgPSBuZXcgU3RhY2s8T3B0aW9uPFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGxpc3RCbG9ja1N0YWNrID0gbmV3IFN0YWNrPExpc3RCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzO1xuXG4gIHB1YmxpYyBzdGFjayA9IEV2YWx1YXRpb25TdGFjay5lbXB0eSgpO1xuXG4gIC8qKiBSZWdpc3RlcnMgKiovXG5cbiAgcHJpdmF0ZSBwYyA9IC0xO1xuICBwcml2YXRlIHJhID0gLTE7XG5cbiAgcHJpdmF0ZSBnZXQgZnAoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5mcDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGZwKGZwOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrLmZwID0gZnA7XG4gIH1cblxuICBwcml2YXRlIGdldCBzcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgc3Aoc3A6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suc3AgPSBzcDtcbiAgfVxuXG4gIHB1YmxpYyBzMDogYW55ID0gbnVsbDtcbiAgcHVibGljIHMxOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgdDA6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MTogYW55ID0gbnVsbDtcblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICBmZXRjaChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dKTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICB9XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgZmV0Y2hWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGludG8gYSByZWdpc3RlclxuICBsb2FkVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyLCB2YWx1ZTogVCkge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHZhbHVlO1xuICB9XG5cbiAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gIHB1c2hGcmFtZSgpIHtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5yYSk7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuZnApO1xuICAgIHRoaXMuZnAgPSB0aGlzLnNwIC0gMTtcbiAgICAvLyB0aGlzLmZwID0gdGhpcy5zcCArIDE7XG4gIH1cblxuICAvLyBSZXN0b3JlICRyYSwgJHNwIGFuZCAkZnBcbiAgcG9wRnJhbWUoKSB7XG4gICAgdGhpcy5zcCA9IHRoaXMuZnAgLSAxO1xuICAgIHRoaXMucmEgPSB0aGlzLnN0YWNrLmZyb21CYXNlPG51bWJlcj4oMCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigtMSk7XG4gIH1cblxuICAvLyBKdW1wIHRvIGFuIGFkZHJlc3MgaW4gYHByb2dyYW1gXG4gIGdvdG8ocGM6IG51bWJlcikge1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFNhdmUgJHBjIGludG8gJHJhLCB0aGVuIGp1bXAgdG8gYSBuZXcgYWRkcmVzcyBpbiBgcHJvZ3JhbWAgKGphbCBpbiBNSVBTKVxuICBjYWxsKHBjOiBudW1iZXIpIHtcbiAgICB0aGlzLnJhID0gdGhpcy5wYztcbiAgICB0aGlzLnBjID0gcGM7XG4gIH1cblxuICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgcmV0dXJuVG8ocmE6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSByYTtcbiAgfVxuXG4gIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICByZXR1cm4oKSB7XG4gICAgaWYgKHRoaXMucGMgPT09ICh0aGlzLnJhICsgNCkpIHtcbiAgICAgIHRocm93IFwiWk9NR1wiO1xuICAgIH1cblxuICAgIHRoaXMucGMgPSB0aGlzLnJhO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWwoXG4gICAgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzZWxmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICAgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICAgcHJvZ3JhbTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbVxuICApIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgdm0ucGMgPSBwcm9ncmFtLnN0YXJ0O1xuICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2NvcGU6IFNjb3BlLFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIHByaXZhdGUgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlcik6IFZNU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncylcbiAgICB9O1xuICB9XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgLy8gICAgICAgICguLi4uKVxuICAgIC8vICAgICAgICAodGFpbClcbiAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgLy8gRU5EOiAgIE5vb3BcblxuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICBsZXQgbWFya2VyID0gdGhpcy5jYWNoZUdyb3Vwcy5wb3AoKTtcbiAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcblxuICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG5cbiAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gIH1cblxuICBpdGVyYXRlKG1lbW86IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdmFsdWU6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk6IFRyeU9wY29kZSB7XG4gICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICBzdGFjay5wdXNoKG1lbW8pO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcblxuICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gIH1cblxuICBlbnRlckl0ZW0oa2V5OiBzdHJpbmcsIG9wY29kZTogVHJ5T3Bjb2RlKSB7XG4gICAgdGhpcy5saXN0QmxvY2soKS5tYXBba2V5XSA9IG9wY29kZTtcbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBlbnRlckxpc3Qoc3RhcnQ6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PEJsb2NrT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDApO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWs8UmVmZXJlbmNlSXRlcmF0b3I+KCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhcnQsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcblxuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucHVzaChvcGNvZGUpO1xuXG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWRFbnRlcihvcGNvZGU6IEJsb2NrT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gob3Bjb2RlLmNoaWxkcmVuKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCkgYXMgQmxvY2tPcGNvZGU7XG5cbiAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICB9XG5cbiAgbGlzdEJsb2NrKCk6IExpc3RCbG9ja09wY29kZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgfVxuXG4gIHVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICB9XG5cbiAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgIGxldCBjYWxsZXJTY29wZSA9IGV4cGVjdCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSwgJ3B1c2hDYWxsZXJTY29wZSBpcyBjYWxsZWQgd2hlbiBhIGNhbGxlciBzY29wZSBpcyBwcmVzZW50Jyk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIsIGJpbmRDYWxsZXI6IGJvb2xlYW4pOiBTY29wZSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShzdGFydDogbnVtYmVyLCBpbml0aWFsaXplPzogKHZtOiBWTSkgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgdGhpcy5wYyA9IHN0YXJ0O1xuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgcmVzdWx0OiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+O1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlIGFzIFJlbmRlclJlc3VsdDtcbiAgfVxuXG4gIG5leHQoKTogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZTogT3B0aW9uPE9wY29kZT47XG5cbiAgICBpZiAoaSsrID4gMTAwMDAwKSB7XG4gICAgICB0aHJvdyBcInpvbWdcIjtcbiAgICB9XG5cbiAgICBpZiAob3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudikpIHtcbiAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbmU6IHRydWUsXG4gICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChcbiAgICAgICAgZW52LFxuICAgICAgICBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLFxuICAgICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5leHRTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxPcGNvZGU+IHtcbiAgICBsZXQgeyBwYyB9ID0gdGhpcztcblxuICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgdGhpcy5wYyArPSA0O1xuICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogQ29uc3RhbnRTdHJpbmdbXSkge1xuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9bmFtZXMubGVuZ3RoIC0gMTsgaT49MDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUN0QyxBQUFPLEFBQUUsQUFBSyxBQUFxQyxBQUFNLEFBQWdCLEFBQUM7O0FBRTFFLEFBQU8sQUFBdUIsQUFBSyxBQUFFLEFBQVUsQUFBRSxBQUFTLEFBQWtCLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDMUcsQUFBTyxBQUE0RCxBQUFZLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUU1RyxBQUFPLEFBQUUsQUFBVyxBQUFFLEFBQXVCLEFBQUUsQUFBZSxBQUFFLEFBQU0sQUFBd0IsQUFBQzs7QUFDL0YsQUFBTyxBQUFXLEFBQWUsQUFBRSxBQUFTLEFBQWUsQUFBTSxBQUFVLEFBQUM7O0FBQzVFLEFBQU8sQUFBWSxBQUFNLEFBQWlCLEFBQUMsQUFFM0MsQUFBTyxBQUNMLEFBQWMsQUFFZixBQUFNLEFBQVksQUFBQyxBQWdCcEIsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0REFTSjs2QkFBb0IsQUFBZSxPQUFTLEFBQVUsSUFBUyxBQUFVOzhCQUFyRDs7YUFBSyxRQUFMLEFBQUssQUFBVSxBQUFTO2FBQUUsS0FBRixBQUFFLEFBQVEsQUFBUzthQUFFLEtBQUYsQUFBRSxBQUFRLEFBQ3ZFLEFBQU07ZUFBQyxBQUFJLEtBVGIsQUFBTSxBQVNRLEFBQUksQUFBQyxBQUFDLEFBQ3BCLEFBQUM7OztvQkFWTSxBQUFLLHlCQUNWLEFBQU07ZUFBQyxJQUFJLEFBQUksS0FBQyxBQUFFLElBQUUsQUFBQyxHQUFFLENBQUMsQUFBQyxBQUFDLEFBQUMsQUFDN0IsQUFBQyxBQUVELEFBQU07OztvQkFBQyxBQUFPLDJCQUFDLEFBQXVCLFVBQ3BDLEFBQU07ZUFBQyxJQUFJLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBSyxBQUFFLFNBQUUsQUFBQyxHQUFF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LEFBQVksQUFBRTs7dUJBQUMsQUFBVSxJQUN2QixBQUFJO2lCQUFDLEFBQUssTUFBQyxBQUFFLEtBQUcsQUFBRSxBQUFDLEFBQ3JCLEFBQUMsQUFFRCxBQUFZLEFBQUU7Ozs7eUJBQ1osQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUUsQUFBQyxBQUN2QixBQUFDLEFBRUQsQUFBWSxBQUFFOzt1QkFBQyxBQUFVLElBQ3ZCLEFBQUk7aUJBQUMsQUFBSyxNQUFDLEFBQUUsS0FBRyxBQUFFLEFBQUMsQUFDckIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCwgT3Bjb2RlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBPcHRpb24sIERlc3Ryb3lhYmxlLCBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBPcGFxdWUsIGFzc2VydCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VJdGVyYXRvciwgUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0gfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFZNU3RhdGUsIExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlLCBCbG9ja09wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcblxuaW1wb3J0IHtcbiAgQVBQRU5EX09QQ09ERVMsXG4gIFVwZGF0aW5nT3Bjb2RlXG59IGZyb20gJy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nXG59IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljVk0ge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBDYXB0dXJlZFN0YWNrID0gT3BhcXVlW107XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90OiBDYXB0dXJlZFN0YWNrKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YWNrOiBPcGFxdWVbXSwgcHVibGljIGZwOiBudW1iZXIsIHB1YmxpYyBzcDogbnVtYmVyKSB7XG4gICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgfVxuXG4gIHB1c2godmFsdWU6IE9wYXF1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tbKyt0aGlzLnNwXSA9IHZhbHVlO1xuICB9XG5cbiAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCk6IHZvaWQge1xuICAgIHRoaXMucHVzaCh0aGlzLnN0YWNrW3Bvc2l0aW9uXSk7XG4gIH1cblxuICBwb3A8VD4obiA9IDEpOiBUIHtcbiAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICAgIHRoaXMuc3AgLT0gbjtcbiAgICByZXR1cm4gdG9wO1xuICB9XG5cbiAgcGVlazxUPigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICB9XG5cbiAgZnJvbUJhc2U8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgZnJvbVRvcDxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBjYXB0dXJlKGl0ZW1zOiBudW1iZXIpOiBDYXB0dXJlZFN0YWNrIHtcbiAgICBsZXQgZW5kID0gdGhpcy5zcCArIDE7XG4gICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBJdGVyYXRvclJlc3VsdDxUPiA9IHtcbiAgZG9uZTogZmFsc2U7XG4gIHZhbHVlOiBudWxsO1xufSB8IHtcbiAgZG9uZTogdHJ1ZTtcbiAgdmFsdWU6IFQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHJpdmF0ZSBkeW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHByaXZhdGUgc2NvcGVTdGFjayA9IG5ldyBTdGFjazxTY29wZT4oKTtcbiAgcHVibGljIHVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBjYWNoZUdyb3VwcyA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHVibGljIHN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG5cbiAgLyoqIFJlZ2lzdGVycyAqKi9cblxuICBwcml2YXRlIHBjID0gLTE7XG4gIHByaXZhdGUgcmEgPSAtMTtcblxuICBwcml2YXRlIGdldCBmcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZnAoZnA6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gIH1cblxuICBwcml2YXRlIHNldCBzcChzcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICB9XG5cbiAgcHVibGljIHMwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgczE6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MDogYW55ID0gbnVsbDtcbiAgcHVibGljIHQxOiBhbnkgPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQge1xuICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiBUKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gIH1cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KC0xKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwocGM6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhyYTogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHJhO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICAgIHByb2dyYW06IENvbXBpbGVkRHluYW1pY1Byb2dyYW1cbiAgKSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbnY6IEVudmlyb25tZW50LFxuICAgIHNjb3BlOiBTY29wZSxcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBwcml2YXRlIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICApIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgLy8gICAgICAgIChoZWFkKVxuICAgIC8vICAgICAgICAoLi4uLilcbiAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgIC8vIEVORDogICBOb29wXG5cbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpIGFzIEJsb2NrT3Bjb2RlO1xuXG4gICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gIH1cblxuICB1cGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyk7XG4gIH1cblxuICBlbGVtZW50cygpOiBFbGVtZW50U3RhY2sge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgfVxuXG4gIHNjb3BlKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKGNoaWxkU2NvcGUgPyBjYWxsZXJTY29wZS5jaGlsZCgpIDogY2FsbGVyU2NvcGUpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc2l6ZTogbnVtYmVyLCBiaW5kQ2FsbGVyOiBib29sZWFuKTogU2NvcGUge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnNpemVkKHNpemUpO1xuICAgIGlmIChiaW5kQ2FsbGVyKSBzY29wZS5iaW5kQ2FsbGVyU2NvcGUodGhpcy5zY29wZSgpKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIC8vLyBTQ09QRSBIRUxQRVJTXG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICB9XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIGV4ZWN1dGUoc3RhcnQ6IG51bWJlciwgaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIHRoaXMucGMgPSBzdGFydDtcblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuXG4gICAgbGV0IHJlc3VsdDogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PjtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZSBhcyBSZW5kZXJSZXN1bHQ7XG4gIH1cblxuICBuZXh0KCk6IEl0ZXJhdG9yUmVzdWx0PFJlbmRlclJlc3VsdD4ge1xuICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGU6IE9wdGlvbjxPcGNvZGU+O1xuXG4gICAgaWYgKG9wY29kZSA9IHRoaXMubmV4dFN0YXRlbWVudChlbnYpKSB7XG4gICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkb25lOiB0cnVlLFxuICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoXG4gICAgICAgIGVudixcbiAgICAgICAgZXhwZWN0KHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksICd0aGVyZSBzaG91bGQgYmUgYSBmaW5hbCB1cGRhdGluZyBvcGNvZGUgc3RhY2snKSxcbiAgICAgICAgZWxlbWVudFN0YWNrLnBvcEJsb2NrKClcbiAgICAgIClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0U3RhdGVtZW50KGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248T3Bjb2RlPiB7XG4gICAgbGV0IHsgcGMgfSA9IHRoaXM7XG5cbiAgICBpZiAocGMgPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgcHJvZ3JhbSA9IGVudi5wcm9ncmFtO1xuICAgIHRoaXMucGMgKz0gNDtcbiAgICByZXR1cm4gcHJvZ3JhbS5vcGNvZGUocGMpO1xuICB9XG5cbiAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlOiBPcGNvZGUpIHtcbiAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IENvbnN0YW50U3RyaW5nW10pIHtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPW5hbWVzLmxlbmd0aCAtIDE7IGk+PTA7IGktLSkge1xuICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKSk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -54,3 +54,2 @@ import { Register } from '../opcodes';

}
let i = 0;
export default class VM {

@@ -135,5 +134,2 @@ constructor(env, scope, dynamicScope, elementStack) {

return() {
if (this.pc === (this.ra + 4)) {
throw "ZOMG";
}
this.pc = this.ra;

@@ -291,5 +287,2 @@ }

let opcode;
if (i++ > 100000) {
throw "zomg";
}
if (opcode = this.nextStatement(env)) {

@@ -324,2 +317,2 @@ APPEND_OPCODES.evaluate(this, opcode, opcode.type);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQXVCLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUE0RCxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RyxPQUFPLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBVyxlQUFlLEVBQUUsU0FBUyxFQUFlLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sWUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFDTCxjQUFjLEVBRWYsTUFBTSxZQUFZLENBQUM7QUFnQnBCLE1BQU07SUFTSixZQUFvQixLQUFlLEVBQVMsRUFBVSxFQUFTLEVBQVU7UUFBckQsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ3ZFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQVZELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUF1QjtRQUNwQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVE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O1lBQ3RDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFrQyxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCwgT3Bjb2RlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBPcHRpb24sIERlc3Ryb3lhYmxlLCBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBPcGFxdWUsIGFzc2VydCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VJdGVyYXRvciwgUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0gfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFZNU3RhdGUsIExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlLCBCbG9ja09wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcblxuaW1wb3J0IHtcbiAgQVBQRU5EX09QQ09ERVMsXG4gIFVwZGF0aW5nT3Bjb2RlXG59IGZyb20gJy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nXG59IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljVk0ge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBDYXB0dXJlZFN0YWNrID0gT3BhcXVlW107XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90OiBDYXB0dXJlZFN0YWNrKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YWNrOiBPcGFxdWVbXSwgcHVibGljIGZwOiBudW1iZXIsIHB1YmxpYyBzcDogbnVtYmVyKSB7XG4gICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgfVxuXG4gIHB1c2godmFsdWU6IE9wYXF1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tbKyt0aGlzLnNwXSA9IHZhbHVlO1xuICB9XG5cbiAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCk6IHZvaWQge1xuICAgIHRoaXMucHVzaCh0aGlzLnN0YWNrW3Bvc2l0aW9uXSk7XG4gIH1cblxuICBwb3A8VD4obiA9IDEpOiBUIHtcbiAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICAgIHRoaXMuc3AgLT0gbjtcbiAgICByZXR1cm4gdG9wO1xuICB9XG5cbiAgcGVlazxUPigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICB9XG5cbiAgZnJvbUJhc2U8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgZnJvbVRvcDxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBjYXB0dXJlKGl0ZW1zOiBudW1iZXIpOiBDYXB0dXJlZFN0YWNrIHtcbiAgICBsZXQgZW5kID0gdGhpcy5zcCArIDE7XG4gICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBJdGVyYXRvclJlc3VsdDxUPiA9IHtcbiAgZG9uZTogZmFsc2U7XG4gIHZhbHVlOiBudWxsO1xufSB8IHtcbiAgZG9uZTogdHJ1ZTtcbiAgdmFsdWU6IFQ7XG59O1xuXG5sZXQgaSA9IDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZNIGltcGxlbWVudHMgUHVibGljVk0ge1xuICBwcml2YXRlIGR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcHJpdmF0ZSBzY29wZVN0YWNrID0gbmV3IFN0YWNrPFNjb3BlPigpO1xuICBwdWJsaWMgdXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGNhY2hlR3JvdXBzID0gbmV3IFN0YWNrPE9wdGlvbjxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBsaXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjazxMaXN0QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cztcblxuICBwdWJsaWMgc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2suZW1wdHkoKTtcblxuICAvKiogUmVnaXN0ZXJzICoqL1xuXG4gIHByaXZhdGUgcGMgPSAtMTtcbiAgcHJpdmF0ZSByYSA9IC0xO1xuXG4gIHByaXZhdGUgZ2V0IGZwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gIH1cblxuICBwcml2YXRlIHNldCBmcChmcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5mcCA9IGZwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc3AoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zcDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IHNwKHNwOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gIH1cblxuICBwdWJsaWMgczA6IGFueSA9IG51bGw7XG4gIHB1YmxpYyBzMTogYW55ID0gbnVsbDtcbiAgcHVibGljIHQwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgdDE6IGFueSA9IG51bGw7XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgZmV0Y2gocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgfVxuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3RlciwgdmFsdWU6IFQpIHtcbiAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMucmEpO1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zcCAtIDE7XG4gICAgLy8gdGhpcy5mcCA9IHRoaXMuc3AgKyAxO1xuICB9XG5cbiAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICB0aGlzLnJhID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KDApO1xuICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlPG51bWJlcj4oLTEpO1xuICB9XG5cbiAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICBnb3RvKHBjOiBudW1iZXIpIHtcbiAgICB0aGlzLnBjID0gcGM7XG4gIH1cblxuICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgY2FsbChwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHRoaXMucGM7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gIHJldHVyblRvKHJhOiBudW1iZXIpIHtcbiAgICB0aGlzLnJhID0gcmE7XG4gIH1cblxuICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgcmV0dXJuKCkge1xuICAgIGlmICh0aGlzLnBjID09PSAodGhpcy5yYSArIDQpKSB7XG4gICAgICB0aHJvdyBcIlpPTUdcIjtcbiAgICB9XG5cbiAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICAgIHByb2dyYW06IENvbXBpbGVkRHluYW1pY1Byb2dyYW1cbiAgKSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbnY6IEVudmlyb25tZW50LFxuICAgIHNjb3BlOiBTY29wZSxcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBwcml2YXRlIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICApIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgLy8gICAgICAgIChoZWFkKVxuICAgIC8vICAgICAgICAoLi4uLilcbiAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgIC8vIEVORDogICBOb29wXG5cbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpIGFzIEJsb2NrT3Bjb2RlO1xuXG4gICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gIH1cblxuICB1cGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyk7XG4gIH1cblxuICBlbGVtZW50cygpOiBFbGVtZW50U3RhY2sge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgfVxuXG4gIHNjb3BlKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKGNoaWxkU2NvcGUgPyBjYWxsZXJTY29wZS5jaGlsZCgpIDogY2FsbGVyU2NvcGUpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc2l6ZTogbnVtYmVyLCBiaW5kQ2FsbGVyOiBib29sZWFuKTogU2NvcGUge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnNpemVkKHNpemUpO1xuICAgIGlmIChiaW5kQ2FsbGVyKSBzY29wZS5iaW5kQ2FsbGVyU2NvcGUodGhpcy5zY29wZSgpKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIC8vLyBTQ09QRSBIRUxQRVJTXG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICB9XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIGV4ZWN1dGUoc3RhcnQ6IG51bWJlciwgaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIHRoaXMucGMgPSBzdGFydDtcblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuXG4gICAgbGV0IHJlc3VsdDogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PjtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZSBhcyBSZW5kZXJSZXN1bHQ7XG4gIH1cblxuICBuZXh0KCk6IEl0ZXJhdG9yUmVzdWx0PFJlbmRlclJlc3VsdD4ge1xuICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGU6IE9wdGlvbjxPcGNvZGU+O1xuXG4gICAgaWYgKGkrKyA+IDEwMDAwMCkge1xuICAgICAgdGhyb3cgXCJ6b21nXCI7XG4gICAgfVxuXG4gICAgaWYgKG9wY29kZSA9IHRoaXMubmV4dFN0YXRlbWVudChlbnYpKSB7XG4gICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkb25lOiB0cnVlLFxuICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoXG4gICAgICAgIGVudixcbiAgICAgICAgZXhwZWN0KHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksICd0aGVyZSBzaG91bGQgYmUgYSBmaW5hbCB1cGRhdGluZyBvcGNvZGUgc3RhY2snKSxcbiAgICAgICAgZWxlbWVudFN0YWNrLnBvcEJsb2NrKClcbiAgICAgIClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0U3RhdGVtZW50KGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248T3Bjb2RlPiB7XG4gICAgbGV0IHsgcGMgfSA9IHRoaXM7XG5cbiAgICBpZiAocGMgPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgcHJvZ3JhbSA9IGVudi5wcm9ncmFtO1xuICAgIHRoaXMucGMgKz0gNDtcbiAgICByZXR1cm4gcHJvZ3JhbS5vcGNvZGUocGMpO1xuICB9XG5cbiAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlOiBPcGNvZGUpIHtcbiAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IENvbnN0YW50U3RyaW5nW10pIHtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPW5hbWVzLmxlbmd0aCAtIDE7IGk+PTA7IGktLSkge1xuICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQXVCLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUE0RCxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RyxPQUFPLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBVyxlQUFlLEVBQUUsU0FBUyxFQUFlLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sWUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFDTCxjQUFjLEVBRWYsTUFBTSxZQUFZLENBQUM7QUFnQnBCLE1BQU07SUFTSixZQUFvQixLQUFlLEVBQVMsRUFBVSxFQUFTLEVBQVU7UUFBckQsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ3ZFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQVZELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUF1QjtRQUNwQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVE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b2Rlcyc7XG5pbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCwgT3Bjb2RlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBPcHRpb24sIERlc3Ryb3lhYmxlLCBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBPcGFxdWUsIGFzc2VydCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VJdGVyYXRvciwgUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0gfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFZNU3RhdGUsIExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlLCBCbG9ja09wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcblxuaW1wb3J0IHtcbiAgQVBQRU5EX09QQ09ERVMsXG4gIFVwZGF0aW5nT3Bjb2RlXG59IGZyb20gJy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nXG59IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljVk0ge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBDYXB0dXJlZFN0YWNrID0gT3BhcXVlW107XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90OiBDYXB0dXJlZFN0YWNrKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YWNrOiBPcGFxdWVbXSwgcHVibGljIGZwOiBudW1iZXIsIHB1YmxpYyBzcDogbnVtYmVyKSB7XG4gICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgfVxuXG4gIHB1c2godmFsdWU6IE9wYXF1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tbKyt0aGlzLnNwXSA9IHZhbHVlO1xuICB9XG5cbiAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCk6IHZvaWQge1xuICAgIHRoaXMucHVzaCh0aGlzLnN0YWNrW3Bvc2l0aW9uXSk7XG4gIH1cblxuICBwb3A8VD4obiA9IDEpOiBUIHtcbiAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICAgIHRoaXMuc3AgLT0gbjtcbiAgICByZXR1cm4gdG9wO1xuICB9XG5cbiAgcGVlazxUPigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICB9XG5cbiAgZnJvbUJhc2U8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgZnJvbVRvcDxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBjYXB0dXJlKGl0ZW1zOiBudW1iZXIpOiBDYXB0dXJlZFN0YWNrIHtcbiAgICBsZXQgZW5kID0gdGhpcy5zcCArIDE7XG4gICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBJdGVyYXRvclJlc3VsdDxUPiA9IHtcbiAgZG9uZTogZmFsc2U7XG4gIHZhbHVlOiBudWxsO1xufSB8IHtcbiAgZG9uZTogdHJ1ZTtcbiAgdmFsdWU6IFQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHJpdmF0ZSBkeW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHByaXZhdGUgc2NvcGVTdGFjayA9IG5ldyBTdGFjazxTY29wZT4oKTtcbiAgcHVibGljIHVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBjYWNoZUdyb3VwcyA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHVibGljIHN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG5cbiAgLyoqIFJlZ2lzdGVycyAqKi9cblxuICBwcml2YXRlIHBjID0gLTE7XG4gIHByaXZhdGUgcmEgPSAtMTtcblxuICBwcml2YXRlIGdldCBmcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZnAoZnA6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gIH1cblxuICBwcml2YXRlIHNldCBzcChzcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICB9XG5cbiAgcHVibGljIHMwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgczE6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MDogYW55ID0gbnVsbDtcbiAgcHVibGljIHQxOiBhbnkgPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQge1xuICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiBUKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gIH1cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KC0xKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwocGM6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhyYTogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHJhO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICAgIHByb2dyYW06IENvbXBpbGVkRHluYW1pY1Byb2dyYW1cbiAgKSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbnY6IEVudmlyb25tZW50LFxuICAgIHNjb3BlOiBTY29wZSxcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBwcml2YXRlIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICApIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgLy8gICAgICAgIChoZWFkKVxuICAgIC8vICAgICAgICAoLi4uLilcbiAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgIC8vIEVORDogICBOb29wXG5cbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpIGFzIEJsb2NrT3Bjb2RlO1xuXG4gICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gIH1cblxuICB1cGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyk7XG4gIH1cblxuICBlbGVtZW50cygpOiBFbGVtZW50U3RhY2sge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgfVxuXG4gIHNjb3BlKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKGNoaWxkU2NvcGUgPyBjYWxsZXJTY29wZS5jaGlsZCgpIDogY2FsbGVyU2NvcGUpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc2l6ZTogbnVtYmVyLCBiaW5kQ2FsbGVyOiBib29sZWFuKTogU2NvcGUge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnNpemVkKHNpemUpO1xuICAgIGlmIChiaW5kQ2FsbGVyKSBzY29wZS5iaW5kQ2FsbGVyU2NvcGUodGhpcy5zY29wZSgpKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIC8vLyBTQ09QRSBIRUxQRVJTXG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICB9XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIGV4ZWN1dGUoc3RhcnQ6IG51bWJlciwgaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIHRoaXMucGMgPSBzdGFydDtcblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuXG4gICAgbGV0IHJlc3VsdDogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PjtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZSBhcyBSZW5kZXJSZXN1bHQ7XG4gIH1cblxuICBuZXh0KCk6IEl0ZXJhdG9yUmVzdWx0PFJlbmRlclJlc3VsdD4ge1xuICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGU6IE9wdGlvbjxPcGNvZGU+O1xuXG4gICAgaWYgKG9wY29kZSA9IHRoaXMubmV4dFN0YXRlbWVudChlbnYpKSB7XG4gICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkb25lOiB0cnVlLFxuICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoXG4gICAgICAgIGVudixcbiAgICAgICAgZXhwZWN0KHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksICd0aGVyZSBzaG91bGQgYmUgYSBmaW5hbCB1cGRhdGluZyBvcGNvZGUgc3RhY2snKSxcbiAgICAgICAgZWxlbWVudFN0YWNrLnBvcEJsb2NrKClcbiAgICAgIClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0U3RhdGVtZW50KGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248T3Bjb2RlPiB7XG4gICAgbGV0IHsgcGMgfSA9IHRoaXM7XG5cbiAgICBpZiAocGMgPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgcHJvZ3JhbSA9IGVudi5wcm9ncmFtO1xuICAgIHRoaXMucGMgKz0gNDtcbiAgICByZXR1cm4gcHJvZ3JhbS5vcGNvZGUocGMpO1xuICB9XG5cbiAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlOiBPcGNvZGUpIHtcbiAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IENvbnN0YW50U3RyaW5nW10pIHtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPW5hbWVzLmxlbmd0aCAtIDE7IGk+PTA7IGktLSkge1xuICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKSk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -77,3 +77,2 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

}();
var i = 0;

@@ -168,5 +167,2 @@ var VM = function () {

VM.prototype.return = function _return() {
if (this.pc === this.ra + 4) {
throw "ZOMG";
}
this.pc = this.ra;

@@ -358,5 +354,2 @@ };

var opcode = void 0;
if (i++ > 100000) {
throw "zomg";
}
if (opcode = this.nextStatement(env)) {

@@ -389,4 +382,4 @@ APPEND_OPCODES.evaluate(this, opcode, opcode.type);

var scope = this.dynamicScope();
for (var _i = names.length - 1; _i >= 0; _i--) {
var name = this.constants.getString(names[_i]);
for (var i = names.length - 1; i >= 0; i--) {
var name = this.constants.getString(names[i]);
scope.set(name, this.stack.pop());

@@ -418,2 +411,2 @@ }

export default VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxBQUFPLFNBQUUsQUFBUSxBQUFFLGdCQUFNLEFBQVksQUFBQztBQUN0QyxBQUFPLFNBQUUsQUFBSyxBQUFxQyxhQUFNLEFBQWdCLEFBQUM7QUFFMUUsQUFBTyxTQUF1QixBQUFLLE9BQUUsQUFBVSxZQUFFLEFBQVMsV0FBa0IsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQzFHLEFBQU8sU0FBNEQsQUFBWSxBQUFFLG9CQUFNLEFBQW9CLEFBQUM7QUFFNUcsQUFBTyxTQUFFLEFBQVcsYUFBRSxBQUF1Qix5QkFBRSxBQUFlLEFBQUUsdUJBQU0sQUFBd0IsQUFBQztBQUMvRixBQUFPLFNBQVcsQUFBZSxpQkFBRSxBQUFTLEFBQWUsaUJBQU0sQUFBVSxBQUFDO0FBQzVFLE9BQU8sQUFBWSxrQkFBTSxBQUFpQixBQUFDO0FBRTNDLEFBQU8sU0FDTCxBQUFjLEFBRWYsc0JBQU0sQUFBWSxBQUFDO0FBZ0JwQixBQUFNO0FBU0osNkJBQW9CLEFBQWUsT0FBUyxBQUFVLElBQVMsQUFBVTs7O0FBQXJELGFBQUssUUFBTCxBQUFLLEFBQVU7QUFBUyxhQUFFLEtBQUYsQUFBRSxBQUFRO0FBQVMsYUFBRSxLQUFGLEFBQUUsQUFBUTtBQUN2RSxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCO0FBVkEsQUFBTSxBQVVMOztvQkFWTSxBQUFLO0FBQ1YsQUFBTSxlQUFDLElBQUksQUFBSSxLQUFDLEFBQUUsSUFBRSxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUM3QjtBQUFDLEFBRUQsQUFBTTs7b0JBQUMsQUFBTywyQkFBQyxBQUF1QjtBQUNwQyxBQUFNLGVBQUMsSUFBSSxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBRSxTQUFFLEFBQUMsR0FBRSxBQUFRLFNBQUMsQUFBTSxTQUFHLEFBQUMs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QyxBQUFHLEFBQWtDLEFBQUMsQUFBQyxBQUNwRTtBQUFDLEFBQ0g7QUFBQyxBQUNGOzs7OztBQW5WRyxBQUFNLG1CQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBRSxBQUFDLEFBQ3ZCO0FBQUMsQUFFRCxBQUFZLEFBQUU7dUJBQUMsQUFBVTtBQUN2QixBQUFJLGlCQUFDLEFBQUssTUFBQyxBQUFFLEtBQUcsQUFBRSxBQUFDLEFBQ3JCO0FBQUMsQUFFRCxBQUFZLEFBQUU7Ozs7QUFDWixBQUFNLG1CQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBRSxBQUFDLEFBQ3ZCO0FBQUMsQUFFRCxBQUFZLEFBQUU7dUJBQUMsQUFBVTtBQUN2QixBQUFJLGlCQUFDLEFBQUssTUFBQyxBQUFFLEtBQUcsQUFBRSxBQUFDLEFBQ3JCO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUsIER5bmFtaWNTY29wZSwgRW52aXJvbm1lbnQsIE9wY29kZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVsZW1lbnRTdGFjayB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgT3B0aW9uLCBEZXN0cm95YWJsZSwgU3RhY2ssIExpbmtlZExpc3QsIExpc3RTbGljZSwgT3BhcXVlLCBhc3NlcnQsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgUmVmZXJlbmNlSXRlcmF0b3IsIFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBDb21waWxlZER5bmFtaWNQcm9ncmFtIH0gZnJvbSAnLi4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgRGlkTW9kaWZ5T3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBWTVN0YXRlLCBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSwgQmxvY2tPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5cbmltcG9ydCB7XG4gIEFQUEVORF9PUENPREVTLFxuICBVcGRhdGluZ09wY29kZVxufSBmcm9tICcuLi9vcGNvZGVzJztcblxuaW1wb3J0IHtcbiAgQ29uc3RhbnRzLFxuICBDb25zdGFudFN0cmluZ1xufSBmcm9tICcuLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1ZNIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZTtcbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKTogdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgQ2FwdHVyZWRTdGFjayA9IE9wYXF1ZVtdO1xuXG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvblN0YWNrIHtcbiAgc3RhdGljIGVtcHR5KCk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKFtdLCAwLCAtMSk7XG4gIH1cblxuICBzdGF0aWMgcmVzdG9yZShzbmFwc2hvdDogQ2FwdHVyZWRTdGFjayk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdGFjazogT3BhcXVlW10sIHB1YmxpYyBmcDogbnVtYmVyLCBwdWJsaWMgc3A6IG51bWJlcikge1xuICAgIE9iamVjdC5zZWFsKHRoaXMpO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gIH1cblxuICBwdXNoKHZhbHVlOiBPcGFxdWUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrWysrdGhpcy5zcF0gPSB2YWx1ZTtcbiAgfVxuXG4gIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApOiB2b2lkIHtcbiAgICB0aGlzLnB1c2godGhpcy5zdGFja1twb3NpdGlvbl0pO1xuICB9XG5cbiAgcG9wPFQ+KG4gPSAxKTogVCB7XG4gICAgbGV0IHRvcCA9IHRoaXMuc3RhY2tbdGhpcy5zcF0gYXMgVDtcbiAgICB0aGlzLnNwIC09IG47XG4gICAgcmV0dXJuIHRvcDtcbiAgfVxuXG4gIHBlZWs8VD4oKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcF0gYXMgVDtcbiAgfVxuXG4gIGZyb21CYXNlPFQ+KG9mZnNldDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGZyb21Ub3A8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgY2FwdHVyZShpdGVtczogbnVtYmVyKTogQ2FwdHVyZWRTdGFjayB7XG4gICAgbGV0IGVuZCA9IHRoaXMuc3AgKyAxO1xuICAgIGxldCBzdGFydCA9IGVuZCAtIGl0ZW1zO1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgdG9BcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3JSZXN1bHQ8VD4gPSB7XG4gIGRvbmU6IGZhbHNlO1xuICB2YWx1ZTogbnVsbDtcbn0gfCB7XG4gIGRvbmU6IHRydWU7XG4gIHZhbHVlOiBUO1xufTtcblxubGV0IGkgPSAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHJpdmF0ZSBkeW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHByaXZhdGUgc2NvcGVTdGFjayA9IG5ldyBTdGFjazxTY29wZT4oKTtcbiAgcHVibGljIHVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBjYWNoZUdyb3VwcyA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHVibGljIHN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG5cbiAgLyoqIFJlZ2lzdGVycyAqKi9cblxuICBwcml2YXRlIHBjID0gLTE7XG4gIHByaXZhdGUgcmEgPSAtMTtcblxuICBwcml2YXRlIGdldCBmcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZnAoZnA6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gIH1cblxuICBwcml2YXRlIHNldCBzcChzcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICB9XG5cbiAgcHVibGljIHMwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgczE6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MDogYW55ID0gbnVsbDtcbiAgcHVibGljIHQxOiBhbnkgPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQge1xuICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiBUKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gIH1cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KC0xKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwocGM6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhyYTogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHJhO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICBpZiAodGhpcy5wYyA9PT0gKHRoaXMucmEgKyA0KSkge1xuICAgICAgdGhyb3cgXCJaT01HXCI7XG4gICAgfVxuXG4gICAgdGhpcy5wYyA9IHRoaXMucmE7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhbChcbiAgICBlbnY6IEVudmlyb25tZW50LFxuICAgIHNlbGY6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjayxcbiAgICBwcm9ncmFtOiBDb21waWxlZER5bmFtaWNQcm9ncmFtXG4gICkge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgcHJvZ3JhbS5zeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCk7XG4gICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgICB2bS5wYyA9IHByb2dyYW0uc3RhcnQ7XG4gICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzY29wZTogU2NvcGUsXG4gICAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICAgcHJpdmF0ZSBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjayxcbiAgKSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKVxuICAgIH07XG4gIH1cblxuICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgdGhpcy5jYWNoZUdyb3Vwcy5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICB9XG5cbiAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAvLyAgICAgICAgSnVtcElmTm90TW9kaWZpZWQoRU5EKVxuICAgIC8vICAgICAgICAoaGVhZClcbiAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgLy8gICAgICAgICh0YWlsKVxuICAgIC8vICAgICAgICBEaWRNb2RpZnlcbiAgICAvLyBFTkQ6ICAgTm9vcFxuXG4gICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcblxuICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuXG4gICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcblxuICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgfVxuXG4gIGVudGVyKGFyZ3M6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKGFyZ3MpO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcblxuICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgfVxuXG4gIGl0ZXJhdGUobWVtbzogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTogVHJ5T3Bjb2RlIHtcbiAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgIHN0YWNrLnB1c2godmFsdWUpO1xuICAgIHN0YWNrLnB1c2gobWVtbyk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMik7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuXG4gICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcbiAgfVxuXG4gIGVudGVySXRlbShrZXk6IHN0cmluZywgb3Bjb2RlOiBUcnlPcGNvZGUpIHtcbiAgICB0aGlzLmxpc3RCbG9jaygpLm1hcFtrZXldID0gb3Bjb2RlO1xuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIGVudGVyTGlzdChzdGFydDogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8QmxvY2tPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlazxSZWZlcmVuY2VJdGVyYXRvcj4oKS5hcnRpZmFjdHM7XG5cbiAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGFydCwgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuXG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wdXNoKG9wY29kZSk7XG5cbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChvcGNvZGUuY2hpbGRyZW4pO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCk7XG5cbiAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gIH1cblxuICBsaXN0QmxvY2soKTogTGlzdEJsb2NrT3Bjb2RlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMubGlzdEJsb2NrU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGEgbGlzdCBibG9jaycpO1xuICB9XG5cbiAgdXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiBleHBlY3QodGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCB1cGRhdGluZyBvcGNvZGUgb24gdGhlIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpO1xuICB9XG5cbiAgZWxlbWVudHMoKTogRWxlbWVudFN0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gIH1cblxuICBzY29wZSgpOiBTY29wZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnNjb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHNjb3BlIG9uIHRoZSBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBkeW5hbWljIHNjb3BlIG9uIHRoZSBkeW5hbWljIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gIH1cblxuICBwdXNoQ2FsbGVyU2NvcGUoY2hpbGRTY29wZSA9IGZhbHNlKSB7XG4gICAgbGV0IGNhbGxlclNjb3BlID0gZXhwZWN0KHRoaXMuc2NvcGUoKS5nZXRDYWxsZXJTY29wZSgpLCAncHVzaENhbGxlclNjb3BlIGlzIGNhbGxlZCB3aGVuIGEgY2FsbGVyIHNjb3BlIGlzIHByZXNlbnQnKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChjaGlsZFNjb3BlID8gY2FsbGVyU2NvcGUuY2hpbGQoKSA6IGNhbGxlclNjb3BlKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlciwgYmluZENhbGxlcjogYm9vbGVhbik6IFNjb3BlIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5zaXplZChzaXplKTtcbiAgICBpZiAoYmluZENhbGxlcikgc2NvcGUuYmluZENhbGxlclNjb3BlKHRoaXMuc2NvcGUoKSk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmVsZW1lbnRzKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIC8vLyBFWEVDVVRJT05cblxuICBleGVjdXRlKHN0YXJ0OiBudW1iZXIsIGluaXRpYWxpemU/OiAodm06IFZNKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0IHtcbiAgICB0aGlzLnBjID0gc3RhcnQ7XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCByZXN1bHQ6IEl0ZXJhdG9yUmVzdWx0PFJlbmRlclJlc3VsdD47XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQudmFsdWUgYXMgUmVuZGVyUmVzdWx0O1xuICB9XG5cbiAgbmV4dCgpOiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+IHtcbiAgICBsZXQgeyBlbnYsIHVwZGF0aW5nT3Bjb2RlU3RhY2ssIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICBsZXQgb3Bjb2RlOiBPcHRpb248T3Bjb2RlPjtcblxuICAgIGlmIChpKysgPiAxMDAwMDApIHtcbiAgICAgIHRocm93IFwiem9tZ1wiO1xuICAgIH1cblxuICAgIGlmIChvcGNvZGUgPSB0aGlzLm5leHRTdGF0ZW1lbnQoZW52KSkge1xuICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0KFxuICAgICAgICBlbnYsXG4gICAgICAgIGV4cGVjdCh1cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpLCAndGhlcmUgc2hvdWxkIGJlIGEgZmluYWwgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyksXG4gICAgICAgIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpXG4gICAgICApXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dFN0YXRlbWVudChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPE9wY29kZT4ge1xuICAgIGxldCB7IHBjIH0gPSB0aGlzO1xuXG4gICAgaWYgKHBjID09PSAtMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHByb2dyYW0gPSBlbnYucHJvZ3JhbTtcbiAgICB0aGlzLnBjICs9IDQ7XG4gICAgcmV0dXJuIHByb2dyYW0ub3Bjb2RlKHBjKTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogT3Bjb2RlKSB7XG4gICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBDb25zdGFudFN0cmluZ1tdKSB7XG4gICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcblxuICAgIGZvcihsZXQgaT1uYW1lcy5sZW5ndGggLSAxOyBpPj0wOyBpLS0pIHtcbiAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCkpO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxBQUFPLFNBQUUsQUFBUSxBQUFFLGdCQUFNLEFBQVksQUFBQztBQUN0QyxBQUFPLFNBQUUsQUFBSyxBQUFxQyxhQUFNLEFBQWdCLEFBQUM7QUFFMUUsQUFBTyxTQUF1QixBQUFLLE9BQUUsQUFBVSxZQUFFLEFBQVMsV0FBa0IsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQzFHLEFBQU8sU0FBNEQsQUFBWSxBQUFFLG9CQUFNLEFBQW9CLEFBQUM7QUFFNUcsQUFBTyxTQUFFLEFBQVcsYUFBRSxBQUF1Qix5QkFBRSxBQUFlLEFBQUUsdUJBQU0sQUFBd0IsQUFBQztBQUMvRixBQUFPLFNBQVcsQUFBZSxpQkFBRSxBQUFTLEFBQWUsaUJBQU0sQUFBVSxBQUFDO0FBQzVFLE9BQU8sQUFBWSxrQkFBTSxBQUFpQixBQUFDO0FBRTNDLEFBQU8sU0FDTCxBQUFjLEFBRWYsc0JBQU0sQUFBWSxBQUFDO0FBZ0JwQixBQUFNO0FBU0osNkJBQW9CLEFBQWUsT0FBUyxBQUFVLElBQVMsQUFBVTs7O0FBQXJELGFBQUssUUFBTCxBQUFLLEFBQVU7QUFBUyxhQUFFLEtBQUYsQUFBRSxBQUFRO0FBQVMsYUFBRSxLQUFGLEFBQUUsQUFBUTtBQUN2RSxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCO0FBVkEsQUFBTSxBQVVMOztvQkFWTSxBQUFLO0FBQ1YsQUFBTSxlQUFDLElBQUksQUFBSSxLQUFDLEFBQUUsSUFBRSxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUM3QjtBQUFDLEFBRUQsQUFBTTs7b0JBQUMsQUFBTywyQkFBQyxBQUF1QjtBQUNwQyxBQUFNLGVBQUMsSUFBSSxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBRSxTQUFFLEFBQUMsR0FBRSxBQUFRLFNBQUMsQUFBTSxTQUFHLEFBQUMs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QUFBSyxNQUFDLEFBQUUsQUFBQyxBQUN2QjtBQUFDLEFBRUQsQUFBWSxBQUFFO3VCQUFDLEFBQVU7QUFDdkIsQUFBSSxpQkFBQyxBQUFLLE1BQUMsQUFBRSxLQUFHLEFBQUUsQUFBQyxBQUNyQjtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50LCBPcGNvZGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIE9wYXF1ZSwgYXNzZXJ0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFJlZmVyZW5jZUl0ZXJhdG9yLCBQYXRoUmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBjb21iaW5lU2xpY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgVk1TdGF0ZSwgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUsIEJsb2NrT3Bjb2RlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuXG5pbXBvcnQge1xuICBBUFBFTkRfT1BDT0RFUyxcbiAgVXBkYXRpbmdPcGNvZGVcbn0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7XG4gIENvbnN0YW50cyxcbiAgQ29uc3RhbnRTdHJpbmdcbn0gZnJvbSAnLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNWTSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGU7XG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIENhcHR1cmVkU3RhY2sgPSBPcGFxdWVbXTtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25TdGFjayB7XG4gIHN0YXRpYyBlbXB0eSgpOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhbXSwgMCwgLTEpO1xuICB9XG5cbiAgc3RhdGljIHJlc3RvcmUoc25hcHNob3Q6IENhcHR1cmVkU3RhY2spOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhzbmFwc2hvdC5zbGljZSgpLCAwLCBzbmFwc2hvdC5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RhY2s6IE9wYXF1ZVtdLCBwdWJsaWMgZnA6IG51bWJlciwgcHVibGljIHNwOiBudW1iZXIpIHtcbiAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3AgPT09IC0xO1xuICB9XG5cbiAgcHVzaCh2YWx1ZTogT3BhcXVlKTogdm9pZCB7XG4gICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gIH1cblxuICBkdXAocG9zaXRpb24gPSB0aGlzLnNwKTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgfVxuXG4gIHBvcDxUPihuID0gMSk6IFQge1xuICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gICAgdGhpcy5zcCAtPSBuO1xuICAgIHJldHVybiB0b3A7XG4gIH1cblxuICBwZWVrPFQ+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gIH1cblxuICBmcm9tQmFzZTxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuZnAgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBmcm9tVG9wPFQ+KG9mZnNldDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcCAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGNhcHR1cmUoaXRlbXM6IG51bWJlcik6IENhcHR1cmVkU3RhY2sge1xuICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2UodGhpcy5mcCwgdGhpcy5zcCArIDEpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEl0ZXJhdG9yUmVzdWx0PFQ+ID0ge1xuICBkb25lOiBmYWxzZTtcbiAgdmFsdWU6IG51bGw7XG59IHwge1xuICBkb25lOiB0cnVlO1xuICB2YWx1ZTogVDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZNIGltcGxlbWVudHMgUHVibGljVk0ge1xuICBwcml2YXRlIGR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcHJpdmF0ZSBzY29wZVN0YWNrID0gbmV3IFN0YWNrPFNjb3BlPigpO1xuICBwdWJsaWMgdXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGNhY2hlR3JvdXBzID0gbmV3IFN0YWNrPE9wdGlvbjxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBsaXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjazxMaXN0QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cztcblxuICBwdWJsaWMgc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2suZW1wdHkoKTtcblxuICAvKiogUmVnaXN0ZXJzICoqL1xuXG4gIHByaXZhdGUgcGMgPSAtMTtcbiAgcHJpdmF0ZSByYSA9IC0xO1xuXG4gIHByaXZhdGUgZ2V0IGZwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gIH1cblxuICBwcml2YXRlIHNldCBmcChmcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5mcCA9IGZwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc3AoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zcDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IHNwKHNwOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gIH1cblxuICBwdWJsaWMgczA6IGFueSA9IG51bGw7XG4gIHB1YmxpYyBzMTogYW55ID0gbnVsbDtcbiAgcHVibGljIHQwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgdDE6IGFueSA9IG51bGw7XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgZmV0Y2gocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgfVxuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3RlciwgdmFsdWU6IFQpIHtcbiAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMucmEpO1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zcCAtIDE7XG4gICAgLy8gdGhpcy5mcCA9IHRoaXMuc3AgKyAxO1xuICB9XG5cbiAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICB0aGlzLnJhID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KDApO1xuICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlPG51bWJlcj4oLTEpO1xuICB9XG5cbiAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICBnb3RvKHBjOiBudW1iZXIpIHtcbiAgICB0aGlzLnBjID0gcGM7XG4gIH1cblxuICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgY2FsbChwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHRoaXMucGM7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gIHJldHVyblRvKHJhOiBudW1iZXIpIHtcbiAgICB0aGlzLnJhID0gcmE7XG4gIH1cblxuICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgcmV0dXJuKCkge1xuICAgIHRoaXMucGMgPSB0aGlzLnJhO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWwoXG4gICAgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzZWxmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICAgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICAgcHJvZ3JhbTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbVxuICApIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgdm0ucGMgPSBwcm9ncmFtLnN0YXJ0O1xuICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2NvcGU6IFNjb3BlLFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIHByaXZhdGUgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlcik6IFZNU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncylcbiAgICB9O1xuICB9XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgLy8gICAgICAgICguLi4uKVxuICAgIC8vICAgICAgICAodGFpbClcbiAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgLy8gRU5EOiAgIE5vb3BcblxuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICBsZXQgbWFya2VyID0gdGhpcy5jYWNoZUdyb3Vwcy5wb3AoKTtcbiAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcblxuICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG5cbiAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gIH1cblxuICBpdGVyYXRlKG1lbW86IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdmFsdWU6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk6IFRyeU9wY29kZSB7XG4gICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICBzdGFjay5wdXNoKG1lbW8pO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcblxuICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gIH1cblxuICBlbnRlckl0ZW0oa2V5OiBzdHJpbmcsIG9wY29kZTogVHJ5T3Bjb2RlKSB7XG4gICAgdGhpcy5saXN0QmxvY2soKS5tYXBba2V5XSA9IG9wY29kZTtcbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBlbnRlckxpc3Qoc3RhcnQ6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PEJsb2NrT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDApO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWs8UmVmZXJlbmNlSXRlcmF0b3I+KCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhcnQsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcblxuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucHVzaChvcGNvZGUpO1xuXG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWRFbnRlcihvcGNvZGU6IEJsb2NrT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gob3Bjb2RlLmNoaWxkcmVuKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCkgYXMgQmxvY2tPcGNvZGU7XG5cbiAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICB9XG5cbiAgbGlzdEJsb2NrKCk6IExpc3RCbG9ja09wY29kZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgfVxuXG4gIHVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICB9XG5cbiAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgIGxldCBjYWxsZXJTY29wZSA9IGV4cGVjdCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSwgJ3B1c2hDYWxsZXJTY29wZSBpcyBjYWxsZWQgd2hlbiBhIGNhbGxlciBzY29wZSBpcyBwcmVzZW50Jyk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIsIGJpbmRDYWxsZXI6IGJvb2xlYW4pOiBTY29wZSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShzdGFydDogbnVtYmVyLCBpbml0aWFsaXplPzogKHZtOiBWTSkgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgdGhpcy5wYyA9IHN0YXJ0O1xuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgcmVzdWx0OiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+O1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlIGFzIFJlbmRlclJlc3VsdDtcbiAgfVxuXG4gIG5leHQoKTogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZTogT3B0aW9uPE9wY29kZT47XG5cbiAgICBpZiAob3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudikpIHtcbiAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbmU6IHRydWUsXG4gICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChcbiAgICAgICAgZW52LFxuICAgICAgICBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLFxuICAgICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5leHRTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxPcGNvZGU+IHtcbiAgICBsZXQgeyBwYyB9ID0gdGhpcztcblxuICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgdGhpcy5wYyArPSA0O1xuICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogQ29uc3RhbnRTdHJpbmdbXSkge1xuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9bmFtZXMubGVuZ3RoIC0gMTsgaT49MDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
{
"name": "@glimmer/runtime",
"version": "0.23.0-alpha.9",
"version": "0.23.0-alpha.10",
"description": "Minimal runtime needed to render Glimmer templates",

@@ -8,8 +8,8 @@ "repository": "https://github.com/tildeio/glimmer/tree/master/packages/@glimmer/runtime",

"dependencies": {
"@glimmer/util": "^0.23.0-alpha.9",
"@glimmer/reference": "^0.23.0-alpha.9",
"@glimmer/object": "^0.23.0-alpha.9",
"@glimmer/object-reference": "^0.23.0-alpha.9",
"@glimmer/wire-format": "^0.23.0-alpha.9",
"@glimmer/interfaces": "^0.23.0-alpha.9"
"@glimmer/util": "^0.23.0-alpha.10",
"@glimmer/reference": "^0.23.0-alpha.10",
"@glimmer/object": "^0.23.0-alpha.10",
"@glimmer/object-reference": "^0.23.0-alpha.10",
"@glimmer/wire-format": "^0.23.0-alpha.10",
"@glimmer/interfaces": "^0.23.0-alpha.10"
},

@@ -16,0 +16,0 @@ "devDependencies": {

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc