UNPKG

ember-legacy-class-transform

Version:
214 lines (180 loc) 26.1 kB
function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } import { combine, CONSTANT_TAG, isConst, ReferenceCache } from '@glimmer/reference'; import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes'; import ARGS from '../../vm/arguments'; import { ComponentElementOperations } from './dom'; import { Assert } from './vm'; APPEND_OPCODES.add(56 /* PushComponentManager */, function (vm, _ref) { var _definition = _ref.op1; var definition = vm.constants.getOther(_definition); var stack = vm.stack; stack.push({ definition: definition, manager: definition.manager, component: null }); }); APPEND_OPCODES.add(57 /* PushDynamicComponentManager */, function (vm) { var stack = vm.stack; var reference = stack.pop(); var cache = isConst(reference) ? undefined : new ReferenceCache(reference); var definition = cache ? cache.peek() : reference.value(); stack.push({ definition: definition, manager: definition.manager, component: null }); if (cache) { vm.updateWith(new Assert(cache)); } }); APPEND_OPCODES.add(58 /* PushArgs */, function (vm, _ref2) { var synthetic = _ref2.op1; var stack = vm.stack; ARGS.setup(stack, !!synthetic); stack.push(ARGS); }); APPEND_OPCODES.add(59 /* PrepareArgs */, function (vm, _ref3) { var _state = _ref3.op1; var stack = vm.stack; var _vm$fetchValue = vm.fetchValue(_state), definition = _vm$fetchValue.definition, manager = _vm$fetchValue.manager; var args = stack.pop(); var preparedArgs = manager.prepareArgs(definition, args); if (preparedArgs) { args.clear(); var positional = preparedArgs.positional, named = preparedArgs.named; var positionalCount = positional.length; for (var i = 0; i < positionalCount; i++) { stack.push(positional[i]); } stack.push(positionalCount); var names = Object.keys(named); var namedCount = names.length; var atNames = []; for (var _i = 0; _i < namedCount; _i++) { var value = named[names[_i]]; var atName = '@' + names[_i]; stack.push(value); atNames.push(atName); } stack.push(atNames); args.setup(stack, false); } stack.push(args); }); APPEND_OPCODES.add(60 /* CreateComponent */, function (vm, _ref4) { var _vm$fetchValue2; var flags = _ref4.op1, _state = _ref4.op2; var definition = void 0; var manager = void 0; var args = vm.stack.pop(); var dynamicScope = vm.dynamicScope(); var state = (_vm$fetchValue2 = vm.fetchValue(_state), definition = _vm$fetchValue2.definition, manager = _vm$fetchValue2.manager, _vm$fetchValue2); var hasDefaultBlock = flags & 1; var component = manager.create(vm.env, definition, args, dynamicScope, vm.getSelf(), !!hasDefaultBlock); state.component = component; vm.updateWith(new UpdateComponentOpcode(args.tag, definition.name, component, manager, dynamicScope)); }); APPEND_OPCODES.add(61 /* RegisterComponentDestructor */, function (vm, _ref5) { var _state = _ref5.op1; var _vm$fetchValue3 = vm.fetchValue(_state), manager = _vm$fetchValue3.manager, component = _vm$fetchValue3.component; var destructor = manager.getDestructor(component); if (destructor) vm.newDestroyable(destructor); }); APPEND_OPCODES.add(65 /* BeginComponentTransaction */, function (vm) { vm.beginCacheGroup(); vm.elements().pushSimpleBlock(); }); APPEND_OPCODES.add(62 /* PushComponentOperations */, function (vm) { vm.stack.push(new ComponentElementOperations(vm.env)); }); APPEND_OPCODES.add(67 /* DidCreateElement */, function (vm, _ref6) { var _state = _ref6.op1; var _vm$fetchValue4 = vm.fetchValue(_state), manager = _vm$fetchValue4.manager, component = _vm$fetchValue4.component; var action = 'DidCreateElementOpcode#evaluate'; manager.didCreateElement(component, vm.elements().expectConstructing(action), vm.elements().expectOperations(action)); }); APPEND_OPCODES.add(63 /* GetComponentSelf */, function (vm, _ref7) { var _state = _ref7.op1; var state = vm.fetchValue(_state); vm.stack.push(state.manager.getSelf(state.component)); }); APPEND_OPCODES.add(64 /* GetComponentLayout */, function (vm, _ref8) { var _state = _ref8.op1; var _vm$fetchValue5 = vm.fetchValue(_state), manager = _vm$fetchValue5.manager, definition = _vm$fetchValue5.definition, component = _vm$fetchValue5.component; vm.stack.push(manager.layoutFor(definition, component, vm.env)); }); APPEND_OPCODES.add(68 /* DidRenderLayout */, function (vm, _ref9) { var _state = _ref9.op1; var _vm$fetchValue6 = vm.fetchValue(_state), manager = _vm$fetchValue6.manager, component = _vm$fetchValue6.component; var bounds = vm.elements().popBlock(); manager.didRenderLayout(component, bounds); vm.env.didCreate(component, manager); vm.updateWith(new DidUpdateLayoutOpcode(manager, component, bounds)); }); APPEND_OPCODES.add(66 /* CommitComponentTransaction */, function (vm) { return vm.commitCacheGroup(); }); export var UpdateComponentOpcode = function (_UpdatingOpcode) { _inherits(UpdateComponentOpcode, _UpdatingOpcode); function UpdateComponentOpcode(tag, name, component, manager, dynamicScope) { _classCallCheck(this, UpdateComponentOpcode); var _this = _possibleConstructorReturn(this, _UpdatingOpcode.call(this)); _this.name = name; _this.component = component; _this.manager = manager; _this.dynamicScope = dynamicScope; _this.type = 'update-component'; var componentTag = manager.getTag(component); if (componentTag) { _this.tag = combine([tag, componentTag]); } else { _this.tag = tag; } return _this; } UpdateComponentOpcode.prototype.evaluate = function evaluate(_vm) { var component = this.component, manager = this.manager, dynamicScope = this.dynamicScope; manager.update(component, dynamicScope); }; UpdateComponentOpcode.prototype.toJSON = function toJSON() { return { args: [JSON.stringify(this.name)], guid: this._guid, type: this.type }; }; return UpdateComponentOpcode; }(UpdatingOpcode); export var DidUpdateLayoutOpcode = function (_UpdatingOpcode2) { _inherits(DidUpdateLayoutOpcode, _UpdatingOpcode2); function DidUpdateLayoutOpcode(manager, component, bounds) { _classCallCheck(this, DidUpdateLayoutOpcode); var _this2 = _possibleConstructorReturn(this, _UpdatingOpcode2.call(this)); _this2.manager = manager; _this2.component = component; _this2.bounds = bounds; _this2.type = 'did-update-layout'; _this2.tag = CONSTANT_TAG; return _this2; } DidUpdateLayoutOpcode.prototype.evaluate = function evaluate(vm) { var manager = this.manager, component = this.component, bounds = this.bounds; manager.didUpdateLayout(component, bounds); vm.env.didUpdate(component, manager); }; return DidUpdateLayoutOpcode; }(UpdatingOpcode); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwiY29tcG9uZW50IiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImF0TmFtZXMiLCJhdE5hbWUiLCJmbGFncyIsIm9wMiIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsInR5cGUiLCJjb21wb25lbnRUYWciLCJnZXRUYWciLCJldmFsdWF0ZSIsIl92bSIsInVwZGF0ZSIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJndWlkIiwiX2d1aWQiLCJkaWRVcGRhdGVMYXlvdXQiLCJkaWRVcGRhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsT0FBVCxFQUFrQkMsWUFBbEIsRUFBZ0NDLE9BQWhDLEVBQXlDQyxjQUF6QyxRQUErRCxvQkFBL0Q7QUFDQSxTQUFTQyxjQUFULEVBQXlCQyxjQUF6QixRQUErQyxlQUEvQztBQUNBLE9BQU9DLElBQVAsTUFBaUIsb0JBQWpCO0FBQ0EsU0FBU0MsMEJBQVQsUUFBMkMsT0FBM0M7QUFDQSxTQUFTQyxNQUFULFFBQXVCLE1BQXZCO0FBQ0FKLGVBQWVLLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsMEJBQXRCLEVBQWtELFVBQUNDLEVBQUQsUUFBOEI7QUFBQSxRQUFsQkMsV0FBa0IsUUFBdkJDLEdBQXVCOztBQUM1RSxRQUFJQyxhQUFhSCxHQUFHSSxTQUFILENBQWFDLFFBQWIsQ0FBc0JKLFdBQXRCLENBQWpCO0FBQ0EsUUFBSUssUUFBUU4sR0FBR00sS0FBZjtBQUNBQSxVQUFNQyxJQUFOLENBQVcsRUFBRUosc0JBQUYsRUFBY0ssU0FBU0wsV0FBV0ssT0FBbEMsRUFBMkNDLFdBQVcsSUFBdEQsRUFBWDtBQUNILENBSkQ7QUFLQWYsZUFBZUssR0FBZixDQUFtQixFQUFuQixDQUFzQixpQ0FBdEIsRUFBeUQsY0FBTTtBQUMzRCxRQUFJTyxRQUFRTixHQUFHTSxLQUFmO0FBQ0EsUUFBSUksWUFBWUosTUFBTUssR0FBTixFQUFoQjtBQUNBLFFBQUlDLFFBQVFwQixRQUFRa0IsU0FBUixJQUFxQkcsU0FBckIsR0FBaUMsSUFBSXBCLGNBQUosQ0FBbUJpQixTQUFuQixDQUE3QztBQUNBLFFBQUlQLGFBQWFTLFFBQVFBLE1BQU1FLElBQU4s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QURHLEdBQzRCLElBRDVCLENBQ0hBLE9BREc7QUFBQSxZQUNNQyxTQUROLEdBQzRCLElBRDVCLENBQ01BLFNBRE47QUFBQSxZQUNpQmlELE1BRGpCLEdBQzRCLElBRDVCLENBQ2lCQSxNQURqQjs7QUFFVGxELGdCQUFRbUUsZUFBUixDQUF3QmxFLFNBQXhCLEVBQW1DaUQsTUFBbkM7QUFDQTFELFdBQUcwQyxHQUFILENBQU9rQyxTQUFQLENBQWlCbkUsU0FBakIsRUFBNEJELE9BQTVCO0FBQ0gsS0FiTDs7QUFBQTtBQUFBLEVBQTJDYixjQUEzQyIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21iaW5lLCBDT05TVEFOVF9UQUcsIGlzQ29uc3QsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IEFSR1MgZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi8sICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfZGVmaW5pdGlvbik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgc3RhY2sucHVzaCh7IGRlZmluaXRpb24sIG1hbmFnZXI6IGRlZmluaXRpb24ubWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlcjogZGVmaW5pdGlvbi5tYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU4IC8qIFB1c2hBcmdzICovLCAodm0sIHsgb3AxOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBhdE5hbWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBuYW1lZFtuYW1lc1tpXV07XG4gICAgICAgICAgICBsZXQgYXROYW1lID0gYEAke25hbWVzW2ldfWA7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIGF0TmFtZXMucHVzaChhdE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2goYXROYW1lcyk7XG4gICAgICAgIGFyZ3Muc2V0dXAoc3RhY2ssIGZhbHNlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbjtcbiAgICBsZXQgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3VwZGF0ZS1jb21wb25lbnQnO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC11cGRhdGUtbGF5b3V0JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59Il19