{"version":3,"file":"question_normal-Dq-VhFJw.js","sources":["../../../node_modules/.pnpm/vuetify@2.7.2_vue@2.7.16/node_modules/vuetify/lib/components/VRadioGroup/VRadioGroup.js","../../../node_modules/.pnpm/vuetify@2.7.2_vue@2.7.16/node_modules/vuetify/lib/components/VRadioGroup/VRadio.js","../../../app/javascript/components/shared/events_mixin.js","../../../app/javascript/components/questions/question_state_mixin.js","../../../app/javascript/components/questions/out_of_time_alert.vue","../../../app/javascript/components/questions/out_of_time_student_chip.vue","../../../app/javascript/components/questions/open_question_field.vue","../../../app/javascript/components/questions/answer_upload_preview.vue","../../../app/javascript/components/questions/answer_uploads_preview.vue","../../../node_modules/.pnpm/qrcode.vue@1.7.0_vue@2.7.16/node_modules/qrcode.vue/dist/qrcode.vue.esm.js","../../../app/javascript/components/questions/answer_upload_qr_code.vue","../../../app/javascript/components/questions/choice_correction_wrapper.vue","../../../app/javascript/components/questions/question_choices.vue","../../../app/javascript/components/questions/answer_file_upload.vue","../../../node_modules/.pnpm/diff@5.2.0/node_modules/diff/lib/index.mjs","../../../app/javascript/components/questions/textExpanderDetector.js","../../../app/javascript/components/questions/question_correction_comment.vue","../../../app/javascript/components/questions/answer_debug_info.vue","../../../app/javascript/components/questions/question_normal.vue"],"sourcesContent":["// Styles\nimport \"../../../src/styles/components/_selection-controls.sass\";\nimport \"../../../src/components/VRadioGroup/VRadioGroup.sass\"; // Extensions\n\nimport VInput from '../VInput';\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'; // Types\n\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(BaseItemGroup, VInput);\n/* @vue/component */\n\nexport default baseMixins.extend({\n name: 'v-radio-group',\n\n provide() {\n return {\n radioGroup: this\n };\n },\n\n props: {\n column: {\n type: Boolean,\n default: true\n },\n height: {\n type: [Number, String],\n default: 'auto'\n },\n name: String,\n row: Boolean,\n // If no value set on VRadio\n // will match valueComparator\n // force default to null\n value: null\n },\n computed: {\n classes() {\n return { ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--radio-group': true,\n 'v-input--radio-group--column': this.column && !this.row,\n 'v-input--radio-group--row': this.row\n };\n }\n\n },\n methods: {\n genDefaultSlot() {\n return this.$createElement('div', {\n staticClass: 'v-input--radio-group__input',\n attrs: {\n id: this.id,\n role: 'radiogroup',\n 'aria-labelledby': this.computedId\n }\n }, VInput.options.methods.genDefaultSlot.call(this));\n },\n\n genInputSlot() {\n const render = VInput.options.methods.genInputSlot.call(this);\n delete render.data.on.click;\n return render;\n },\n\n genLabel() {\n const label = VInput.options.methods.genLabel.call(this);\n if (!label) return null;\n label.data.attrs.id = this.computedId; // WAI considers this an orphaned label\n\n delete label.data.attrs.for;\n label.tag = 'legend';\n return label;\n },\n\n onClick: BaseItemGroup.options.methods.onClick\n },\n\n render(h) {\n const vnode = VInput.options.render.call(this, h);\n\n this._b(vnode.data, 'div', this.attrs$);\n\n return vnode;\n }\n\n});\n//# sourceMappingURL=VRadioGroup.js.map","// Styles\nimport \"../../../src/components/VRadioGroup/VRadio.sass\";\nimport VLabel from '../VLabel';\nimport VIcon from '../VIcon';\nimport VInput from '../VInput'; // Mixins\n\nimport BindsAttrs from '../../mixins/binds-attrs';\nimport Colorable from '../../mixins/colorable';\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport Rippleable from '../../mixins/rippleable';\nimport Themeable from '../../mixins/themeable';\nimport Selectable, { prevent } from '../../mixins/selectable'; // Utilities\n\nimport { getSlot } from '../../util/helpers';\nimport mixins from '../../util/mixins';\nimport { mergeListeners } from '../../util/mergeData';\nconst baseMixins = mixins(BindsAttrs, Colorable, Rippleable, GroupableFactory('radioGroup'), Themeable);\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n name: 'v-radio',\n inheritAttrs: false,\n props: {\n disabled: {\n type: Boolean,\n default: null\n },\n id: String,\n label: String,\n name: String,\n offIcon: {\n type: String,\n default: '$radioOff'\n },\n onIcon: {\n type: String,\n default: '$radioOn'\n },\n readonly: {\n type: Boolean,\n default: null\n },\n value: {\n default: null\n }\n },\n data: () => ({\n isFocused: false\n }),\n computed: {\n classes() {\n return {\n 'v-radio--is-disabled': this.isDisabled,\n 'v-radio--is-focused': this.isFocused,\n ...this.themeClasses,\n ...this.groupClasses\n };\n },\n\n computedColor() {\n if (this.isDisabled) return undefined;\n return Selectable.options.computed.computedColor.call(this);\n },\n\n computedIcon() {\n return this.isActive ? this.onIcon : this.offIcon;\n },\n\n computedId() {\n return VInput.options.computed.computedId.call(this);\n },\n\n hasLabel: VInput.options.computed.hasLabel,\n\n hasState() {\n return (this.radioGroup || {}).hasState;\n },\n\n isDisabled() {\n var _a;\n\n return (_a = this.disabled) !== null && _a !== void 0 ? _a : !!this.radioGroup && this.radioGroup.isDisabled;\n },\n\n isReadonly() {\n var _a;\n\n return (_a = this.readonly) !== null && _a !== void 0 ? _a : !!this.radioGroup && this.radioGroup.isReadonly;\n },\n\n computedName() {\n if (this.name || !this.radioGroup) {\n return this.name;\n }\n\n return this.radioGroup.name || `radio-${this.radioGroup._uid}`;\n },\n\n rippleState() {\n return Selectable.options.computed.rippleState.call(this);\n },\n\n validationState() {\n return (this.radioGroup || {}).validationState || this.computedColor;\n }\n\n },\n methods: {\n genInput(args) {\n // We can't actually use the mixin directly because\n // it's made for standalone components, but its\n // genInput method is exactly what we need\n return Selectable.options.methods.genInput.call(this, 'radio', args);\n },\n\n genLabel() {\n if (!this.hasLabel) return null;\n return this.$createElement(VLabel, {\n on: {\n // Label shouldn't cause the input to focus\n click: prevent\n },\n attrs: {\n for: this.computedId\n },\n props: {\n color: this.validationState,\n focused: this.hasState\n }\n }, getSlot(this, 'label') || this.label);\n },\n\n genRadio() {\n const {\n title,\n ...radioAttrs\n } = this.attrs$;\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input'\n }, [this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.radioGroup && this.radioGroup.dense\n }\n }), this.computedIcon), this.genInput({\n name: this.computedName,\n value: this.value,\n ...radioAttrs\n }), this.genRipple(this.setTextColor(this.rippleState))]);\n },\n\n onFocus(e) {\n this.isFocused = true;\n this.$emit('focus', e);\n },\n\n onBlur(e) {\n this.isFocused = false;\n this.$emit('blur', e);\n },\n\n onChange() {\n if (this.isDisabled || this.isReadonly || this.isActive) return;\n this.toggle();\n },\n\n onKeydown: () => {} // Override default with noop\n\n },\n\n render(h) {\n const data = {\n staticClass: 'v-radio',\n class: this.classes,\n on: mergeListeners({\n click: this.onChange\n }, this.listeners$),\n attrs: {\n title: this.attrs$.title\n }\n };\n return h('div', data, [this.genRadio(), this.genLabel()]);\n }\n\n});\n//# sourceMappingURL=VRadio.js.map","import ws from \"../../web_sockets\"\nimport { useStudentEventRegisterer } from \"@/composables/useRegisterStudentEvent\"\n\nconst events = [\n { name: \"mouse_leave\", status: { name: \"mouseInDocument\", value: false } },\n { name: \"mouse_enter\", status: { name: \"mouseInDocument\", value: true } },\n { name: \"loose_focus\", status: { name: \"documentInFocus\", value: false } },\n { name: \"get_focus\", status: { name: \"documentInFocus\", value: true } },\n { name: \"fullscreen_enter\", status: { name: \"fullscreen\", value: true } },\n { name: \"fullscreen_leave\", status: { name: \"fullscreen\", value: false } },\n {\n name: \"early_correction_access\",\n status: { name: \"earlyCorrectionAccess\", value: false },\n },\n { name: \"back_online\", status: { name: \"backOnline\", value: false } },\n { name: \"offline\", status: { name: \"offline\", value: false } },\n { name: \"paste\", status: { name: \"paste\", value: false } },\n { name: \"copy\", status: { name: \"copy\", value: false } },\n { name: \"cut\", status: { name: \"cut\", value: false } },\n { name: \"resize_browser\", status: { name: \"resizeBrowser\", value: false } },\n { name: \"page_load\", status: { name: \"pageLoad\", value: false } },\n { name: \"enter_exam\", status: { name: \"enterExam\", value: false } },\n { name: \"leave_exam\", status: { name: \"leaveExam\", value: false } },\n { name: \"bulk_insert\", status: { name: \"bulkInsert\", value: false } },\n { name: \"fast_insert\", status: { name: \"fastInsert\", value: false } },\n]\n\nexport default {\n methods: {\n registerEvent({ event, exerciseId, details } = {\n exerciseId: this.currentExercise?.id,\n details: {},\n }) {\n useStudentEventRegisterer(this.quiz.id, this.quizzesAttemptSummary.id)\n .register({ event, exerciseId, details })\n },\n startEventSubscription(quizId) {\n return ws.channels.QuizStudentEvents.subscribe({ quizId: quizId })\n },\n },\n computed: {\n events() {\n return events\n },\n },\n}\n","export default {\n computed: {\n outOfTimeAnswer() {\n return [\"out_of_time\", \"timer_timeout\"].includes(this.answer?.status)\n },\n rejectedAnswer() {\n return this.answer?.status === \"rejected\"\n },\n },\n}\n","\n\n\n","\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","/*!\n * qrcode.vue v1.7.0\n * A Vue component to generate QRCode.\n * © 2017-2019 @scopewu(https://github.com/scopewu)\n * MIT License.\n */\nvar mode = {\n MODE_NUMBER: 1 << 0,\n MODE_ALPHA_NUM: 1 << 1,\n MODE_8BIT_BYTE: 1 << 2,\n MODE_KANJI: 1 << 3\n};\n\nfunction QR8bitByte(data) {\n this.mode = mode.MODE_8BIT_BYTE;\n this.data = data;\n}\n\nQR8bitByte.prototype = {\n getLength: function (buffer) {\n return this.data.length;\n },\n write: function (buffer) {\n for (var i = 0; i < this.data.length; i++) {\n // not JIS ...\n buffer.put(this.data.charCodeAt(i), 8);\n }\n }\n};\nvar _8BitByte = QR8bitByte;\n\nvar ErrorCorrectLevel = {\n L: 1,\n M: 0,\n Q: 3,\n H: 2\n};\n\nfunction QRRSBlock(totalCount, dataCount) {\n this.totalCount = totalCount;\n this.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [// L\n// M\n// Q\n// H\n// 1\n[1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9], // 2\n[1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16], // 3\n[1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13], // 4\t\t\n[1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9], // 5\n[1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12], // 6\n[2, 86, 68], [4, 43, 27], [4, 43, 19], [4, 43, 15], // 7\t\t\n[2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14], // 8\n[2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15], // 9\n[2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13], // 10\t\t\n[2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16], // 11\n[4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13], // 12\n[2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15], // 13\n[4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12], // 14\n[3, 145, 115, 1, 146, 116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13], // 15\n[5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12], // 16\n[5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16], // 17\n[1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15], // 18\n[5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15], // 19\n[3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14], // 20\n[3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15, 43, 15, 10, 44, 16], // 21\n[4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17], // 22\n[2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13], // 23\n[4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16], // 24\n[6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17], // 25\n[8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16], // 26\n[10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17], // 27\n[8, 152, 122, 4, 153, 123], [22, 73, 45, 3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16], // 28\n[3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16], // 29\n[7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16], // 30\n[5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16], // 31\n[13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16], // 32\n[17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16], // 33\n[17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19, 55, 25], [11, 45, 15, 46, 46, 16], // 34\n[13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17], // 35\n[12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16], // 36\n[6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16], // 37\n[17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16], // 38\n[4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16], // 39\n[20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10, 45, 15, 67, 46, 16], // 40\n[19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16]];\n\nQRRSBlock.getRSBlocks = function (typeNumber, errorCorrectLevel) {\n var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\n if (rsBlock == undefined) {\n throw new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n }\n\n var length = rsBlock.length / 3;\n var list = new Array();\n\n for (var i = 0; i < length; i++) {\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j++) {\n list.push(new QRRSBlock(totalCount, dataCount));\n }\n }\n\n return list;\n};\n\nQRRSBlock.getRsBlockTable = function (typeNumber, errorCorrectLevel) {\n switch (errorCorrectLevel) {\n case ErrorCorrectLevel.L:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\n case ErrorCorrectLevel.M:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\n case ErrorCorrectLevel.Q:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\n case ErrorCorrectLevel.H:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\n default:\n return undefined;\n }\n};\n\nvar RSBlock = QRRSBlock;\n\nfunction QRBitBuffer() {\n this.buffer = new Array();\n this.length = 0;\n}\n\nQRBitBuffer.prototype = {\n get: function (index) {\n var bufIndex = Math.floor(index / 8);\n return (this.buffer[bufIndex] >>> 7 - index % 8 & 1) == 1;\n },\n put: function (num, length) {\n for (var i = 0; i < length; i++) {\n this.putBit((num >>> length - i - 1 & 1) == 1);\n }\n },\n getLengthInBits: function () {\n return this.length;\n },\n putBit: function (bit) {\n var bufIndex = Math.floor(this.length / 8);\n\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0);\n }\n\n if (bit) {\n this.buffer[bufIndex] |= 0x80 >>> this.length % 8;\n }\n\n this.length++;\n }\n};\nvar BitBuffer = QRBitBuffer;\n\nvar QRMath = {\n glog: function (n) {\n if (n < 1) {\n throw new Error(\"glog(\" + n + \")\");\n }\n\n return QRMath.LOG_TABLE[n];\n },\n gexp: function (n) {\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return QRMath.EXP_TABLE[n];\n },\n EXP_TABLE: new Array(256),\n LOG_TABLE: new Array(256)\n};\n\nfor (var i = 0; i < 8; i++) {\n QRMath.EXP_TABLE[i] = 1 << i;\n}\n\nfor (var i = 8; i < 256; i++) {\n QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];\n}\n\nfor (var i = 0; i < 255; i++) {\n QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;\n}\n\nvar math = QRMath;\n\nfunction QRPolynomial(num, shift) {\n if (num.length == undefined) {\n throw new Error(num.length + \"/\" + shift);\n }\n\n var offset = 0;\n\n while (offset < num.length && num[offset] == 0) {\n offset++;\n }\n\n this.num = new Array(num.length - offset + shift);\n\n for (var i = 0; i < num.length - offset; i++) {\n this.num[i] = num[i + offset];\n }\n}\n\nQRPolynomial.prototype = {\n get: function (index) {\n return this.num[index];\n },\n getLength: function () {\n return this.num.length;\n },\n multiply: function (e) {\n var num = new Array(this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < this.getLength(); i++) {\n for (var j = 0; j < e.getLength(); j++) {\n num[i + j] ^= math.gexp(math.glog(this.get(i)) + math.glog(e.get(j)));\n }\n }\n\n return new QRPolynomial(num, 0);\n },\n mod: function (e) {\n if (this.getLength() - e.getLength() < 0) {\n return this;\n }\n\n var ratio = math.glog(this.get(0)) - math.glog(e.get(0));\n var num = new Array(this.getLength());\n\n for (var i = 0; i < this.getLength(); i++) {\n num[i] = this.get(i);\n }\n\n for (var i = 0; i < e.getLength(); i++) {\n num[i] ^= math.gexp(math.glog(e.get(i)) + ratio);\n } // recursive call\n\n\n return new QRPolynomial(num, 0).mod(e);\n }\n};\nvar Polynomial = QRPolynomial;\n\nvar QRMaskPattern = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n};\nvar QRUtil = {\n PATTERN_POSITION_TABLE: [[], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]],\n G15: 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0,\n G18: 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0,\n G15_MASK: 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1,\n getBCHTypeInfo: function (data) {\n var d = data << 10;\n\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= QRUtil.G15 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15);\n }\n\n return (data << 10 | d) ^ QRUtil.G15_MASK;\n },\n getBCHTypeNumber: function (data) {\n var d = data << 12;\n\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= QRUtil.G18 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18);\n }\n\n return data << 12 | d;\n },\n getBCHDigit: function (data) {\n var digit = 0;\n\n while (data != 0) {\n digit++;\n data >>>= 1;\n }\n\n return digit;\n },\n getPatternPosition: function (typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n getMask: function (maskPattern, i, j) {\n switch (maskPattern) {\n case QRMaskPattern.PATTERN000:\n return (i + j) % 2 == 0;\n\n case QRMaskPattern.PATTERN001:\n return i % 2 == 0;\n\n case QRMaskPattern.PATTERN010:\n return j % 3 == 0;\n\n case QRMaskPattern.PATTERN011:\n return (i + j) % 3 == 0;\n\n case QRMaskPattern.PATTERN100:\n return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;\n\n case QRMaskPattern.PATTERN101:\n return i * j % 2 + i * j % 3 == 0;\n\n case QRMaskPattern.PATTERN110:\n return (i * j % 2 + i * j % 3) % 2 == 0;\n\n case QRMaskPattern.PATTERN111:\n return (i * j % 3 + (i + j) % 2) % 2 == 0;\n\n default:\n throw new Error(\"bad maskPattern:\" + maskPattern);\n }\n },\n getErrorCorrectPolynomial: function (errorCorrectLength) {\n var a = new Polynomial([1], 0);\n\n for (var i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new Polynomial([1, math.gexp(i)], 0));\n }\n\n return a;\n },\n getLengthInBits: function (mode$1, type) {\n if (1 <= type && type < 10) {\n // 1 - 9\n switch (mode$1) {\n case mode.MODE_NUMBER:\n return 10;\n\n case mode.MODE_ALPHA_NUM:\n return 9;\n\n case mode.MODE_8BIT_BYTE:\n return 8;\n\n case mode.MODE_KANJI:\n return 8;\n\n default:\n throw new Error(\"mode:\" + mode$1);\n }\n } else if (type < 27) {\n // 10 - 26\n switch (mode$1) {\n case mode.MODE_NUMBER:\n return 12;\n\n case mode.MODE_ALPHA_NUM:\n return 11;\n\n case mode.MODE_8BIT_BYTE:\n return 16;\n\n case mode.MODE_KANJI:\n return 10;\n\n default:\n throw new Error(\"mode:\" + mode$1);\n }\n } else if (type < 41) {\n // 27 - 40\n switch (mode$1) {\n case mode.MODE_NUMBER:\n return 14;\n\n case mode.MODE_ALPHA_NUM:\n return 13;\n\n case mode.MODE_8BIT_BYTE:\n return 16;\n\n case mode.MODE_KANJI:\n return 12;\n\n default:\n throw new Error(\"mode:\" + mode$1);\n }\n } else {\n throw new Error(\"type:\" + type);\n }\n },\n getLostPoint: function (qrCode) {\n var moduleCount = qrCode.getModuleCount();\n var lostPoint = 0; // LEVEL1\n\n for (var row = 0; row < moduleCount; row++) {\n for (var col = 0; col < moduleCount; col++) {\n var sameCount = 0;\n var dark = qrCode.isDark(row, col);\n\n for (var r = -1; r <= 1; r++) {\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c++) {\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrCode.isDark(row + r, col + c)) {\n sameCount++;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5;\n }\n }\n } // LEVEL2\n\n\n for (var row = 0; row < moduleCount - 1; row++) {\n for (var col = 0; col < moduleCount - 1; col++) {\n var count = 0;\n if (qrCode.isDark(row, col)) count++;\n if (qrCode.isDark(row + 1, col)) count++;\n if (qrCode.isDark(row, col + 1)) count++;\n if (qrCode.isDark(row + 1, col + 1)) count++;\n\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n } // LEVEL3\n\n\n for (var row = 0; row < moduleCount; row++) {\n for (var col = 0; col < moduleCount - 6; col++) {\n if (qrCode.isDark(row, col) && !qrCode.isDark(row, col + 1) && qrCode.isDark(row, col + 2) && qrCode.isDark(row, col + 3) && qrCode.isDark(row, col + 4) && !qrCode.isDark(row, col + 5) && qrCode.isDark(row, col + 6)) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col++) {\n for (var row = 0; row < moduleCount - 6; row++) {\n if (qrCode.isDark(row, col) && !qrCode.isDark(row + 1, col) && qrCode.isDark(row + 2, col) && qrCode.isDark(row + 3, col) && qrCode.isDark(row + 4, col) && !qrCode.isDark(row + 5, col) && qrCode.isDark(row + 6, col)) {\n lostPoint += 40;\n }\n }\n } // LEVEL4\n\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col++) {\n for (var row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col)) {\n darkCount++;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n return lostPoint;\n }\n};\nvar util = QRUtil;\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n this.modules = null;\n this.moduleCount = 0;\n this.dataCache = null;\n this.dataList = [];\n} // for client side minification\n\n\nvar proto = QRCode.prototype;\n\nproto.addData = function (data) {\n var newData = new _8BitByte(data);\n this.dataList.push(newData);\n this.dataCache = null;\n};\n\nproto.isDark = function (row, col) {\n if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n throw new Error(row + \",\" + col);\n }\n\n return this.modules[row][col];\n};\n\nproto.getModuleCount = function () {\n return this.moduleCount;\n};\n\nproto.make = function () {\n // Calculate automatically typeNumber if provided is < 1\n if (this.typeNumber < 1) {\n var typeNumber = 1;\n\n for (typeNumber = 1; typeNumber < 40; typeNumber++) {\n var rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n var buffer = new BitBuffer();\n var totalDataCount = 0;\n\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n for (var i = 0; i < this.dataList.length; i++) {\n var data = this.dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) break;\n }\n\n this.typeNumber = typeNumber;\n }\n\n this.makeImpl(false, this.getBestMaskPattern());\n};\n\nproto.makeImpl = function (test, maskPattern) {\n this.moduleCount = this.typeNumber * 4 + 17;\n this.modules = new Array(this.moduleCount);\n\n for (var row = 0; row < this.moduleCount; row++) {\n this.modules[row] = new Array(this.moduleCount);\n\n for (var col = 0; col < this.moduleCount; col++) {\n this.modules[row][col] = null; //(col + row) % 3;\n }\n }\n\n this.setupPositionProbePattern(0, 0);\n this.setupPositionProbePattern(this.moduleCount - 7, 0);\n this.setupPositionProbePattern(0, this.moduleCount - 7);\n this.setupPositionAdjustPattern();\n this.setupTimingPattern();\n this.setupTypeInfo(test, maskPattern);\n\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test);\n }\n\n if (this.dataCache == null) {\n this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n }\n\n this.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function (row, col) {\n for (var r = -1; r <= 7; r++) {\n if (row + r <= -1 || this.moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c++) {\n if (col + c <= -1 || this.moduleCount <= col + c) continue;\n\n if (0 <= r && r <= 6 && (c == 0 || c == 6) || 0 <= c && c <= 6 && (r == 0 || r == 6) || 2 <= r && r <= 4 && 2 <= c && c <= 4) {\n this.modules[row + r][col + c] = true;\n } else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n};\n\nproto.getBestMaskPattern = function () {\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i++) {\n this.makeImpl(true, i);\n var lostPoint = util.getLostPoint(this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n};\n\nproto.createMovieClip = function (target_mc, instance_name, depth) {\n var qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n var cs = 1;\n this.make();\n\n for (var row = 0; row < this.modules.length; row++) {\n var y = row * cs;\n\n for (var col = 0; col < this.modules[row].length; col++) {\n var x = col * cs;\n var dark = this.modules[row][col];\n\n if (dark) {\n qr_mc.beginFill(0, 100);\n qr_mc.moveTo(x, y);\n qr_mc.lineTo(x + cs, y);\n qr_mc.lineTo(x + cs, y + cs);\n qr_mc.lineTo(x, y + cs);\n qr_mc.endFill();\n }\n }\n }\n\n return qr_mc;\n};\n\nproto.setupTimingPattern = function () {\n for (var r = 8; r < this.moduleCount - 8; r++) {\n if (this.modules[r][6] != null) {\n continue;\n }\n\n this.modules[r][6] = r % 2 == 0;\n }\n\n for (var c = 8; c < this.moduleCount - 8; c++) {\n if (this.modules[6][c] != null) {\n continue;\n }\n\n this.modules[6][c] = c % 2 == 0;\n }\n};\n\nproto.setupPositionAdjustPattern = function () {\n var pos = util.getPatternPosition(this.typeNumber);\n\n for (var i = 0; i < pos.length; i++) {\n for (var j = 0; j < pos.length; j++) {\n var row = pos[i];\n var col = pos[j];\n\n if (this.modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r++) {\n for (var c = -2; c <= 2; c++) {\n if (r == -2 || r == 2 || c == -2 || c == 2 || r == 0 && c == 0) {\n this.modules[row + r][col + c] = true;\n } else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n};\n\nproto.setupTypeNumber = function (test) {\n var bits = util.getBCHTypeNumber(this.typeNumber);\n\n for (var i = 0; i < 18; i++) {\n var mod = !test && (bits >> i & 1) == 1;\n this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i++) {\n var mod = !test && (bits >> i & 1) == 1;\n this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n};\n\nproto.setupTypeInfo = function (test, maskPattern) {\n var data = this.errorCorrectLevel << 3 | maskPattern;\n var bits = util.getBCHTypeInfo(data); // vertical\t\t\n\n for (var i = 0; i < 15; i++) {\n var mod = !test && (bits >> i & 1) == 1;\n\n if (i < 6) {\n this.modules[i][8] = mod;\n } else if (i < 8) {\n this.modules[i + 1][8] = mod;\n } else {\n this.modules[this.moduleCount - 15 + i][8] = mod;\n }\n } // horizontal\n\n\n for (var i = 0; i < 15; i++) {\n var mod = !test && (bits >> i & 1) == 1;\n\n if (i < 8) {\n this.modules[8][this.moduleCount - i - 1] = mod;\n } else if (i < 9) {\n this.modules[8][15 - i - 1 + 1] = mod;\n } else {\n this.modules[8][15 - i - 1] = mod;\n }\n } // fixed module\n\n\n this.modules[this.moduleCount - 8][8] = !test;\n};\n\nproto.mapData = function (data, maskPattern) {\n var inc = -1;\n var row = this.moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n\n for (var col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col == 6) col--;\n\n while (true) {\n for (var c = 0; c < 2; c++) {\n if (this.modules[row][col - c] == null) {\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = (data[byteIndex] >>> bitIndex & 1) == 1;\n }\n\n var mask = util.getMask(maskPattern, row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n this.modules[row][col - c] = dark;\n bitIndex--;\n\n if (bitIndex == -1) {\n byteIndex++;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || this.moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function (typeNumber, errorCorrectLevel, dataList) {\n var rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n var buffer = new BitBuffer();\n\n for (var i = 0; i < dataList.length; i++) {\n var data = dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n } // calc num max data.\n\n\n var totalDataCount = 0;\n\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw new Error(\"code length overflow. (\" + buffer.getLengthInBits() + \">\" + totalDataCount * 8 + \")\");\n } // end code\n\n\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n } // padding\n\n\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n } // padding\n\n\n while (true) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n\n buffer.put(QRCode.PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n\n buffer.put(QRCode.PAD1, 8);\n }\n\n return QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function (buffer, rsBlocks) {\n var offset = 0;\n var maxDcCount = 0;\n var maxEcCount = 0;\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r++) {\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i++) {\n dcdata[r][i] = 0xff & buffer.buffer[i + offset];\n }\n\n offset += dcCount;\n var rsPoly = util.getErrorCorrectPolynomial(ecCount);\n var rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n\n for (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n\n for (var i = 0; i < rsBlocks.length; i++) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i++) {\n for (var r = 0; r < rsBlocks.length; r++) {\n if (i < dcdata[r].length) {\n data[index++] = dcdata[r][i];\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i++) {\n for (var r = 0; r < rsBlocks.length; r++) {\n if (i < ecdata[r].length) {\n data[index++] = ecdata[r][i];\n }\n }\n }\n\n return data;\n};\n\nvar QRCode_1 = QRCode;\n\n/**\n * Encode UTF16 to UTF8.\n * See: http://jonisalonen.com/2012/from-utf-16-to-utf-8-in-javascript/\n * @param str {string}\n * @returns {string}\n */\n\nfunction toUTF8String(str) {\n var utf8Str = '';\n\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n\n if (charCode < 0x0080) {\n utf8Str += String.fromCharCode(charCode);\n } else if (charCode < 0x0800) {\n utf8Str += String.fromCharCode(0xc0 | charCode >> 6);\n utf8Str += String.fromCharCode(0x80 | charCode & 0x3f);\n } else if (charCode < 0xd800 || charCode >= 0xe000) {\n utf8Str += String.fromCharCode(0xe0 | charCode >> 12);\n utf8Str += String.fromCharCode(0x80 | charCode >> 6 & 0x3f);\n utf8Str += String.fromCharCode(0x80 | charCode & 0x3f);\n } else {\n // surrogate pair\n i++; // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n\n charCode = 0x10000 + ((charCode & 0x3ff) << 10 | str.charCodeAt(i) & 0x3ff);\n utf8Str += String.fromCharCode(0xf0 | charCode >> 18);\n utf8Str += String.fromCharCode(0x80 | charCode >> 12 & 0x3f);\n utf8Str += String.fromCharCode(0x80 | charCode >> 6 & 0x3f);\n utf8Str += String.fromCharCode(0x80 | charCode & 0x3f);\n }\n }\n\n return utf8Str;\n}\n\nfunction generatePath(modules) {\n var margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var ops = [];\n modules.forEach(function (row, y) {\n var start = null;\n row.forEach(function (cell, x) {\n if (!cell && start !== null) {\n // M0 0h7v1H0z injects the space with the move and drops the comma,\n // saving a char per operation\n ops.push(\"M\".concat(start + margin, \" \").concat(y + margin, \"h\").concat(x - start, \"v1H\").concat(start + margin, \"z\"));\n start = null;\n return;\n } // end of row, clean up or skip\n\n\n if (x === row.length - 1) {\n if (!cell) {\n // We would have closed the op above already so this can only mean\n // 2+ light modules in a row.\n return;\n }\n\n if (start === null) {\n // Just a single dark module.\n ops.push(\"M\".concat(x + margin, \",\").concat(y + margin, \" h1v1H\").concat(x + margin, \"z\"));\n } else {\n // Otherwise finish the current line.\n ops.push(\"M\".concat(start + margin, \",\").concat(y + margin, \" h\").concat(x + 1 - start, \"v1H\").concat(start + margin, \"z\"));\n }\n\n return;\n }\n\n if (cell && start === null) {\n start = x;\n }\n });\n });\n return ops.join('');\n} // @vue/component\n\n\nvar QrcodeVue = {\n props: {\n value: {\n type: String,\n required: true,\n default: ''\n },\n className: {\n type: String,\n default: ''\n },\n size: {\n type: [Number, String],\n default: 100,\n validator: function validator(s) {\n return isNaN(Number(s)) !== true;\n }\n },\n level: {\n type: String,\n default: 'L',\n validator: function validator(l) {\n return ['L', 'Q', 'M', 'H'].indexOf(l) > -1;\n }\n },\n background: {\n type: String,\n default: '#fff'\n },\n foreground: {\n type: String,\n default: '#000'\n },\n renderAs: {\n type: String,\n required: false,\n default: 'canvas',\n validator: function validator(as) {\n return ['canvas', 'svg'].indexOf(as) > -1;\n }\n }\n },\n data: function data() {\n return {\n numCells: 0,\n fgPath: ''\n };\n },\n updated: function updated() {\n this.render();\n },\n mounted: function mounted() {\n this.render();\n },\n methods: {\n render: function render() {\n var value = this.value,\n size = this.size,\n level = this.level,\n background = this.background,\n foreground = this.foreground,\n renderAs = this.renderAs;\n\n var _size = size >>> 0; // size to number\n // We'll use type===-1 to force QRCode to automatically pick the best type\n\n\n var qrCode = new QRCode_1(-1, ErrorCorrectLevel[level]);\n qrCode.addData(toUTF8String(value));\n qrCode.make();\n var cells = qrCode.modules;\n var tileW = _size / cells.length;\n var tileH = _size / cells.length;\n var scale = window.devicePixelRatio || 1;\n\n if (renderAs === 'svg') {\n this.numCells = cells.length; // Drawing strategy: instead of a rect per module, we're going to create a\n // single path for the dark modules and layer that on top of a light rect,\n // for a total of 2 DOM nodes. We pay a bit more in string concat but that's\n // way faster than DOM ops.\n // For level 1, 441 nodes -> 2\n // For level 40, 31329 -> 2\n\n this.fgPath = generatePath(cells);\n } else {\n var canvas = this.$refs['qrcode-vue'];\n var ctx = canvas.getContext('2d');\n canvas.height = canvas.width = _size * scale;\n ctx.scale(scale, scale);\n cells.forEach(function (row, rdx) {\n row.forEach(function (cell, cdx) {\n ctx.fillStyle = cell ? foreground : background;\n var w = Math.ceil((cdx + 1) * tileW) - Math.floor(cdx * tileW);\n var h = Math.ceil((rdx + 1) * tileH) - Math.floor(rdx * tileH);\n ctx.fillRect(Math.round(cdx * tileW), Math.round(rdx * tileH), w, h);\n });\n });\n }\n }\n },\n render: function render(createElement) {\n var className = this.className,\n value = this.value,\n level = this.level,\n background = this.background,\n foreground = this.foreground,\n size = this.size,\n renderAs = this.renderAs,\n numCells = this.numCells,\n fgPath = this.fgPath;\n return createElement('div', {\n class: this.class || className,\n attrs: {\n value: value,\n level: level,\n background: background,\n foreground: foreground\n }\n }, [renderAs === 'svg' ? createElement('svg', {\n attrs: {\n height: size,\n width: size,\n shapeRendering: 'crispEdges',\n viewBox: \"0 0 \".concat(numCells, \" \").concat(numCells)\n },\n style: {\n width: size + 'px',\n height: size + 'px'\n }\n }, [createElement('path', {\n attrs: {\n fill: background,\n d: \"M0,0 h\".concat(numCells, \"v\").concat(numCells, \"H0z\")\n }\n }), createElement('path', {\n attrs: {\n fill: foreground,\n d: fgPath\n }\n })]) : createElement('canvas', {\n attrs: {\n height: size,\n width: size\n },\n style: {\n width: size + 'px',\n height: size + 'px'\n },\n ref: 'qrcode-vue'\n }, [])]);\n }\n};\n\nexport default QrcodeVue;\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","function Diff() {}\nDiff.prototype = {\n diff: function diff(oldString, newString) {\n var _options$timeout;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n this.options = options;\n var self = this;\n\n function done(value) {\n if (callback) {\n setTimeout(function () {\n callback(undefined, value);\n }, 0);\n return true;\n } else {\n return value;\n }\n } // Allow subclasses to massage the input prior to running\n\n\n oldString = this.castInput(oldString);\n newString = this.castInput(newString);\n oldString = this.removeEmpty(this.tokenize(oldString));\n newString = this.removeEmpty(this.tokenize(newString));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n\n if (options.maxEditLength) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n\n var maxExecutionTime = (_options$timeout = options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity;\n var abortAfterTimestamp = Date.now() + maxExecutionTime;\n var bestPath = [{\n oldPos: -1,\n lastComponent: undefined\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var newPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done([{\n value: this.join(newString),\n count: newString.length\n }]);\n } // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n\n\n var minDiagonalToConsider = -Infinity,\n maxDiagonalToConsider = Infinity; // Main worker method. checks all permutations of a given edit length for acceptance.\n\n function execEditLength() {\n for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n var basePath = void 0;\n var removePath = bestPath[diagonalPath - 1],\n addPath = bestPath[diagonalPath + 1];\n\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = false;\n\n if (addPath) {\n // what newPos will be after we do an insertion:\n var addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n\n var canRemove = removePath && removePath.oldPos + 1 < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n // TODO: Remove the `+ 1` here to make behavior match Myers algorithm\n // and prefer to order removals before insertions.\n\n\n if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) {\n basePath = self.addToPath(addPath, true, undefined, 0);\n } else {\n basePath = self.addToPath(removePath, undefined, true, 1);\n }\n\n newPos = self.extractCommon(basePath, newString, oldString, diagonalPath);\n\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(buildValues(self, basePath.lastComponent, newString, oldString, self.useLongestToken));\n } else {\n bestPath[diagonalPath] = basePath;\n\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n\n editLength++;\n } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n\n\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback();\n }\n\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n }\n },\n addToPath: function addToPath(path, added, removed, oldPosInc) {\n var last = path.lastComponent;\n\n if (last && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: last.count + 1,\n added: added,\n removed: removed,\n previousComponent: last.previousComponent\n }\n };\n } else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: 1,\n added: added,\n removed: removed,\n previousComponent: last\n }\n };\n }\n },\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n var newLen = newString.length,\n oldLen = oldString.length,\n oldPos = basePath.oldPos,\n newPos = oldPos - diagonalPath,\n commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.lastComponent = {\n count: commonCount,\n previousComponent: basePath.lastComponent\n };\n }\n\n basePath.oldPos = oldPos;\n return newPos;\n },\n equals: function equals(left, right) {\n if (this.options.comparator) {\n return this.options.comparator(left, right);\n } else {\n return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n\n return ret;\n },\n castInput: function castInput(value) {\n return value;\n },\n tokenize: function tokenize(value) {\n return value.split('');\n },\n join: function join(chars) {\n return chars.join('');\n }\n};\n\nfunction buildValues(diff, lastComponent, newString, oldString, useLongestToken) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n var components = [];\n var nextComponent;\n\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n\n components.reverse();\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n // The diffing algorithm is tied to add then remove output and this is the simplest\n // route to get the desired output with minimal overhead.\n\n if (componentPos && components[componentPos - 1].added) {\n var tmp = components[componentPos - 1];\n components[componentPos - 1] = components[componentPos];\n components[componentPos] = tmp;\n }\n }\n } // Special case handle for when one terminal is ignored (i.e. whitespace).\n // For this case we merge the terminal into the prior string and drop the change.\n // This is only available for string mode.\n\n\n var finalComponent = components[componentLen - 1];\n\n if (componentLen > 1 && typeof finalComponent.value === 'string' && (finalComponent.added || finalComponent.removed) && diff.equals('', finalComponent.value)) {\n components[componentLen - 2].value += finalComponent.value;\n components.pop();\n }\n\n return components;\n}\n\nvar characterDiff = new Diff();\nfunction diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n\nfunction generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n\n return defaults;\n}\n\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n// - U+02C7 ˇ ˇ Caron\n// - U+02D8 ˘ ˘ Breve\n// - U+02D9 ˙ ˙ Dot Above\n// - U+02DA ˚ ˚ Ring Above\n// - U+02DB ˛ ˛ Ogonek\n// - U+02DC ˜ ˜ Small Tilde\n// - U+02DD ˝ ˝ Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\n\nvar extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\nvar reWhitespace = /\\S/;\nvar wordDiff = new Diff();\n\nwordDiff.equals = function (left, right) {\n if (this.options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n};\n\nwordDiff.tokenize = function (value) {\n // All whitespace symbols except newline group into one token, each newline - in separate token\n var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n for (var i = 0; i < tokens.length - 1; i++) {\n // If we have an empty string in the next field and we have only word chars before and after, merge\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n tokens[i] += tokens[i + 2];\n tokens.splice(i + 1, 2);\n i--;\n }\n }\n\n return tokens;\n};\n\nfunction diffWords(oldStr, newStr, options) {\n options = generateOptions(options, {\n ignoreWhitespace: true\n });\n return wordDiff.diff(oldStr, newStr, options);\n}\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n return wordDiff.diff(oldStr, newStr, options);\n}\n\nvar lineDiff = new Diff();\n\nlineDiff.tokenize = function (value) {\n if (this.options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n } // Merge the content and line separators into single tokens\n\n\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n\n if (i % 2 && !this.options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n if (this.options.ignoreWhitespace) {\n line = line.trim();\n }\n\n retLines.push(line);\n }\n }\n\n return retLines;\n};\n\nfunction diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n}\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n var options = generateOptions(callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n}\n\nvar sentenceDiff = new Diff();\n\nsentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\n\nfunction diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n}\n\nvar cssDiff = new Diff();\n\ncssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n};\n\nfunction diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar objectPrototypeToString = Object.prototype.toString;\nvar jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\njsonDiff.useLongestToken = true;\njsonDiff.tokenize = lineDiff.tokenize;\n\njsonDiff.castInput = function (value) {\n var _this$options = this.options,\n undefinedReplacement = _this$options.undefinedReplacement,\n _this$options$stringi = _this$options.stringifyReplacer,\n stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {\n return typeof v === 'undefined' ? undefinedReplacement : v;\n } : _this$options$stringi;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n};\n\njsonDiff.equals = function (left, right) {\n return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'));\n};\n\nfunction diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n} // This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n\n if (replacer) {\n obj = replacer(key, obj);\n }\n\n var i;\n\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n\n var canonicalizedObj;\n\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n\n if (_typeof(obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n\n var sortedKeys = [],\n _key;\n\n for (_key in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(_key)) {\n sortedKeys.push(_key);\n }\n }\n\n sortedKeys.sort();\n\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n\n return canonicalizedObj;\n}\n\nvar arrayDiff = new Diff();\n\narrayDiff.tokenize = function (value) {\n return value.slice();\n};\n\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n};\n\nfunction diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n\nfunction parsePatch(uniDiff) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n list = [],\n i = 0;\n\n function parseIndex() {\n var index = {};\n list.push(index); // Parse diff metadata\n\n while (i < diffstr.length) {\n var line = diffstr[i]; // File header found, end parsing diff metadata\n\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n } // Diff index\n\n\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n if (header) {\n index.index = header[1];\n }\n\n i++;\n } // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n\n\n parseFileHeader(index);\n parseFileHeader(index); // Parse hunks\n\n index.hunks = [];\n\n while (i < diffstr.length) {\n var _line = diffstr[i];\n\n if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line && options.strict) {\n // Ignore unexpected content unless in strict mode\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n } // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n\n\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n } // Parses a hunk\n // This assumes that we are at the start of a hunk.\n\n\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: [],\n linedelimiters: []\n }; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n\n var addCount = 0,\n removeCount = 0;\n\n for (; i < diffstr.length; i++) {\n // Lines starting with '---' could be mistaken for the \"remove line\" operation\n // But they could be the header for the next file. Therefore prune such cases out.\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n break;\n }\n\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n break;\n }\n } // Handle the empty block count case\n\n\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n } // Perform optional sanity checking\n\n\n if (options.strict) {\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n }\n\n return hunk;\n }\n\n while (i < diffstr.length) {\n parseIndex();\n }\n\n return list;\n}\n\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction distanceIterator (start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n } // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n\n\n if (start + localOffset <= maxLine) {\n return localOffset;\n }\n\n forwardExhausted = true;\n }\n\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n } // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n\n\n if (minLine <= start - localOffset) {\n return -localOffset++;\n }\n\n backwardExhausted = true;\n return iterator();\n } // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n\n };\n}\n\nfunction applyPatch(source, uniDiff) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n\n uniDiff = uniDiff[0];\n } // Apply the diff to the input\n\n\n var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {\n return line === patchContent;\n },\n errorCount = 0,\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0,\n offset = 0,\n removeEOFNL,\n addEOFNL;\n /**\n * Checks if the hunk exactly fits on the provided location\n */\n\n\n function hunkFits(hunk, toPos) {\n for (var j = 0; j < hunk.lines.length; j++) {\n var line = hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line;\n\n if (operation === ' ' || operation === '-') {\n // Context sanity check\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n errorCount++;\n\n if (errorCount > fuzzFactor) {\n return false;\n }\n }\n\n toPos++;\n }\n }\n\n return true;\n } // Search best fit offsets for each hunk based on the previous ones\n\n\n for (var i = 0; i < hunks.length; i++) {\n var hunk = hunks[i],\n maxLine = lines.length - hunk.oldLines,\n localOffset = 0,\n toPos = offset + hunk.oldStart - 1;\n var iterator = distanceIterator(toPos, minLine, maxLine);\n\n for (; localOffset !== undefined; localOffset = iterator()) {\n if (hunkFits(hunk, toPos + localOffset)) {\n hunk.offset = offset += localOffset;\n break;\n }\n }\n\n if (localOffset === undefined) {\n return false;\n } // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n\n\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n } // Apply patch hunks\n\n\n var diffOffset = 0;\n\n for (var _i = 0; _i < hunks.length; _i++) {\n var _hunk = hunks[_i],\n _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n diffOffset += _hunk.newLines - _hunk.oldLines;\n\n for (var j = 0; j < _hunk.lines.length; j++) {\n var line = _hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line,\n delimiter = _hunk.linedelimiters && _hunk.linedelimiters[j] || '\\n';\n\n if (operation === ' ') {\n _toPos++;\n } else if (operation === '-') {\n lines.splice(_toPos, 1);\n delimiters.splice(_toPos, 1);\n /* istanbul ignore else */\n } else if (operation === '+') {\n lines.splice(_toPos, 0, content);\n delimiters.splice(_toPos, 0, delimiter);\n _toPos++;\n } else if (operation === '\\\\') {\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n if (previousOperation === '+') {\n removeEOFNL = true;\n } else if (previousOperation === '-') {\n addEOFNL = true;\n }\n }\n }\n } // Handle EOFNL insertion/removal\n\n\n if (removeEOFNL) {\n while (!lines[lines.length - 1]) {\n lines.pop();\n delimiters.pop();\n }\n } else if (addEOFNL) {\n lines.push('');\n delimiters.push('\\n');\n }\n\n for (var _k = 0; _k < lines.length - 1; _k++) {\n lines[_k] = lines[_k] + delimiters[_k];\n }\n\n return lines.join('');\n} // Wrapper that supports multiple file patches via callbacks.\n\nfunction applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n\n var currentIndex = 0;\n\n function processIndex() {\n var index = uniDiff[currentIndex++];\n\n if (!index) {\n return options.complete();\n }\n\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n\n processIndex();\n });\n });\n }\n\n processIndex();\n}\n\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n\n var diff = diffLines(oldStr, newStr, options);\n\n if (!diff) {\n return;\n }\n\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n\n var _loop = function _loop(i) {\n var current = diff[i],\n lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n current.lines = lines;\n\n if (current.added || current.removed) {\n var _curRange;\n\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n } // Output our changes\n\n\n (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n }))); // Track the updated file position\n\n\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n var _curRange2;\n\n // Overlapping\n (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));\n } else {\n var _curRange3;\n\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n\n (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));\n\n var hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n\n if (i >= diff.length - 2 && lines.length <= options.context) {\n // EOF is inside this hunk\n var oldEOFNewline = /\\n$/.test(oldStr);\n var newEOFNewline = /\\n$/.test(newStr);\n var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n // special case: old has no eol and no trailing context; no-nl can end up before adds\n // however, if the old file is empty, do not output the no-nl line\n curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n }\n\n if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n curRange.push('\\\\ No newline at end of file');\n }\n }\n\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n\n for (var i = 0; i < diff.length; i++) {\n _loop(i);\n }\n\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n}\nfunction formatPatch(diff) {\n if (Array.isArray(diff)) {\n return diff.map(formatPatch).join('\\n');\n }\n\n var ret = [];\n\n if (diff.oldFileName == diff.newFileName) {\n ret.push('Index: ' + diff.oldFileName);\n }\n\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n\n return ret.join('\\n') + '\\n';\n}\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n}\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n\nfunction arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n return arrayStartsWith(a, b);\n}\nfunction arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction calcLineCount(hunk) {\n var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n}\nfunction merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n\n return ret;\n}\n\nfunction loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return parsePatch(param)[0];\n }\n\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n\n return structuredPatch(undefined, undefined, base, param);\n }\n\n return param;\n}\n\nfunction fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\n\nfunction selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n}\n\nfunction hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\n\nfunction cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n}\n\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n }; // Handle any leading content\n\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n var _hunk$lines;\n\n // Mine inserted\n (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n var _hunk$lines2;\n\n // Theirs inserted\n (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n } // Now push anything that may be remaining\n\n\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n}\n\nfunction mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n var _hunk$lines3;\n\n (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));\n\n return;\n } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n var _hunk$lines4;\n\n (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));\n\n return;\n }\n } else if (arrayEqual(myChanges, theirChanges)) {\n var _hunk$lines5;\n\n (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));\n\n return;\n }\n\n conflict(hunk, myChanges, theirChanges);\n}\n\nfunction removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n\n if (theirChanges.merged) {\n var _hunk$lines6;\n\n (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n}\n\nfunction conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n}\n\nfunction insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n}\n\nfunction insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n}\n\nfunction collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n\n while (state.index < state.lines.length) {\n var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n\n return ret;\n}\n\nfunction collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n if (match[0] === '+') {\n break;\n }\n\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++; // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n\n if (change[0] === '+') {\n conflicted = true;\n\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n\n if (conflicted) {\n return changes;\n }\n\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n\n return {\n merged: merged,\n changes: changes\n };\n}\n\nfunction allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n}\n\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n\n state.index += delta;\n return true;\n}\n\nfunction calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n}\n\nfunction reversePatch(structuredPatch) {\n if (Array.isArray(structuredPatch)) {\n return structuredPatch.map(reversePatch).reverse();\n }\n\n return _objectSpread2(_objectSpread2({}, structuredPatch), {}, {\n oldFileName: structuredPatch.newFileName,\n oldHeader: structuredPatch.newHeader,\n newFileName: structuredPatch.oldFileName,\n newHeader: structuredPatch.oldHeader,\n hunks: structuredPatch.hunks.map(function (hunk) {\n return {\n oldLines: hunk.newLines,\n oldStart: hunk.newStart,\n newLines: hunk.oldLines,\n newStart: hunk.oldStart,\n linedelimiters: hunk.linedelimiters,\n lines: hunk.lines.map(function (l) {\n if (l.startsWith('-')) {\n return \"+\".concat(l.slice(1));\n }\n\n if (l.startsWith('+')) {\n return \"-\".concat(l.slice(1));\n }\n\n return l;\n })\n };\n })\n });\n}\n\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n\n ret.push([operation, change.value]);\n }\n\n return ret;\n}\n\nfunction convertChangesToXML(changes) {\n var ret = [];\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n\n ret.push(escapeHTML(change.value));\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n }\n\n return ret.join('');\n}\n\nfunction escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(//g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n}\n\nexport { Diff, applyPatch, applyPatches, canonicalize, convertChangesToDMP, convertChangesToXML, createPatch, createTwoFilesPatch, diffArrays, diffChars, diffCss, diffJson, diffLines, diffSentences, diffTrimmedLines, diffWords, diffWordsWithSpace, formatPatch, merge, parsePatch, reversePatch, structuredPatch };\n","import { diffChars } from \"diff\"\nimport EventsMixin from \"../shared/events_mixin\"\nimport lodashReplacementHelper from \"../../helpers/lodash_replacement_helpers\"\nimport { useStudentEventRegisterer } from \"@/composables/useRegisterStudentEvent\"\nimport { unescape } from \"lodash\"\n\nconst fastInsertTrigger = 15 // ms\nconst bulkInsertMinLength = 5\n\nexport default {\n mixins: [EventsMixin],\n data: () => ({\n lastContentUpdate: null,\n fastInsertAddedContent: \"\",\n fastInsertDiff: {},\n fastInsertRegisterEventDebounce: null,\n lastQuestionId: null,\n contentInPreviousTimeFrame: \"\",\n }),\n computed: {\n exerciseId() {\n return this.exercise?.id\n },\n },\n methods: {\n questionHasChanged() {\n if(this.lastQuestionId !== this.question.id){\n this.lastQuestionId = this.question.id\n return true\n }\n this.lastQuestionId = this.question.id\n return false\n },\n\n detectBulkInsertion(newValue, oldValue){\n if(this.questionHasChanged()) return\n\n const diff = this.textDiff(newValue, oldValue)\n const addedLength = diff.addedText.length\n\n if (addedLength < bulkInsertMinLength) return\n useStudentEventRegisterer(this.quiz.id, this.quizzesAttemptSummary.id)\n .register({\n event: \"bulk_insert\",\n exerciseId: this.exerciseId,\n details: {\n content: diff.addedText,\n addedText: diff.addedText,\n removedText: diff.removedText,\n diff: diff.diff,\n },\n })\n },\n\n textDiff(newValue, oldValue) {\n const sanitizedNewValue = unescape(newValue.replace(/(<([^>]+)>)/gi, \"\"))\n const sanitizedOldValue = unescape(oldValue.replace(/(<([^>]+)>)/gi, \"\"))\n\n const diff = diffChars(sanitizedOldValue, sanitizedNewValue)\n\n const addedText = diff.filter(d => d.added).map(d => d.value).join(\"\")\n const removedText = diff.filter(d => d.removed).map(d => d.value).join(\"\")\n return { addedText, removedText, diff }\n },\n\n detectFastInsert(newValue) {\n if(this.questionHasChanged()) return\n if(!this.lastContentUpdate) {\n this.contentInPreviousTimeFrame = newValue\n this.lastContentUpdate = new Date()\n return\n }\n\n const now = new Date()\n const timeDiff = now - this.lastContentUpdate\n\n if (timeDiff > fastInsertTrigger) {\n this.contentInPreviousTimeFrame = newValue\n } else {\n const diff = this.textDiff(newValue, this.contentInPreviousTimeFrame)\n this.fastInsertAddedContent = diff.addedText\n this.fastInsertDiff = diff.diff\n this.fastInsertRegisterEventDebounce()\n }\n\n this.lastContentUpdate = new Date()\n },\n registerFastInsertEvent() {\n if (this.fastInsertAddedContent.length < 2) return\n\n useStudentEventRegisterer(this.quiz.id, this.quizzesAttemptSummary.id)\n .register({\n event: \"fast_insert\",\n exerciseId: this.exerciseId,\n details: {\n content: this.fastInsertAddedContent,\n diff: this.fastInsertDiff,\n },\n })\n this.fastInsertAddedContent = \"\"\n },\n },\n mounted() {\n this.fastInsertRegisterEventDebounce = lodashReplacementHelper.debounce(this.registerFastInsertEvent, 500)\n },\n\n}\n","\n\n","\n\n","\n\n\n\n\n\n\n"],"names":["baseMixins","mixins","BaseItemGroup","VInput","__spreadProps","__spreadValues","render","label","h","vnode","BindsAttrs","Colorable","Rippleable","GroupableFactory","Themeable","__unplugin_components_2","Selectable","_a","args","VLabel","prevent","getSlot","title","radioAttrs","__objRest","VIcon","e","data","mergeListeners","events","EventsMixin","event","exerciseId","details","useStudentEventRegisterer","quizId","ws","questionStateMixin","_sfc_main","instanceScoreDuration","mapActions","EvalmeeChip","TextEditor","KatexMd","value","limitedType","limit","newValue","oldValue","EvaFileCard","axiosHelpers","_b","AnswerUploadPreview","DropzonePlaceholder","picture","validate","link","mode","QR8bitByte","buffer","i","_8BitByte","ErrorCorrectLevel","QRRSBlock","totalCount","dataCount","typeNumber","errorCorrectLevel","rsBlock","length","list","count","j","RSBlock","QRBitBuffer","index","bufIndex","num","bit","BitBuffer","QRMath","n","math","QRPolynomial","shift","offset","ratio","Polynomial","QRMaskPattern","QRUtil","d","digit","maskPattern","errorCorrectLength","a","mode$1","type","qrCode","moduleCount","lostPoint","row","col","sameCount","dark","r","c","darkCount","util","QRCode","proto","newData","rsBlocks","totalDataCount","test","minLostPoint","pattern","target_mc","instance_name","depth","qr_mc","cs","y","x","pos","bits","mod","inc","bitIndex","byteIndex","mask","dataList","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","rsPoly","rawPoly","modPoly","modIndex","totalCodeCount","QRCode_1","toUTF8String","str","utf8Str","charCode","generatePath","modules","margin","ops","start","cell","QrcodeVue","s","l","as","size","level","background","foreground","renderAs","_size","cells","tileW","tileH","scale","canvas","ctx","rdx","cdx","w","createElement","className","numCells","fgPath","mapGetters","path","_c","url","api","axios","response","statusClasses","ChoiceCorrectionWrapper","val","Vue","AnswerUploadsPreview","file","files","upload","DirectUpload","error","blob","payload","Diff","oldString","newString","_options$timeout","options","callback","self","done","newLen","oldLen","editLength","maxEditLength","maxExecutionTime","abortAfterTimestamp","bestPath","newPos","minDiagonalToConsider","maxDiagonalToConsider","execEditLength","diagonalPath","basePath","removePath","addPath","canAdd","addPathNewPos","canRemove","buildValues","exec","ret","added","removed","oldPosInc","last","oldPos","commonCount","left","right","array","chars","diff","lastComponent","useLongestToken","components","nextComponent","componentPos","componentLen","component","tmp","finalComponent","characterDiff","diffChars","oldStr","newStr","extendedWordChars","reWhitespace","wordDiff","tokens","lineDiff","retLines","linesAndNewlines","line","sentenceDiff","cssDiff","_typeof","obj","objectPrototypeToString","jsonDiff","_this$options","undefinedReplacement","_this$options$stringi","stringifyReplacer","k","v","canonicalize","stack","replacementStack","replacer","key","canonicalizedObj","sortedKeys","_key","arrayDiff","fastInsertTrigger","bulkInsertMinLength","textExpenderDetector","sanitizedNewValue","unescape","sanitizedOldValue","addedText","removedText","lodashReplacementHelper","EvaBigIcon","KatexMD","timeHelpers","SpreadSheet","AnswerDebugInfo","QuestionCorrectionComment","AnswerFileUpload","ChipPoints","QuestionChoices","AnswerUploadQrCode","OpenQuestionField","OutOfTimeStudentChip","OutOfTimeAlert","QuestionTag","visibleCategoriesIds","category","tag","Answer","c2","errors","_d","_e"],"mappings":"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GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACtG,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACrG,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACrG,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACrG,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACrG,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,GAAG,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACtG,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACrG,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,GAAG,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACxG,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACtG,CAAC,GAAI,IAAK,GAAG,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAC3F,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACxG,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,EAAE,EACtG,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACxG,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,GAAG,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EACtG,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,GAAG,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACxG,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,GAAG,EAAG,CAAC,GAAI,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","x_google_ignoreList":[0,1,9,14]}