[READ-ONLY] Mirror of https://github.com/probablykasper/taskler. Simple text editor for your New Tab page taskler.kasper.space
browser-extension chrome chrome-extension editor extension firefox firefox-addon firefox-extension notes
0

Configure Feed

Select the types of activity you want to include in your feed.

v2.0.3

Kasper (Feb 3, 2019, 9:26 PM +0100) 2e98f9d9 2ba97ae9

+15 -19
+3
CHANGELOG.md
··· 1 + ## 2.0.2 - 2019 Feb 3 2 + - Made extension icons show when they should 3 + 1 4 ## 2.0.1 Firefox - 2018 Nov 19 2 5 - Made extension icons square, to support Firefox. 3 6
dist/Taskler-2.0.3-chrome-firefox.zip

This is a binary file and will not be displayed.

docs/CNAME src/CNAME
+1
docs/CNAME.
··· 1 + taskler.kasp.io
docs/icon128.png

This is a binary file and will not be displayed.

docs/icon16.png

This is a binary file and will not be displayed.

docs/icon48.png

This is a binary file and will not be displayed.

+2 -2
docs/index.html
··· 23 23 <p class="tooltip">Settings</p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 192 168"><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><polygon class="cls-1" points="172 0 154 35 110 35 60 129 7 129 27 168 79 168 130 75 174 75 192 40 172 0"></polygon><polygon class="cls-2" points="56 36 37 75 20 75 0 36 56 36"></polygon></g></g></svg> 24 24 </div><a class="icon extension" id="chrome-extension-icon" target="_blank" href="https://chrome.google.com/webstore/detail/jnibmbpjkpfgaefgbnaneldfbfecpjih"> 25 25 <p class="tooltip">Install the Chrome extension</p><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewbox="0 0 305 305" style="enable-background:new 0 0 305 305;" xml:space="preserve"><g id="XMLID_16_"><path id="XMLID_17_" d="M95.506,152.511c0,31.426,25.567,56.991,56.994,56.991c31.425,0,56.99-25.566,56.99-56.991 c0-31.426-25.565-56.993-56.99-56.993C121.073,95.518,95.506,121.085,95.506,152.511z"></path><path id="XMLID_18_" d="M283.733,77.281c0.444-0.781,0.436-1.74-0.023-2.513c-13.275-22.358-32.167-41.086-54.633-54.159 C205.922,7.134,179.441,0.012,152.5,0.012c-46.625,0-90.077,20.924-119.215,57.407c-0.643,0.804-0.727,1.919-0.212,2.81 l42.93,74.355c0.45,0.78,1.28,1.25,2.164,1.25c0.112,0,0.226-0.008,0.339-0.023c1.006-0.137,1.829-0.869,2.083-1.852 c8.465-32.799,38.036-55.706,71.911-55.706c2.102,0,4.273,0.096,6.455,0.282c0.071,0.007,0.143,0.01,0.214,0.01H281.56 C282.459,78.545,283.289,78.063,283.733,77.281z"></path><path id="XMLID_19_" d="M175.035,224.936c-0.621-0.803-1.663-1.148-2.646-0.876c-6.457,1.798-13.148,2.709-19.889,2.709 c-28.641,0-55.038-16.798-67.251-42.794c-0.03-0.064-0.063-0.126-0.098-0.188L23.911,77.719c-0.446-0.775-1.272-1.25-2.165-1.25 c-0.004,0-0.009,0-0.013,0c-0.898,0.005-1.725,0.49-2.165,1.272C6.767,100.456,0,126.311,0,152.511 c0,36.755,13.26,72.258,37.337,99.969c23.838,27.435,56.656,45.49,92.411,50.84c0.124,0.019,0.248,0.027,0.371,0.027 c0.883,0,1.713-0.47,2.164-1.25l42.941-74.378C175.732,226.839,175.657,225.739,175.035,224.936z"></path><path id="XMLID_20_" d="M292.175,95.226h-85.974c-1.016,0-1.931,0.615-2.314,1.555c-0.384,0.94-0.161,2.02,0.564,2.73 c14.385,14.102,22.307,32.924,22.307,53c0,15.198-4.586,29.824-13.263,42.298c-0.04,0.058-0.077,0.117-0.112,0.178l-61.346,106.252 c-0.449,0.778-0.446,1.737,0.007,2.513c0.449,0.767,1.271,1.237,2.158,1.237c0.009,0,0.019,0,0.028,0 c40.37-0.45,78.253-16.511,106.669-45.222C289.338,231.032,305,192.941,305,152.511c0-19.217-3.532-37.956-10.498-55.698 C294.126,95.855,293.203,95.226,292.175,95.226z"></path></g></svg></a><a class="icon extension" id="firefox-extension-icon" target="_blank" href="https://addons.mozilla.org/addon/taskler"> 26 - <p class="tooltip">Install the Chrome extension</p><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewbox="0 0 32 32"><path d="M31.359,14.615h0c-.044-.289-.088-.459-.088-.459s-.113.131-.3.378A10.77,10.77,0,0,0,30.6,12.5a13.846,13.846,0,0,0-.937-2.411,10.048,10.048,0,0,0-.856-1.468q-.176-.263-.359-.51c-.57-.931-1.224-1.5-1.981-2.576a7.806,7.806,0,0,1-.991-2.685A10.844,10.844,0,0,0,25,4.607c-.777-.784-1.453-1.341-1.861-1.721C21.126,1.006,21.36.031,21.36.031h0S17.6,4.228,19.229,8.6a8.4,8.4,0,0,0,2.8,3.733c1.576,1.3,3.273,2.323,4.168,4.937a8.377,8.377,0,0,0-3.144-3.317,7.573,7.573,0,0,1,.6,3,7.124,7.124,0,0,1-8.711,6.94,6.561,6.561,0,0,1-1.765-.6,7.183,7.183,0,0,1-2.115-1.955l-.01-.017.126.046a6.5,6.5,0,0,0,.9.241,5.628,5.628,0,0,0,3.583-.423c1.126-.625,1.808-1.088,2.361-.905l.01,0c.54.172.966-.352.58-.9a2.94,2.94,0,0,0-2.848-1.112c-1.127.164-2.16.965-3.637.189a3.129,3.129,0,0,1-.277-.163c-.1-.057.317.087.22.022a7.33,7.33,0,0,1-.928-.554c-.022-.018.223.07.2.052a3.581,3.581,0,0,1-.968-.979,1.741,1.741,0,0,1-.066-1.554,1.371,1.371,0,0,1,.6-.564c.191.094.309.165.309.165s-.087-.16-.134-.244c.017-.006.032,0,.049-.011.167.072.537.26.732.375a1.016,1.016,0,0,1,.335.3s.067-.033.017-.173a.9.9,0,0,0-.346-.424l.016,0a2.94,2.94,0,0,1,.426.265,2.079,2.079,0,0,0,.17-.9,1.178,1.178,0,0,0-.069-.5c-.053-.1.03-.14.123-.035a.976.976,0,0,0-.079-.238v-.008h0s.053-.069.077-.094a1.43,1.43,0,0,1,.216-.176,9.973,9.973,0,0,1,1.465-.747c.414-.181.757-.319.827-.359a2.3,2.3,0,0,0,.293-.225,1.968,1.968,0,0,0,.66-1.14,1.6,1.6,0,0,0,.017-.178v-.05l0-.03v0l0-.012v0l0-.013h0c-.06-.225-.448-.394-2.476-.584a1.773,1.773,0,0,1-1.45-1.36l0,.009c-.029.074-.055.149-.081.225.026-.075.052-.15.081-.225l0-.016a5.138,5.138,0,0,1,1.986-2.466c.052-.042-.208.011-.156-.032a5.156,5.156,0,0,1,.53-.224c.091-.038-.39-.222-.815-.177a2.2,2.2,0,0,0-.756.178c.1-.086.4-.2.329-.2a4.865,4.865,0,0,0-1.542.583.314.314,0,0,1,.03-.14,2.4,2.4,0,0,0-.964.744,1.275,1.275,0,0,0,.01-.174,2.876,2.876,0,0,0-.473.444l-.009.007a6.285,6.285,0,0,0-3.517-.3l-.01-.009.012,0a2.943,2.943,0,0,1-.625-.7L6.1,5.852,6.081,5.83c-.077-.114-.156-.243-.237-.387-.058-.1-.117-.217-.176-.338,0-.008-.009-.011-.013-.012-.024,0-.041.111-.061.082l0-.006a4.308,4.308,0,0,1-.283-1.687l-.016.008a1.884,1.884,0,0,0-.714.934c-.061.137-.1.212-.14.287,0,.006,0-.01,0-.035.009-.069.039-.211.032-.2s-.012.019-.019.029a1.733,1.733,0,0,0-.251.372,2.355,2.355,0,0,0-.15.382c-.006.021,0-.018,0-.064s.009-.128,0-.111l-.022.043a9.5,9.5,0,0,0-.8,3.035A3.022,3.022,0,0,0,3.2,8.7v.016a6.628,6.628,0,0,0-.817,1.1,15.606,15.606,0,0,0-1.727,4.23,10.351,10.351,0,0,1,.925-1.621,15,15,0,0,0-1.045,5.5,14.233,14.233,0,0,1,.45-1.629A13.807,13.807,0,0,0,2.234,22.76a15.037,15.037,0,0,0,5.951,6.748h0a13.016,13.016,0,0,0,3.468,1.662c.162.059.326.117.494.173-.053-.021-.1-.044-.153-.067a15.7,15.7,0,0,0,4.5.662c5.394,0,7.175-2.054,7.339-2.259h0a2.73,2.73,0,0,0,.637-.856h0q.156-.064.315-.137l.067-.03.121-.057a11.312,11.312,0,0,0,2.277-1.426,5.5,5.5,0,0,0,2.123-3.1h0a1.938,1.938,0,0,0,.029-1.428q.083-.131.171-.28a12.706,12.706,0,0,0,1.907-6.181v-.006c0-.059,0-.118,0-.177A7.731,7.731,0,0,0,31.359,14.615Z"></path></svg></a> 26 + <p class="tooltip">Install the Firefox extension</p><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewbox="0 0 32 32"><path d="M31.359,14.615h0c-.044-.289-.088-.459-.088-.459s-.113.131-.3.378A10.77,10.77,0,0,0,30.6,12.5a13.846,13.846,0,0,0-.937-2.411,10.048,10.048,0,0,0-.856-1.468q-.176-.263-.359-.51c-.57-.931-1.224-1.5-1.981-2.576a7.806,7.806,0,0,1-.991-2.685A10.844,10.844,0,0,0,25,4.607c-.777-.784-1.453-1.341-1.861-1.721C21.126,1.006,21.36.031,21.36.031h0S17.6,4.228,19.229,8.6a8.4,8.4,0,0,0,2.8,3.733c1.576,1.3,3.273,2.323,4.168,4.937a8.377,8.377,0,0,0-3.144-3.317,7.573,7.573,0,0,1,.6,3,7.124,7.124,0,0,1-8.711,6.94,6.561,6.561,0,0,1-1.765-.6,7.183,7.183,0,0,1-2.115-1.955l-.01-.017.126.046a6.5,6.5,0,0,0,.9.241,5.628,5.628,0,0,0,3.583-.423c1.126-.625,1.808-1.088,2.361-.905l.01,0c.54.172.966-.352.58-.9a2.94,2.94,0,0,0-2.848-1.112c-1.127.164-2.16.965-3.637.189a3.129,3.129,0,0,1-.277-.163c-.1-.057.317.087.22.022a7.33,7.33,0,0,1-.928-.554c-.022-.018.223.07.2.052a3.581,3.581,0,0,1-.968-.979,1.741,1.741,0,0,1-.066-1.554,1.371,1.371,0,0,1,.6-.564c.191.094.309.165.309.165s-.087-.16-.134-.244c.017-.006.032,0,.049-.011.167.072.537.26.732.375a1.016,1.016,0,0,1,.335.3s.067-.033.017-.173a.9.9,0,0,0-.346-.424l.016,0a2.94,2.94,0,0,1,.426.265,2.079,2.079,0,0,0,.17-.9,1.178,1.178,0,0,0-.069-.5c-.053-.1.03-.14.123-.035a.976.976,0,0,0-.079-.238v-.008h0s.053-.069.077-.094a1.43,1.43,0,0,1,.216-.176,9.973,9.973,0,0,1,1.465-.747c.414-.181.757-.319.827-.359a2.3,2.3,0,0,0,.293-.225,1.968,1.968,0,0,0,.66-1.14,1.6,1.6,0,0,0,.017-.178v-.05l0-.03v0l0-.012v0l0-.013h0c-.06-.225-.448-.394-2.476-.584a1.773,1.773,0,0,1-1.45-1.36l0,.009c-.029.074-.055.149-.081.225.026-.075.052-.15.081-.225l0-.016a5.138,5.138,0,0,1,1.986-2.466c.052-.042-.208.011-.156-.032a5.156,5.156,0,0,1,.53-.224c.091-.038-.39-.222-.815-.177a2.2,2.2,0,0,0-.756.178c.1-.086.4-.2.329-.2a4.865,4.865,0,0,0-1.542.583.314.314,0,0,1,.03-.14,2.4,2.4,0,0,0-.964.744,1.275,1.275,0,0,0,.01-.174,2.876,2.876,0,0,0-.473.444l-.009.007a6.285,6.285,0,0,0-3.517-.3l-.01-.009.012,0a2.943,2.943,0,0,1-.625-.7L6.1,5.852,6.081,5.83c-.077-.114-.156-.243-.237-.387-.058-.1-.117-.217-.176-.338,0-.008-.009-.011-.013-.012-.024,0-.041.111-.061.082l0-.006a4.308,4.308,0,0,1-.283-1.687l-.016.008a1.884,1.884,0,0,0-.714.934c-.061.137-.1.212-.14.287,0,.006,0-.01,0-.035.009-.069.039-.211.032-.2s-.012.019-.019.029a1.733,1.733,0,0,0-.251.372,2.355,2.355,0,0,0-.15.382c-.006.021,0-.018,0-.064s.009-.128,0-.111l-.022.043a9.5,9.5,0,0,0-.8,3.035A3.022,3.022,0,0,0,3.2,8.7v.016a6.628,6.628,0,0,0-.817,1.1,15.606,15.606,0,0,0-1.727,4.23,10.351,10.351,0,0,1,.925-1.621,15,15,0,0,0-1.045,5.5,14.233,14.233,0,0,1,.45-1.629A13.807,13.807,0,0,0,2.234,22.76a15.037,15.037,0,0,0,5.951,6.748h0a13.016,13.016,0,0,0,3.468,1.662c.162.059.326.117.494.173-.053-.021-.1-.044-.153-.067a15.7,15.7,0,0,0,4.5.662c5.394,0,7.175-2.054,7.339-2.259h0a2.73,2.73,0,0,0,.637-.856h0q.156-.064.315-.137l.067-.03.121-.057a11.312,11.312,0,0,0,2.277-1.426,5.5,5.5,0,0,0,2.123-3.1h0a1.938,1.938,0,0,0,.029-1.428q.083-.131.171-.28a12.706,12.706,0,0,0,1.907-6.181v-.006c0-.059,0-.118,0-.177A7.731,7.731,0,0,0,31.359,14.615Z"></path></svg></a> 27 27 </div> 28 28 <div class="dialog-container settings-dialog"> 29 29 <div class="dialog"> 30 30 <h1>Taskler</h1> 31 31 <p>Taskler is a simple text editor web page. It's available as a <a href="https://taskler.kasp.io">website</a>, <a href="https://chrome.google.com/webstore/detail/jnibmbpjkpfgaefgbnaneldfbfecpjih">Chrome extension</a> and a <a href="https://addons.mozilla.org/addon/taskler">Firefox extension</a>.</p> 32 - <p>Pro-tip: You can use shortcuts like ctrl/cmd + B, I, U for <b>bold</b>, <i>italics</i>, <u>underline</u>.</p> 32 + <p>You can use shortcuts like cmd+B for <b>bold</b>, cmd+<i>I</i> for italics, cmd+U for <u>underline</u> and cmd+K for <a href="https://www.youtube.com/watch?v=LDU_Txk06tM">links</a>.</p> 33 33 <h1>Settings</h1> 34 34 <div class="checkbox-container dark-mode-checkbox"> 35 35 <input type="checkbox" id="dark-mode-checkbox">
+5 -13
docs/index.js
··· 14670 14670 14671 14671 14672 14672 var body = document.querySelector('body'); 14673 - var isExtension = body.dataset.isExtension === 'true'; 14673 + var isExtension = body.dataset.buildAs === 'extension'; 14674 14674 14675 14675 if (!isExtension) { 14676 - // Opera 8.0+ 14677 - // const isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0 14676 + // browser version check: 14677 + // https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser/9851769 14678 14678 // Firefox 1.0+ 14679 - var isFirefox = typeof InstallTrigger !== 'undefined'; // Safari 3.0+ "[object HTMLElementConstructor]" 14680 - // const isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification)) 14681 - // Internet Explorer 6-11 14682 - // const isIE = /*@cc_on!@*/false || !!document.documentMode 14683 - // Edge 20+ 14684 - // const isEdge = !isIE && !!window.StyleMedia 14685 - // Chrome 1+ 14679 + var isFirefox = typeof InstallTrigger !== 'undefined'; // Chrome 1-71 14686 14680 14687 - var isChrome = !!window.chrome && !!window.chrome.webstore; // Blink engine detection 14688 - // const isBlink = (isChrome || isOpera) && !!window.CSS 14689 - 14681 + var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime); 14690 14682 if (isChrome) document.getElementById('chrome-extension-icon').classList.add('visible'); 14691 14683 if (isFirefox) document.getElementById('firefox-extension-icon').classList.add('visible'); 14692 14684 }
+1 -1
docs/index.map
··· 1 - {"version":3,"sources":["../node_modules/core-js/library/modules/_global.js","../node_modules/core-js/library/modules/_core.js","../node_modules/core-js/library/modules/_a-function.js","../node_modules/core-js/library/modules/_ctx.js","../node_modules/core-js/library/modules/_is-object.js","../node_modules/core-js/library/modules/_an-object.js","../node_modules/core-js/library/modules/_fails.js","../node_modules/core-js/library/modules/_descriptors.js","../node_modules/core-js/library/modules/_dom-create.js","../node_modules/core-js/library/modules/_ie8-dom-define.js","../node_modules/core-js/library/modules/_to-primitive.js","../node_modules/core-js/library/modules/_object-dp.js","../node_modules/core-js/library/modules/_property-desc.js","../node_modules/core-js/library/modules/_hide.js","../node_modules/core-js/library/modules/_has.js","../node_modules/core-js/library/modules/_export.js","../node_modules/core-js/library/modules/_cof.js","../node_modules/core-js/library/modules/_is-array.js","../node_modules/core-js/library/modules/es6.array.is-array.js","../node_modules/core-js/library/fn/array/is-array.js","../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js","../node_modules/core-js/library/modules/_add-to-unscopables.js","../node_modules/core-js/library/modules/_iter-step.js","../node_modules/core-js/library/modules/_iterators.js","../node_modules/core-js/library/modules/_iobject.js","../node_modules/core-js/library/modules/_defined.js","../node_modules/core-js/library/modules/_to-iobject.js","../node_modules/core-js/library/modules/_library.js","../node_modules/core-js/library/modules/_redefine.js","../node_modules/core-js/library/modules/_to-integer.js","../node_modules/core-js/library/modules/_to-length.js","../node_modules/core-js/library/modules/_to-absolute-index.js","../node_modules/core-js/library/modules/_array-includes.js","../node_modules/core-js/library/modules/_shared.js","../node_modules/core-js/library/modules/_uid.js","../node_modules/core-js/library/modules/_shared-key.js","../node_modules/core-js/library/modules/_object-keys-internal.js","../node_modules/core-js/library/modules/_enum-bug-keys.js","../node_modules/core-js/library/modules/_object-keys.js","../node_modules/core-js/library/modules/_object-dps.js","../node_modules/core-js/library/modules/_html.js","../node_modules/core-js/library/modules/_object-create.js","../node_modules/core-js/library/modules/_wks.js","../node_modules/core-js/library/modules/_set-to-string-tag.js","../node_modules/core-js/library/modules/_iter-create.js","../node_modules/core-js/library/modules/_to-object.js","../node_modules/core-js/library/modules/_object-gpo.js","../node_modules/core-js/library/modules/_iter-define.js","../node_modules/core-js/library/modules/es6.array.iterator.js","../node_modules/core-js/library/modules/web.dom.iterable.js","../node_modules/core-js/library/modules/_string-at.js","../node_modules/core-js/library/modules/es6.string.iterator.js","../node_modules/core-js/library/modules/_classof.js","../node_modules/core-js/library/modules/core.get-iterator-method.js","../node_modules/core-js/library/modules/core.get-iterator.js","../node_modules/core-js/library/fn/get-iterator.js","../node_modules/@babel/runtime-corejs2/core-js/get-iterator.js","../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js","../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js","../node_modules/core-js/library/fn/json/stringify.js","../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js","../node_modules/get-css-data/dist/get-css-data.esm.js","../src/merge-deep.js","../node_modules/balanced-match/index.js","../src/parse-css.js","../src/stringify-css.js","../src/walk-css.js","../src/transform-css.js","../src/index.js","webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 3c334e19bc1efdeb80ab","webpack:///src/registry.ts","webpack:///src/attributor/attributor.ts","webpack:///src/blot/abstract/container.ts","webpack:///src/blot/abstract/format.ts","webpack:///src/blot/abstract/leaf.ts","webpack:///src/blot/abstract/shadow.ts","webpack:///src/attributor/store.ts","webpack:///src/attributor/class.ts","webpack:///src/attributor/style.ts","webpack:///src/parchment.ts","webpack:///src/collection/linked-list.ts","webpack:///src/blot/scroll.ts","webpack:///src/blot/inline.ts","webpack:///src/blot/block.ts","webpack:///src/blot/embed.ts","webpack:///src/blot/text.ts","../node_modules/quill/core/polyfill.js","../node_modules/fast-diff/diff.js","../node_modules/deep-equal/lib/keys.js","../node_modules/deep-equal/lib/is_arguments.js","../node_modules/deep-equal/index.js","../node_modules/extend/index.js","../node_modules/quill-delta/lib/op.js","../node_modules/quill-delta/lib/delta.js","../node_modules/quill/blots/break.js","../node_modules/quill/blots/text.js","../node_modules/quill/blots/inline.js","../node_modules/quill/blots/block.js","../node_modules/quill/formats/code.js","../node_modules/quill/blots/cursor.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/buffer/index.js","../node_modules/clone/clone.js","../node_modules/quill/core/editor.js","../node_modules/eventemitter3/index.js","../node_modules/quill/core/logger.js","../node_modules/quill/core/emitter.js","../node_modules/quill/core/module.js","../node_modules/quill/core/selection.js","../node_modules/quill/core/theme.js","../node_modules/quill/core/quill.js","../node_modules/quill/blots/container.js","../node_modules/quill/blots/embed.js","../node_modules/quill/blots/scroll.js","../node_modules/quill/formats/align.js","../node_modules/quill/formats/color.js","../node_modules/quill/formats/background.js","../node_modules/quill/formats/direction.js","../node_modules/quill/formats/font.js","../node_modules/quill/formats/size.js","../node_modules/quill/modules/clipboard.js","../node_modules/quill/modules/history.js","../node_modules/quill/modules/keyboard.js","../node_modules/quill/core.js","../node_modules/quill/formats/indent.js","../node_modules/quill/formats/blockquote.js","../node_modules/quill/formats/header.js","../node_modules/quill/formats/list.js","../node_modules/quill/formats/bold.js","../node_modules/quill/formats/italic.js","../node_modules/quill/formats/link.js","../node_modules/quill/formats/script.js","../node_modules/quill/formats/strike.js","../node_modules/quill/formats/underline.js","../node_modules/quill/formats/image.js","../node_modules/quill/formats/video.js","../node_modules/quill/modules/formula.js","../node_modules/quill/modules/syntax.js","../node_modules/quill/modules/toolbar.js","../node_modules/quill/ui/icons.js","../node_modules/quill/ui/picker.js","../node_modules/quill/ui/color-picker.js","../node_modules/quill/ui/icon-picker.js","../node_modules/quill/ui/tooltip.js","../node_modules/quill/themes/base.js","../node_modules/quill/themes/bubble.js","../node_modules/quill/themes/snow.js","../node_modules/quill/quill.js","../node_modules/quill-magic-url/dist/index.js","lib/quill.js","index.js"],"names":["getUrls","urls","options","arguments","length","undefined","settings","mimeType","onBeforeSend","Function","prototype","onSuccess","onError","onComplete","urlArray","Array","isArray","urlQueue","apply","map","x","isValidCss","cssText","isHTML","trim","charAt","xhr","urlIndex","responseText","returnVal","indexOf","forEach","url","i","parser","document","createElement","setAttribute","href","String","isCrossDomain","host","location","isIElte9","all","window","atob","isSameProtocol","protocol","xdr","XDomainRequest","open","timeout","onprogress","ontimeout","onload","onerror","err","setTimeout","send","console","log","XMLHttpRequest","overrideMimeType","onreadystatechange","readyState","status","getCssData","regex","cssComments","cssImports","rootElement","include","exclude","filter","useCSSOM","sourceNodes","querySelectorAll","node","matchesSelector","cssArray","handleComplete","isComplete","join","handleSuccess","cssIndex","sourceUrl","Boolean","resolveImports","resolvedCssText","errorData","data","test","parseImportData","baseUrl","ignoreRules","importData","rules","replace","match","rule","absoluteUrls","getFullUrl","absoluteRules","oldUrl","newUrl","callbackFn","__errorData","__errorRules","responseImportData","push","responseArray","importText","linkHref","getAttribute","linkRel","isLink","nodeName","toLowerCase","isStyle","textContent","sheet","cssRules","base","d","implementation","createHTMLDocument","b","a","head","appendChild","body","elm","selector","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","call","mergeDeep","isObject","obj","Object","constructor","objects","reduce","prev","keys","key","pVal","oVal","balanced","str","RegExp","maybeMatch","r","range","start","end","pre","slice","post","reg","m","begs","beg","left","right","result","ai","bi","pop","cssParse","css","errors","error","msg","Error","re","exec","whitespace","close","comment","type","comments","cmnts","c","split","s","declaration","comment_regexp","prop","val","ret","property","value","declarations","decls","concat","keyframe","vals","values","at_keyframes","vendor","name","frame","frames","keyframes","at_page","sel","selectors","at_fontface","at_supports","supports","at_host","at_media","media","at_custom_m","at_document","at_x","at_rule","core","stylesheet","stringifyCss","tree","delim","cb","renderMethods","charset","visit","import","namespace","page","nodes","buf","n","txt","walkCss","fn","VAR_PROP_IDENTIFIER","VAR_FUNC_IDENTIFIER","variableStore","dom","temp","user","transformVars","defaults","fixNestedCalc","onlyVars","persist","preserve","variables","onWarning","JSON","parse","stringify","cssTree","parseCss","filterVars","varNameIndices","decl","splice","newRule","resolvedValue","resolveValue","declArray","hasVarProp","hasVarVal","k","reCalcExp","oldValue","newValue","rootCalc","nestedCalc","__recursiveFallback","varFuncData","warningIntro","resolveFunc","fallback","hasOwnProperty","replacement","unresolvedFallback","isBrowser","isNativeSupport","CSS","onlyLegacy","shadowDOM","silent","updateDOM","updateURLs","watch","cssKeyframes","cssRootRules","cssUrls","cssVars","cssVarsObserver","isShadowDOMReady","styleNodeId","pkgName","handleError","message","sourceNode","handleWarning","warn","isShadowElm","shadowRoot","targetElm","documentElement","style","setProperty","cssRootDecls","nodeArray","transformCss","addMutationObserver","disconnect","cssUrl","responseUrl","responseURL","statusText","errorMsg","cssMarker","styleNode","hasKeyframes","group1","lastNode","querySelector","nextSibling","parentNode","insertBefore","fixKeyframes","errorThrown","errorNode","elms","shadowSettings","addEventListener","init","evt","removeEventListener","ignoreId","MutationObserver","tagName","id","debounceTimer","mutations","isUpdateMutation","mutation","target","addedNodes","removedNodes","some","isValidLink","disabled","isValidStyle","clearTimeout","observe","attributes","attributeFilter","childList","subtree","animationNameProp","getComputedStyle","allNodes","getElementsByTagName","keyframeNodes","nameMarker","len","animationName","offsetHeight","nodeStyle","equal","require","extend","lib","compose","keepNull","copy","diff","transform","priority","iterator","ops","Iterator","op","retain","insert","index","offset","hasNext","peekLength","Infinity","next","nextOp","opLength","retOp","substr","peek","peekType","rest","module","exports","NULL_CHARACTER","fromCharCode","Delta","text","newOp","lastOp","unshift","chop","predicate","partition","passed","failed","initial","changeLength","elem","delete","iter","other","thisIter","otherIter","firstOther","firstLeft","delta","Math","min","thisOp","otherOp","strings","prep","diffResult","component","INSERT","DELETE","EQUAL","eachLine","newline","line","transformPosition","nextType","Break","Parchment","Embed","insertInto","parent","ref","children","remove","blotName","TextBlot","Text","Inline","compare","self","selfIndex","order","otherIndex","formatAt","statics","query","Scope","BLOT","blot","isolate","wrap","optimize","context","moveChildren","allowedChildren","NEWLINE_LENGTH","BlockEmbed","attach","Attributor","Store","domNode","formats","format","attribute","BLOCK_ATTRIBUTE","insertAt","def","endsWith","block","create","Block","scope","BLOCK_BLOT","cache","descendants","Leaf","leaf","bubbleFormats","deleteAt","BLOCK","lines","shift","tail","path","removeChild","child","force","clone","defaultChild","Code","CodeBlock","frag","descendant","nextNewline","newlineIndex","prevNewline","isolateLength","searchIndex","reverse","lastIndexOf","find","unwrap","TAB","Cursor","selection","textNode","createTextNode","CONTENTS","_length","detach","position","restore","composing","getNativeRange","restoreText","lastChild","max","startNode","startOffset","endNode","endOffset","update","className","_instanceof","nativeMap","Map","_","nativeSet","Set","nativePromise","Promise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","_clone","proto","resolve","reject","then","__isArray","__isRegExp","source","__getRegExpFlags","lastIndex","__isDate","Date","getTime","isBuffer","allocUnsafe","getPrototypeOf","keyChild","valueChild","set","entryChild","add","attrs","getOwnPropertyDescriptor","getOwnPropertySymbols","symbols","symbol","descriptor","enumerable","defineProperty","allPropertyNames","getOwnPropertyNames","propertyName","clonePrototype","__objToStr","o","toString","flags","global","ignoreCase","multiline","ASCII","Editor","scroll","getDelta","applyDelta","consumeNextNewline","scrollLength","batchStart","normalizeDelta","DeltaOp","batchEnd","deleteText","formatLine","whitelist","lengthRemaining","lineLength","codeIndex","codeLength","formatText","getContents","getFormat","leaves","formatsArr","blots","combineFormats","getText","insertEmbed","embed","insertText","isBlank","removeFormat","suffixLength","suffix","contents","change","cursorIndex","oldDelta","textBlot","CursorBlot","oldText","newText","diffDelta","combined","merged","image","list","bullet","levels","level","debug","method","args","ns","logger","bind","newLevel","EVENTS","eventName","__quill","emitter","handleDOM","Emitter","EventEmitter","listeners","on","emit","event","handler","contains","listenDOM","events","EDITOR_CHANGE","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SCROLL_UPDATE","SELECTION_CHANGE","TEXT_CHANGE","sources","API","SILENT","USER","Module","quill","DEFAULTS","Range","Selection","mouseDown","root","cursor","lastRange","savedRange","handleComposition","handleDragging","hasFocus","native","once","setNativeRange","ignored","focus","setRange","nativeRange","collapsed","after","getBounds","createRange","setStart","setEnd","getBoundingClientRect","side","rect","bottom","top","height","width","getSelection","rangeCount","getRangeAt","normalizeNative","info","getRange","normalized","normalizedToRange","activeElement","positions","indexes","Container","startContainer","endContainer","childNodes","rangeToNative","scrollIntoView","scrollingContainer","bounds","limit","first","last","scrollBounds","scrollTop","removeAllRanges","addRange","blur","oldRange","e","Theme","modules","addModule","moduleClass","themes","Quill","imports","register","overwrite","attrName","startsWith","container","expandConfig","html","innerHTML","classList","addContainer","editor","theme","keyboard","clipboard","history","toggle","modify","convert","setContents","clear","placeholder","readOnly","disable","refNode","overload","enable","enabled","setSelection","containerBounds","getLength","getIndex","getLeaf","getLine","getLines","Number","MAX_VALUE","getModule","isEnabled","off","pasteHTML","dangerouslyPasteHTML","deleted","applied","setText","updateContents","strict","version","QUILL_VERSION","userConfig","themeConfig","config","moduleNames","moduleConfig","toolbar","modifier","shiftRange","pos","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","isLine","Scroll","batch","INLINE_BLOT","wrapper","lengthLeft","forEachAt","observer","takeRecords","AlignAttribute","Attribute","AlignClass","Class","AlignStyle","Style","ColorAttributor","parseInt","ColorClass","INLINE","ColorStyle","BackgroundClass","BackgroundStyle","DirectionAttribute","DirectionClass","DirectionStyle","FontClass","FontStyleAttributor","FontStyle","SizeClass","SizeStyle","DOM_KEY","CLIPBOARD_CONFIG","Node","TEXT_NODE","matchText","matchNewline","matchBreak","ELEMENT_NODE","matchBlot","matchSpacing","matchAttributor","matchStyles","matchIndent","matchAlias","matchIgnore","ATTRIBUTE_ATTRIBUTORS","memo","attr","keyName","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","matcher","matchVisual","addMatcher","innerText","elementMatchers","textMatchers","prepareMatching","traverse","deltaEndsWith","paste","defaultPrevented","pair","applyFormat","computeStyle","nodeType","endText","display","childrenDelta","classes","styles","ATTRIBUTE","indent","nextElementSibling","nodeHeight","parseFloat","marginTop","marginBottom","offsetTop","fontStyle","italic","fontWeight","bold","textIndent","whiteSpace","replacer","collapse","previousSibling","History","lastRecorded","ignoreChange","userOnly","record","addBinding","shortKey","undo","shiftKey","redo","navigator","platform","dest","stack","getLastChangeIndex","cutoff","changeDelta","undoDelta","timestamp","now","delay","maxStack","endsWithNewlineChange","deleteLength","changeIndex","SHORTKEY","Keyboard","binding","normalize","which","keyCode","bindings","ENTER","handleEnter","metaKey","ctrlKey","altKey","userAgent","BACKSPACE","handleBackspace","handleDelete","prefix","handleDeleteRange","listen","leafStart","offsetStart","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","prevented","every","preventDefault","ESCAPE","LEFT","UP","RIGHT","DOWN","makeFormatHandler","makeCodeBlockHandler","header","makeEmbedArrowHandler","where","curFormats","prevFormats","nextLength","nextFormats","firstFormats","lastFormats","lineFormats","scrollIndex","toUpperCase","charCodeAt","IdentAttributor","canAdd","IndentClass","Blockquote","Header","ListItem","List","replaceWith","hasAttribute","listEventHandler","item","Bold","Italic","Link","sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","Script","Strike","Underline","ATTRIBUTES","Image","removeAttribute","Video","FormulaBlot","katex","render","throwOnError","errorColor","Formula","SyntaxCodeBlock","highlight","cachedText","CodeToken","Syntax","timer","interval","code","hljs","highlightAuto","Toolbar","addControls","HTMLElement","controls","handlers","addHandler","input","selectedIndex","selected","prompt","option","isActive","addButton","groups","group","control","addSelect","clean","direction","align","link","optionsCounter","toggleAriaAttribute","element","Picker","select","buildPicker","label","togglePicker","escape","buildItem","tabIndex","selectItem","buildLabel","DropdownIcon","buildOptions","trigger","Event","dispatchEvent","createEvent","initEvent","ColorPicker","backgroundColor","colorLabel","stroke","fill","IconPicker","icons","defaultItem","Tooltip","boundsContainer","TEMPLATE","hide","reference","offsetWidth","rootBounds","verticalShift","show","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","listener","tooltip","textbox","pickers","picker","extendToolbar","buildButtons","buttons","button","buildPickers","selects","fillSelect","formula","edit","fileInput","files","reader","FileReader","readAsDataURL","click","video","BaseTooltip","save","cancel","mode","preview","restoreFocus","linkRange","extractVideoUrl","defaultValue","TOOLBAR_CONFIG","BubbleTheme","BubbleTooltip","lastLine","arrow","marginLeft","SnowTheme","SnowTooltip","LinkBlot","Indent","InlineCode","Icons","MagicUrl","initLocalStorage","getItem","localStorage","setItem","onUpdate","get","autoList","autoListCheckbox","autoListSetting","newAutoListSetting","checked","blockquote","table","magicUrl","items","repeatingTasks","tasks","removeItem","isExtension","dataset","isFirefox","InstallTrigger","isChrome","chrome","webstore","getElementById","darkModeCheckbox","darkMode","newDarkMode","toolbarCheckbox","toolbarSetting","newToolbarSetting","settingsIcon","dialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;;ACFA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;;ACDA;AACA;AACA;AACA;;ACHA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;;ACHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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F,CAAgB,GAAhBA;AAEVA,EAAAA,CAAAA,CAAEK,IAAFL,CAAOM,WAAPN,CAAmBG,CAAnBH;AACAA,EAAAA,CAAAA,CAAEO,IAAFP,CAAOM,WAAPN,CAAmBI,CAAnBJ;AACAG,EAAAA,CAAAA,CAAEzF,IAAFyF,GAASJ,IAATI;AACAC,EAAAA,CAAAA,CAAE1F,IAAF0F,GAAShG,GAATgG;SAEOA,CAAAA,CAAE1F;;;;;;;AC9gBb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;;;;;;ACnJA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACvDA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClQA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC1EA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC1CA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC3JA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA,CAAC;AACD;;;;;;;;ACrEA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACvDA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;;;ACvDA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;ACpCA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACrIA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AChLA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC7EA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACpEA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACxCA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACluBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA,IAAI4U,KAAK,GAAGC,OAAO,CAAC,YAAD,CAAnB;;AACA,IAAIC,MAAM,GAAGD,OAAO,CAAC,QAAD,CAApB;;AAGA,IAAIE,GAAG,GAAG;AACRjB,EAAAA,UAAU,EAAE;AACVkB,IAAAA,OAAO,EAAE,UAAUtP,CAAV,EAAaD,CAAb,EAAgBwP,QAAhB,EAA0B;AACjC,UAAI,OAAOvP,CAAP,KAAa,QAAjB,EAA2BA,CAAC,GAAG,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M,CAACmB,SAAP,GAAmB,WAAnB;AACAnB,MAAM,CAAChL,OAAP,GAAiB,MAAjB;AACAgL,MAAM,CAACI,QAAP,GAAkB,QAAlB,EAA8B;;eAGfJ;;;ACnHf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7vDA,IAAIhB,KAAK,GAAI,YAAW;AACxB;;AAEA,WAASoC,WAAT,CAAqB3Y,GAArB,EAA0B0C,IAA1B,EAAgC;AAC9B,WAAOA,IAAI,IAAI,IAAR,IAAgB1C,GAAG,YAAY0C,IAAtC;AACD;;AAED,MAAIkW,SAAJ;;AACA,MAAI;AACFA,IAAAA,SAAS,GAAGC,GAAZ;AACD,GAFD,CAEE,OAAMC,CAAN,EAAS;AACT;AACA;AACAF,IAAAA,SAAS,GAAG,YAAW,CAAE,CAAzB;AACD;;AAED,MAAIG,SAAJ;;AACA,MAAI;AACFA,IAAAA,SAAS,GAAGC,GAAZ;AACD,GAFD,CAEE,OAAMF,CAAN,EAAS;AACTC,IAAAA,SAAS,GAAG,YAAW,CAAE,CAAzB;AACD;;AAED,MAAIE,aAAJ;;AACA,MAAI;AACFA,IAAAA,aAAa,GAAGC,OAAhB;AACD,GAFD,CAEE,OAAMJ,CAAN,EAAS;AACTG,IAA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,SAArB;AACD,OAFD,MAEO;AACL9P,QAAAA,EAAE,CAAC3B,UAAH,CAAcyR,IAAd,GAAqB,QAArB;AACA,eAAO9P,EAAE,CAAC3B,UAAH,CAAc0R,MAArB;AACD;AACF;;AACD,QAAI,OAAO/P,EAAE,CAACE,MAAV,KAAqB,QAAzB,EAAmC;AACjC,UAAImB,IAAI,GAAGrB,EAAE,CAACE,MAAH,CAAU/R,OAAV,CAAkB,OAAlB,EAA2B,IAA3B,EAAiCA,OAAjC,CAAyC,KAAzC,EAAgD,IAAhD,CAAX;AACA,aAAOqU,KAAK,CAACtC,MAAN,CAAamB,IAAb,EAAmBrB,EAAE,CAAC3B,UAAtB,CAAP;AACD;;AACD,WAAOmE,KAAK,CAACzT,IAAN,CAAWiR,EAAX,CAAP;AACD,GApBM,EAoBJ,IAAIoB,mBAAJ,EApBI,CAAP;AAqBD;;eAGc8L;;;AC1Qf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvTA,IAAI8C,MAAM,GAAG,CAAC,OAAD,EAAU,MAAV,EAAkB,KAAlB,EAAyB,MAAzB,CAAb;AACA,IAAIC,KAAK,GAAG,MAAZ;;AAEA,SAASC,KAAT,CAAeC,MAAf,EAAuB,GAAGC,IAA1B,EAAgC;AAC9B,MAAIJ,MAAM,CAACjmB,OAAP,CAAeomB,MAAf,KAA0BH,MAAM,CAACjmB,OAAP,CAAekmB,KAAf,CAA9B,EAAqD;AACnDpkB,IAAAA,OAAO,CAACskB,MAAD,CAAP,CAAgB,GAAGC,IAAnB,EADmD,CACxB;AAC5B;AACF;;AAED,SAAS3Z,SAAT,CAAmB4Z,EAAn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","file":"index.map","sourceRoot":"../src","sourcesContent":["// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n","module.exports = require(\"core-js/library/fn/array/is-array\");","var _Array$isArray = require(\"../core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","module.exports = function () { /* empty */ };\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","module.exports = true;\n","module.exports = require('./_hide');\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","module.exports = require(\"core-js/library/fn/get-iterator\");","var _getIterator = require(\"../core-js/get-iterator\");\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = _getIterator(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","module.exports = require(\"core-js/library/fn/json/stringify\");","/*!\n * get-css-data\n * v1.6.1\n * https://github.com/jhildenbiddle/get-css-data\n * (c) 2018 John Hildenbiddle <http://hildenbiddle.com>\n * MIT license\n */\nfunction getUrls(urls) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var settings = {\n mimeType: options.mimeType || null,\n onBeforeSend: options.onBeforeSend || Function.prototype,\n onSuccess: options.onSuccess || Function.prototype,\n onError: options.onError || Function.prototype,\n onComplete: options.onComplete || Function.prototype\n };\n var urlArray = Array.isArray(urls) ? urls : [ urls ];\n var urlQueue = Array.apply(null, Array(urlArray.length)).map(function(x) {\n return null;\n });\n function isValidCss() {\n var cssText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var isHTML = cssText.trim().charAt(0) === \"<\";\n return !isHTML;\n }\n function onError(xhr, urlIndex) {\n settings.onError(xhr, urlArray[urlIndex], urlIndex);\n }\n function onSuccess(responseText, urlIndex) {\n var returnVal = settings.onSuccess(responseText, urlArray[urlIndex], urlIndex);\n responseText = returnVal === false ? \"\" : returnVal || responseText;\n urlQueue[urlIndex] = responseText;\n if (urlQueue.indexOf(null) === -1) {\n settings.onComplete(urlQueue);\n }\n }\n urlArray.forEach(function(url, i) {\n var parser = document.createElement(\"a\");\n parser.setAttribute(\"href\", url);\n parser.href = String(parser.href);\n var isCrossDomain = parser.host !== location.host;\n var isIElte9 = document.all && !window.atob;\n var isSameProtocol = parser.protocol === location.protocol;\n if (isCrossDomain && isIElte9) {\n if (isSameProtocol) {\n var xdr = new XDomainRequest();\n xdr.open(\"GET\", url);\n xdr.timeout = 0;\n xdr.onprogress = Function.prototype;\n xdr.ontimeout = Function.prototype;\n xdr.onload = function() {\n if (isValidCss(xdr.responseText)) {\n onSuccess(xdr.responseText, i);\n } else {\n onError(xdr, i);\n }\n };\n xdr.onerror = function(err) {\n onError(xdr, i);\n };\n setTimeout(function() {\n xdr.send();\n }, 0);\n } else {\n console.log(\"Internet Explorer 9 Cross-Origin (CORS) requests must use the same protocol\");\n onError(null, i);\n }\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url);\n if (settings.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(settings.mimeType);\n }\n settings.onBeforeSend(xhr, url, i);\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 && isValidCss(xhr.responseText)) {\n onSuccess(xhr.responseText, i);\n } else {\n onError(xhr, i);\n }\n }\n };\n xhr.send();\n }\n });\n}\n\n/**\n * Gets CSS data from <style> and <link> nodes (including @imports), then\n * returns data in order processed by DOM. Allows specifying nodes to\n * include/exclude and filtering CSS data using RegEx.\n *\n * @preserve\n * @param {object} [options] The options object\n * @param {object} [options.rootElement=document] Root element to traverse for\n * <link> and <style> nodes.\n * @param {string} [options.include] CSS selector matching <link> and <style>\n * nodes to include\n * @param {string} [options.exclude] CSS selector matching <link> and <style>\n * nodes to exclude\n * @param {object} [options.filter] Regular expression used to filter node CSS\n * data. Each block of CSS data is tested against the filter,\n * and only matching data is included.\n * @param {object} [options.useCSSOM=false] Determines if CSS data will be\n * collected from a stylesheet's runtime values instead of its\n * text content. This is required to get accurate CSS data\n * when a stylesheet has been modified using the deleteRule()\n * or insertRule() methods because these modifications will\n * not be reflected in the stylesheet's text content.\n * @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes\n * 1) the XHR object, 2) source node reference, and 3) the\n * source URL as arguments.\n * @param {function} [options.onSuccess] Callback on each CSS node read. Passes\n * 1) CSS text, 2) source node reference, and 3) the source\n * URL as arguments.\n * @param {function} [options.onError] Callback on each error. Passes 1) the XHR\n * object for inspection, 2) soure node reference, and 3) the\n * source URL that failed (either a <link> href or an @import)\n * as arguments\n * @param {function} [options.onComplete] Callback after all nodes have been\n * processed. Passes 1) concatenated CSS text, 2) an array of\n * CSS text in DOM order, and 3) an array of nodes in DOM\n * order as arguments.\n *\n * @example\n *\n * getCssData({\n * rootElement: document,\n * include : 'style,link[rel=\"stylesheet\"]',\n * exclude : '[href=\"skip.css\"]',\n * filter : /red/,\n * useCSSOM : false,\n * onBeforeSend(xhr, node, url) {\n * // ...\n * }\n * onSuccess(cssText, node, url) {\n * // ...\n * }\n * onError(xhr, node, url) {\n * // ...\n * },\n * onComplete(cssText, cssArray, nodeArray) {\n * // ...\n * }\n * });\n */ function getCssData(options) {\n var regex = {\n cssComments: /\\/\\*[\\s\\S]+?\\*\\//g,\n cssImports: /(?:@import\\s*)(?:url\\(\\s*)?(?:['\"])([^'\"]*)(?:['\"])(?:\\s*\\))?(?:[^;]*;)/g\n };\n var settings = {\n rootElement: options.rootElement || document,\n include: options.include || 'style,link[rel=\"stylesheet\"]',\n exclude: options.exclude || null,\n filter: options.filter || null,\n useCSSOM: options.useCSSOM || false,\n onBeforeSend: options.onBeforeSend || Function.prototype,\n onSuccess: options.onSuccess || Function.prototype,\n onError: options.onError || Function.prototype,\n onComplete: options.onComplete || Function.prototype\n };\n var sourceNodes = Array.apply(null, settings.rootElement.querySelectorAll(settings.include)).filter(function(node) {\n return !matchesSelector(node, settings.exclude);\n });\n var cssArray = Array.apply(null, Array(sourceNodes.length)).map(function(x) {\n return null;\n });\n function handleComplete() {\n var isComplete = cssArray.indexOf(null) === -1;\n if (isComplete) {\n var cssText = cssArray.join(\"\");\n settings.onComplete(cssText, cssArray, sourceNodes);\n }\n }\n function handleSuccess(cssText, cssIndex, node, sourceUrl) {\n var returnVal = settings.onSuccess(cssText, node, sourceUrl);\n cssText = returnVal !== undefined && Boolean(returnVal) === false ? \"\" : returnVal || cssText;\n resolveImports(cssText, node, sourceUrl, function(resolvedCssText, errorData) {\n if (cssArray[cssIndex] === null) {\n errorData.forEach(function(data) {\n return settings.onError(data.xhr, node, data.url);\n });\n if (!settings.filter || settings.filter.test(resolvedCssText)) {\n cssArray[cssIndex] = resolvedCssText;\n } else {\n cssArray[cssIndex] = \"\";\n }\n handleComplete();\n }\n });\n }\n function parseImportData(cssText, baseUrl) {\n var ignoreRules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var importData = {};\n importData.rules = (cssText.replace(regex.cssComments, \"\").match(regex.cssImports) || []).filter(function(rule) {\n return ignoreRules.indexOf(rule) === -1;\n });\n importData.urls = importData.rules.map(function(rule) {\n return rule.replace(regex.cssImports, \"$1\");\n });\n importData.absoluteUrls = importData.urls.map(function(url) {\n return getFullUrl(url, baseUrl);\n });\n importData.absoluteRules = importData.rules.map(function(rule, i) {\n var oldUrl = importData.urls[i];\n var newUrl = getFullUrl(importData.absoluteUrls[i], baseUrl);\n return rule.replace(oldUrl, newUrl);\n });\n return importData;\n }\n function resolveImports(cssText, node, baseUrl, callbackFn) {\n var __errorData = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var __errorRules = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n var importData = parseImportData(cssText, baseUrl, __errorRules);\n if (importData.rules.length) {\n getUrls(importData.absoluteUrls, {\n onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n settings.onBeforeSend(xhr, node, url);\n },\n onSuccess: function onSuccess(cssText, url, urlIndex) {\n var returnVal = settings.onSuccess(cssText, node, url);\n cssText = returnVal === false ? \"\" : returnVal || cssText;\n var responseImportData = parseImportData(cssText, url, __errorRules);\n responseImportData.rules.forEach(function(rule, i) {\n cssText = cssText.replace(rule, responseImportData.absoluteRules[i]);\n });\n return cssText;\n },\n onError: function onError(xhr, url, urlIndex) {\n __errorData.push({\n xhr: xhr,\n url: url\n });\n __errorRules.push(importData.rules[urlIndex]);\n resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n },\n onComplete: function onComplete(responseArray) {\n responseArray.forEach(function(importText, i) {\n cssText = cssText.replace(importData.rules[i], importText);\n });\n resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n }\n });\n } else {\n callbackFn(cssText, __errorData);\n }\n }\n if (sourceNodes.length) {\n sourceNodes.forEach(function(node, i) {\n var linkHref = node.getAttribute(\"href\");\n var linkRel = node.getAttribute(\"rel\");\n var isLink = node.nodeName === \"LINK\" && linkHref && linkRel && linkRel.toLowerCase() === \"stylesheet\";\n var isStyle = node.nodeName === \"STYLE\";\n if (isLink) {\n getUrls(linkHref, {\n mimeType: \"text/css\",\n onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n settings.onBeforeSend(xhr, node, url);\n },\n onSuccess: function onSuccess(cssText, url, urlIndex) {\n var sourceUrl = getFullUrl(linkHref, location.href);\n handleSuccess(cssText, i, node, sourceUrl);\n },\n onError: function onError(xhr, url, urlIndex) {\n cssArray[i] = \"\";\n settings.onError(xhr, node, url);\n handleComplete();\n }\n });\n } else if (isStyle) {\n var cssText = node.textContent;\n if (settings.useCSSOM) {\n cssText = Array.apply(null, node.sheet.cssRules).map(function(rule) {\n return rule.cssText;\n }).join(\"\");\n }\n handleSuccess(cssText, i, node, location.href);\n } else {\n cssArray[i] = \"\";\n handleComplete();\n }\n });\n } else {\n settings.onComplete(\"\", []);\n }\n}\n\nfunction getFullUrl(url) {\n var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : location.href;\n var d = document.implementation.createHTMLDocument(\"\");\n var b = d.createElement(\"base\");\n var a = d.createElement(\"a\");\n d.head.appendChild(b);\n d.body.appendChild(a);\n b.href = base;\n a.href = url;\n return a.href;\n}\n\nfunction matchesSelector(elm, selector) {\n var matches = elm.matches || elm.matchesSelector || elm.webkitMatchesSelector || elm.mozMatchesSelector || elm.msMatchesSelector || elm.oMatchesSelector;\n return matches.call(elm, selector);\n}\n\nexport default getCssData;\n//# sourceMappingURL=get-css-data.esm.js.map\n","// Functions\n// =============================================================================\n/**\n * Performs a deep merge of objects and returns new object. Does not modify\n * objects (immutable) and merges arrays via concatenation.\n *\n * @param {...object} objects - Objects to merge\n * @returns {object} New object with merged key/values\n */\nfunction mergeDeep(...objects) {\n const isObject = obj => obj instanceof Object && obj.constructor === Object;\n\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach(key => {\n const pVal = prev[key];\n const oVal = obj[key];\n\n // if (Array.isArray(pVal) && Array.isArray(oVal)) {\n // prev[key] = pVal.concat(...oVal);\n // }\n if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n }\n else {\n prev[key] = oVal;\n }\n });\n\n return prev;\n }, {});\n}\n\n\n// Export\n// =============================================================================\nexport default mergeDeep;\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","/**\n * Based on css parser/compiler by NxChg\n * https://github.com/NxtChg/pieces/tree/master/js/css_parser\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Parses CSS string and generates AST object\n *\n * @param {string} css The CSS stringt to be converted to an AST\n * @returns {object}\n */\nfunction cssParse(css) {\n const errors = [];\n\n // Errors\n // -------------------------------------------------------------------------\n function error(msg) {\n throw new Error(`CSS parse error: ${msg}`);\n }\n\n // RegEx\n // -------------------------------------------------------------------------\n // Match regexp and return captures\n function match(re) {\n const m = re.exec(css);\n\n if (m) {\n css = css.slice(m[0].length);\n\n return m;\n }\n }\n\n function whitespace() {\n match(/^\\s*/);\n }\n function open() {\n return match(/^{\\s*/);\n }\n function close() {\n return match(/^}/);\n }\n\n // Comments\n // -------------------------------------------------------------------------\n function comment() {\n whitespace();\n\n if (css[0] !== '/' || css[1] !== '*') { return; }\n\n let i = 2;\n while (css[i] && (css[i] !== '*' || css[i + 1] !== '/')) { i++; }\n\n // FIXED\n if (!css[i]) { return error('end of comment is missing'); }\n\n const str = css.slice(2, i);\n css = css.slice(i + 2);\n\n return { type: 'comment', comment: str };\n }\n function comments() {\n const cmnts = [];\n\n let c;\n\n while ((c = comment())) {\n cmnts.push(c);\n }\n return cmnts;\n }\n\n // Selector\n // -------------------------------------------------------------------------\n function selector() {\n whitespace();\n while (css[0] === '}') {\n error('extra closing bracket');\n }\n\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\n\n if (m)\n { return m[0]\n .trim() // remove all comments from selectors\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function(m) {\n return m.replace(/,/g, '\\u200C');\n })\n .split(/\\s*(?![^(]*\\)),\\s*/)\n .map(function(s) {\n return s.replace(/\\u200C/g, ',');\n }); }\n }\n\n // Declarations\n // -------------------------------------------------------------------------\n function declaration() {\n match(/^([;\\s]*)+/); // ignore empty declarations + whitespace\n\n const comment_regexp = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\n let prop = match(/^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n if (!prop) { return; }\n\n prop = prop[0].trim();\n\n if (!match(/^:\\s*/)) { return error('property missing \\':\\''); }\n\n // Quotes regex repeats verbatim inside and outside parentheses\n const val = match(/^((?:\\/\\*.*?\\*\\/|'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\((\\s*'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|[^)]*?)\\s*\\)|[^};])+)/);\n\n const ret = { type: 'declaration', property: prop.replace(comment_regexp, ''), value: val ? val[0].replace(comment_regexp, '').trim() : '' };\n\n match(/^[;\\s]*/);\n\n return ret;\n }\n function declarations() {\n if (!open()) { return error('missing \\'{\\''); }\n\n let d,\n decls = comments();\n\n while ((d = declaration())) {\n decls.push(d);\n decls = decls.concat(comments());\n }\n\n if (!close()) { return error('missing \\'}\\''); }\n\n return decls;\n }\n\n // Keyframes\n // -------------------------------------------------------------------------\n function keyframe() {\n whitespace();\n\n const vals = [];\n\n let m;\n\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n vals.push(m[1]);\n match(/^,\\s*/);\n }\n\n if (vals.length) { return { type: 'keyframe', values: vals, declarations: declarations() }; }\n }\n function at_keyframes() {\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\n\n if (!m) { return; }\n\n const vendor = m[1];\n\n m = match(/^([-\\w]+)\\s*/);\n if (!m) { return error('@keyframes missing name'); } // identifier\n\n const name = m[1];\n\n if (!open()) { return error('@keyframes missing \\'{\\''); }\n\n let frame,\n frames = comments();\n while ((frame = keyframe())) {\n frames.push(frame);\n frames = frames.concat(comments());\n }\n\n if (!close()) { return error('@keyframes missing \\'}\\''); }\n\n return { type: 'keyframes', name: name, vendor: vendor, keyframes: frames };\n }\n\n // @ Rules\n // -------------------------------------------------------------------------\n function at_page() {\n const m = match(/^@page */);\n if (m) {\n const sel = selector() || [];\n return { type: 'page', selectors: sel, declarations: declarations() };\n }\n }\n function at_fontface() {\n const m = match(/^@font-face\\s*/);\n if (m) { return { type: 'font-face', declarations: declarations() }; }\n }\n function at_supports() {\n const m = match(/^@supports *([^{]+)/);\n if (m) { return { type: 'supports', supports: m[1].trim(), rules: rules() }; }\n }\n function at_host() {\n const m = match(/^@host\\s*/);\n if (m) { return { type: 'host', rules: rules() }; }\n }\n function at_media() {\n const m = match(/^@media *([^{]+)/);\n if (m) { return { type: 'media', media: m[1].trim(), rules: rules() }; }\n }\n function at_custom_m() {\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n if (m) { return { type: 'custom-media', name: m[1].trim(), media: m[2].trim() }; }\n }\n function at_document() {\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\n // FIXED\n if (m) { return { type: 'document', document: m[2].trim(), vendor: m[1] ? m[1].trim() : null, rules: rules() }; }\n }\n function at_x() {\n const m = match(/^@(import|charset|namespace)\\s*([^;]+);/);\n if (m) { return { type: m[1], name: m[2].trim() }; }\n }\n function at_rule() {\n whitespace();\n if (css[0] === '@') { return at_keyframes() || at_supports() || at_host() || at_media() || at_custom_m() || at_page() || at_document() || at_fontface() || at_x(); }\n }\n\n // Rules\n // -------------------------------------------------------------------------\n function rule() {\n const sel = selector() || [];\n if (!sel.length) { error('selector missing'); }\n\n const decls = declarations();\n\n return { type: 'rule', selectors: sel, declarations: decls };\n }\n function rules(core) {\n if (!core && !open()) { return error('missing \\'{\\''); }\n\n let node,\n rules = comments();\n\n while (css.length && (core || css[0] !== '}') && (node = at_rule() || rule())) {\n rules.push(node);\n rules = rules.concat(comments());\n }\n\n if (!core && !close()) { return error('missing \\'}\\''); }\n\n return rules;\n }\n\n return { type: 'stylesheet', stylesheet: { rules: rules(true), errors: errors } };\n}\n\n\n// Exports\n// =============================================================================\nexport default cssParse;\n","/**\n * Based on css parser/compiler by NxChg\n * https://github.com/NxtChg/pieces/tree/master/js/css_parser\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Compiles CSS AST to string\n *\n * @param {object} tree CSS AST object\n * @param {string} [delim=''] CSS rule delimiter\n * @param {function} cb Function to be called before each node is processed\n * @returns {string}\n */\nfunction stringifyCss(tree, delim = '', cb) {\n const renderMethods = {\n charset(node) {\n return '@charset ' + node.name + ';';\n },\n comment(node) {\n // Preserve ponyfill marker comments\n return node.comment.indexOf('__CSSVARSPONYFILL') === 0 ? '/*' + node.comment + '*/' : '';\n },\n 'custom-media'(node) {\n return '@custom-media ' + node.name + ' ' + node.media + ';';\n },\n declaration(node) {\n return node.property + ':' + node.value + ';';\n },\n document(node) {\n return '@' + (node.vendor || '') + 'document ' + node.document + '{' + visit(node.rules) + '}';\n },\n 'font-face'(node) {\n return '@font-face' + '{' + visit(node.declarations) + '}';\n },\n host(node) {\n return '@host' + '{' + visit(node.rules) + '}';\n },\n import(node) {\n // FIXED\n return '@import ' + node.name + ';';\n },\n keyframe(node) {\n return node.values.join(',') + '{' + visit(node.declarations) + '}';\n },\n keyframes(node) {\n return '@' + (node.vendor || '') + 'keyframes ' + node.name + '{' + visit(node.keyframes) + '}';\n },\n media(node) {\n return '@media ' + node.media + '{' + visit(node.rules) + '}';\n },\n namespace(node) {\n return '@namespace ' + node.name + ';';\n },\n page(node) {\n return '@page ' + (node.selectors.length ? node.selectors.join(', ') : '') + '{' + visit(node.declarations) + '}';\n },\n rule(node) {\n const decls = node.declarations;\n\n if (decls.length) {\n return node.selectors.join(',') + '{' + visit(decls) + '}';\n }\n },\n supports(node) {\n // FIXED\n return '@supports ' + node.supports + '{' + visit(node.rules) + '}';\n }\n };\n\n function visit(nodes) {\n let buf = '';\n\n for (let i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n\n if (cb) {\n cb(n);\n }\n\n const txt = renderMethods[n.type](n);\n\n if (txt) {\n buf += txt;\n\n if (txt.length && n.selectors) {\n buf += delim;\n }\n }\n }\n\n return buf;\n }\n\n return visit(tree.stylesheet.rules);\n}\n\n\n// Exports\n// =============================================================================\nexport default stringifyCss;\n","/**\n * Based on rework-visit by reworkcss\n * https://github.com/reworkcss/rework-visit\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Visit `node` declarations recursively and invoke `fn(declarations, node)`.\n *\n * @param {object} node\n * @param {function} fn\n */\nfunction walkCss(node, fn){\n node.rules.forEach(function(rule){\n // @media etc\n if (rule.rules) {\n walkCss(rule, fn);\n\n return;\n }\n\n // keyframes\n if (rule.keyframes) {\n rule.keyframes.forEach(function(keyframe){\n if (keyframe.type === 'keyframe') {\n fn(keyframe.declarations, rule);\n }\n });\n\n return;\n }\n\n // @charset, @import etc\n if (!rule.declarations) {\n return;\n }\n\n fn(rule.declarations, node);\n });\n}\n\n\n// Exports\n// =============================================================================\nexport default walkCss;\n","/**\n * Based on rework-vars by reworkcss\n * https://github.com/reworkcss/rework-vars\n */\n\n\n// Dependencies\n// =============================================================================\nimport balanced from 'balanced-match';\nimport mergeDeep from './merge-deep';\nimport parseCss from './parse-css';\nimport stringifyCss from './stringify-css';\nimport walkCss from './walk-css';\n\n\n// Constants & Variables\n// =============================================================================\nconst VAR_PROP_IDENTIFIER = '--';\nconst VAR_FUNC_IDENTIFIER = 'var';\nconst variableStore = {\n // Persisted custom property values (matches modern browsers)\n dom : {},\n // Non-persisted custom properties values\n temp: {},\n // Persisted custom property values passed using options.variables\n user: {}\n};\n\n\n// Functions\n// =============================================================================\n/**\n * Transforms W3C-style CSS variables to static values and returns an updated\n * CSS string.\n *\n * @param {object} cssText CSS containing variable definitions and functions\n * @param {object} [options] Options object\n * @param {boolean} [options.fixNestedCalc=true] Removes nested 'calc' keywords\n * for legacy browser compatibility.\n * @param {boolean} [options.onlyVars=true] Remove declarations that do not\n * contain a CSS variable from the return value. Note that\n * @font-face and @keyframe rules require all declarations to\n * be returned if a CSS variable is used.\n * @param {boolean} [options.persist=false] Persists options.variables,\n * allowing variables set in previous calls to be applied in\n * subsequent calls.\n * @param {boolean} [options.preserve=false] Preserve CSS variable definitions\n * and functions in the return value, allowing \"live\" variable\n * updates via JavaScript to continue working in browsers with\n * native CSS variable support.\n * @param {object} [options.variables={}] CSS variable definitions to include\n * during transformation. Can be used to add new override\n * exisitng definitions.\n * @param {function} [options.onWarning] Callback on each transformation\n * warning. Passes 1) warningMessage as an argument.\n * @returns {string}\n */\nfunction transformVars(cssText, options = {}) {\n const defaults = {\n fixNestedCalc: true,\n onlyVars : true,\n persist : false,\n preserve : false,\n variables : {},\n onWarning() {}\n };\n const settings = mergeDeep(defaults, options);\n const map = settings.persist ? variableStore.dom : variableStore.temp = JSON.parse(JSON.stringify(variableStore.dom));\n\n // Convert cssText to AST (this could throw errors)\n const cssTree = parseCss(cssText);\n\n // Remove non-vars\n if (settings.onlyVars) {\n cssTree.stylesheet.rules = filterVars(cssTree.stylesheet.rules);\n }\n\n // Define variables\n cssTree.stylesheet.rules.forEach(function(rule) {\n const varNameIndices = [];\n\n if (rule.type !== 'rule') {\n return;\n }\n\n // only variables declared for `:root` are supported\n if (rule.selectors.length !== 1 || rule.selectors[0] !== ':root') {\n return;\n }\n\n rule.declarations.forEach(function(decl, i) {\n const prop = decl.property;\n const value = decl.value;\n\n if (prop && prop.indexOf(VAR_PROP_IDENTIFIER) === 0) {\n map[prop] = value;\n varNameIndices.push(i);\n }\n });\n\n // optionally remove `--*` properties from the rule\n if (!settings.preserve) {\n for (let i = varNameIndices.length - 1; i >= 0; i--) {\n rule.declarations.splice(varNameIndices[i], 1);\n }\n }\n });\n\n // Restore persisted user values\n Object.keys(variableStore.user).forEach(key => {\n map[key] = variableStore.user[key];\n });\n\n // Handle variables defined in settings.variables\n if (Object.keys(settings.variables).length) {\n const newRule = {\n declarations: [],\n selectors : [':root'],\n type : 'rule'\n };\n\n Object.keys(settings.variables).forEach(key => {\n // Convert all property names to leading '--' style\n const prop = `--${key.replace(/^-+/, '')}`;\n const value = settings.variables[key];\n\n // Persist settings.variables values\n if (settings.persist) {\n variableStore.user[prop] = value;\n }\n\n // Update map value with settings.variables value\n if (map[prop] !== value) {\n map[prop] = value;\n\n // Add new declaration to newRule\n newRule.declarations.push({\n type : 'declaration',\n property: prop,\n value : value\n });\n }\n });\n\n // Append new :root ruleset\n if (settings.preserve && newRule.declarations.length) {\n cssTree.stylesheet.rules.push(newRule);\n }\n }\n\n // Resolve variables\n walkCss(cssTree.stylesheet, function(declarations, node) {\n let decl;\n let resolvedValue;\n let value;\n\n for (let i = 0; i < declarations.length; i++) {\n decl = declarations[i];\n value = decl.value;\n\n // skip comments\n if (decl.type !== 'declaration') {\n continue;\n }\n\n // skip values that don't contain variable functions\n if (!value || value.indexOf(VAR_FUNC_IDENTIFIER + '(') === -1) {\n continue;\n }\n\n resolvedValue = resolveValue(value, map, settings);\n\n if (resolvedValue !== decl.value) {\n if (!settings.preserve) {\n decl.value = resolvedValue;\n }\n else {\n declarations.splice(i, 0, {\n type : decl.type,\n property: decl.property,\n value : resolvedValue\n });\n\n // skip ahead of preserved declaration\n i++;\n }\n }\n }\n });\n\n // Fix nested calc() values\n if (settings.fixNestedCalc) {\n fixNestedCalc(cssTree.stylesheet.rules);\n }\n\n // Return CSS string\n return stringifyCss(cssTree);\n}\n\n\n// Functions (Private)\n// =============================================================================\n/**\n * Filters rules recursively, retaining only declarations that contain either a\n * CSS variable definition (property) or function (value). Maintains all\n * declarations for @font-face and @keyframes rules that contain a CSS\n * definition or function.\n *\n * @param {array} rules\n * @returns {array}\n */\nfunction filterVars(rules) {\n return rules.filter(rule => {\n // Rule, @font-face, @host, @page\n if (rule.declarations) {\n const declArray = rule.declarations.filter(d => {\n const hasVarProp = d.property && d.property.indexOf(VAR_PROP_IDENTIFIER) === 0;\n const hasVarVal = d.value && d.value.indexOf(VAR_FUNC_IDENTIFIER + '(') > -1;\n\n return hasVarProp || hasVarVal;\n });\n\n // For most rule types the filtered declarations should be applied.\n // @font-face declaratons are unique and require all declarations to\n // be retained if any declaration contains a CSS variable definition\n // or value.\n if (rule.type !== 'font-face') {\n rule.declarations = declArray;\n }\n\n return Boolean(declArray.length);\n }\n // @keyframes\n else if (rule.keyframes) {\n // @keyframe rules require all declarations to be retained if any\n // declaration contains a CSS variable definition or value.\n return Boolean(rule.keyframes.filter(k =>\n Boolean(k.declarations.filter(d => {\n const hasVarProp = d.property && d.property.indexOf(VAR_PROP_IDENTIFIER) === 0;\n const hasVarVal = d.value && d.value.indexOf(VAR_FUNC_IDENTIFIER + '(') > -1;\n\n return hasVarProp || hasVarVal;\n }).length)\n ).length);\n }\n // @document, @media, @supports\n else if (rule.rules) {\n rule.rules = filterVars(rule.rules).filter(r => r.declarations && r.declarations.length);\n\n return Boolean(rule.rules.length);\n }\n\n return true;\n });\n}\n\n/**\n * Removes nested calc keywords for legacy browser compatibility.\n * Example: calc(1 + calc(2 + calc(3 + 3))) => calc(1 + (2 + (3 + 3)))\n *\n * @param {array} rules\n */\nfunction fixNestedCalc(rules) {\n const reCalcExp = /(-[a-z]+-)?calc\\(/; // Match \"calc(\" or \"-vendor-calc(\"\n\n rules.forEach(rule => {\n if (rule.declarations) {\n rule.declarations.forEach(decl => {\n let oldValue = decl.value;\n let newValue = '';\n\n while (reCalcExp.test(oldValue)) {\n const rootCalc = balanced('calc(', ')', oldValue || '');\n\n oldValue = oldValue.slice(rootCalc.end);\n\n while (reCalcExp.test(rootCalc.body)) {\n const nestedCalc = balanced(reCalcExp, ')', rootCalc.body);\n\n rootCalc.body = `${nestedCalc.pre}(${nestedCalc.body})${nestedCalc.post}`;\n }\n\n newValue += `${rootCalc.pre}calc(${rootCalc.body}`;\n newValue += !reCalcExp.test(oldValue) ? `)${rootCalc.post}` : '';\n }\n\n decl.value = newValue || decl.value;\n });\n }\n });\n}\n\n/**\n * Resolves CSS var() function(s) with `map` data or fallback value(s). Returns\n * original `value` if unable to resolve.\n *\n * @param {string} value String containing CSS var() functions to resolve\n * @param {object} map CSS custom property key/values\n * @param {object} settings Settings object passed from transformVars()\n * @param {string} [__recursiveFallback] Fallback when unable to resolve CSS\n * var() function to a map or fallback value. Allows restoring\n * original var() function from recursive resolveValue() calls.\n * @return {string} CSS value with var() function(s) resolved to map or fallback\n * value.\n *\n * @example\n *\n * resolveValue('10px var(--x) 30px', {'--x':'20px'}, {...settings});\n * // => '10px 20px 30px'\n *\n * resolveValue('10px', {}, {...settings});\n * // => '10px'\n */\nfunction resolveValue(value, map, settings = {}, __recursiveFallback) {\n const varFuncData = balanced('var(', ')', value);\n const warningIntro = 'CSS transform warning:';\n\n /**\n * Resolves contents of CSS custom property function\n *\n * @param {string} value String containing contents of CSS var() function\n * @returns {string}\n *\n * @example\n *\n * resolveFunc('--x, var(--y, green)')\n * // => map['--x'] or map['--y'] or 'green'\n *\n * resolveFunc('--fail')\n * // => 'var(--fail)' when map['--fail'] does not exist\n */\n function resolveFunc(value) {\n const name = value.split(',')[0];\n const fallback = (value.match(/(?:\\s*,\\s*){1}(.*)?/) || [])[1];\n const match = map.hasOwnProperty(name) ? String(map[name]) : undefined;\n const replacement = match || (fallback ? String(fallback) : undefined);\n const unresolvedFallback = __recursiveFallback || value;\n\n if (!match) {\n settings.onWarning(`${warningIntro} variable \"${name}\" is undefined`);\n }\n\n if (replacement && replacement !== 'undefined' && replacement.length > 0) {\n return resolveValue(replacement, map, settings, unresolvedFallback);\n }\n else {\n return `var(${unresolvedFallback})`;\n }\n }\n\n if (!varFuncData) {\n if (value.indexOf('var(') !== -1) {\n settings.onWarning(`${warningIntro} missing closing \")\" in the value \"${value}\"`);\n }\n\n return value;\n }\n else if (varFuncData.body.trim().length === 0) {\n settings.onWarning(`${warningIntro} var() must contain a non-whitespace string`);\n\n return value;\n }\n else {\n return (\n varFuncData.pre\n + resolveFunc(varFuncData.body)\n + resolveValue(varFuncData.post, map, settings)\n );\n }\n}\n\n\n// Exports\n// =============================================================================\nexport default transformVars;\nexport { variableStore };","import cssVars from 'css-vars-ponyfill'\ncssVars()\n\n// localStorage wrapper\nfunction initLocalStorage (options) {\n function getItem () {\n return JSON.parse(localStorage.getItem(options.key))\n }\n function setItem (value) {\n localStorage.setItem(options.key, JSON.stringify(value))\n }\n if (localStorage.getItem(options.key) === null) {\n setItem(options.defaultValue) // set default\n }\n if (options.onUpdate) options.onUpdate(getItem()) // set value on pageload\n options.get = getItem\n options.set = (value) => {\n setItem(value)\n return options\n }\n options.update = () => {\n if (options.onUpdate) options.onUpdate(getItem())\n return options\n }\n // detect updates from other tabs\n window.addEventListener('storage', (event) => {\n console.log('stor', event)\n if (event.key === options.key && options.onUpdate) options.onUpdate(getItem())\n }, false)\n return options\n}\n\nlet autoList\nconst autoListCheckbox = document.querySelector('#auto-list-checkbox')\nconst autoListSetting = initLocalStorage({\n key: 'auto-list',\n defaultValue: false,\n onUpdate: (newAutoListSetting) => {\n if (newAutoListSetting === true) {\n autoList = true\n if (autoListCheckbox.checked === false) autoListCheckbox.checked = true\n } else {\n autoList = false\n if (autoListCheckbox.checked === true) autoListCheckbox.checked = false\n }\n }\n})\nautoListCheckbox.addEventListener('change', (e) => {\n if (autoListCheckbox.checked) autoListSetting.set(true).update()\n else autoListSetting.set(false).update()\n})\n\nimport Quill from '~/lib/quill.js'\nimport Delta from 'quill-delta';\nwindow.quill = new Quill(document.querySelector('#note'), {\n modules: {\n toolbar: [\n [{header: [1, 2, false]}],\n ['bold', 'italic', 'underline', 'strike'],\n [{list: 'bullet'}, {list: 'ordered'}],\n [{ 'align': [] }],\n ['link'],\n ['clean']\n ],\n keyboard: {\n bindings: {\n 'list autofill': {\n key: ' ',\n shiftKey: null,\n collapsed: true,\n format: {\n list: false,\n 'code-block': false,\n blockquote: false,\n header: false,\n table: false,\n },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler(range, context) {\n if (!autoList) return true\n // this is part of the default handler, but causes an error for some reason:\n // if (this.quill.scroll.query('list') == null) return true;\n const { length } = context.prefix;\n const [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]':\n case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':\n case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n const delta = new Delta()\n .retain(range.index - offset)\n .delete(length + 1)\n .retain(line.length() - 2 - offset)\n .retain(1, { list: value });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n return false;\n },\n },\n },\n },\n // toolbar: { container: '#toolbar-container' },\n magicUrl: true,\n history: {\n maxStack: 1000\n }\n },\n // formats: ['header'],\n theme: 'snow',\n placeholder: 'Maybe I\\'ll have a todo list here?'\n})\n\nconst delta = initLocalStorage({\n key: 'quill-delta',\n defaultValue: { ops: [] },\n onUpdate: (delta) => {\n quill.setContents(delta, 'silent')\n }\n})\n\nquill.on('text-change', () => {\n delta.set(quill.getContents())\n})\n\n// add old taskler tasks into quill\nif (localStorage.getItem('items') !== null) {\n const items = JSON.parse(localStorage.getItem('items'))\n const delta = quill.getContents()\n if ((items.repeatingTasks && items.repeatingTasks.length) || (items.tasks && items.tasks.length)) {\n delta.ops.push({\n insert: \"Looks like you've used Taskler before. I imported your old tasks.\\n\\n\"\n })\n }\n if (items.repeatingTasks && items.repeatingTasks.length) {\n for (let i = 0; i < items.repeatingTasks.length; i++) {\n delta.ops.push({\n insert: `Repeating task ${i + 1}:\\n`,\n attributes: { bold: true }\n })\n delta.ops.push({\n insert: items.repeatingTasks[i].text + '\\n\\n'\n })\n }\n }\n if (items.tasks && items.tasks.length) {\n for (let i = 0; i < items.tasks.length; i++) {\n delta.ops.push({\n insert: `Task ${i + 1}:\\n`,\n attributes: { bold: true }\n })\n delta.ops.push({\n insert: items.tasks[i] + '\\n\\n'\n })\n }\n }\n quill.setContents(delta)\n localStorage.removeItem('items')\n}\n\n// extension icons\nconst body = document.querySelector('body')\nconst isExtension = body.dataset.isExtension === 'true'\nif (!isExtension) {\n // Opera 8.0+\n // const isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0\n // Firefox 1.0+\n const isFirefox = typeof InstallTrigger !== 'undefined';\n // Safari 3.0+ \"[object HTMLElementConstructor]\"\n // const isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === \"[object SafariRemoteNotification]\"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification))\n // Internet Explorer 6-11\n // const isIE = /*@cc_on!@*/false || !!document.documentMode\n // Edge 20+\n // const isEdge = !isIE && !!window.StyleMedia\n // Chrome 1+\n const isChrome = !!window.chrome && !!window.chrome.webstore\n // Blink engine detection\n // const isBlink = (isChrome || isOpera) && !!window.CSS\n\n if (isChrome) document.getElementById('chrome-extension-icon').classList.add('visible')\n if (isFirefox) document.getElementById('firefox-extension-icon').classList.add('visible')\n}\n\nconst darkModeCheckbox = document.querySelector('#dark-mode-checkbox')\nconst darkMode = initLocalStorage({\n key: 'dark-mode',\n defaultValue: false,\n onUpdate: (newDarkMode) => {\n if (newDarkMode === false) {\n // body.classList.remove('dark-mode')\n // body.classList.add('light-mode')\n cssVars({ variables: {\n 'bgcolor': '#fafafa',\n 'bgcolor-overlay': '#F0F0F0',\n 'color': '#272727',\n\n 'logo-dark': '#272727',\n 'logo-mid': '#424242',\n 'logo-light': '#696969',\n }})\n if (darkModeCheckbox.checked === true) darkModeCheckbox.checked = false\n } else if (newDarkMode === true) {\n // body.classList.remove('light-mode')\n // body.classList.add('dark-mode')\n cssVars({ variables: {\n 'bgcolor': '#272727',\n 'bgcolor-overlay': '#313131',\n 'color': '#fafafa',\n\n 'logo-dark': '#fafafa',\n 'logo-mid': '#bdbdbd',\n 'logo-light': '#969696',\n }})\n if (darkModeCheckbox.checked === false) darkModeCheckbox.checked = true\n }\n }\n})\ndarkModeCheckbox.addEventListener('change', (e) => {\n if (darkModeCheckbox.checked) darkMode.set(true).update()\n else darkMode.set(false).update()\n})\n\nconst toolbarCheckbox = document.querySelector('#toolbar-checkbox')\nconst toolbar = document.querySelector('.ql-toolbar')\nconst toolbarSetting = initLocalStorage({\n key: 'toolbar',\n defaultValue: false,\n onUpdate: (newToolbarSetting) => {\n if (newToolbarSetting === true) {\n toolbar.classList.add('visible')\n if (toolbarCheckbox.checked === false) toolbarCheckbox.checked = true\n } else {\n toolbar.classList.remove('visible')\n if (toolbarCheckbox.checked === true) toolbarCheckbox.checked = false\n }\n }\n})\ntoolbarCheckbox.addEventListener('change', (e) => {\n if (toolbarCheckbox.checked) toolbarSetting.set(true).update()\n else toolbarSetting.set(false).update()\n})\n\n// settingsDialog\nconst settingsIcon = document.querySelector('.settings')\nconst dialog = document.querySelector('.settings-dialog')\nsettingsIcon.addEventListener('click', () => {\n dialog.classList.add('visible')\n})\n\ndocument.addEventListener('click', function (e) {\n if (e.target.classList.contains('dialog-container')) {\n var dialog = e.target\n dialog.classList.remove('visible')\n }\n})\n\n// enable transitions\nwindow.addEventListener('load', () => {\n body.classList.remove('no-transition')\n})\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Parchment\"] = factory();\n\telse\n\t\troot[\"Parchment\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 3c334e19bc1efdeb80ab","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/registry.ts\n// module id = 0\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../registry\");\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/attributor/attributor.ts\n// module id = 1\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = require(\"../../collection/linked-list\");\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/abstract/container.ts\n// module id = 2\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"../../attributor/attributor\");\nvar store_1 = require(\"../../attributor/store\");\nvar container_1 = require(\"./container\");\nvar Registry = require(\"../../registry\");\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/abstract/format.ts\n// module id = 3\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n var _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/abstract/leaf.ts\n// module id = 4\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../../registry\");\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent_1 = Registry.create(this.statics.scope);\n blot.wrap(parent_1);\n parent_1.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/abstract/shadow.ts\n// module id = 5\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nvar class_1 = require(\"./class\");\nvar style_1 = require(\"./style\");\nvar Registry = require(\"../registry\");\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/attributor/store.ts\n// module id = 6\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/attributor/class.ts\n// module id = 7\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/attributor/style.ts\n// module id = 8\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = require(\"./blot/abstract/container\");\nvar format_1 = require(\"./blot/abstract/format\");\nvar leaf_1 = require(\"./blot/abstract/leaf\");\nvar scroll_1 = require(\"./blot/scroll\");\nvar inline_1 = require(\"./blot/inline\");\nvar block_1 = require(\"./blot/block\");\nvar embed_1 = require(\"./blot/embed\");\nvar text_1 = require(\"./blot/text\");\nvar attributor_1 = require(\"./attributor/attributor\");\nvar class_1 = require(\"./attributor/class\");\nvar style_1 = require(\"./attributor/style\");\nvar store_1 = require(\"./attributor/store\");\nvar Registry = require(\"./registry\");\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/parchment.ts\n// module id = 10\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length_1 = cur.length();\n if (index < length_1 ||\n (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length_1;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/collection/linked-list.ts\n// module id = 11\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = require(\"./abstract/container\");\nvar Registry = require(\"../registry\");\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/scroll.ts\n// module id = 12\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/inline.ts\n// module id = 13\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/block.ts\n// module id = 14\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = require(\"./abstract/leaf\");\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/embed.ts\n// module id = 15\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = require(\"./abstract/leaf\");\nvar Registry = require(\"../registry\");\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/text.ts\n// module id = 16\n// module chunks = 0","let elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n let _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function(token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position){\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function(searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n","/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","var equal = require('deep-equal');\nvar extend = require('extend');\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\nIterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n};\n\n\nmodule.exports = lib;\n","var diff = require('fast-diff');\nvar equal = require('deep-equal');\nvar extend = require('extend');\nvar op = require('./op');\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n","import Parchment from 'parchment';\n\n\nclass Break extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n insertInto(parent, ref) {\n if (parent.children.length === 0) {\n super.insertInto(parent, ref);\n } else {\n this.remove();\n }\n }\n\n length() {\n return 0;\n }\n\n value() {\n return '';\n }\n}\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\n\nexport default Break;\n","import Parchment from 'parchment';\n\nclass TextBlot extends Parchment.Text { }\n\nexport default TextBlot;\n","import Text from './text';\nimport Parchment from 'parchment';\n\n\nclass Inline extends Parchment.Inline {\n static compare(self, other) {\n let selfIndex = Inline.order.indexOf(self);\n let otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n\n formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && Parchment.query(name, Parchment.Scope.BLOT)) {\n let blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n super.formatAt(index, length, name, value);\n }\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.parent instanceof Inline &&\n Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n let parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n}\nInline.allowedChildren = [Inline, Parchment.Embed, Text];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = [\n 'cursor', 'inline', // Must be lower\n 'underline', 'strike', 'italic', 'bold', 'script',\n 'link', 'code' // Must be higher\n];\n\n\nexport default Inline;\n","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Break from './break';\nimport Inline from './inline';\nimport TextBlot from './text';\n\n\nconst NEWLINE_LENGTH = 1;\n\n\nclass BlockEmbed extends Parchment.Embed {\n attach() {\n super.attach();\n this.attributes = new Parchment.Attributor.Store(this.domNode);\n }\n\n delta() {\n return new Delta().insert(this.value(), extend(this.formats(), this.attributes.values()));\n }\n\n format(name, value) {\n let attribute = Parchment.query(name, Parchment.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n\n formatAt(index, length, name, value) {\n this.format(name, value);\n }\n\n insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n let block = Parchment.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n super.insertAt(index, value, def);\n }\n }\n}\nBlockEmbed.scope = Parchment.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nclass Block extends Parchment.Block {\n constructor(domNode) {\n super(domNode);\n this.cache = {};\n }\n\n delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(Parchment.Leaf).reduce((delta, leaf) => {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new Delta()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n\n deleteAt(index, length) {\n super.deleteAt(index, length);\n this.cache = {};\n }\n\n formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n\n insertAt(index, value, def) {\n if (def != null) return super.insertAt(index, value, def);\n if (value.length === 0) return;\n let lines = value.split('\\n');\n let text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n super.insertAt(Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n let block = this;\n lines.reduce(function(index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n\n insertBefore(blot, ref) {\n let head = this.children.head;\n super.insertBefore(blot, ref);\n if (head instanceof Break) {\n head.remove();\n }\n this.cache = {};\n }\n\n length() {\n if (this.cache.length == null) {\n this.cache.length = super.length() + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n\n moveChildren(target, ref) {\n super.moveChildren(target, ref);\n this.cache = {};\n }\n\n optimize(context) {\n super.optimize(context);\n this.cache = {};\n }\n\n path(index) {\n return super.path(index, true);\n }\n\n removeChild(child) {\n super.removeChild(child);\n this.cache = {};\n }\n\n split(index, force = false) {\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n let clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n let next = super.split(index, force);\n this.cache = {};\n return next;\n }\n }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [Inline, Parchment.Embed, TextBlot];\n\n\nfunction bubbleFormats(blot, formats = {}) {\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = extend(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\n\nexport { bubbleFormats, BlockEmbed, Block as default };\n","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Inline from '../blots/inline';\nimport TextBlot from '../blots/text';\n\n\nclass Code extends Inline {}\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\n\nclass CodeBlock extends Block {\n static create(value) {\n let domNode = super.create(value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n\n static formats() {\n return true;\n }\n\n delta() {\n let text = this.domNode.textContent;\n if (text.endsWith('\\n')) { // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce((delta, frag) => {\n return delta.insert(frag).insert('\\n', this.formats());\n }, new Delta());\n }\n\n format(name, value) {\n if (name === this.statics.blotName && value) return;\n let [text, ] = this.descendant(TextBlot, this.length() - 1);\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n super.format(name, value);\n }\n\n formatAt(index, length, name, value) {\n if (length === 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK) == null ||\n (name === this.statics.blotName && value === this.statics.formats(this.domNode))) {\n return;\n }\n let nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n let prevNewline = this.newlineIndex(index, true) + 1;\n let isolateLength = nextNewline - prevNewline + 1;\n let blot = this.isolate(prevNewline, isolateLength);\n let next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n\n insertAt(index, value, def) {\n if (def != null) return;\n let [text, offset] = this.descendant(TextBlot, index);\n text.insertAt(offset, value);\n }\n\n length() {\n let length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n\n newlineIndex(searchIndex, reverse = false) {\n if (!reverse) {\n let offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n\n optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(Parchment.create('text', '\\n'));\n }\n super.optimize(context);\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n super.replace(target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function(node) {\n let blot = Parchment.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof Parchment.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n}\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\n\nexport { Code, CodeBlock as default };\n","import Parchment from 'parchment';\nimport TextBlot from './text';\n\n\nclass Cursor extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n constructor(domNode, selection) {\n super(domNode);\n this.selection = selection;\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n this._length = 0;\n }\n\n detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n\n format(name, value) {\n if (this._length !== 0) {\n return super.format(name, value);\n }\n let target = this, index = 0;\n while (target != null && target.statics.scope !== Parchment.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n\n index(node, offset) {\n if (node === this.textNode) return 0;\n return super.index(node, offset);\n }\n\n length() {\n return this._length;\n }\n\n position() {\n return [this.textNode, this.textNode.data.length];\n }\n\n remove() {\n super.remove();\n this.parent = null;\n }\n\n restore() {\n if (this.selection.composing || this.parent == null) return;\n let textNode = this.textNode;\n let range = this.selection.getNativeRange();\n let restoreText, start, end;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n [restoreText, start, end] = [textNode, range.start.offset, range.end.offset];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n let text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof TextBlot) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(Parchment.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n [start, end] = [start, end].map(function(offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n\n update(mutations, context) {\n if (mutations.some((mutation) => {\n return mutation.type === 'characterData' && mutation.target === this.textNode;\n })) {\n let range = this.restore();\n if (range) context.range = range;\n }\n }\n\n value() {\n return '';\n }\n}\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = \"\\uFEFF\"; // Zero width no break space\n\n\nexport default Cursor;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","import Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport CodeBlock from '../formats/code';\nimport CursorBlot from '../blots/cursor';\nimport Block, { bubbleFormats } from '../blots/block';\nimport Break from '../blots/break';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\n\n\nconst ASCII = /^[ -~]*$/;\n\n\nclass Editor {\n constructor(scroll) {\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n applyDelta(delta) {\n let consumeNextNewline = false;\n this.scroll.update();\n let scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce((index, op) => {\n let length = op.retain || op.delete || op.insert.length || 1;\n let attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n let text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n this.scroll.insertAt(index, text);\n let [line, offset] = this.scroll.line(index);\n let formats = extend({}, bubbleFormats(line));\n if (line instanceof Block) {\n let [leaf, ] = line.descendant(Parchment.Leaf, offset);\n formats = extend(formats, bubbleFormats(leaf));\n }\n attributes = DeltaOp.attributes.diff(formats, attributes) || {};\n } else if (typeof op.insert === 'object') {\n let key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach((name) => {\n this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce((index, op) => {\n if (typeof op.delete === 'number') {\n this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n\n deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new Delta().retain(index).delete(length));\n }\n\n formatLine(index, length, formats = {}) {\n this.scroll.update();\n Object.keys(formats).forEach((format) => {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n let lines = this.scroll.lines(index, Math.max(length, 1));\n let lengthRemaining = length;\n lines.forEach((line) => {\n let lineLength = line.length();\n if (!(line instanceof CodeBlock)) {\n line.format(format, formats[format]);\n } else {\n let codeIndex = index - line.offset(this.scroll);\n let codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n formatText(index, length, formats = {}) {\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n\n getDelta() {\n return this.scroll.lines().reduce((delta, line) => {\n return delta.concat(line.delta());\n }, new Delta());\n }\n\n getFormat(index, length = 0) {\n let lines = [], leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function(path) {\n let [blot, ] = path;\n if (blot instanceof Block) {\n lines.push(blot);\n } else if (blot instanceof Parchment.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(Parchment.Leaf, index, length);\n }\n let formatsArr = [lines, leaves].map(function(blots) {\n if (blots.length === 0) return {};\n let formats = bubbleFormats(blots.shift());\n while (Object.keys(formats).length > 0) {\n let blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats(bubbleFormats(blot), formats);\n }\n return formats;\n });\n return extend.apply(extend, formatsArr);\n }\n\n getText(index, length) {\n return this.getContents(index, length).filter(function(op) {\n return typeof op.insert === 'string';\n }).map(function(op) {\n return op.insert;\n }).join('');\n }\n\n insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new Delta().retain(index).insert({ [embed]: value }));\n }\n\n insertText(index, text, formats = {}) {\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).insert(text, clone(formats)));\n }\n\n isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n let block = this.scroll.children.head;\n if (block.statics.blotName !== Block.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof Break;\n }\n\n removeFormat(index, length) {\n let text = this.getText(index, length);\n let [line, offset] = this.scroll.line(index + length);\n let suffixLength = 0, suffix = new Delta();\n if (line != null) {\n if (!(line instanceof CodeBlock)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n let contents = this.getContents(index, length + suffixLength);\n let diff = contents.diff(new Delta().insert(text).concat(suffix));\n let delta = new Delta().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n\n update(change, mutations = [], cursorIndex = undefined) {\n let oldDelta = this.delta;\n if (mutations.length === 1 &&\n mutations[0].type === 'characterData' &&\n mutations[0].target.data.match(ASCII) &&\n Parchment.find(mutations[0].target)) {\n // Optimization for character changes\n let textBlot = Parchment.find(mutations[0].target);\n let formats = bubbleFormats(textBlot);\n let index = textBlot.offset(this.scroll);\n let oldValue = mutations[0].oldValue.replace(CursorBlot.CONTENTS, '');\n let oldText = new Delta().insert(oldValue);\n let newText = new Delta().insert(textBlot.value());\n let diffDelta = new Delta().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function(delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new Delta());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !equal(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n}\n\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function(merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function(delta, op) {\n if (op.insert === 1) {\n let attributes = clone(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = clone(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n let text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new Delta());\n}\n\n\nexport default Editor;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","let levels = ['error', 'warn', 'log', 'info'];\nlet level = 'warn';\n\nfunction debug(method, ...args) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n console[method](...args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function(logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function(newLevel) {\n level = newLevel;\n};\n\n\nexport default namespace;\n","import EventEmitter from 'eventemitter3';\nimport logger from './logger';\n\nlet debug = logger('quill:events');\n\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function(eventName) {\n document.addEventListener(eventName, (...args) => {\n [].slice.call(document.querySelectorAll('.ql-container')).forEach((node) => {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n node.__quill.emitter.handleDOM(...args);\n }\n });\n });\n});\n\n\nclass Emitter extends EventEmitter {\n constructor() {\n super();\n this.listeners = {};\n this.on('error', debug.error);\n }\n\n emit() {\n debug.log.apply(debug, arguments);\n super.emit.apply(this, arguments);\n }\n\n handleDOM(event, ...args) {\n (this.listeners[event.type] || []).forEach(function({ node, handler }) {\n if (event.target === node || node.contains(event.target)) {\n handler(event, ...args);\n }\n });\n }\n\n listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node, handler })\n }\n}\n\nEmitter.events = {\n EDITOR_CHANGE : 'editor-change',\n SCROLL_BEFORE_UPDATE : 'scroll-before-update',\n SCROLL_OPTIMIZE : 'scroll-optimize',\n SCROLL_UPDATE : 'scroll-update',\n SELECTION_CHANGE : 'selection-change',\n TEXT_CHANGE : 'text-change'\n};\nEmitter.sources = {\n API : 'api',\n SILENT : 'silent',\n USER : 'user'\n};\n\n\nexport default Emitter;\n","class Module {\n constructor(quill, options = {}) {\n this.quill = quill;\n this.options = options;\n }\n}\nModule.DEFAULTS = {};\n\n\nexport default Module;\n","import Parchment from 'parchment';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport Emitter from './emitter';\nimport logger from './logger';\n\nlet debug = logger('quill:selection');\n\n\nclass Range {\n constructor(index, length = 0) {\n this.index = index;\n this.length = length;\n }\n}\n\n\nclass Selection {\n constructor(scroll, emitter) {\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = Parchment.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, () => {\n if (!this.mouseDown) {\n setTimeout(this.update.bind(this, Emitter.sources.USER), 1);\n }\n });\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type, delta) => {\n if (type === Emitter.events.TEXT_CHANGE && delta.length() > 0) {\n this.update(Emitter.sources.SILENT);\n }\n });\n this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n if (!this.hasFocus()) return;\n let native = this.getNativeRange();\n if (native == null) return;\n if (native.start.node === this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n this.emitter.once(Emitter.events.SCROLL_UPDATE, () => {\n try {\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(Emitter.events.SCROLL_OPTIMIZE, (mutations, context) => {\n if (context.range) {\n const { startNode, startOffset, endNode, endOffset } = context.range;\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(Emitter.sources.SILENT);\n }\n\n handleComposition() {\n this.root.addEventListener('compositionstart', () => {\n this.composing = true;\n });\n this.root.addEventListener('compositionend', () => {\n this.composing = false;\n if (this.cursor.parent) {\n const range = this.cursor.restore();\n if (!range) return;\n setTimeout(() => {\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n\n handleDragging() {\n this.emitter.listenDOM('mousedown', document.body, () => {\n this.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, () => {\n this.mouseDown = false;\n this.update(Emitter.sources.USER);\n });\n }\n\n focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n\n format(format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n this.scroll.update();\n let nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || Parchment.query(format, Parchment.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n let blot = Parchment.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof Parchment.Leaf) {\n let after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n\n getBounds(index, length = 0) {\n let scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n let node, [leaf, offset] = this.scroll.leaf(index);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n let range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n [leaf, offset] = this.scroll.leaf(index + length);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n let side = 'left';\n let rect;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n\n getNativeRange() {\n let selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n let nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n let range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n\n getRange() {\n let normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n let range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n\n hasFocus() {\n return document.activeElement === this.root;\n }\n\n normalizedToRange(range) {\n let positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n let indexes = positions.map((position) => {\n let [node, offset] = position;\n let blot = Parchment.find(node, true);\n let index = blot.offset(this.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof Parchment.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n let end = Math.min(Math.max(...indexes), this.scroll.length() - 1);\n let start = Math.min(end, ...indexes);\n return new Range(start, end-start);\n }\n\n normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) ||\n (!nativeRange.collapsed && !contains(this.root, nativeRange.endContainer))) {\n return null;\n }\n let range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function(position) {\n let node = position.node, offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n\n rangeToNative(range) {\n let indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n let args = [];\n let scrollLength = this.scroll.length();\n indexes.forEach((index, i) => {\n index = Math.min(scrollLength - 1, index);\n let node, [leaf, offset] = this.scroll.leaf(index);\n [node, offset] = leaf.position(offset, i !== 0);\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n\n scrollIntoView(scrollingContainer) {\n let range = this.lastRange;\n if (range == null) return;\n let bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n let limit = this.scroll.length()-1;\n let [first, ] = this.scroll.line(Math.min(range.index, limit));\n let last = first;\n if (range.length > 0) {\n [last, ] = this.scroll.line(Math.min(range.index + range.length, limit));\n }\n if (first == null || last == null) return;\n let scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= (scrollBounds.top - bounds.top);\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += (bounds.bottom - scrollBounds.bottom);\n }\n }\n\n setNativeRange(startNode, startOffset, endNode = startNode, endOffset = startOffset, force = false) {\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n let selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n let native = (this.getNativeRange() || {}).native;\n if (native == null || force ||\n startNode !== native.startContainer ||\n startOffset !== native.startOffset ||\n endNode !== native.endContainer ||\n endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n let range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n\n setRange(range, force = false, source = Emitter.sources.API) {\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n let args = this.rangeToNative(range);\n this.setNativeRange(...args, force);\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n\n update(source = Emitter.sources.USER) {\n let oldRange = this.lastRange;\n let [lastRange, nativeRange] = this.getRange();\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!equal(oldRange, this.lastRange)) {\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n let args = [Emitter.events.SELECTION_CHANGE, clone(this.lastRange), clone(oldRange), source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n }\n}\n\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\n\nexport { Range, Selection as default };\n","class Theme {\n constructor(quill, options) {\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n init() {\n Object.keys(this.options.modules).forEach((name) => {\n if (this.modules[name] == null) {\n this.addModule(name);\n }\n });\n }\n\n addModule(name) {\n let moduleClass = this.quill.constructor.import(`modules/${name}`);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n}\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\n\nexport default Theme;\n","import './polyfill';\nimport Delta from 'quill-delta';\nimport Editor from './editor';\nimport Emitter from './emitter';\nimport Module from './module';\nimport Parchment from 'parchment';\nimport Selection, { Range } from './selection';\nimport extend from 'extend';\nimport logger from './logger';\nimport Theme from './theme';\n\nlet debug = logger('quill');\n\n\nclass Quill {\n static debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n logger.level(limit);\n }\n\n static find(node) {\n return node.__quill || Parchment.find(node);\n }\n\n static import(name) {\n if (this.imports[name] == null) {\n debug.error(`Cannot import ${name}. Are you sure it was registered?`);\n }\n return this.imports[name];\n }\n\n static register(path, target, overwrite = false) {\n if (typeof path !== 'string') {\n let name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach((key) => {\n this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn(`Overwriting ${path} with`, target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) &&\n target.blotName !== 'abstract') {\n Parchment.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n\n constructor(container, options = {}) {\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n let html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new Emitter();\n this.scroll = Parchment.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new Editor(this.scroll);\n this.selection = new Selection(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type) => {\n if (type === Emitter.events.TEXT_CHANGE) {\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\n }\n });\n this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n let range = this.selection.lastRange;\n let index = range && range.length === 0 ? range.index : undefined;\n modify.call(this, () => {\n return this.editor.update(null, mutations, index);\n }, source);\n });\n let contents = this.clipboard.convert(`<div class='ql-editor' style=\"white-space: normal;\">${html}<p><br></p></div>`);\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n addContainer(container, refNode = null) {\n if (typeof container === 'string') {\n let className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n\n blur() {\n this.selection.setRange(null);\n }\n\n deleteText(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.deleteText(index, length);\n }, source, index, -1*length);\n }\n\n disable() {\n this.enable(false);\n }\n\n enable(enabled = true) {\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n\n focus() {\n let scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n\n format(name, value, source = Emitter.sources.API) {\n return modify.call(this, () => {\n let range = this.getSelection(true);\n let change = new Delta();\n if (range == null) {\n return change;\n } else if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n change = this.editor.formatLine(range.index, range.length, { [name]: value });\n } else if (range.length === 0) {\n this.selection.format(name, value);\n return change;\n } else {\n change = this.editor.formatText(range.index, range.length, { [name]: value });\n }\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }, source);\n }\n\n formatLine(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n\n formatText(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n\n getBounds(index, length = 0) {\n let bounds;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n let containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n\n getContents(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getContents(index, length);\n }\n\n getFormat(index = this.getSelection(true), length = 0) {\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n\n getIndex(blot) {\n return blot.offset(this.scroll);\n }\n\n getLength() {\n return this.scroll.length();\n }\n\n getLeaf(index) {\n return this.scroll.leaf(index);\n }\n\n getLine(index) {\n return this.scroll.line(index);\n }\n\n getLines(index = 0, length = Number.MAX_VALUE) {\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n\n getModule(name) {\n return this.theme.modules[name];\n }\n\n getSelection(focus = false) {\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n\n getText(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getText(index, length);\n }\n\n hasFocus() {\n return this.selection.hasFocus();\n }\n\n insertEmbed(index, embed, value, source = Quill.sources.API) {\n return modify.call(this, () => {\n return this.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n\n insertText(index, text, name, value, source) {\n let formats;\n [index, , formats, source] = overload(index, 0, name, value, source);\n return modify.call(this, () => {\n return this.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n\n isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n\n off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n\n on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n\n once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n\n pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n\n removeFormat(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.removeFormat(index, length);\n }, source, index);\n }\n\n scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n\n setContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n let length = this.getLength();\n let deleted = this.editor.deleteText(0, length);\n let applied = this.editor.applyDelta(delta);\n let lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof(lastOp.insert) === 'string' && lastOp.insert[lastOp.insert.length-1] === '\\n') {\n this.editor.deleteText(this.getLength() - 1, 1);\n applied.delete(1);\n }\n let ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n\n setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n [index, length, , source] = overload(index, length, source);\n this.selection.setRange(new Range(index, length), source);\n if (source !== Emitter.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n\n setText(text, source = Emitter.sources.API) {\n let delta = new Delta().insert(text);\n return this.setContents(delta, source);\n }\n\n update(source = Emitter.sources.USER) {\n let change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n\n updateContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n return this.editor.applyDelta(delta, source);\n }, source, true);\n }\n}\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = Emitter.events;\nQuill.sources = Emitter.sources;\n// eslint-disable-next-line no-undef\nQuill.version = typeof(QUILL_VERSION) === 'undefined' ? 'dev' : QUILL_VERSION;\n\nQuill.imports = {\n 'delta' : Delta,\n 'parchment' : Parchment,\n 'core/module' : Module,\n 'core/theme' : Theme\n};\n\n\nfunction expandConfig(container, userConfig) {\n userConfig = extend(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = Theme;\n } else {\n userConfig.theme = Quill.import(`themes/${userConfig.theme}`);\n if (userConfig.theme == null) {\n throw new Error(`Invalid theme ${userConfig.theme}. Did you register it?`);\n }\n }\n let themeConfig = extend(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function(config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function(module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n let moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n let moduleConfig = moduleNames.reduce(function(config, name) {\n let moduleClass = Quill.import(`modules/${name}`);\n if (moduleClass == null) {\n debug.error(`Cannot load ${name} module. Are you sure you registered it?`);\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar &&\n userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = extend(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function(key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function(config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === Emitter.sources.USER) {\n return new Delta();\n }\n let range = index == null ? null : this.getSelection();\n let oldDelta = this.editor.delta;\n let change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, Emitter.sources.SILENT);\n }\n if (change.length() > 0) {\n let args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n let formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if (typeof name === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || Emitter.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n let start, end;\n if (index instanceof Delta) {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n return index.transformPosition(pos, source !== Emitter.sources.USER);\n });\n } else {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n if (pos < index || (pos === index && source === Emitter.sources.USER)) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n }\n return new Range(start, end - start);\n}\n\n\nexport { expandConfig, overload, Quill as default };\n","import Parchment from 'parchment';\nimport Block, { BlockEmbed } from './block';\n\n\nclass Container extends Parchment.Container { }\nContainer.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Container;\n","import Parchment from 'parchment';\nimport TextBlot from './text';\n\nconst GUARD_TEXT = \"\\uFEFF\";\n\n\nclass Embed extends Parchment.Embed {\n constructor(node) {\n super(node);\n this.contentNode = document.createElement('span');\n this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(this.domNode.childNodes).forEach((childNode) => {\n this.contentNode.appendChild(childNode);\n });\n this.leftGuard = document.createTextNode(GUARD_TEXT);\n this.rightGuard = document.createTextNode(GUARD_TEXT);\n this.domNode.appendChild(this.leftGuard);\n this.domNode.appendChild(this.contentNode);\n this.domNode.appendChild(this.rightGuard);\n }\n\n index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return super.index(node, offset);\n }\n\n restore(node) {\n let range, textNode;\n let text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof TextBlot) {\n let prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof TextBlot) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n }\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n\n update(mutations, context) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'characterData' &&\n (mutation.target === this.leftGuard || mutation.target === this.rightGuard)) {\n let range = this.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n}\n\n\nexport default Embed;\n","import Parchment from 'parchment';\nimport Emitter from '../core/emitter';\nimport Block, { BlockEmbed } from './block';\nimport Break from './break';\nimport CodeBlock from '../formats/code';\nimport Container from './container';\n\n\nfunction isLine(blot) {\n return (blot instanceof Block || blot instanceof BlockEmbed);\n}\n\n\nclass Scroll extends Parchment.Scroll {\n constructor(domNode, config) {\n super(domNode);\n this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n this.whitelist = config.whitelist.reduce(function(whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n this.domNode.addEventListener('DOMNodeInserted', function() {});\n this.optimize();\n this.enable();\n }\n\n batchStart() {\n this.batch = true;\n }\n\n batchEnd() {\n this.batch = false;\n this.optimize();\n }\n\n deleteAt(index, length) {\n let [first, offset] = this.line(index);\n let [last, ] = this.line(index + length);\n super.deleteAt(index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof BlockEmbed || last instanceof BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof CodeBlock) {\n let newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof CodeBlock) {\n let newlineIndex = last.newlineIndex(0);\n if (newlineIndex > -1) {\n last.split(newlineIndex + 1);\n }\n }\n let ref = last.children.head instanceof Break ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n\n enable(enabled = true) {\n this.domNode.setAttribute('contenteditable', enabled);\n }\n\n formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n super.formatAt(index, length, format, value);\n this.optimize();\n }\n\n insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || Parchment.query(value, Parchment.Scope.BLOCK) == null) {\n let blot = Parchment.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n let embed = Parchment.create(value, def);\n this.appendChild(embed);\n }\n } else {\n super.insertAt(index, value, def);\n }\n this.optimize();\n }\n\n insertBefore(blot, ref) {\n if (blot.statics.scope === Parchment.Scope.INLINE_BLOT) {\n let wrapper = Parchment.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n super.insertBefore(blot, ref);\n }\n\n leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n\n line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n\n lines(index = 0, length = Number.MAX_VALUE) {\n let getLines = (blot, index, length) => {\n let lines = [], lengthLeft = length;\n blot.children.forEachAt(index, length, function(child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof Parchment.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n\n optimize(mutations = [], context = {}) {\n if (this.batch === true) return;\n super.optimize(mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n\n path(index) {\n return super.path(index).slice(1); // Exclude self\n }\n\n update(mutations) {\n if (this.batch === true) return;\n let source = Emitter.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n super.update(mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n }\n }\n}\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Scroll;\n","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nlet AlignAttribute = new Parchment.Attributor.Attribute('align', 'align', config);\nlet AlignClass = new Parchment.Attributor.Class('align', 'ql-align', config);\nlet AlignStyle = new Parchment.Attributor.Style('align', 'text-align', config);\n\nexport { AlignAttribute, AlignClass, AlignStyle };\n","import Parchment from 'parchment';\n\nclass ColorAttributor extends Parchment.Attributor.Style {\n value(domNode) {\n let value = super.value(domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function(component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n}\n\nlet ColorClass = new Parchment.Attributor.Class('color', 'ql-color', {\n scope: Parchment.Scope.INLINE\n});\nlet ColorStyle = new ColorAttributor('color', 'color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { ColorAttributor, ColorClass, ColorStyle };\n","import Parchment from 'parchment';\nimport { ColorAttributor } from './color';\n\nlet BackgroundClass = new Parchment.Attributor.Class('background', 'ql-bg', {\n scope: Parchment.Scope.INLINE\n});\nlet BackgroundStyle = new ColorAttributor('background', 'background-color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { BackgroundClass, BackgroundStyle };\n","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nlet DirectionAttribute = new Parchment.Attributor.Attribute('direction', 'dir', config);\nlet DirectionClass = new Parchment.Attributor.Class('direction', 'ql-direction', config);\nlet DirectionStyle = new Parchment.Attributor.Style('direction', 'direction', config);\n\nexport { DirectionAttribute, DirectionClass, DirectionStyle };\n","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nlet FontClass = new Parchment.Attributor.Class('font', 'ql-font', config);\n\nclass FontStyleAttributor extends Parchment.Attributor.Style {\n value(node) {\n return super.value(node).replace(/[\"']/g, '');\n }\n}\n\nlet FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexport { FontStyle, FontClass };\n","import Parchment from 'parchment';\n\nlet SizeClass = new Parchment.Attributor.Class('size', 'ql-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nlet SizeStyle = new Parchment.Attributor.Style('size', 'font-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexport { SizeClass, SizeStyle };\n","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nimport { AlignAttribute, AlignStyle } from '../formats/align';\nimport { BackgroundStyle } from '../formats/background';\nimport CodeBlock from '../formats/code';\nimport { ColorStyle } from '../formats/color';\nimport { DirectionAttribute, DirectionStyle } from '../formats/direction';\nimport { FontStyle } from '../formats/font';\nimport { SizeStyle } from '../formats/size';\n\nlet debug = logger('quill:clipboard');\n\n\nconst DOM_KEY = '__ql-matcher';\n\nconst CLIPBOARD_CONFIG = [\n [Node.TEXT_NODE, matchText],\n [Node.TEXT_NODE, matchNewline],\n ['br', matchBreak],\n [Node.ELEMENT_NODE, matchNewline],\n [Node.ELEMENT_NODE, matchBlot],\n [Node.ELEMENT_NODE, matchSpacing],\n [Node.ELEMENT_NODE, matchAttributor],\n [Node.ELEMENT_NODE, matchStyles],\n ['li', matchIndent],\n ['b', matchAlias.bind(matchAlias, 'bold')],\n ['i', matchAlias.bind(matchAlias, 'italic')],\n ['style', matchIgnore]\n];\n\nconst ATTRIBUTE_ATTRIBUTORS = [\n AlignAttribute,\n DirectionAttribute\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nconst STYLE_ATTRIBUTORS = [\n AlignStyle,\n BackgroundStyle,\n ColorStyle,\n DirectionStyle,\n FontStyle,\n SizeStyle\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\n\nclass Clipboard extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.quill.root.addEventListener('paste', this.onPaste.bind(this));\n this.container = this.quill.addContainer('ql-clipboard');\n this.container.setAttribute('contenteditable', true);\n this.container.setAttribute('tabindex', -1);\n this.matchers = [];\n CLIPBOARD_CONFIG.concat(this.options.matchers).forEach(([selector, matcher]) => {\n if (!options.matchVisual && matcher === matchSpacing) return;\n this.addMatcher(selector, matcher);\n });\n }\n\n addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n\n convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\</g, '><'); // Remove spaces between tags\n return this.convert();\n }\n const formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[CodeBlock.blotName]) {\n const text = this.container.innerText;\n this.container.innerHTML = '';\n return new Delta().insert(text, { [CodeBlock.blotName]: formats[CodeBlock.blotName] });\n }\n let [elementMatchers, textMatchers] = this.prepareMatching();\n let delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new Delta().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n\n dangerouslyPasteHTML(index, html, source = Quill.sources.API) {\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, Quill.sources.SILENT);\n } else {\n let paste = this.convert(html);\n this.quill.updateContents(new Delta().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), Quill.sources.SILENT);\n }\n }\n\n onPaste(e) {\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n let range = this.quill.getSelection();\n let delta = new Delta().retain(range.index);\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(Quill.sources.SILENT);\n setTimeout(() => {\n delta = delta.concat(this.convert()).delete(range.length);\n this.quill.updateContents(delta, Quill.sources.USER);\n // range.length contributes to delta.length()\n this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT);\n this.quill.scrollingContainer.scrollTop = scrollTop;\n this.quill.focus();\n }, 1);\n }\n\n prepareMatching() {\n let elementMatchers = [], textMatchers = [];\n this.matchers.forEach((pair) => {\n let [selector, matcher] = pair;\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(this.container.querySelectorAll(selector), (node) => {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n}\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\n\nfunction applyFormat(delta, format, value) {\n if (typeof format === 'object') {\n return Object.keys(format).reduce(function(delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function(delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, extend({}, {[format]: value}, op.attributes));\n }\n }, new Delta());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n const DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n let endText = \"\";\n for (let i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n let op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1*text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n let style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) { // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function(delta, matcher) {\n return matcher(node, delta);\n }, new Delta());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], (delta, childNode) => {\n let childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new Delta());\n } else {\n return new Delta();\n }\n}\n\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n let attributes = Parchment.Attributor.Attribute.keys(node);\n let classes = Parchment.Attributor.Class.keys(node);\n let styles = Parchment.Attributor.Style.keys(node);\n let formats = {};\n attributes.concat(classes).concat(styles).forEach((name) => {\n let attr = Parchment.query(name, Parchment.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name]\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n let match = Parchment.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof Parchment.Embed) {\n let embed = {};\n let value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new Delta().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new Delta();\n}\n\nfunction matchIndent(node, delta) {\n let match = Parchment.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n let indent = -1, parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((Parchment.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new Delta().retain(delta.length() - 1).retain(1, { indent: indent}));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || (delta.length() > 0 && node.nextSibling && isLine(node.nextSibling))) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n let nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight*1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n let formats = {};\n let style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') ||\n parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) { // Could be 0.5in\n delta = new Delta().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n let text = node.data;\n // Word represents empty line with <o:p>&nbsp;</o:p>\n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n let replacer = function(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if ((node.previousSibling == null && isLine(node.parentNode)) ||\n (node.previousSibling != null && isLine(node.previousSibling))) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if ((node.nextSibling == null && isLine(node.parentNode)) ||\n (node.nextSibling != null && isLine(node.nextSibling))) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\n\nexport { Clipboard as default, matchAttributor, matchBlot, matchNewline, matchSpacing, matchText };\n","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass History extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.lastRecorded = 0;\n this.ignoreChange = false;\n this.clear();\n this.quill.on(Quill.events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\n if (eventName !== Quill.events.TEXT_CHANGE || this.ignoreChange) return;\n if (!this.options.userOnly || source === Quill.sources.USER) {\n this.record(delta, oldDelta);\n } else {\n this.transform(delta);\n }\n });\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, this.undo.bind(this));\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, this.redo.bind(this));\n if (/Win/i.test(navigator.platform)) {\n this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, this.redo.bind(this));\n }\n }\n\n change(source, dest) {\n if (this.stack[source].length === 0) return;\n let delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], Quill.sources.USER);\n this.ignoreChange = false;\n let index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n\n clear() {\n this.stack = { undo: [], redo: [] };\n }\n\n cutoff() {\n this.lastRecorded = 0;\n }\n\n record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n let undoDelta = this.quill.getContents().diff(oldDelta);\n let timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n let delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n\n redo() {\n this.change('redo', 'undo');\n }\n\n transform(delta) {\n this.stack.undo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n\n undo() {\n this.change('undo', 'redo');\n }\n}\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n let lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function(attr) {\n return Parchment.query(attr, Parchment.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n let deleteLength = delta.reduce(function(length, op) {\n length += (op.delete || 0);\n return length;\n }, 0);\n let changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\n\nexport { History as default, getLastChangeIndex };\n","import clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\nimport Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:keyboard');\n\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n\nclass Keyboard extends Module {\n static match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function(key) {\n return (!!binding[key] !== evt[key] && binding[key] !== null);\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n\n constructor(quill, options) {\n super(quill, options);\n this.bindings = {};\n Object.keys(this.options.bindings).forEach((name) => {\n if (name === 'list autofill' &&\n quill.scroll.whitelist != null &&\n !quill.scroll.whitelist['list']) {\n return;\n }\n if (this.options.bindings[name]) {\n this.addBinding(this.options.bindings[name]);\n }\n });\n this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function() {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null },\n { collapsed: true, offset: 0 },\n handleBackspace);\n this.listen();\n }\n\n addBinding(key, context = {}, handler = {}) {\n let binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = extend(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n\n listen() {\n this.quill.root.addEventListener('keydown', (evt) => {\n if (evt.defaultPrevented) return;\n let which = evt.which || evt.keyCode;\n let bindings = (this.bindings[which] || []).filter(function(binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n let range = this.quill.getSelection();\n if (range == null || !this.quill.hasFocus()) return;\n let [line, offset] = this.quill.getLine(range.index);\n let [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n let [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\n let prefixText = leafStart instanceof Parchment.Text ? leafStart.value().slice(0, offsetStart) : '';\n let suffixText = leafEnd instanceof Parchment.Text ? leafEnd.value().slice(offsetEnd) : '';\n let curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: this.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n let prevented = bindings.some((binding) => {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function(name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (typeof binding.format === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function(name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return equal(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(this, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n}\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold' : makeFormatHandler('bold'),\n 'italic' : makeFormatHandler('italic'),\n 'underline' : makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', Quill.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', Quill.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', Quill.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, Quill.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function(range) {\n this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function(range) {\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index)\n .delete(range.length)\n .insert('\\t');\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function(range, context) {\n this.quill.format('list', false, Quill.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, Quill.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function(range) {\n let [line, offset] = this.quill.getLine(range.index);\n let formats = extend({}, line.formats(), { list: 'checked' });\n let delta = new Delta().retain(range.index)\n .insert('\\n', formats)\n .retain(line.length() - offset - 1)\n .retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function(range, context) {\n let [line, offset] = this.quill.getLine(range.index);\n let delta = new Delta().retain(range.index)\n .insert('\\n', context.format)\n .retain(line.length() - offset - 1)\n .retain(1, { header: null });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function(range, context) {\n let length = context.prefix.length;\n let [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]': case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-': case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index - offset)\n .delete(length + 1)\n .retain(line.length() - 2 - offset)\n .retain(1, { list: value });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function(range) {\n const [line, offset] = this.quill.getLine(range.index);\n const delta = new Delta()\n .retain(range.index + line.length() - offset - 2)\n .retain(1, { 'code-block': null })\n .delete(1);\n this.quill.updateContents(delta, Quill.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n const where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return {\n key,\n shiftKey,\n altKey: null,\n [where]: /^$/,\n handler: function(range) {\n let index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += (range.length + 1);\n }\n const [leaf, ] = this.quill.getLeaf(index);\n if (!(leaf instanceof Parchment.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, Quill.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, Quill.sources.USER);\n }\n }\n return false;\n }\n };\n}\n\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n let [line, ] = this.quill.getLine(range.index);\n let formats = {};\n if (context.offset === 0) {\n let [prev, ] = this.quill.getLine(range.index - 1);\n if (prev != null && prev.length() > 1) {\n let curFormats = line.formats();\n let prevFormats = this.quill.getFormat(range.index-1, 1);\n formats = DeltaOp.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n let length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index-length, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index-length, length, formats, Quill.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n let length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n let formats = {}, nextLength = 0;\n let [line, ] = this.quill.getLine(range.index);\n if (context.offset >= line.length() - 1) {\n let [next, ] = this.quill.getLine(range.index + 1);\n if (next) {\n let curFormats = line.formats();\n let nextFormats = this.quill.getFormat(range.index, 1);\n formats = DeltaOp.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, Quill.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n let lines = this.quill.getLines(range);\n let formats = {};\n if (lines.length > 1) {\n let firstFormats = lines[0].formats();\n let lastFormats = lines[lines.length - 1].formats();\n formats = DeltaOp.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, Quill.sources.USER);\n }\n this.quill.setSelection(range.index, Quill.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n let lineFormats = Object.keys(context.format).reduce(function(lineFormats, format) {\n if (Parchment.query(format, Parchment.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, Quill.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach((name) => {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n this.quill.format(name, context.format[name], Quill.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: {'code-block': true },\n handler: function(range) {\n let CodeBlock = Parchment.query('code-block');\n let index = range.index, length = range.length;\n let [block, offset] = this.quill.scroll.descendant(CodeBlock, index);\n if (block == null) return;\n let scrollIndex = this.quill.getIndex(block);\n let start = block.newlineIndex(offset, true) + 1;\n let end = block.newlineIndex(scrollIndex + offset + length);\n let lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach((line, i) => {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(Quill.sources.USER);\n this.quill.setSelection(index, length, Quill.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function(range, context) {\n this.quill.format(format, !context.format[format], Quill.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if (typeof binding === 'object') {\n binding = clone(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\n\nexport { Keyboard as default, SHORTKEY };\n","import Parchment from 'parchment';\nimport Quill from './core/quill';\n\nimport Block, { BlockEmbed } from './blots/block';\nimport Break from './blots/break';\nimport Container from './blots/container';\nimport Cursor from './blots/cursor';\nimport Embed from './blots/embed';\nimport Inline from './blots/inline';\nimport Scroll from './blots/scroll';\nimport TextBlot from './blots/text';\n\nimport Clipboard from './modules/clipboard';\nimport History from './modules/history';\nimport Keyboard from './modules/keyboard';\n\nQuill.register({\n 'blots/block' : Block,\n 'blots/block/embed' : BlockEmbed,\n 'blots/break' : Break,\n 'blots/container' : Container,\n 'blots/cursor' : Cursor,\n 'blots/embed' : Embed,\n 'blots/inline' : Inline,\n 'blots/scroll' : Scroll,\n 'blots/text' : TextBlot,\n\n 'modules/clipboard' : Clipboard,\n 'modules/history' : History,\n 'modules/keyboard' : Keyboard\n});\n\nParchment.register(Block, Break, Cursor, Inline, Scroll, TextBlot);\n\n\nexport default Quill;\n","import Parchment from 'parchment';\n\nclass IdentAttributor extends Parchment.Attributor.Class {\n add(node, value) {\n if (value === '+1' || value === '-1') {\n let indent = this.value(node) || 0;\n value = (value === '+1' ? (indent + 1) : (indent - 1));\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return super.add(node, value);\n }\n }\n\n canAdd(node, value) {\n return super.canAdd(node, value) || super.canAdd(node, parseInt(value));\n }\n\n value(node) {\n return parseInt(super.value(node)) || undefined; // Don't return NaN\n }\n}\n\nlet IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: Parchment.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexport { IndentClass };\n","import Block from '../blots/block';\n\n\nclass Blockquote extends Block {}\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\n\nexport default Blockquote;\n","import Block from '../blots/block';\n\n\nclass Header extends Block {\n static formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n}\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n\nexport default Header;\n","import Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Container from '../blots/container';\n\n\nclass ListItem extends Block {\n static formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : super.formats(domNode);\n }\n\n format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(Parchment.create(this.statics.scope));\n } else {\n super.format(name, value);\n }\n }\n\n remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n super.remove();\n }\n }\n\n replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return super.replaceWith(name, value);\n }\n }\n}\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\n\nclass List extends Container {\n static create(value) {\n let tagName = value === 'ordered' ? 'OL' : 'UL';\n let node = super.create(tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n\n constructor(domNode) {\n super(domNode);\n const listEventHandler = (e) => {\n if (e.target.parentNode !== domNode) return;\n let format = this.statics.formats(domNode);\n let blot = Parchment.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if(format === 'unchecked') {\n blot.format('list', 'checked');\n }\n }\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n }\n\n format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n\n formats() {\n // We don't inherit from FormatBlot\n return { [this.statics.blotName]: this.statics.formats(this.domNode) };\n }\n\n insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n super.insertBefore(blot, ref);\n } else {\n let index = ref == null ? this.length() : ref.offset(this);\n let after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n\n optimize(context) {\n super.optimize(context);\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n next.domNode.tagName === this.domNode.tagName &&\n next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n let item = Parchment.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n super.replace(target);\n }\n}\nList.blotName = 'list';\nList.scope = Parchment.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\n\nexport { ListItem, List as default };\n","import Inline from '../blots/inline';\n\nclass Bold extends Inline {\n static create() {\n return super.create();\n }\n\n static formats() {\n return true;\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n}\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexport default Bold;\n","import Bold from './bold';\n\nclass Italic extends Bold { }\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexport default Italic;\n","import Inline from '../blots/inline';\n\n\nclass Link extends Inline {\n static create(value) {\n let node = super.create(value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('target', '_blank');\n return node;\n }\n\n static formats(domNode) {\n return domNode.getAttribute('href');\n }\n\n static sanitize(url) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n\n format(name, value) {\n if (name !== this.statics.blotName || !value) return super.format(name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n}\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\n\nfunction sanitize(url, protocols) {\n let anchor = document.createElement('a');\n anchor.href = url;\n let protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\n\nexport { Link as default, sanitize };\n","import Inline from '../blots/inline';\n\nclass Script extends Inline {\n static create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return super.create(value);\n }\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n}\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexport default Script;\n","import Inline from '../blots/inline';\n\nclass Strike extends Inline { }\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexport default Strike;\n","import Inline from '../blots/inline';\n\nclass Underline extends Inline { }\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexport default Underline;\n","import Parchment from 'parchment';\nimport { sanitize } from '../formats/link';\n\nconst ATTRIBUTES = [\n 'alt',\n 'height',\n 'width'\n];\n\n\nclass Image extends Parchment.Embed {\n static create(value) {\n let node = super.create(value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce(function(formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n\n static match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n }\n\n static sanitize(url) {\n return sanitize(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n}\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\n\nexport default Image;\n","import { BlockEmbed } from '../blots/block';\nimport Link from '../formats/link';\n\nconst ATTRIBUTES = [\n 'height',\n 'width'\n];\n\n\nclass Video extends BlockEmbed {\n static create(value) {\n let node = super.create(value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce(function(formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n\n static sanitize(url) {\n return Link.sanitize(url);\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n}\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\n\nexport default Video;\n","import Embed from '../blots/embed';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass FormulaBlot extends Embed {\n static create(value) {\n let node = super.create(value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n\n static value(domNode) {\n return domNode.getAttribute('data-value');\n }\n}\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\n\nclass Formula extends Module {\n static register() {\n Quill.register(FormulaBlot, true);\n }\n\n constructor() {\n super();\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n }\n}\n\n\nexport { FormulaBlot, Formula as default };\n","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\nimport CodeBlock from '../formats/code';\n\n\nclass SyntaxCodeBlock extends CodeBlock {\n replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n super.replaceWith(block);\n }\n\n highlight(highlight) {\n let text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n}\nSyntaxCodeBlock.className = 'ql-syntax';\n\n\nlet CodeToken = new Parchment.Attributor.Class('token', 'hljs', {\n scope: Parchment.Scope.INLINE\n});\n\n\nclass Syntax extends Module {\n static register() {\n Quill.register(CodeToken, true);\n Quill.register(SyntaxCodeBlock, true);\n }\n\n constructor(quill, options) {\n super(quill, options);\n if (typeof this.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n let timer = null;\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n this.highlight();\n timer = null;\n }, this.options.interval);\n });\n this.highlight();\n }\n\n highlight() {\n if (this.quill.selection.composing) return;\n this.quill.update(Quill.sources.USER);\n let range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach((code) => {\n code.highlight(this.options.highlight);\n });\n this.quill.update(Quill.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, Quill.sources.SILENT);\n }\n }\n}\nSyntax.DEFAULTS = {\n highlight: (function() {\n if (window.hljs == null) return null;\n return function(text) {\n let result = window.hljs.highlightAuto(text);\n return result.value;\n };\n })(),\n interval: 1000\n};\n\n\nexport { SyntaxCodeBlock as CodeBlock, CodeToken, Syntax as default};\n","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:toolbar');\n\n\nclass Toolbar extends Module {\n constructor(quill, options) {\n super(quill, options);\n if (Array.isArray(this.options.container)) {\n let container = document.createElement('div');\n addControls(container, this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n this.container = container;\n } else if (typeof this.options.container === 'string') {\n this.container = document.querySelector(this.options.container);\n } else {\n this.container = this.options.container;\n }\n if (!(this.container instanceof HTMLElement)) {\n return debug.error('Container required for toolbar', this.options);\n }\n this.container.classList.add('ql-toolbar');\n this.controls = [];\n this.handlers = {};\n Object.keys(this.options.handlers).forEach((format) => {\n this.addHandler(format, this.options.handlers[format]);\n });\n [].forEach.call(this.container.querySelectorAll('button, select'), (input) => {\n this.attach(input);\n });\n this.quill.on(Quill.events.EDITOR_CHANGE, (type, range) => {\n if (type === Quill.events.SELECTION_CHANGE) {\n this.update(range);\n }\n });\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n let [range, ] = this.quill.selection.getRange(); // quill.getSelection triggers update\n this.update(range);\n });\n }\n\n addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n\n attach(input) {\n let format = [].find.call(input.classList, (className) => {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (Parchment.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n let eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, (e) => {\n let value;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n let selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n this.quill.focus();\n let [range, ] = this.quill.selection.getRange();\n if (this.handlers[format] != null) {\n this.handlers[format].call(this, value);\n } else if (Parchment.query(format).prototype instanceof Parchment.Embed) {\n value = prompt(`Enter ${format}`);\n if (!value) return;\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ [format]: value })\n , Quill.sources.USER);\n } else {\n this.quill.format(format, value, Quill.sources.USER);\n }\n this.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n\n update(range) {\n let formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function(pair) {\n let [format, input] = pair;\n if (input.tagName === 'SELECT') {\n let option;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n let value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector(`option[value=\"${value}\"]`);\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n let isActive = formats[format] === input.getAttribute('value') ||\n (formats[format] != null && formats[format].toString() === input.getAttribute('value')) ||\n (formats[format] == null && !input.getAttribute('value'));\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n}\nToolbar.DEFAULTS = {};\n\n\nfunction addButton(container, format, value) {\n let input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function(controls) {\n let group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function(control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n let format = Object.keys(control)[0];\n let value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n let input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function() {\n let range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n let formats = this.quill.getFormat();\n Object.keys(formats).forEach((name) => {\n // Clean functionality in existing apps only clean inline formats\n if (Parchment.query(name, Parchment.Scope.INLINE) != null) {\n this.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, Quill.sources.USER);\n }\n },\n direction: function(value) {\n let align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', Quill.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, Quill.sources.USER);\n }\n this.quill.format('direction', value, Quill.sources.USER);\n },\n indent: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n let indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n let modifier = (value === '+1') ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, Quill.sources.USER);\n }\n },\n link: function(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, Quill.sources.USER);\n },\n list: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, Quill.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', Quill.sources.USER);\n }\n } else {\n this.quill.format('list', value, Quill.sources.USER);\n }\n }\n }\n}\n\n\nexport { Toolbar as default, addControls };\n","module.exports = {\n 'align': {\n '' : require('../assets/icons/align-left.svg'),\n 'center' : require('../assets/icons/align-center.svg'),\n 'right' : require('../assets/icons/align-right.svg'),\n 'justify' : require('../assets/icons/align-justify.svg')\n },\n 'background': require('../assets/icons/background.svg'),\n 'blockquote': require('../assets/icons/blockquote.svg'),\n 'bold' : require('../assets/icons/bold.svg'),\n 'clean' : require('../assets/icons/clean.svg'),\n 'code' : require('../assets/icons/code.svg'),\n 'code-block': require('../assets/icons/code.svg'),\n 'color' : require('../assets/icons/color.svg'),\n 'direction' : {\n '' : require('../assets/icons/direction-ltr.svg'),\n 'rtl' : require('../assets/icons/direction-rtl.svg')\n },\n 'float': {\n 'center' : require('../assets/icons/float-center.svg'),\n 'full' : require('../assets/icons/float-full.svg'),\n 'left' : require('../assets/icons/float-left.svg'),\n 'right' : require('../assets/icons/float-right.svg')\n },\n 'formula' : require('../assets/icons/formula.svg'),\n 'header': {\n '1' : require('../assets/icons/header.svg'),\n '2' : require('../assets/icons/header-2.svg')\n },\n 'italic' : require('../assets/icons/italic.svg'),\n 'image' : require('../assets/icons/image.svg'),\n 'indent': {\n '+1' : require('../assets/icons/indent.svg'),\n '-1' : require('../assets/icons/outdent.svg')\n },\n 'link' : require('../assets/icons/link.svg'),\n 'list': {\n 'ordered' : require('../assets/icons/list-ordered.svg'),\n 'bullet' : require('../assets/icons/list-bullet.svg'),\n 'check' : require('../assets/icons/list-check.svg')\n },\n 'script': {\n 'sub' : require('../assets/icons/subscript.svg'),\n 'super' : require('../assets/icons/superscript.svg'),\n },\n 'strike' : require('../assets/icons/strike.svg'),\n 'underline' : require('../assets/icons/underline.svg'),\n 'video' : require('../assets/icons/video.svg')\n};\n","import Keyboard from '../modules/keyboard';\nimport DropdownIcon from '../assets/icons/dropdown.svg';\n\nlet optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nclass Picker {\n constructor(select) {\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', () => {\n this.togglePicker();\n });\n this.label.addEventListener('keydown', (event) => {\n switch(event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case Keyboard.keys.ENTER:\n this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case Keyboard.keys.ESCAPE:\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n\n buildItem(option) {\n let item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', () => {\n this.selectItem(item, true);\n });\n item.addEventListener('keydown', (event) => {\n switch(event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case Keyboard.keys.ENTER:\n this.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case Keyboard.keys.ESCAPE:\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n\n buildLabel() {\n let label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = DropdownIcon;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n\n buildOptions() {\n let options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = `ql-picker-options-${optionsCounter}`;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach((option) => {\n let item = this.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n this.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n\n buildPicker() {\n [].slice.call(this.select.attributes).forEach((item) => {\n this.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n\n escape() {\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(() => this.label.focus(), 1);\n }\n\n close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n\n selectItem(item, trigger = false) {\n let selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if (typeof Event === 'object') { // IE11\n let event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n\n update() {\n let option;\n if (this.select.selectedIndex > -1) {\n let item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n let isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n}\n\n\nexport default Picker;\n","import Picker from './picker';\n\n\nclass ColorPicker extends Picker {\n constructor(select, label) {\n super(select);\n this.label.innerHTML = label;\n this.container.classList.add('ql-color-picker');\n [].slice.call(this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function(item) {\n item.classList.add('ql-primary');\n });\n }\n\n buildItem(option) {\n let item = super.buildItem(option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n let colorLabel = this.label.querySelector('.ql-color-label');\n let value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n}\n\n\nexport default ColorPicker;\n","import Picker from './picker';\n\n\nclass IconPicker extends Picker {\n constructor(select, icons) {\n super(select);\n this.container.classList.add('ql-icon-picker');\n [].forEach.call(this.container.querySelectorAll('.ql-picker-item'), (item) => {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n this.defaultItem = this.container.querySelector('.ql-selected');\n this.selectItem(this.defaultItem);\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n}\n\n\nexport default IconPicker;\n","class Tooltip {\n constructor(quill, boundsContainer) {\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', () => {\n this.root.style.marginTop = (-1*this.quill.root.scrollTop) + 'px';\n });\n }\n this.hide();\n }\n\n hide() {\n this.root.classList.add('ql-hidden');\n }\n\n position(reference) {\n let left = reference.left + reference.width/2 - this.root.offsetWidth/2;\n // root.scrollTop should be 0 if scrollContainer !== root\n let top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n let containerBounds = this.boundsContainer.getBoundingClientRect();\n let rootBounds = this.root.getBoundingClientRect();\n let shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n let height = rootBounds.bottom - rootBounds.top;\n let verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = (top - verticalShift) + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n\n show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n}\n\n\nexport default Tooltip;\n","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Emitter from '../core/emitter';\nimport Keyboard from '../modules/keyboard';\nimport Theme from '../core/theme';\nimport ColorPicker from '../ui/color-picker';\nimport IconPicker from '../ui/icon-picker';\nimport Picker from '../ui/picker';\nimport Tooltip from '../ui/tooltip';\n\n\nconst ALIGNS = [ false, 'center', 'right', 'justify' ];\n\nconst COLORS = [\n \"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\",\n \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\",\n \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\",\n \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\",\n \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"\n];\n\nconst FONTS = [ false, 'serif', 'monospace' ];\n\nconst HEADERS = [ '1', '2', '3', false ];\n\nconst SIZES = [ 'small', false, 'large', 'huge' ];\n\n\nclass BaseTheme extends Theme {\n constructor(quill, options) {\n super(quill, options);\n let listener = (e) => {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (this.tooltip != null && !this.tooltip.root.contains(e.target) &&\n document.activeElement !== this.tooltip.textbox && !this.quill.hasFocus()) {\n this.tooltip.hide();\n }\n if (this.pickers != null) {\n this.pickers.forEach(function(picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n }\n\n addModule(name) {\n let module = super.addModule(name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n\n buildButtons(buttons, icons) {\n buttons.forEach((button) => {\n let className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach((name) => {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n let value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n\n buildPickers(selects, icons) {\n this.pickers = selects.map((select) => {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new IconPicker(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n let format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new ColorPicker(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new Picker(select);\n }\n });\n let update = () => {\n this.pickers.forEach(function(picker) {\n picker.update();\n });\n };\n this.quill.on(Emitter.events.EDITOR_CHANGE, update);\n }\n}\nBaseTheme.DEFAULTS = extend(true, {}, Theme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function() {\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', () => {\n if (fileInput.files != null && fileInput.files[0] != null) {\n let reader = new FileReader();\n reader.onload = (e) => {\n let range = this.quill.getSelection(true);\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ image: e.target.result })\n , Emitter.sources.USER);\n this.quill.setSelection(range.index + 1, Emitter.sources.SILENT);\n fileInput.value = \"\";\n }\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\n\nclass BaseTooltip extends Tooltip {\n constructor(quill, boundsContainer) {\n super(quill, boundsContainer);\n this.textbox = this.root.querySelector('input[type=\"text\"]');\n this.listen();\n }\n\n listen() {\n this.textbox.addEventListener('keydown', (event) => {\n if (Keyboard.match(event, 'enter')) {\n this.save();\n event.preventDefault();\n } else if (Keyboard.match(event, 'escape')) {\n this.cancel();\n event.preventDefault();\n }\n });\n }\n\n cancel() {\n this.hide();\n }\n\n edit(mode = 'link', preview = null) {\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(`data-${mode}`) || '');\n this.root.setAttribute('data-mode', mode);\n }\n\n restoreFocus() {\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n\n save() {\n let value = this.textbox.value;\n switch(this.root.getAttribute('data-mode')) {\n case 'link': {\n let scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, Emitter.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, Emitter.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video': {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula': {\n if (!value) break;\n let range = this.quill.getSelection(true);\n if (range != null) {\n let index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, Emitter.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', Emitter.sources.USER);\n }\n this.quill.setSelection(index + 2, Emitter.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n}\n\n\nfunction extractVideoUrl(url) {\n let match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) ||\n url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) { // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values, defaultValue = false) {\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\n\nexport { BaseTooltip, BaseTheme as default };\n","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n ['bold', 'italic', 'link'],\n [{ header: 1 }, { header: 2 }, 'blockquote']\n];\n\nclass BubbleTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-bubble');\n }\n\n extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n }\n}\nBubbleTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\n\nclass BubbleTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.quill.on(Emitter.events.EDITOR_CHANGE, (type, range, oldRange, source) => {\n if (type !== Emitter.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === Emitter.sources.USER) {\n this.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n this.root.style.left = '0px';\n this.root.style.width = '';\n this.root.style.width = this.root.offsetWidth + 'px';\n let lines = this.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n this.position(this.quill.getBounds(range));\n } else {\n let lastLine = lines[lines.length - 1];\n let index = this.quill.getIndex(lastLine);\n let length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n let bounds = this.quill.getBounds(new Range(index, length));\n this.position(bounds);\n }\n } else if (document.activeElement !== this.textbox && this.quill.hasFocus()) {\n this.hide();\n }\n });\n }\n\n listen() {\n super.listen();\n this.root.querySelector('.ql-close').addEventListener('click', () => {\n this.root.classList.remove('ql-editing');\n });\n this.quill.on(Emitter.events.SCROLL_OPTIMIZE, () => {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(() => {\n if (this.root.classList.contains('ql-hidden')) return;\n let range = this.quill.getSelection();\n if (range != null) {\n this.position(this.quill.getBounds(range));\n }\n }, 1);\n });\n }\n\n cancel() {\n this.show();\n }\n\n position(reference) {\n let shift = super.position(reference);\n let arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = (-1*shift - arrow.offsetWidth/2) + 'px';\n }\n}\nBubbleTooltip.TEMPLATE = [\n '<span class=\"ql-tooltip-arrow\"></span>',\n '<div class=\"ql-tooltip-editor\">',\n '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">',\n '<a class=\"ql-close\"></a>',\n '</div>'\n].join('');\n\n\nexport { BubbleTooltip, BubbleTheme as default };\n","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport LinkBlot from '../formats/link';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n [{ header: ['1', '2', '3', false] }],\n ['bold', 'italic', 'underline', 'link'],\n [{ list: 'ordered' }, { list: 'bullet' }],\n ['clean']\n];\n\nclass SnowTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-snow');\n }\n\n extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function(range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n}\nSnowTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (value) {\n let range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n let preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n let tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\n\nclass SnowTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.preview = this.root.querySelector('a.ql-preview');\n }\n\n listen() {\n super.listen();\n this.root.querySelector('a.ql-action').addEventListener('click', (event) => {\n if (this.root.classList.contains('ql-editing')) {\n this.save();\n } else {\n this.edit('link', this.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', (event) => {\n if (this.linkRange != null) {\n let range = this.linkRange;\n this.restoreFocus();\n this.quill.formatText(range, 'link', false, Emitter.sources.USER);\n delete this.linkRange;\n }\n event.preventDefault();\n this.hide();\n });\n this.quill.on(Emitter.events.SELECTION_CHANGE, (range, oldRange, source) => {\n if (range == null) return;\n if (range.length === 0 && source === Emitter.sources.USER) {\n let [link, offset] = this.quill.scroll.descendant(LinkBlot, range.index);\n if (link != null) {\n this.linkRange = new Range(range.index - offset, link.length());\n let preview = LinkBlot.formats(link.domNode);\n this.preview.textContent = preview;\n this.preview.setAttribute('href', preview);\n this.show();\n this.position(this.quill.getBounds(this.linkRange));\n return;\n }\n } else {\n delete this.linkRange;\n }\n this.hide();\n });\n }\n\n show() {\n super.show();\n this.root.removeAttribute('data-mode');\n }\n}\nSnowTooltip.TEMPLATE = [\n '<a class=\"ql-preview\" target=\"_blank\" href=\"about:blank\"></a>',\n '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">',\n '<a class=\"ql-action\"></a>',\n '<a class=\"ql-remove\"></a>'\n].join('');\n\n\nexport default SnowTheme;\n","import Quill from './core';\n\nimport { AlignClass, AlignStyle } from './formats/align';\nimport { DirectionAttribute, DirectionClass, DirectionStyle } from './formats/direction';\nimport { IndentClass as Indent } from './formats/indent';\n\nimport Blockquote from './formats/blockquote';\nimport Header from './formats/header';\nimport List, { ListItem } from './formats/list';\n\nimport { BackgroundClass, BackgroundStyle } from './formats/background';\nimport { ColorClass, ColorStyle } from './formats/color';\nimport { FontClass, FontStyle } from './formats/font';\nimport { SizeClass, SizeStyle } from './formats/size';\n\nimport Bold from './formats/bold';\nimport Italic from './formats/italic';\nimport Link from './formats/link';\nimport Script from './formats/script';\nimport Strike from './formats/strike';\nimport Underline from './formats/underline';\n\nimport Image from './formats/image';\nimport Video from './formats/video';\n\nimport CodeBlock, { Code as InlineCode } from './formats/code';\n\nimport Formula from './modules/formula';\nimport Syntax from './modules/syntax';\nimport Toolbar from './modules/toolbar';\n\nimport Icons from './ui/icons';\nimport Picker from './ui/picker';\nimport ColorPicker from './ui/color-picker';\nimport IconPicker from './ui/icon-picker';\nimport Tooltip from './ui/tooltip';\n\nimport BubbleTheme from './themes/bubble';\nimport SnowTheme from './themes/snow';\n\n\nQuill.register({\n 'attributors/attribute/direction': DirectionAttribute,\n\n 'attributors/class/align': AlignClass,\n 'attributors/class/background': BackgroundClass,\n 'attributors/class/color': ColorClass,\n 'attributors/class/direction': DirectionClass,\n 'attributors/class/font': FontClass,\n 'attributors/class/size': SizeClass,\n\n 'attributors/style/align': AlignStyle,\n 'attributors/style/background': BackgroundStyle,\n 'attributors/style/color': ColorStyle,\n 'attributors/style/direction': DirectionStyle,\n 'attributors/style/font': FontStyle,\n 'attributors/style/size': SizeStyle\n}, true);\n\n\nQuill.register({\n 'formats/align': AlignClass,\n 'formats/direction': DirectionClass,\n 'formats/indent': Indent,\n\n 'formats/background': BackgroundStyle,\n 'formats/color': ColorStyle,\n 'formats/font': FontClass,\n 'formats/size': SizeClass,\n\n 'formats/blockquote': Blockquote,\n 'formats/code-block': CodeBlock,\n 'formats/header': Header,\n 'formats/list': List,\n\n 'formats/bold': Bold,\n 'formats/code': InlineCode,\n 'formats/italic': Italic,\n 'formats/link': Link,\n 'formats/script': Script,\n 'formats/strike': Strike,\n 'formats/underline': Underline,\n\n 'formats/image': Image,\n 'formats/video': Video,\n\n 'formats/list/item': ListItem,\n\n 'modules/formula': Formula,\n 'modules/syntax': Syntax,\n 'modules/toolbar': Toolbar,\n\n 'themes/bubble': BubbleTheme,\n 'themes/snow': SnowTheme,\n\n 'ui/icons': Icons,\n 'ui/picker': Picker,\n 'ui/icon-picker': IconPicker,\n 'ui/color-picker': ColorPicker,\n 'ui/tooltip': Tooltip\n}, true);\n\n\nexport default Quill;\n","!function(t,e){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)(\"object\"==typeof exports?exports:t)[n]=r[n]}}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=16)}([function(t,e,r){\"use strict\";var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===o.call(t)},s=function(t){if(!t||\"[object Object]\"!==o.call(t))return!1;var e,r=n.call(t,\"constructor\"),i=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!r&&!i)return!1;for(e in t);return void 0===e||n.call(t,e)};t.exports=function t(){var e,r,n,o,a,h,u=arguments[0],l=1,f=arguments.length,c=!1;for(\"boolean\"==typeof u&&(c=u,u=arguments[1]||{},l=2),(null==u||\"object\"!=typeof u&&\"function\"!=typeof u)&&(u={});l<f;++l)if(null!=(e=arguments[l]))for(r in e)n=u[r],u!==(o=e[r])&&(c&&o&&(s(o)||(a=i(o)))?(a?(a=!1,h=n&&i(n)?n:[]):h=n&&s(n)?n:{},u[r]=t(c,h,o)):void 0!==o&&(u[r]=o));return u}},function(t,e,r){var n=Array.prototype.slice,o=r(13),i=r(12),s=t.exports=function(t,e,r){return r||(r={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||\"object\"!=typeof t&&\"object\"!=typeof e?r.strict?t===e:t==e:function(t,e,r){var u,l;if(a(t)||a(e))return!1;if(t.prototype!==e.prototype)return!1;if(i(t))return!!i(e)&&(t=n.call(t),e=n.call(e),s(t,e,r));if(h(t)){if(!h(e))return!1;if(t.length!==e.length)return!1;for(u=0;u<t.length;u++)if(t[u]!==e[u])return!1;return!0}try{var f=o(t),c=o(e)}catch(t){return!1}if(f.length!=c.length)return!1;for(f.sort(),c.sort(),u=f.length-1;u>=0;u--)if(f[u]!=c[u])return!1;for(u=f.length-1;u>=0;u--)if(l=f[u],!s(t[l],e[l],r))return!1;return typeof t==typeof e}(t,e,r))};function a(t){return null===t||void 0===t}function h(t){return!(!t||\"object\"!=typeof t||\"number\"!=typeof t.length)&&(\"function\"==typeof t.copy&&\"function\"==typeof t.slice&&!(t.length>0&&\"number\"!=typeof t[0]))}},function(t,e,r){\"use strict\";var n=function(t){switch(typeof t){case\"string\":return t;case\"boolean\":return t?\"true\":\"false\";case\"number\":return isFinite(t)?t:\"\";default:return\"\"}};t.exports=function(t,e,r,a){return e=e||\"&\",r=r||\"=\",null===t&&(t=void 0),\"object\"==typeof t?i(s(t),function(s){var a=encodeURIComponent(n(s))+r;return o(t[s])?i(t[s],function(t){return a+encodeURIComponent(n(t))}).join(e):a+encodeURIComponent(n(t[s]))}).join(e):a?encodeURIComponent(n(a))+r+encodeURIComponent(n(t)):\"\"};var o=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)};function i(t,e){if(t.map)return t.map(e);for(var r=[],n=0;n<t.length;n++)r.push(e(t[n],n));return r}var s=Object.keys||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.push(r);return e}},function(t,e,r){\"use strict\";function n(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,r,i){e=e||\"&\",r=r||\"=\";var s={};if(\"string\"!=typeof t||0===t.length)return s;var a=/\\+/g;t=t.split(e);var h=1e3;i&&\"number\"==typeof i.maxKeys&&(h=i.maxKeys);var u=t.length;h>0&&u>h&&(u=h);for(var l=0;l<u;++l){var f,c,p,g,y=t[l].replace(a,\"%20\"),v=y.indexOf(r);v>=0?(f=y.substr(0,v),c=y.substr(v+1)):(f=y,c=\"\"),p=decodeURIComponent(f),g=decodeURIComponent(c),n(s,p)?o(s[p])?s[p].push(g):s[p]=[s[p],g]:s[p]=g}return s};var o=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)}},function(t,e,r){\"use strict\";e.decode=e.parse=r(3),e.encode=e.stringify=r(2)},function(t,e,r){\"use strict\";t.exports={isString:function(t){return\"string\"==typeof t},isObject:function(t){return\"object\"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,\"loaded\",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,\"id\",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){(function(t,n){var o;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){\"object\"==typeof e&&e&&e.nodeType,\"object\"==typeof t&&t&&t.nodeType;var s=\"object\"==typeof n&&n;s.global!==s&&s.window!==s&&s.self;var a,h=2147483647,u=36,l=1,f=26,c=38,p=700,g=72,y=128,v=\"-\",m=/^xn--/,b=/[^\\x20-\\x7E]/,d=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,x={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},j=u-l,w=Math.floor,O=String.fromCharCode;function A(t){throw new RangeError(x[t])}function k(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function E(t,e){var r=t.split(\"@\"),n=\"\";return r.length>1&&(n=r[0]+\"@\",t=r[1]),n+k((t=t.replace(d,\".\")).split(\".\"),e).join(\".\")}function C(t){for(var e,r,n=[],o=0,i=t.length;o<i;)(e=t.charCodeAt(o++))>=55296&&e<=56319&&o<i?56320==(64512&(r=t.charCodeAt(o++)))?n.push(((1023&e)<<10)+(1023&r)+65536):(n.push(e),o--):n.push(e);return n}function P(t){return k(t,function(t){var e=\"\";return t>65535&&(e+=O((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=O(t)}).join(\"\")}function I(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:u}function S(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function T(t,e,r){var n=0;for(t=r?w(t/p):t>>1,t+=w(t/e);t>j*f>>1;n+=u)t=w(t/j);return w(n+(j+1)*t/(t+c))}function L(t){var e,r,n,o,i,s,a,c,p,m,b=[],d=t.length,x=0,j=y,O=g;for((r=t.lastIndexOf(v))<0&&(r=0),n=0;n<r;++n)t.charCodeAt(n)>=128&&A(\"not-basic\"),b.push(t.charCodeAt(n));for(o=r>0?r+1:0;o<d;){for(i=x,s=1,a=u;o>=d&&A(\"invalid-input\"),((c=I(t.charCodeAt(o++)))>=u||c>w((h-x)/s))&&A(\"overflow\"),x+=c*s,!(c<(p=a<=O?l:a>=O+f?f:a-O));a+=u)s>w(h/(m=u-p))&&A(\"overflow\"),s*=m;O=T(x-i,e=b.length+1,0==i),w(x/e)>h-j&&A(\"overflow\"),j+=w(x/e),x%=e,b.splice(x++,0,j)}return P(b)}function U(t){var e,r,n,o,i,s,a,c,p,m,b,d,x,j,k,E=[];for(d=(t=C(t)).length,e=y,r=0,i=g,s=0;s<d;++s)(b=t[s])<128&&E.push(O(b));for(n=o=E.length,o&&E.push(v);n<d;){for(a=h,s=0;s<d;++s)(b=t[s])>=e&&b<a&&(a=b);for(a-e>w((h-r)/(x=n+1))&&A(\"overflow\"),r+=(a-e)*x,e=a,s=0;s<d;++s)if((b=t[s])<e&&++r>h&&A(\"overflow\"),b==e){for(c=r,p=u;!(c<(m=p<=i?l:p>=i+f?f:p-i));p+=u)k=c-m,j=u-m,E.push(O(S(m+k%j,0))),c=w(k/j);E.push(O(S(c,0))),i=T(r,x,n==o),r=0,++n}++r,++e}return E.join(\"\")}a={version:\"1.4.1\",ucs2:{decode:C,encode:P},decode:L,encode:U,toASCII:function(t){return E(t,function(t){return b.test(t)?\"xn--\"+U(t):t})},toUnicode:function(t){return E(t,function(t){return m.test(t)?L(t.slice(4).toLowerCase()):t})}},void 0===(o=function(){return a}.call(e,r,e,t))||(t.exports=o)}()}).call(this,r(7)(t),r(6))},function(t,e,r){\"use strict\";var n=r(8),o=r(5);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=d,e.resolve=function(t,e){return d(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?d(t,!1,!0).resolveObject(e):e},e.format=function(t){o.isString(t)&&(t=d(t));return t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i;var s=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,h=/^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,u=[\"{\",\"}\",\"|\",\"\\\\\",\"^\",\"`\"].concat([\"<\",\">\",'\"',\"`\",\" \",\"\\r\",\"\\n\",\"\\t\"]),l=[\"'\"].concat(u),f=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(l),c=[\"/\",\"?\",\"#\"],p=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,y={javascript:!0,\"javascript:\":!0},v={javascript:!0,\"javascript:\":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0},b=r(4);function d(t,e,r){if(t&&o.isObject(t)&&t instanceof i)return t;var n=new i;return n.parse(t,e,r),n}i.prototype.parse=function(t,e,r){if(!o.isString(t))throw new TypeError(\"Parameter 'url' must be a string, not \"+typeof t);var i=t.indexOf(\"?\"),a=-1!==i&&i<t.indexOf(\"#\")?\"?\":\"#\",u=t.split(a);u[0]=u[0].replace(/\\\\/g,\"/\");var d=t=u.join(a);if(d=d.trim(),!r&&1===t.split(\"#\").length){var x=h.exec(d);if(x)return this.path=d,this.href=d,this.pathname=x[1],x[2]?(this.search=x[2],this.query=e?b.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search=\"\",this.query={}),this}var j=s.exec(d);if(j){var w=(j=j[0]).toLowerCase();this.protocol=w,d=d.substr(j.length)}if(r||j||d.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)){var O=\"//\"===d.substr(0,2);!O||j&&v[j]||(d=d.substr(2),this.slashes=!0)}if(!v[j]&&(O||j&&!m[j])){for(var A,k,E=-1,C=0;C<c.length;C++){-1!==(P=d.indexOf(c[C]))&&(-1===E||P<E)&&(E=P)}-1!==(k=-1===E?d.lastIndexOf(\"@\"):d.lastIndexOf(\"@\",E))&&(A=d.slice(0,k),d=d.slice(k+1),this.auth=decodeURIComponent(A)),E=-1;for(C=0;C<f.length;C++){var P;-1!==(P=d.indexOf(f[C]))&&(-1===E||P<E)&&(E=P)}-1===E&&(E=d.length),this.host=d.slice(0,E),d=d.slice(E),this.parseHost(),this.hostname=this.hostname||\"\";var I=\"[\"===this.hostname[0]&&\"]\"===this.hostname[this.hostname.length-1];if(!I)for(var S=this.hostname.split(/\\./),T=(C=0,S.length);C<T;C++){var L=S[C];if(L&&!L.match(p)){for(var U=\"\",q=0,R=L.length;q<R;q++)L.charCodeAt(q)>127?U+=\"x\":U+=L[q];if(!U.match(p)){var M=S.slice(0,C),N=S.slice(C+1),_=L.match(g);_&&(M.push(_[1]),N.unshift(_[2])),N.length&&(d=\"/\"+N.join(\".\")+d),this.hostname=M.join(\".\");break}}}this.hostname.length>255?this.hostname=\"\":this.hostname=this.hostname.toLowerCase(),I||(this.hostname=n.toASCII(this.hostname));var z=this.port?\":\"+this.port:\"\",D=this.hostname||\"\";this.host=D+z,this.href+=this.host,I&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),\"/\"!==d[0]&&(d=\"/\"+d))}if(!y[w])for(C=0,T=l.length;C<T;C++){var F=l[C];if(-1!==d.indexOf(F)){var W=encodeURIComponent(F);W===F&&(W=escape(F)),d=d.split(F).join(W)}}var Q=d.indexOf(\"#\");-1!==Q&&(this.hash=d.substr(Q),d=d.slice(0,Q));var $=d.indexOf(\"?\");if(-1!==$?(this.search=d.substr($),this.query=d.substr($+1),e&&(this.query=b.parse(this.query)),d=d.slice(0,$)):e&&(this.search=\"\",this.query={}),d&&(this.pathname=d),m[w]&&this.hostname&&!this.pathname&&(this.pathname=\"/\"),this.pathname||this.search){z=this.pathname||\"\";var H=this.search||\"\";this.path=z+H}return this.href=this.format(),this},i.prototype.format=function(){var t=this.auth||\"\";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,\":\"),t+=\"@\");var e=this.protocol||\"\",r=this.pathname||\"\",n=this.hash||\"\",i=!1,s=\"\";this.host?i=t+this.host:this.hostname&&(i=t+(-1===this.hostname.indexOf(\":\")?this.hostname:\"[\"+this.hostname+\"]\"),this.port&&(i+=\":\"+this.port)),this.query&&o.isObject(this.query)&&Object.keys(this.query).length&&(s=b.stringify(this.query));var a=this.search||s&&\"?\"+s||\"\";return e&&\":\"!==e.substr(-1)&&(e+=\":\"),this.slashes||(!e||m[e])&&!1!==i?(i=\"//\"+(i||\"\"),r&&\"/\"!==r.charAt(0)&&(r=\"/\"+r)):i||(i=\"\"),n&&\"#\"!==n.charAt(0)&&(n=\"#\"+n),a&&\"?\"!==a.charAt(0)&&(a=\"?\"+a),e+i+(r=r.replace(/[?#]/g,function(t){return encodeURIComponent(t)}))+(a=a.replace(\"#\",\"%23\"))+n},i.prototype.resolve=function(t){return this.resolveObject(d(t,!1,!0)).format()},i.prototype.resolveObject=function(t){if(o.isString(t)){var e=new i;e.parse(t,!1,!0),t=e}for(var r=new i,n=Object.keys(this),s=0;s<n.length;s++){var a=n[s];r[a]=this[a]}if(r.hash=t.hash,\"\"===t.href)return r.href=r.format(),r;if(t.slashes&&!t.protocol){for(var h=Object.keys(t),u=0;u<h.length;u++){var l=h[u];\"protocol\"!==l&&(r[l]=t[l])}return m[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname=\"/\"),r.href=r.format(),r}if(t.protocol&&t.protocol!==r.protocol){if(!m[t.protocol]){for(var f=Object.keys(t),c=0;c<f.length;c++){var p=f[c];r[p]=t[p]}return r.href=r.format(),r}if(r.protocol=t.protocol,t.host||v[t.protocol])r.pathname=t.pathname;else{for(var g=(t.pathname||\"\").split(\"/\");g.length&&!(t.host=g.shift()););t.host||(t.host=\"\"),t.hostname||(t.hostname=\"\"),\"\"!==g[0]&&g.unshift(\"\"),g.length<2&&g.unshift(\"\"),r.pathname=g.join(\"/\")}if(r.search=t.search,r.query=t.query,r.host=t.host||\"\",r.auth=t.auth,r.hostname=t.hostname||t.host,r.port=t.port,r.pathname||r.search){var y=r.pathname||\"\",b=r.search||\"\";r.path=y+b}return r.slashes=r.slashes||t.slashes,r.href=r.format(),r}var d=r.pathname&&\"/\"===r.pathname.charAt(0),x=t.host||t.pathname&&\"/\"===t.pathname.charAt(0),j=x||d||r.host&&t.pathname,w=j,O=r.pathname&&r.pathname.split(\"/\")||[],A=(g=t.pathname&&t.pathname.split(\"/\")||[],r.protocol&&!m[r.protocol]);if(A&&(r.hostname=\"\",r.port=null,r.host&&(\"\"===O[0]?O[0]=r.host:O.unshift(r.host)),r.host=\"\",t.protocol&&(t.hostname=null,t.port=null,t.host&&(\"\"===g[0]?g[0]=t.host:g.unshift(t.host)),t.host=null),j=j&&(\"\"===g[0]||\"\"===O[0])),x)r.host=t.host||\"\"===t.host?t.host:r.host,r.hostname=t.hostname||\"\"===t.hostname?t.hostname:r.hostname,r.search=t.search,r.query=t.query,O=g;else if(g.length)O||(O=[]),O.pop(),O=O.concat(g),r.search=t.search,r.query=t.query;else if(!o.isNullOrUndefined(t.search)){if(A)r.hostname=r.host=O.shift(),(I=!!(r.host&&r.host.indexOf(\"@\")>0)&&r.host.split(\"@\"))&&(r.auth=I.shift(),r.host=r.hostname=I.shift());return r.search=t.search,r.query=t.query,o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.href=r.format(),r}if(!O.length)return r.pathname=null,r.search?r.path=\"/\"+r.search:r.path=null,r.href=r.format(),r;for(var k=O.slice(-1)[0],E=(r.host||t.host||O.length>1)&&(\".\"===k||\"..\"===k)||\"\"===k,C=0,P=O.length;P>=0;P--)\".\"===(k=O[P])?O.splice(P,1):\"..\"===k?(O.splice(P,1),C++):C&&(O.splice(P,1),C--);if(!j&&!w)for(;C--;C)O.unshift(\"..\");!j||\"\"===O[0]||O[0]&&\"/\"===O[0].charAt(0)||O.unshift(\"\"),E&&\"/\"!==O.join(\"/\").substr(-1)&&O.push(\"\");var I,S=\"\"===O[0]||O[0]&&\"/\"===O[0].charAt(0);A&&(r.hostname=r.host=S?\"\":O.length?O.shift():\"\",(I=!!(r.host&&r.host.indexOf(\"@\")>0)&&r.host.split(\"@\"))&&(r.auth=I.shift(),r.host=r.hostname=I.shift()));return(j=j||r.host&&O.length)&&!S&&O.unshift(\"\"),O.length?r.pathname=O.join(\"/\"):(r.pathname=null,r.path=null),o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},i.prototype.parseHost=function(){var t=this.host,e=a.exec(t);e&&(\":\"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,r){\"use strict\";const n=\"undefined\"==typeof URL?r(9).URL:URL;function o(t,e){return e.some(e=>e instanceof RegExp?e.test(t):e===t)}t.exports=((t,e)=>{e=Object.assign({normalizeProtocol:!0,normalizeHttps:!1,stripFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e);const r=(t=t.trim()).startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,\"http://\"));const i=new n(t);if(e.normalizeHttps&&\"https:\"===i.protocol&&(i.protocol=\"http:\"),e.stripFragment&&(i.hash=\"\"),i.pathname&&(i.pathname=i.pathname.replace(/\\/{2,}/g,\"/\")),i.pathname&&(i.pathname=decodeURI(i.pathname)),!0===e.removeDirectoryIndex&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let t=i.pathname.split(\"/\");o(t[t.length-1],e.removeDirectoryIndex)&&(t=t.slice(0,t.length-1),i.pathname=t.slice(1).join(\"/\")+\"/\")}if(i.hostname&&(i.hostname=i.hostname.replace(/\\.$/,\"\"),e.stripWWW&&(i.hostname=i.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(const t of[...i.searchParams.keys()])o(t,e.removeQueryParameters)&&i.searchParams.delete(t);return e.sortQueryParameters&&i.searchParams.sort(),t=i.toString(),(e.removeTrailingSlash||\"/\"===i.pathname)&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),t})},function(t,e,r){var n=r(1),o=r(0),i={attributes:{compose:function(t,e,r){\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var n=o(!0,{},e);for(var i in r||(n=Object.keys(n).reduce(function(t,e){return null!=n[e]&&(t[e]=n[e]),t},{})),t)void 0!==t[i]&&void 0===e[i]&&(n[i]=t[i]);return Object.keys(n).length>0?n:void 0},diff:function(t,e){\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var r=Object.keys(t).concat(Object.keys(e)).reduce(function(r,o){return n(t[o],e[o])||(r[o]=void 0===e[o]?null:e[o]),r},{});return Object.keys(r).length>0?r:void 0},transform:function(t,e,r){if(\"object\"!=typeof t)return e;if(\"object\"==typeof e){if(!r)return e;var n=Object.keys(e).reduce(function(r,n){return void 0===t[n]&&(r[n]=e[n]),r},{});return Object.keys(n).length>0?n:void 0}}},iterator:function(t){return new s(t)},length:function(t){return\"number\"==typeof t.delete?t.delete:\"number\"==typeof t.retain?t.retain:\"string\"==typeof t.insert?t.insert.length:1}};function s(t){this.ops=t,this.index=0,this.offset=0}s.prototype.hasNext=function(){return this.peekLength()<1/0},s.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var r=this.offset,n=i.length(e);if(t>=n-r?(t=n-r,this.index+=1,this.offset=0):this.offset+=t,\"number\"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),\"number\"==typeof e.retain?o.retain=t:\"string\"==typeof e.insert?o.insert=e.insert.substr(r,t):o.insert=e.insert,o}return{retain:1/0}},s.prototype.peek=function(){return this.ops[this.index]},s.prototype.peekLength=function(){return this.ops[this.index]?i.length(this.ops[this.index])-this.offset:1/0},s.prototype.peekType=function(){return this.ops[this.index]?\"number\"==typeof this.ops[this.index].delete?\"delete\":\"number\"==typeof this.ops[this.index].retain?\"retain\":\"insert\":\"retain\"},t.exports=i},function(t,e){var r=\"[object Arguments]\"==function(){return Object.prototype.toString.call(arguments)}();function n(t){return\"[object Arguments]\"==Object.prototype.toString.call(t)}function o(t){return t&&\"object\"==typeof t&&\"number\"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,\"callee\")&&!Object.prototype.propertyIsEnumerable.call(t,\"callee\")||!1}(e=t.exports=r?n:o).supported=n,e.unsupported=o},function(t,e){function r(t){var e=[];for(var r in t)e.push(r);return e}(t.exports=\"function\"==typeof Object.keys?Object.keys:r).shim=r},function(t,e){var r=-1,n=1,o=0;function i(t,e,u){if(t==e)return t?[[o,t]]:[];(u<0||t.length<u)&&(u=null);var f=a(t,e),c=t.substring(0,f);f=h(t=t.substring(f),e=e.substring(f));var p=t.substring(t.length-f),g=function(t,e){var u;if(!t)return[[n,e]];if(!e)return[[r,t]];var l=t.length>e.length?t:e,f=t.length>e.length?e:t,c=l.indexOf(f);if(-1!=c)return u=[[n,l.substring(0,c)],[o,f],[n,l.substring(c+f.length)]],t.length>e.length&&(u[0][0]=u[2][0]=r),u;if(1==f.length)return[[r,t],[n,e]];var p=function(t,e){var r=t.length>e.length?t:e,n=t.length>e.length?e:t;if(r.length<4||2*n.length<r.length)return null;function o(t,e,r){for(var n,o,i,s,u=t.substring(r,r+Math.floor(t.length/4)),l=-1,f=\"\";-1!=(l=e.indexOf(u,l+1));){var c=a(t.substring(r),e.substring(l)),p=h(t.substring(0,r),e.substring(0,l));f.length<p+c&&(f=e.substring(l-p,l)+e.substring(l,l+c),n=t.substring(0,r-p),o=t.substring(r+c),i=e.substring(0,l-p),s=e.substring(l+c))}return 2*f.length>=t.length?[n,o,i,s,f]:null}var i,s,u,l,f,c=o(r,n,Math.ceil(r.length/4)),p=o(r,n,Math.ceil(r.length/2));if(!c&&!p)return null;i=p?c&&c[4].length>p[4].length?c:p:c;t.length>e.length?(s=i[0],u=i[1],l=i[2],f=i[3]):(l=i[0],f=i[1],s=i[2],u=i[3]);var g=i[4];return[s,u,l,f,g]}(t,e);if(p){var g=p[0],y=p[1],v=p[2],m=p[3],b=p[4],d=i(g,v),x=i(y,m);return d.concat([[o,b]],x)}return function(t,e){for(var o=t.length,i=e.length,a=Math.ceil((o+i)/2),h=a,u=2*a,l=new Array(u),f=new Array(u),c=0;c<u;c++)l[c]=-1,f[c]=-1;l[h+1]=0,f[h+1]=0;for(var p=o-i,g=p%2!=0,y=0,v=0,m=0,b=0,d=0;d<a;d++){for(var x=-d+y;x<=d-v;x+=2){for(var j=h+x,w=(C=x==-d||x!=d&&l[j-1]<l[j+1]?l[j+1]:l[j-1]+1)-x;C<o&&w<i&&t.charAt(C)==e.charAt(w);)C++,w++;if(l[j]=C,C>o)v+=2;else if(w>i)y+=2;else if(g){var O=h+p-x;if(O>=0&&O<u&&-1!=f[O]){var A=o-f[O];if(C>=A)return s(t,e,C,w)}}}for(var k=-d+m;k<=d-b;k+=2){for(var O=h+k,E=(A=k==-d||k!=d&&f[O-1]<f[O+1]?f[O+1]:f[O-1]+1)-k;A<o&&E<i&&t.charAt(o-A-1)==e.charAt(i-E-1);)A++,E++;if(f[O]=A,A>o)b+=2;else if(E>i)m+=2;else if(!g){var j=h+p-k;if(j>=0&&j<u&&-1!=l[j]){var C=l[j],w=h+C-j;if(C>=(A=o-A))return s(t,e,C,w)}}}}return[[r,t],[n,e]]}(t,e)}(t=t.substring(0,t.length-f),e=e.substring(0,e.length-f));return c&&g.unshift([o,c]),p&&g.push([o,p]),function t(e){e.push([o,\"\"]);var i=0;var s=0;var u=0;var l=\"\";var f=\"\";var c;for(;i<e.length;)switch(e[i][0]){case n:u++,f+=e[i][1],i++;break;case r:s++,l+=e[i][1],i++;break;case o:s+u>1?(0!==s&&0!==u&&(0!==(c=a(f,l))&&(i-s-u>0&&e[i-s-u-1][0]==o?e[i-s-u-1][1]+=f.substring(0,c):(e.splice(0,0,[o,f.substring(0,c)]),i++),f=f.substring(c),l=l.substring(c)),0!==(c=h(f,l))&&(e[i][1]=f.substring(f.length-c)+e[i][1],f=f.substring(0,f.length-c),l=l.substring(0,l.length-c))),0===s?e.splice(i-u,s+u,[n,f]):0===u?e.splice(i-s,s+u,[r,l]):e.splice(i-s-u,s+u,[r,l],[n,f]),i=i-s-u+(s?1:0)+(u?1:0)+1):0!==i&&e[i-1][0]==o?(e[i-1][1]+=e[i][1],e.splice(i,1)):i++,u=0,s=0,l=\"\",f=\"\"}\"\"===e[e.length-1][1]&&e.pop();var p=!1;i=1;for(;i<e.length-1;)e[i-1][0]==o&&e[i+1][0]==o&&(e[i][1].substring(e[i][1].length-e[i-1][1].length)==e[i-1][1]?(e[i][1]=e[i-1][1]+e[i][1].substring(0,e[i][1].length-e[i-1][1].length),e[i+1][1]=e[i-1][1]+e[i+1][1],e.splice(i-1,1),p=!0):e[i][1].substring(0,e[i+1][1].length)==e[i+1][1]&&(e[i-1][1]+=e[i+1][1],e[i][1]=e[i][1].substring(e[i+1][1].length)+e[i+1][1],e.splice(i+1,1),p=!0)),i++;p&&t(e)}(g),null!=u&&(g=function(t,e){var n=function(t,e){if(0===e)return[o,t];for(var n=0,i=0;i<t.length;i++){var s=t[i];if(s[0]===r||s[0]===o){var a=n+s[1].length;if(e===a)return[i+1,t];if(e<a){t=t.slice();var h=e-n,u=[s[0],s[1].slice(0,h)],l=[s[0],s[1].slice(h)];return t.splice(i,1,u,l),[i+1,t]}n=a}}throw new Error(\"cursor_pos is out of bounds!\")}(t,e),i=n[1],s=n[0],a=i[s],h=i[s+1];if(null==a)return t;if(a[0]!==o)return t;if(null!=h&&a[1]+h[1]===h[1]+a[1])return i.splice(s,2,h,a),l(i,s,2);if(null!=h&&0===h[1].indexOf(a[1])){i.splice(s,2,[h[0],a[1]],[0,a[1]]);var u=h[1].slice(a[1].length);return u.length>0&&i.splice(s+2,0,[h[0],u]),l(i,s,3)}return t}(g,u)),g=function(t){for(var e=!1,i=function(t){return t.charCodeAt(0)>=56320&&t.charCodeAt(0)<=57343},s=function(t){return t.charCodeAt(t.length-1)>=55296&&t.charCodeAt(t.length-1)<=56319},a=2;a<t.length;a+=1)t[a-2][0]===o&&s(t[a-2][1])&&t[a-1][0]===r&&i(t[a-1][1])&&t[a][0]===n&&i(t[a][1])&&(e=!0,t[a-1][1]=t[a-2][1].slice(-1)+t[a-1][1],t[a][1]=t[a-2][1].slice(-1)+t[a][1],t[a-2][1]=t[a-2][1].slice(0,-1));if(!e)return t;for(var h=[],a=0;a<t.length;a+=1)t[a][1].length>0&&h.push(t[a]);return h}(g)}function s(t,e,r,n){var o=t.substring(0,r),s=e.substring(0,n),a=t.substring(r),h=e.substring(n),u=i(o,s),l=i(a,h);return u.concat(l)}function a(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var r=0,n=Math.min(t.length,e.length),o=n,i=0;r<o;)t.substring(i,o)==e.substring(i,o)?i=r=o:n=o,o=Math.floor((n-r)/2+r);return o}function h(t,e){if(!t||!e||t.charAt(t.length-1)!=e.charAt(e.length-1))return 0;for(var r=0,n=Math.min(t.length,e.length),o=n,i=0;r<o;)t.substring(t.length-o,t.length-i)==e.substring(e.length-o,e.length-i)?i=r=o:n=o,o=Math.floor((n-r)/2+r);return o}var u=i;function l(t,e,r){for(var n=e+r-1;n>=0&&n>=e-1;n--)if(n+1<t.length){var o=t[n],i=t[n+1];o[0]===i[1]&&t.splice(n,2,[o[0],o[1]+i[1]])}return t}u.INSERT=n,u.DELETE=r,u.EQUAL=o,t.exports=u},function(t,e,r){var n=r(14),o=r(1),i=r(0),s=r(11),a=String.fromCharCode(0),h=function(t){Array.isArray(t)?this.ops=t:null!=t&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]};h.prototype.insert=function(t,e){var r={};return 0===t.length?this:(r.insert=t,null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(r.attributes=e),this.push(r))},h.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},h.prototype.retain=function(t,e){if(t<=0)return this;var r={retain:t};return null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(r.attributes=e),this.push(r)},h.prototype.push=function(t){var e=this.ops.length,r=this.ops[e-1];if(t=i(!0,{},t),\"object\"==typeof r){if(\"number\"==typeof t.delete&&\"number\"==typeof r.delete)return this.ops[e-1]={delete:r.delete+t.delete},this;if(\"number\"==typeof r.delete&&null!=t.insert&&(e-=1,\"object\"!=typeof(r=this.ops[e-1])))return this.ops.unshift(t),this;if(o(t.attributes,r.attributes)){if(\"string\"==typeof t.insert&&\"string\"==typeof r.insert)return this.ops[e-1]={insert:r.insert+t.insert},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if(\"number\"==typeof t.retain&&\"number\"==typeof r.retain)return this.ops[e-1]={retain:r.retain+t.retain},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},h.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},h.prototype.filter=function(t){return this.ops.filter(t)},h.prototype.forEach=function(t){this.ops.forEach(t)},h.prototype.map=function(t){return this.ops.map(t)},h.prototype.partition=function(t){var e=[],r=[];return this.forEach(function(n){(t(n)?e:r).push(n)}),[e,r]},h.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},h.prototype.changeLength=function(){return this.reduce(function(t,e){return e.insert?t+s.length(e):e.delete?t-e.delete:t},0)},h.prototype.length=function(){return this.reduce(function(t,e){return t+s.length(e)},0)},h.prototype.slice=function(t,e){t=t||0,\"number\"!=typeof e&&(e=1/0);for(var r=[],n=s.iterator(this.ops),o=0;o<e&&n.hasNext();){var i;o<t?i=n.next(t-o):(i=n.next(e-o),r.push(i)),o+=s.length(i)}return new h(r)},h.prototype.compose=function(t){for(var e=s.iterator(this.ops),r=s.iterator(t.ops),n=new h;e.hasNext()||r.hasNext();)if(\"insert\"===r.peekType())n.push(r.next());else if(\"delete\"===e.peekType())n.push(e.next());else{var o=Math.min(e.peekLength(),r.peekLength()),i=e.next(o),a=r.next(o);if(\"number\"==typeof a.retain){var u={};\"number\"==typeof i.retain?u.retain=o:u.insert=i.insert;var l=s.attributes.compose(i.attributes,a.attributes,\"number\"==typeof i.retain);l&&(u.attributes=l),n.push(u)}else\"number\"==typeof a.delete&&\"number\"==typeof i.retain&&n.push(a)}return n.chop()},h.prototype.concat=function(t){var e=new h(this.ops.slice());return t.ops.length>0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},h.prototype.diff=function(t,e){if(this.ops===t.ops)return new h;var r=[this,t].map(function(e){return e.map(function(r){if(null!=r.insert)return\"string\"==typeof r.insert?r.insert:a;throw new Error(\"diff() called \"+(e===t?\"on\":\"with\")+\" non-document\")}).join(\"\")}),i=new h,u=n(r[0],r[1],e),l=s.iterator(this.ops),f=s.iterator(t.ops);return u.forEach(function(t){for(var e=t[1].length;e>0;){var r=0;switch(t[0]){case n.INSERT:r=Math.min(f.peekLength(),e),i.push(f.next(r));break;case n.DELETE:r=Math.min(e,l.peekLength()),l.next(r),i.delete(r);break;case n.EQUAL:r=Math.min(l.peekLength(),f.peekLength(),e);var a=l.next(r),h=f.next(r);o(a.insert,h.insert)?i.retain(r,s.attributes.diff(a.attributes,h.attributes)):i.push(h).delete(r)}e-=r}}),i.chop()},h.prototype.eachLine=function(t,e){e=e||\"\\n\";for(var r=s.iterator(this.ops),n=new h,o=0;r.hasNext();){if(\"insert\"!==r.peekType())return;var i=r.peek(),a=s.length(i)-r.peekLength(),u=\"string\"==typeof i.insert?i.insert.indexOf(e,a)-a:-1;if(u<0)n.push(r.next());else if(u>0)n.push(r.next(u));else{if(!1===t(n,r.next(1).attributes||{},o))return;o+=1,n=new h}}n.length()>0&&t(n,{},o)},h.prototype.transform=function(t,e){if(e=!!e,\"number\"==typeof t)return this.transformPosition(t,e);for(var r=s.iterator(this.ops),n=s.iterator(t.ops),o=new h;r.hasNext()||n.hasNext();)if(\"insert\"!==r.peekType()||!e&&\"insert\"===n.peekType())if(\"insert\"===n.peekType())o.push(n.next());else{var i=Math.min(r.peekLength(),n.peekLength()),a=r.next(i),u=n.next(i);if(a.delete)continue;u.delete?o.push(u):o.retain(i,s.attributes.transform(a.attributes,u.attributes,e))}else o.retain(s.length(r.next()));return o.chop()},h.prototype.transformPosition=function(t,e){e=!!e;for(var r=s.iterator(this.ops),n=0;r.hasNext()&&n<=t;){var o=r.peekLength(),i=r.peekType();r.next(),\"delete\"!==i?(\"insert\"===i&&(n<t||!e)&&(t+=o),n+=o):t-=Math.min(o,t-n)}return t},t.exports=h},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var r=[],n=!0,o=!1,i=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);n=!0);}catch(t){o=!0,i=t}finally{try{!n&&a.return&&a.return()}finally{if(o)throw i}}return r}(t,e);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},i=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),s=h(r(15)),a=h(r(10));function h(t){return t&&t.__esModule?t:{default:t}}var u={globalRegularExpression:/(https?:\\/\\/|www\\.)[\\S]+/g,urlRegularExpression:/(https?:\\/\\/[\\S]+)|(www.[\\S]+)/,normalizeRegularExpression:/(https?:\\/\\/[\\S]+)|(www.[\\S]+)/,normalizeUrlOptions:{stripFragment:!1,stripWWW:!1}},l=function(){function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.quill=e,r=r||{},this.options=o({},u,r),this.registerTypeListener(),this.registerPasteListener()}return i(t,[{key:\"registerPasteListener\",value:function(){var t=this;this.quill.clipboard.addMatcher(Node.TEXT_NODE,function(e,r){if(\"string\"==typeof e.data){var n=e.data.match(t.options.globalRegularExpression);if(n&&n.length>0){var o=new s.default,i=e.data;n.forEach(function(t){var e=i.split(t),r=e.shift();o.insert(r),o.insert(t,{link:t}),i=e.join(t)}),o.insert(i),r.ops=o.ops}return r}})}},{key:\"registerTypeListener\",value:function(){var t=this;this.quill.on(\"text-change\",function(e){var r=e.ops;if(!(!r||r.length<1||r.length>2)){var n=r[r.length-1];n.insert&&\"string\"==typeof n.insert&&n.insert.match(/\\s/)&&t.checkTextForUrl()}})}},{key:\"checkTextForUrl\",value:function(){var t=this.quill.getSelection();if(t){var e=this.quill.getLeaf(t.index),r=n(e,1)[0];if(r.text){var o=r.text.match(this.options.urlRegularExpression);if(o){var i=r.text.length-o.index,s=t.index-i;this.textToUrl(s,o[0])}}}}},{key:\"textToUrl\",value:function(t,e){var r=(new s.default).retain(t).delete(e.length).insert(e,{link:this.normalize(e)});this.quill.updateContents(r)}},{key:\"normalize\",value:function(t){return this.options.normalizeRegularExpression.test(t)?(0,a.default)(t,this.options.normalizeUrlOptions):t}}]),t}();e.default=l,window.Quill&&window.Quill.register(\"modules/magicUrl\",l)}])});","// import Quill from 'quill/core'\n\n// import { AlignClass, AlignStyle } from 'quill/formats/align'\n// import { DirectionAttribute, DirectionClass, DirectionStyle } from 'quill/formats/direction'\n// import Indent from 'quill/formats/indent'\n\n// import Blockquote from 'quill/formats/blockquote'\n// import Header from 'quill/formats/header'\n// import List, { ListItem } from 'quill/formats/list'\n\n// import { BackgroundClass, BackgroundStyle } from 'quill/formats/background'\n// import { ColorClass, ColorStyle } from 'quill/formats/color'\n// import { FontClass, FontStyle } from 'quill/formats/font'\n// import { SizeClass, SizeStyle } from 'quill/formats/size'\n\n// import Bold from 'quill/formats/bold'\n// import Italic from 'quill/formats/italic'\n// import Link from 'quill/formats/link'\n// import Script from 'quill/formats/script'\n// import Strike from 'quill/formats/strike'\n// import Underline from 'quill/formats/underline'\n\n// import Image from 'quill/formats/image'\n// import Video from 'quill/formats/video'\n\n// import CodeBlock, { Code as InlineCode } from 'quill/formats/code'\n\n// import Syntax from 'quill/modules/syntax'\n// import Toolbar from 'quill/modules/toolbar'\n\n// import Icons from 'quill/ui/icons'\n// import Picker from 'quill/ui/picker'\n// import ColorPicker from 'quill/ui/color-picker'\n// import IconPicker from 'quill/ui/icon-picker'\n// import Tooltip from 'quill/ui/tooltip'\n\n// import SnowTheme from 'quill/themes/snow'\n\n// import MagicUrl from 'quill-magic-url'\n\n// Quill.register(\n// {\n// 'attributors/attribute/direction': DirectionAttribute,\n\n// 'attributors/class/align': AlignClass,\n// 'attributors/class/background': BackgroundClass,\n// 'attributors/class/color': ColorClass,\n// 'attributors/class/direction': DirectionClass,\n// 'attributors/class/font': FontClass,\n// 'attributors/class/size': SizeClass,\n\n// 'attributors/style/align': AlignStyle,\n// 'attributors/style/background': BackgroundStyle,\n// 'attributors/style/color': ColorStyle,\n// 'attributors/style/direction': DirectionStyle,\n// 'attributors/style/font': FontStyle,\n// 'attributors/style/size': SizeStyle,\n// },\n// true,\n// )\n\n// Quill.register(\n// {\n// 'formats/align': AlignClass,\n// // 'formats/direction': DirectionClass,\n// // 'formats/indent': Indent,\n\n// // 'formats/background': BackgroundStyle,\n// // 'formats/color': ColorStyle,\n// // 'formats/font': FontClass,\n// // 'formats/size': SizeClass,\n\n// // 'formats/blockquote': Blockquote,\n// // 'formats/code-block': CodeBlock,\n// 'formats/header': Header,\n// 'formats/list': List,\n// 'formats/list-item': ListItem,\n// 'formats/bold': Bold,\n// // 'formats/code': InlineCode,\n// 'formats/italic': Italic,\n// 'formats/link': Link,\n// // 'formats/script': Script,\n// 'formats/strike': Strike,\n// 'formats/underline': Underline,\n\n// // 'formats/image': Image,\n// // 'formats/video': Video,\n\n// // 'modules/syntax': Syntax,\n// 'modules/toolbar': Toolbar,\n\n// 'themes/snow': SnowTheme,\n\n// // 'ui/icons': Icons,\n// // 'ui/picker': Picker,\n// // 'ui/icon-picker': IconPicker,\n// // 'ui/color-picker': ColorPicker,\n// // 'ui/tooltip': Tooltip,\n\n// 'modules/magicUrl': MagicUrl,\n// },\n// true,\n// );\n\nimport Quill from 'quill/quill'\nimport MagicUrl from 'quill-magic-url'\nQuill.register('modules/magicUrl', MagicUrl)\n\nexport default Quill\n","import cssVars from 'css-vars-ponyfill'\ncssVars()\n\n// localStorage wrapper\nfunction initLocalStorage (options) {\n function getItem () {\n return JSON.parse(localStorage.getItem(options.key))\n }\n function setItem (value) {\n localStorage.setItem(options.key, JSON.stringify(value))\n }\n if (localStorage.getItem(options.key) === null) {\n setItem(options.defaultValue) // set default\n }\n if (options.onUpdate) options.onUpdate(getItem()) // set value on pageload\n options.get = getItem\n options.set = (value) => {\n setItem(value)\n return options\n }\n options.update = () => {\n if (options.onUpdate) options.onUpdate(getItem())\n return options\n }\n // detect updates from other tabs\n window.addEventListener('storage', (event) => {\n console.log('stor', event)\n if (event.key === options.key && options.onUpdate) options.onUpdate(getItem())\n }, false)\n return options\n}\n\nlet autoList\nconst autoListCheckbox = document.querySelector('#auto-list-checkbox')\nconst autoListSetting = initLocalStorage({\n key: 'auto-list',\n defaultValue: false,\n onUpdate: (newAutoListSetting) => {\n if (newAutoListSetting === true) {\n autoList = true\n if (autoListCheckbox.checked === false) autoListCheckbox.checked = true\n } else {\n autoList = false\n if (autoListCheckbox.checked === true) autoListCheckbox.checked = false\n }\n }\n})\nautoListCheckbox.addEventListener('change', (e) => {\n if (autoListCheckbox.checked) autoListSetting.set(true).update()\n else autoListSetting.set(false).update()\n})\n\nimport Quill from '~/lib/quill.js'\nimport Delta from 'quill-delta';\nwindow.quill = new Quill(document.querySelector('#note'), {\n modules: {\n toolbar: [\n [{header: [1, 2, false]}],\n ['bold', 'italic', 'underline', 'strike'],\n [{list: 'bullet'}, {list: 'ordered'}],\n [{ 'align': [] }],\n ['link'],\n ['clean']\n ],\n keyboard: {\n bindings: {\n 'list autofill': {\n key: ' ',\n shiftKey: null,\n collapsed: true,\n format: {\n list: false,\n 'code-block': false,\n blockquote: false,\n header: false,\n table: false,\n },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler(range, context) {\n if (!autoList) return true\n // this is part of the default handler, but causes an error for some reason:\n // if (this.quill.scroll.query('list') == null) return true;\n const { length } = context.prefix;\n const [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]':\n case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':\n case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n const delta = new Delta()\n .retain(range.index - offset)\n .delete(length + 1)\n .retain(line.length() - 2 - offset)\n .retain(1, { list: value });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n return false;\n },\n },\n },\n },\n // toolbar: { container: '#toolbar-container' },\n magicUrl: true,\n history: {\n maxStack: 1000\n }\n },\n // formats: ['header'],\n theme: 'snow',\n placeholder: 'Maybe I\\'ll have a todo list here?'\n})\n\nconst delta = initLocalStorage({\n key: 'quill-delta',\n defaultValue: { ops: [] },\n onUpdate: (delta) => {\n quill.setContents(delta, 'silent')\n }\n})\n\nquill.on('text-change', () => {\n delta.set(quill.getContents())\n})\n\n// add old taskler tasks into quill\nif (localStorage.getItem('items') !== null) {\n const items = JSON.parse(localStorage.getItem('items'))\n const delta = quill.getContents()\n if ((items.repeatingTasks && items.repeatingTasks.length) || (items.tasks && items.tasks.length)) {\n delta.ops.push({\n insert: \"Looks like you've used Taskler before. I imported your old tasks.\\n\\n\"\n })\n }\n if (items.repeatingTasks && items.repeatingTasks.length) {\n for (let i = 0; i < items.repeatingTasks.length; i++) {\n delta.ops.push({\n insert: `Repeating task ${i + 1}:\\n`,\n attributes: { bold: true }\n })\n delta.ops.push({\n insert: items.repeatingTasks[i].text + '\\n\\n'\n })\n }\n }\n if (items.tasks && items.tasks.length) {\n for (let i = 0; i < items.tasks.length; i++) {\n delta.ops.push({\n insert: `Task ${i + 1}:\\n`,\n attributes: { bold: true }\n })\n delta.ops.push({\n insert: items.tasks[i] + '\\n\\n'\n })\n }\n }\n quill.setContents(delta)\n localStorage.removeItem('items')\n}\n\n// extension icons\nconst body = document.querySelector('body')\nconst isExtension = body.dataset.isExtension === 'true'\nif (!isExtension) {\n // Opera 8.0+\n // const isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0\n // Firefox 1.0+\n const isFirefox = typeof InstallTrigger !== 'undefined';\n // Safari 3.0+ \"[object HTMLElementConstructor]\"\n // const isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === \"[object SafariRemoteNotification]\"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification))\n // Internet Explorer 6-11\n // const isIE = /*@cc_on!@*/false || !!document.documentMode\n // Edge 20+\n // const isEdge = !isIE && !!window.StyleMedia\n // Chrome 1+\n const isChrome = !!window.chrome && !!window.chrome.webstore\n // Blink engine detection\n // const isBlink = (isChrome || isOpera) && !!window.CSS\n\n if (isChrome) document.getElementById('chrome-extension-icon').classList.add('visible')\n if (isFirefox) document.getElementById('firefox-extension-icon').classList.add('visible')\n}\n\nconst darkModeCheckbox = document.querySelector('#dark-mode-checkbox')\nconst darkMode = initLocalStorage({\n key: 'dark-mode',\n defaultValue: false,\n onUpdate: (newDarkMode) => {\n if (newDarkMode === false) {\n // body.classList.remove('dark-mode')\n // body.classList.add('light-mode')\n cssVars({ variables: {\n 'bgcolor': '#fafafa',\n 'bgcolor-overlay': '#F0F0F0',\n 'color': '#272727',\n\n 'logo-dark': '#272727',\n 'logo-mid': '#424242',\n 'logo-light': '#696969',\n }})\n if (darkModeCheckbox.checked === true) darkModeCheckbox.checked = false\n } else if (newDarkMode === true) {\n // body.classList.remove('light-mode')\n // body.classList.add('dark-mode')\n cssVars({ variables: {\n 'bgcolor': '#272727',\n 'bgcolor-overlay': '#313131',\n 'color': '#fafafa',\n\n 'logo-dark': '#fafafa',\n 'logo-mid': '#bdbdbd',\n 'logo-light': '#969696',\n }})\n if (darkModeCheckbox.checked === false) darkModeCheckbox.checked = true\n }\n }\n})\ndarkModeCheckbox.addEventListener('change', (e) => {\n if (darkModeCheckbox.checked) darkMode.set(true).update()\n else darkMode.set(false).update()\n})\n\nconst toolbarCheckbox = document.querySelector('#toolbar-checkbox')\nconst toolbar = document.querySelector('.ql-toolbar')\nconst toolbarSetting = initLocalStorage({\n key: 'toolbar',\n defaultValue: false,\n onUpdate: (newToolbarSetting) => {\n if (newToolbarSetting === true) {\n toolbar.classList.add('visible')\n if (toolbarCheckbox.checked === false) toolbarCheckbox.checked = true\n } else {\n toolbar.classList.remove('visible')\n if (toolbarCheckbox.checked === true) toolbarCheckbox.checked = false\n }\n }\n})\ntoolbarCheckbox.addEventListener('change', (e) => {\n if (toolbarCheckbox.checked) toolbarSetting.set(true).update()\n else toolbarSetting.set(false).update()\n})\n\n// settingsDialog\nconst settingsIcon = document.querySelector('.settings')\nconst dialog = document.querySelector('.settings-dialog')\nsettingsIcon.addEventListener('click', () => {\n dialog.classList.add('visible')\n})\n\ndocument.addEventListener('click', function (e) {\n if (e.target.classList.contains('dialog-container')) {\n var dialog = e.target\n dialog.classList.remove('visible')\n }\n})\n\n// enable transitions\nwindow.addEventListener('load', () => {\n body.classList.remove('no-transition')\n})\n"]} 1 + {"version":3,"sources":["../node_modules/core-js/library/modules/_global.js","../node_modules/core-js/library/modules/_core.js","../node_modules/core-js/library/modules/_a-function.js","../node_modules/core-js/library/modules/_ctx.js","../node_modules/core-js/library/modules/_is-object.js","../node_modules/core-js/library/modules/_an-object.js","../node_modules/core-js/library/modules/_fails.js","../node_modules/core-js/library/modules/_descriptors.js","../node_modules/core-js/library/modules/_dom-create.js","../node_modules/core-js/library/modules/_ie8-dom-define.js","../node_modules/core-js/library/modules/_to-primitive.js","../node_modules/core-js/library/modules/_object-dp.js","../node_modules/core-js/library/modules/_property-desc.js","../node_modules/core-js/library/modules/_hide.js","../node_modules/core-js/library/modules/_has.js","../node_modules/core-js/library/modules/_export.js","../node_modules/core-js/library/modules/_cof.js","../node_modules/core-js/library/modules/_is-array.js","../node_modules/core-js/library/modules/es6.array.is-array.js","../node_modules/core-js/library/fn/array/is-array.js","../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js","../node_modules/core-js/library/modules/_add-to-unscopables.js","../node_modules/core-js/library/modules/_iter-step.js","../node_modules/core-js/library/modules/_iterators.js","../node_modules/core-js/library/modules/_iobject.js","../node_modules/core-js/library/modules/_defined.js","../node_modules/core-js/library/modules/_to-iobject.js","../node_modules/core-js/library/modules/_library.js","../node_modules/core-js/library/modules/_redefine.js","../node_modules/core-js/library/modules/_to-integer.js","../node_modules/core-js/library/modules/_to-length.js","../node_modules/core-js/library/modules/_to-absolute-index.js","../node_modules/core-js/library/modules/_array-includes.js","../node_modules/core-js/library/modules/_shared.js","../node_modules/core-js/library/modules/_uid.js","../node_modules/core-js/library/modules/_shared-key.js","../node_modules/core-js/library/modules/_object-keys-internal.js","../node_modules/core-js/library/modules/_enum-bug-keys.js","../node_modules/core-js/library/modules/_object-keys.js","../node_modules/core-js/library/modules/_object-dps.js","../node_modules/core-js/library/modules/_html.js","../node_modules/core-js/library/modules/_object-create.js","../node_modules/core-js/library/modules/_wks.js","../node_modules/core-js/library/modules/_set-to-string-tag.js","../node_modules/core-js/library/modules/_iter-create.js","../node_modules/core-js/library/modules/_to-object.js","../node_modules/core-js/library/modules/_object-gpo.js","../node_modules/core-js/library/modules/_iter-define.js","../node_modules/core-js/library/modules/es6.array.iterator.js","../node_modules/core-js/library/modules/web.dom.iterable.js","../node_modules/core-js/library/modules/_string-at.js","../node_modules/core-js/library/modules/es6.string.iterator.js","../node_modules/core-js/library/modules/_classof.js","../node_modules/core-js/library/modules/core.get-iterator-method.js","../node_modules/core-js/library/modules/core.get-iterator.js","../node_modules/core-js/library/fn/get-iterator.js","../node_modules/@babel/runtime-corejs2/core-js/get-iterator.js","../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js","../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js","../node_modules/core-js/library/fn/json/stringify.js","../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js","../node_modules/get-css-data/dist/get-css-data.esm.js","../src/merge-deep.js","../node_modules/balanced-match/index.js","../src/parse-css.js","../src/stringify-css.js","../src/walk-css.js","../src/transform-css.js","../src/index.js","webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 3c334e19bc1efdeb80ab","webpack:///src/registry.ts","webpack:///src/attributor/attributor.ts","webpack:///src/blot/abstract/container.ts","webpack:///src/blot/abstract/format.ts","webpack:///src/blot/abstract/leaf.ts","webpack:///src/blot/abstract/shadow.ts","webpack:///src/attributor/store.ts","webpack:///src/attributor/class.ts","webpack:///src/attributor/style.ts","webpack:///src/parchment.ts","webpack:///src/collection/linked-list.ts","webpack:///src/blot/scroll.ts","webpack:///src/blot/inline.ts","webpack:///src/blot/block.ts","webpack:///src/blot/embed.ts","webpack:///src/blot/text.ts","../node_modules/quill/core/polyfill.js","../node_modules/fast-diff/diff.js","../node_modules/deep-equal/lib/keys.js","../node_modules/deep-equal/lib/is_arguments.js","../node_modules/deep-equal/index.js","../node_modules/extend/index.js","../node_modules/quill-delta/lib/op.js","../node_modules/quill-delta/lib/delta.js","../node_modules/quill/blots/break.js","../node_modules/quill/blots/text.js","../node_modules/quill/blots/inline.js","../node_modules/quill/blots/block.js","../node_modules/quill/formats/code.js","../node_modules/quill/blots/cursor.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/buffer/index.js","../node_modules/clone/clone.js","../node_modules/quill/core/editor.js","../node_modules/eventemitter3/index.js","../node_modules/quill/core/logger.js","../node_modules/quill/core/emitter.js","../node_modules/quill/core/module.js","../node_modules/quill/core/selection.js","../node_modules/quill/core/theme.js","../node_modules/quill/core/quill.js","../node_modules/quill/blots/container.js","../node_modules/quill/blots/embed.js","../node_modules/quill/blots/scroll.js","../node_modules/quill/formats/align.js","../node_modules/quill/formats/color.js","../node_modules/quill/formats/background.js","../node_modules/quill/formats/direction.js","../node_modules/quill/formats/font.js","../node_modules/quill/formats/size.js","../node_modules/quill/modules/clipboard.js","../node_modules/quill/modules/history.js","../node_modules/quill/modules/keyboard.js","../node_modules/quill/core.js","../node_modules/quill/formats/indent.js","../node_modules/quill/formats/blockquote.js","../node_modules/quill/formats/header.js","../node_modules/quill/formats/list.js","../node_modules/quill/formats/bold.js","../node_modules/quill/formats/italic.js","../node_modules/quill/formats/link.js","../node_modules/quill/formats/script.js","../node_modules/quill/formats/strike.js","../node_modules/quill/formats/underline.js","../node_modules/quill/formats/image.js","../node_modules/quill/formats/video.js","../node_modules/quill/modules/formula.js","../node_modules/quill/modules/syntax.js","../node_modules/quill/modules/toolbar.js","../node_modules/quill/ui/icons.js","../node_modules/quill/ui/picker.js","../node_modules/quill/ui/color-picker.js","../node_modules/quill/ui/icon-picker.js","../node_modules/quill/ui/tooltip.js","../node_modules/quill/themes/base.js","../node_modules/quill/themes/bubble.js","../node_modules/quill/themes/snow.js","../node_modules/quill/quill.js","../node_modules/quill-magic-url/dist/index.js","lib/quill.js","index.js"],"names":["getUrls","urls","options","arguments","length","undefined","settings","mimeType","onBeforeSend","Function","prototype","onSuccess","onError","onComplete","urlArray","Array","isArray","urlQueue","apply","map","x","isValidCss","cssText","isHTML","trim","charAt","xhr","urlIndex","responseText","returnVal","indexOf","forEach","url","i","parser","document","createElement","setAttribute","href","String","isCrossDomain","host","location","isIElte9","all","window","atob","isSameProtocol","protocol","xdr","XDomainRequest","open","timeout","onprogress","ontimeout","onload","onerror","err","setTimeout","send","console","log","XMLHttpRequest","overrideMimeType","onreadystatechange","readyState","status","getCssData","regex","cssComments","cssImports","rootElement","include","exclude","filter","useCSSOM","sourceNodes","querySelectorAll","node","matchesSelector","cssArray","handleComplete","isComplete","join","handleSuccess","cssIndex","sourceUrl","Boolean","resolveImports","resolvedCssText","errorData","data","test","parseImportData","baseUrl","ignoreRules","importData","rules","replace","match","rule","absoluteUrls","getFullUrl","absoluteRules","oldUrl","newUrl","callbackFn","__errorData","__errorRules","responseImportData","push","responseArray","importText","linkHref","getAttribute","linkRel","isLink","nodeName","toLowerCase","isStyle","textContent","sheet","cssRules","base","d","implementation","createHTMLDocument","b","a","head","appendChild","body","elm","selector","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","call","mergeDeep","isObject","obj","Object","constructor","objects","reduce","prev","keys","key","pVal","oVal","balanced","str","RegExp","maybeMatch","r","range","start","end","pre","slice","post","reg","m","begs","beg","left","right","result","ai","bi","pop","cssParse","css","errors","error","msg","Error","re","exec","whitespace","close","comment","type","comments","cmnts","c","split","s","declaration","comment_regexp","prop","val","ret","property","value","declarations","decls","concat","keyframe","vals","values","at_keyframes","vendor","name","frame","frames","keyframes","at_page","sel","selectors","at_fontface","at_supports","supports","at_host","at_media","media","at_custom_m","at_document","at_x","at_rule","core","stylesheet","stringifyCss","tree","delim","cb","renderMethods","charset","visit","import","namespace","page","nodes","buf","n","txt","walkCss","fn","VAR_PROP_IDENTIFIER","VAR_FUNC_IDENTIFIER","variableStore","dom","temp","user","transformVars","defaults","fixNestedCalc","onlyVars","persist","preserve","variables","onWarning","JSON","parse","stringify","cssTree","parseCss","filterVars","varNameIndices","decl","splice","newRule","resolvedValue","resolveValue","declArray","hasVarProp","hasVarVal","k","reCalcExp","oldValue","newValue","rootCalc","nestedCalc","__recursiveFallback","varFuncData","warningIntro","resolveFunc","fallback","hasOwnProperty","replacement","unresolvedFallback","isBrowser","isNativeSupport","CSS","onlyLegacy","shadowDOM","silent","updateDOM","updateURLs","watch","cssKeyframes","cssRootRules","cssUrls","cssVars","cssVarsObserver","isShadowDOMReady","styleNodeId","pkgName","handleError","message","sourceNode","handleWarning","warn","isShadowElm","shadowRoot","targetElm","documentElement","style","setProperty","cssRootDecls","nodeArray","transformCss","addMutationObserver","disconnect","cssUrl","responseUrl","responseURL","statusText","errorMsg","cssMarker","styleNode","hasKeyframes","group1","lastNode","querySelector","nextSibling","parentNode","insertBefore","fixKeyframes","errorThrown","errorNode","elms","shadowSettings","addEventListener","init","evt","removeEventListener","ignoreId","MutationObserver","tagName","id","debounceTimer","mutations","isUpdateMutation","mutation","target","addedNodes","removedNodes","some","isValidLink","disabled","isValidStyle","clearTimeout","observe","attributes","attributeFilter","childList","subtree","animationNameProp","getComputedStyle","allNodes","getElementsByTagName","keyframeNodes","nameMarker","len","animationName","offsetHeight","nodeStyle","equal","require","extend","lib","compose","keepNull","copy","diff","transform","priority","iterator","ops","Iterator","op","retain","insert","index","offset","hasNext","peekLength","Infinity","next","nextOp","opLength","retOp","substr","peek","peekType","rest","module","exports","NULL_CHARACTER","fromCharCode","Delta","text","newOp","lastOp","unshift","chop","predicate","partition","passed","failed","initial","changeLength","elem","delete","iter","other","thisIter","otherIter","firstOther","firstLeft","delta","Math","min","thisOp","otherOp","strings","prep","diffResult","component","INSERT","DELETE","EQUAL","eachLine","newline","line","transformPosition","nextType","Break","Parchment","Embed","insertInto","parent","ref","children","remove","blotName","TextBlot","Text","Inline","compare","self","selfIndex","order","otherIndex","formatAt","statics","query","Scope","BLOT","blot","isolate","wrap","optimize","context","moveChildren","allowedChildren","NEWLINE_LENGTH","BlockEmbed","attach","Attributor","Store","domNode","formats","format","attribute","BLOCK_ATTRIBUTE","insertAt","def","endsWith","block","create","Block","scope","BLOCK_BLOT","cache","descendants","Leaf","leaf","bubbleFormats","deleteAt","BLOCK","lines","shift","tail","path","removeChild","child","force","clone","defaultChild","Code","CodeBlock","frag","descendant","nextNewline","newlineIndex","prevNewline","isolateLength","searchIndex","reverse","lastIndexOf","find","unwrap","TAB","Cursor","selection","textNode","createTextNode","CONTENTS","_length","detach","position","restore","composing","getNativeRange","restoreText","lastChild","max","startNode","startOffset","endNode","endOffset","update","className","_instanceof","nativeMap","Map","_","nativeSet","Set","nativePromise","Promise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","_clone","proto","resolve","reject","then","__isArray","__isRegExp","source","__getRegExpFlags","lastIndex","__isDate","Date","getTime","isBuffer","allocUnsafe","getPrototypeOf","keyChild","valueChild","set","entryChild","add","attrs","getOwnPropertyDescriptor","getOwnPropertySymbols","symbols","symbol","descriptor","enumerable","defineProperty","allPropertyNames","getOwnPropertyNames","propertyName","clonePrototype","__objToStr","o","toString","flags","global","ignoreCase","multiline","ASCII","Editor","scroll","getDelta","applyDelta","consumeNextNewline","scrollLength","batchStart","normalizeDelta","DeltaOp","batchEnd","deleteText","formatLine","whitelist","lengthRemaining","lineLength","codeIndex","codeLength","formatText","getContents","getFormat","leaves","formatsArr","blots","combineFormats","getText","insertEmbed","embed","insertText","isBlank","removeFormat","suffixLength","suffix","contents","change","cursorIndex","oldDelta","textBlot","CursorBlot","oldText","newText","diffDelta","combined","merged","image","list","bullet","levels","level","debug","method","args","ns","logger","bind","newLevel","EVENTS","eventName","__quill","emitter","handleDOM","Emitter","EventEmitter","listeners","on","emit","event","handler","contains","listenDOM","events","EDITOR_CHANGE","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SCROLL_UPDATE","SELECTION_CHANGE","TEXT_CHANGE","sources","API","SILENT","USER","Module","quill","DEFAULTS","Range","Selection","mouseDown","root","cursor","lastRange","savedRange","handleComposition","handleDragging","hasFocus","native","once","setNativeRange","ignored","focus","setRange","nativeRange","collapsed","after","getBounds","createRange","setStart","setEnd","getBoundingClientRect","side","rect","bottom","top","height","width","getSelection","rangeCount","getRangeAt","normalizeNative","info","getRange","normalized","normalizedToRange","activeElement","positions","indexes","Container","startContainer","endContainer","childNodes","rangeToNative","scrollIntoView","scrollingContainer","bounds","limit","first","last","scrollBounds","scrollTop","removeAllRanges","addRange","blur","oldRange","e","Theme","modules","addModule","moduleClass","themes","Quill","imports","register","overwrite","attrName","startsWith","container","expandConfig","html","innerHTML","classList","addContainer","editor","theme","keyboard","clipboard","history","toggle","modify","convert","setContents","clear","placeholder","readOnly","disable","refNode","overload","enable","enabled","setSelection","containerBounds","getLength","getIndex","getLeaf","getLine","getLines","Number","MAX_VALUE","getModule","isEnabled","off","pasteHTML","dangerouslyPasteHTML","deleted","applied","setText","updateContents","strict","version","QUILL_VERSION","userConfig","themeConfig","config","moduleNames","moduleConfig","toolbar","modifier","shiftRange","pos","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","isLine","Scroll","batch","INLINE_BLOT","wrapper","lengthLeft","forEachAt","observer","takeRecords","AlignAttribute","Attribute","AlignClass","Class","AlignStyle","Style","ColorAttributor","parseInt","ColorClass","INLINE","ColorStyle","BackgroundClass","BackgroundStyle","DirectionAttribute","DirectionClass","DirectionStyle","FontClass","FontStyleAttributor","FontStyle","SizeClass","SizeStyle","DOM_KEY","CLIPBOARD_CONFIG","Node","TEXT_NODE","matchText","matchNewline","matchBreak","ELEMENT_NODE","matchBlot","matchSpacing","matchAttributor","matchStyles","matchIndent","matchAlias","matchIgnore","ATTRIBUTE_ATTRIBUTORS","memo","attr","keyName","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","matcher","matchVisual","addMatcher","innerText","elementMatchers","textMatchers","prepareMatching","traverse","deltaEndsWith","paste","defaultPrevented","pair","applyFormat","computeStyle","nodeType","endText","display","childrenDelta","classes","styles","ATTRIBUTE","indent","nextElementSibling","nodeHeight","parseFloat","marginTop","marginBottom","offsetTop","fontStyle","italic","fontWeight","bold","textIndent","whiteSpace","replacer","collapse","previousSibling","History","lastRecorded","ignoreChange","userOnly","record","addBinding","shortKey","undo","shiftKey","redo","navigator","platform","dest","stack","getLastChangeIndex","cutoff","changeDelta","undoDelta","timestamp","now","delay","maxStack","endsWithNewlineChange","deleteLength","changeIndex","SHORTKEY","Keyboard","binding","normalize","which","keyCode","bindings","ENTER","handleEnter","metaKey","ctrlKey","altKey","userAgent","BACKSPACE","handleBackspace","handleDelete","prefix","handleDeleteRange","listen","leafStart","offsetStart","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","prevented","every","preventDefault","ESCAPE","LEFT","UP","RIGHT","DOWN","makeFormatHandler","makeCodeBlockHandler","header","makeEmbedArrowHandler","where","curFormats","prevFormats","nextLength","nextFormats","firstFormats","lastFormats","lineFormats","scrollIndex","toUpperCase","charCodeAt","IdentAttributor","canAdd","IndentClass","Blockquote","Header","ListItem","List","replaceWith","hasAttribute","listEventHandler","item","Bold","Italic","Link","sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","Script","Strike","Underline","ATTRIBUTES","Image","removeAttribute","Video","FormulaBlot","katex","render","throwOnError","errorColor","Formula","SyntaxCodeBlock","highlight","cachedText","CodeToken","Syntax","timer","interval","code","hljs","highlightAuto","Toolbar","addControls","HTMLElement","controls","handlers","addHandler","input","selectedIndex","selected","prompt","option","isActive","addButton","groups","group","control","addSelect","clean","direction","align","link","optionsCounter","toggleAriaAttribute","element","Picker","select","buildPicker","label","togglePicker","escape","buildItem","tabIndex","selectItem","buildLabel","DropdownIcon","buildOptions","trigger","Event","dispatchEvent","createEvent","initEvent","ColorPicker","backgroundColor","colorLabel","stroke","fill","IconPicker","icons","defaultItem","Tooltip","boundsContainer","TEMPLATE","hide","reference","offsetWidth","rootBounds","verticalShift","show","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","listener","tooltip","textbox","pickers","picker","extendToolbar","buildButtons","buttons","button","buildPickers","selects","fillSelect","formula","edit","fileInput","files","reader","FileReader","readAsDataURL","click","video","BaseTooltip","save","cancel","mode","preview","restoreFocus","linkRange","extractVideoUrl","defaultValue","TOOLBAR_CONFIG","BubbleTheme","BubbleTooltip","lastLine","arrow","marginLeft","SnowTheme","SnowTooltip","LinkBlot","Indent","InlineCode","Icons","MagicUrl","initLocalStorage","getItem","localStorage","setItem","onUpdate","get","autoList","autoListCheckbox","autoListSetting","newAutoListSetting","checked","blockquote","table","magicUrl","items","repeatingTasks","tasks","removeItem","isExtension","dataset","buildAs","isFirefox","InstallTrigger","isChrome","chrome","webstore","runtime","getElementById","darkModeCheckbox","darkMode","newDarkMode","toolbarCheckbox","toolbarSetting","newToolbarSetting","settingsIcon","dialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;;ACFA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;;ACDA;AACA;AACA;AACA;;ACHA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;;ACHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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F,CAAgB,GAAhBA;AAEVA,EAAAA,CAAAA,CAAEK,IAAFL,CAAOM,WAAPN,CAAmBG,CAAnBH;AACAA,EAAAA,CAAAA,CAAEO,IAAFP,CAAOM,WAAPN,CAAmBI,CAAnBJ;AACAG,EAAAA,CAAAA,CAAEzF,IAAFyF,GAASJ,IAATI;AACAC,EAAAA,CAAAA,CAAE1F,IAAF0F,GAAShG,GAATgG;SAEOA,CAAAA,CAAE1F;;;;;;;AC9gBb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;;;;;;ACnJA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACvDA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClQA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC1EA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC1CA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC3JA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA,CAAC;AACD;;;;;;;;ACrEA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACvDA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;;;ACvDA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;ACpCA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACrIA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AChLA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC7EA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACpEA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;ACxCA;AACA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACluBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA,IAAI4U,KAAK,GAAGC,OAAO,CAAC,YAAD,CAAnB;;AACA,IAAIC,MAAM,GAAGD,OAAO,CAAC,QAAD,CAApB;;AAGA,IAAIE,GAAG,GAAG;AACRjB,EAAAA,UAAU,EAAE;AACVkB,IAAAA,OAAO,EAAE,UAAUtP,CAAV,EAAaD,CAAb,EAAgBwP,QAAhB,EAA0B;AACjC,UAAI,OAAOvP,CAAP,KAAa,QAAjB,EAA2BA,CAAC,GAAG,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M,CAACmB,SAAP,GAAmB,WAAnB;AACAnB,MAAM,CAAChL,OAAP,GAAiB,MAAjB;AACAgL,MAAM,CAACI,QAAP,GAAkB,QAAlB,EAA8B;;eAGfJ;;;ACnHf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7vDA,IAAIhB,KAAK,GAAI,YAAW;AACxB;;AAEA,WAASoC,WAAT,CAAqB3Y,GAArB,EAA0B0C,IAA1B,EAAgC;AAC9B,WAAOA,IAAI,IAAI,IAAR,IAAgB1C,GAAG,YAAY0C,IAAtC;AACD;;AAED,MAAIkW,SAAJ;;AACA,MAAI;AACFA,IAAAA,SAAS,GAAGC,GAAZ;AACD,GAFD,CAEE,OAAMC,CAAN,EAAS;AACT;AACA;AACAF,IAAAA,SAAS,GAAG,YAAW,CAAE,CAAzB;AACD;;AAED,MAAIG,SAAJ;;AACA,MAAI;AACFA,IAAAA,SAAS,GAAGC,GAAZ;AACD,GAFD,CAEE,OAAMF,CAAN,EAAS;AACTC,IAAAA,SAAS,GAAG,YAAW,CAAE,CAAzB;AACD;;AAED,MAAIE,aAAJ;;AACA,MAAI;AACFA,IAAAA,aAAa,GAAGC,OAAhB;AACD,GAFD,CAEE,OAAMJ,CAAN,EAAS;AACTG,IAA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,SAArB;AACD,OAFD,MAEO;AACL9P,QAAAA,EAAE,CAAC3B,UAAH,CAAcyR,IAAd,GAAqB,QAArB;AACA,eAAO9P,EAAE,CAAC3B,UAAH,CAAc0R,MAArB;AACD;AACF;;AACD,QAAI,OAAO/P,EAAE,CAACE,MAAV,KAAqB,QAAzB,EAAmC;AACjC,UAAImB,IAAI,GAAGrB,EAAE,CAACE,MAAH,CAAU/R,OAAV,CAAkB,OAAlB,EAA2B,IAA3B,EAAiCA,OAAjC,CAAyC,KAAzC,EAAgD,IAAhD,CAAX;AACA,aAAOqU,KAAK,CAACtC,MAAN,CAAamB,IAAb,EAAmBrB,EAAE,CAAC3B,UAAtB,CAAP;AACD;;AACD,WAAOmE,KAAK,CAACzT,IAAN,CAAWiR,EAAX,CAAP;AACD,GApBM,EAoBJ,IAAIoB,mBAAJ,EApBI,CAAP;AAqBD;;eAGc8L;;;AC1Qf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvTA,IAAI8C,MAAM,GAAG,CAAC,OAAD,EAAU,MAAV,EAAkB,KAAlB,EAAyB,MAAzB,CAAb;AACA,IAAIC,KAAK,GAAG,MAAZ;;AAEA,SAASC,KAAT,CAAeC,MAAf,EAAuB,GAAGC,IAA1B,EAAgC;AAC9B,MAAIJ,MAAM,CAACjmB,OAAP,CAAeomB,MAAf,KAA0BH,MAAM,CAACjmB,OAAP,CAAekmB,KAAf,CAA9B,EAAqD;AACnDpkB,IAAAA,OAAO,CAACskB,MAAD,CAAP,CAAgB,GAAGC,IAAnB,EADmD,CACxB;AAC5B;AACF;;AAED,SAAS3Z,SAAT,CAAmB4Z,EAAn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","file":"index.map","sourceRoot":"../src","sourcesContent":["// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n","module.exports = require(\"core-js/library/fn/array/is-array\");","var _Array$isArray = require(\"../core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","module.exports = function () { /* empty */ };\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","module.exports = true;\n","module.exports = require('./_hide');\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","module.exports = require(\"core-js/library/fn/get-iterator\");","var _getIterator = require(\"../core-js/get-iterator\");\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = _getIterator(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","module.exports = require(\"core-js/library/fn/json/stringify\");","/*!\n * get-css-data\n * v1.6.1\n * https://github.com/jhildenbiddle/get-css-data\n * (c) 2018 John Hildenbiddle <http://hildenbiddle.com>\n * MIT license\n */\nfunction getUrls(urls) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var settings = {\n mimeType: options.mimeType || null,\n onBeforeSend: options.onBeforeSend || Function.prototype,\n onSuccess: options.onSuccess || Function.prototype,\n onError: options.onError || Function.prototype,\n onComplete: options.onComplete || Function.prototype\n };\n var urlArray = Array.isArray(urls) ? urls : [ urls ];\n var urlQueue = Array.apply(null, Array(urlArray.length)).map(function(x) {\n return null;\n });\n function isValidCss() {\n var cssText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var isHTML = cssText.trim().charAt(0) === \"<\";\n return !isHTML;\n }\n function onError(xhr, urlIndex) {\n settings.onError(xhr, urlArray[urlIndex], urlIndex);\n }\n function onSuccess(responseText, urlIndex) {\n var returnVal = settings.onSuccess(responseText, urlArray[urlIndex], urlIndex);\n responseText = returnVal === false ? \"\" : returnVal || responseText;\n urlQueue[urlIndex] = responseText;\n if (urlQueue.indexOf(null) === -1) {\n settings.onComplete(urlQueue);\n }\n }\n urlArray.forEach(function(url, i) {\n var parser = document.createElement(\"a\");\n parser.setAttribute(\"href\", url);\n parser.href = String(parser.href);\n var isCrossDomain = parser.host !== location.host;\n var isIElte9 = document.all && !window.atob;\n var isSameProtocol = parser.protocol === location.protocol;\n if (isCrossDomain && isIElte9) {\n if (isSameProtocol) {\n var xdr = new XDomainRequest();\n xdr.open(\"GET\", url);\n xdr.timeout = 0;\n xdr.onprogress = Function.prototype;\n xdr.ontimeout = Function.prototype;\n xdr.onload = function() {\n if (isValidCss(xdr.responseText)) {\n onSuccess(xdr.responseText, i);\n } else {\n onError(xdr, i);\n }\n };\n xdr.onerror = function(err) {\n onError(xdr, i);\n };\n setTimeout(function() {\n xdr.send();\n }, 0);\n } else {\n console.log(\"Internet Explorer 9 Cross-Origin (CORS) requests must use the same protocol\");\n onError(null, i);\n }\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url);\n if (settings.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(settings.mimeType);\n }\n settings.onBeforeSend(xhr, url, i);\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 && isValidCss(xhr.responseText)) {\n onSuccess(xhr.responseText, i);\n } else {\n onError(xhr, i);\n }\n }\n };\n xhr.send();\n }\n });\n}\n\n/**\n * Gets CSS data from <style> and <link> nodes (including @imports), then\n * returns data in order processed by DOM. Allows specifying nodes to\n * include/exclude and filtering CSS data using RegEx.\n *\n * @preserve\n * @param {object} [options] The options object\n * @param {object} [options.rootElement=document] Root element to traverse for\n * <link> and <style> nodes.\n * @param {string} [options.include] CSS selector matching <link> and <style>\n * nodes to include\n * @param {string} [options.exclude] CSS selector matching <link> and <style>\n * nodes to exclude\n * @param {object} [options.filter] Regular expression used to filter node CSS\n * data. Each block of CSS data is tested against the filter,\n * and only matching data is included.\n * @param {object} [options.useCSSOM=false] Determines if CSS data will be\n * collected from a stylesheet's runtime values instead of its\n * text content. This is required to get accurate CSS data\n * when a stylesheet has been modified using the deleteRule()\n * or insertRule() methods because these modifications will\n * not be reflected in the stylesheet's text content.\n * @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes\n * 1) the XHR object, 2) source node reference, and 3) the\n * source URL as arguments.\n * @param {function} [options.onSuccess] Callback on each CSS node read. Passes\n * 1) CSS text, 2) source node reference, and 3) the source\n * URL as arguments.\n * @param {function} [options.onError] Callback on each error. Passes 1) the XHR\n * object for inspection, 2) soure node reference, and 3) the\n * source URL that failed (either a <link> href or an @import)\n * as arguments\n * @param {function} [options.onComplete] Callback after all nodes have been\n * processed. Passes 1) concatenated CSS text, 2) an array of\n * CSS text in DOM order, and 3) an array of nodes in DOM\n * order as arguments.\n *\n * @example\n *\n * getCssData({\n * rootElement: document,\n * include : 'style,link[rel=\"stylesheet\"]',\n * exclude : '[href=\"skip.css\"]',\n * filter : /red/,\n * useCSSOM : false,\n * onBeforeSend(xhr, node, url) {\n * // ...\n * }\n * onSuccess(cssText, node, url) {\n * // ...\n * }\n * onError(xhr, node, url) {\n * // ...\n * },\n * onComplete(cssText, cssArray, nodeArray) {\n * // ...\n * }\n * });\n */ function getCssData(options) {\n var regex = {\n cssComments: /\\/\\*[\\s\\S]+?\\*\\//g,\n cssImports: /(?:@import\\s*)(?:url\\(\\s*)?(?:['\"])([^'\"]*)(?:['\"])(?:\\s*\\))?(?:[^;]*;)/g\n };\n var settings = {\n rootElement: options.rootElement || document,\n include: options.include || 'style,link[rel=\"stylesheet\"]',\n exclude: options.exclude || null,\n filter: options.filter || null,\n useCSSOM: options.useCSSOM || false,\n onBeforeSend: options.onBeforeSend || Function.prototype,\n onSuccess: options.onSuccess || Function.prototype,\n onError: options.onError || Function.prototype,\n onComplete: options.onComplete || Function.prototype\n };\n var sourceNodes = Array.apply(null, settings.rootElement.querySelectorAll(settings.include)).filter(function(node) {\n return !matchesSelector(node, settings.exclude);\n });\n var cssArray = Array.apply(null, Array(sourceNodes.length)).map(function(x) {\n return null;\n });\n function handleComplete() {\n var isComplete = cssArray.indexOf(null) === -1;\n if (isComplete) {\n var cssText = cssArray.join(\"\");\n settings.onComplete(cssText, cssArray, sourceNodes);\n }\n }\n function handleSuccess(cssText, cssIndex, node, sourceUrl) {\n var returnVal = settings.onSuccess(cssText, node, sourceUrl);\n cssText = returnVal !== undefined && Boolean(returnVal) === false ? \"\" : returnVal || cssText;\n resolveImports(cssText, node, sourceUrl, function(resolvedCssText, errorData) {\n if (cssArray[cssIndex] === null) {\n errorData.forEach(function(data) {\n return settings.onError(data.xhr, node, data.url);\n });\n if (!settings.filter || settings.filter.test(resolvedCssText)) {\n cssArray[cssIndex] = resolvedCssText;\n } else {\n cssArray[cssIndex] = \"\";\n }\n handleComplete();\n }\n });\n }\n function parseImportData(cssText, baseUrl) {\n var ignoreRules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var importData = {};\n importData.rules = (cssText.replace(regex.cssComments, \"\").match(regex.cssImports) || []).filter(function(rule) {\n return ignoreRules.indexOf(rule) === -1;\n });\n importData.urls = importData.rules.map(function(rule) {\n return rule.replace(regex.cssImports, \"$1\");\n });\n importData.absoluteUrls = importData.urls.map(function(url) {\n return getFullUrl(url, baseUrl);\n });\n importData.absoluteRules = importData.rules.map(function(rule, i) {\n var oldUrl = importData.urls[i];\n var newUrl = getFullUrl(importData.absoluteUrls[i], baseUrl);\n return rule.replace(oldUrl, newUrl);\n });\n return importData;\n }\n function resolveImports(cssText, node, baseUrl, callbackFn) {\n var __errorData = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var __errorRules = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n var importData = parseImportData(cssText, baseUrl, __errorRules);\n if (importData.rules.length) {\n getUrls(importData.absoluteUrls, {\n onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n settings.onBeforeSend(xhr, node, url);\n },\n onSuccess: function onSuccess(cssText, url, urlIndex) {\n var returnVal = settings.onSuccess(cssText, node, url);\n cssText = returnVal === false ? \"\" : returnVal || cssText;\n var responseImportData = parseImportData(cssText, url, __errorRules);\n responseImportData.rules.forEach(function(rule, i) {\n cssText = cssText.replace(rule, responseImportData.absoluteRules[i]);\n });\n return cssText;\n },\n onError: function onError(xhr, url, urlIndex) {\n __errorData.push({\n xhr: xhr,\n url: url\n });\n __errorRules.push(importData.rules[urlIndex]);\n resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n },\n onComplete: function onComplete(responseArray) {\n responseArray.forEach(function(importText, i) {\n cssText = cssText.replace(importData.rules[i], importText);\n });\n resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n }\n });\n } else {\n callbackFn(cssText, __errorData);\n }\n }\n if (sourceNodes.length) {\n sourceNodes.forEach(function(node, i) {\n var linkHref = node.getAttribute(\"href\");\n var linkRel = node.getAttribute(\"rel\");\n var isLink = node.nodeName === \"LINK\" && linkHref && linkRel && linkRel.toLowerCase() === \"stylesheet\";\n var isStyle = node.nodeName === \"STYLE\";\n if (isLink) {\n getUrls(linkHref, {\n mimeType: \"text/css\",\n onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n settings.onBeforeSend(xhr, node, url);\n },\n onSuccess: function onSuccess(cssText, url, urlIndex) {\n var sourceUrl = getFullUrl(linkHref, location.href);\n handleSuccess(cssText, i, node, sourceUrl);\n },\n onError: function onError(xhr, url, urlIndex) {\n cssArray[i] = \"\";\n settings.onError(xhr, node, url);\n handleComplete();\n }\n });\n } else if (isStyle) {\n var cssText = node.textContent;\n if (settings.useCSSOM) {\n cssText = Array.apply(null, node.sheet.cssRules).map(function(rule) {\n return rule.cssText;\n }).join(\"\");\n }\n handleSuccess(cssText, i, node, location.href);\n } else {\n cssArray[i] = \"\";\n handleComplete();\n }\n });\n } else {\n settings.onComplete(\"\", []);\n }\n}\n\nfunction getFullUrl(url) {\n var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : location.href;\n var d = document.implementation.createHTMLDocument(\"\");\n var b = d.createElement(\"base\");\n var a = d.createElement(\"a\");\n d.head.appendChild(b);\n d.body.appendChild(a);\n b.href = base;\n a.href = url;\n return a.href;\n}\n\nfunction matchesSelector(elm, selector) {\n var matches = elm.matches || elm.matchesSelector || elm.webkitMatchesSelector || elm.mozMatchesSelector || elm.msMatchesSelector || elm.oMatchesSelector;\n return matches.call(elm, selector);\n}\n\nexport default getCssData;\n//# sourceMappingURL=get-css-data.esm.js.map\n","// Functions\n// =============================================================================\n/**\n * Performs a deep merge of objects and returns new object. Does not modify\n * objects (immutable) and merges arrays via concatenation.\n *\n * @param {...object} objects - Objects to merge\n * @returns {object} New object with merged key/values\n */\nfunction mergeDeep(...objects) {\n const isObject = obj => obj instanceof Object && obj.constructor === Object;\n\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach(key => {\n const pVal = prev[key];\n const oVal = obj[key];\n\n // if (Array.isArray(pVal) && Array.isArray(oVal)) {\n // prev[key] = pVal.concat(...oVal);\n // }\n if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n }\n else {\n prev[key] = oVal;\n }\n });\n\n return prev;\n }, {});\n}\n\n\n// Export\n// =============================================================================\nexport default mergeDeep;\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","/**\n * Based on css parser/compiler by NxChg\n * https://github.com/NxtChg/pieces/tree/master/js/css_parser\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Parses CSS string and generates AST object\n *\n * @param {string} css The CSS stringt to be converted to an AST\n * @returns {object}\n */\nfunction cssParse(css) {\n const errors = [];\n\n // Errors\n // -------------------------------------------------------------------------\n function error(msg) {\n throw new Error(`CSS parse error: ${msg}`);\n }\n\n // RegEx\n // -------------------------------------------------------------------------\n // Match regexp and return captures\n function match(re) {\n const m = re.exec(css);\n\n if (m) {\n css = css.slice(m[0].length);\n\n return m;\n }\n }\n\n function whitespace() {\n match(/^\\s*/);\n }\n function open() {\n return match(/^{\\s*/);\n }\n function close() {\n return match(/^}/);\n }\n\n // Comments\n // -------------------------------------------------------------------------\n function comment() {\n whitespace();\n\n if (css[0] !== '/' || css[1] !== '*') { return; }\n\n let i = 2;\n while (css[i] && (css[i] !== '*' || css[i + 1] !== '/')) { i++; }\n\n // FIXED\n if (!css[i]) { return error('end of comment is missing'); }\n\n const str = css.slice(2, i);\n css = css.slice(i + 2);\n\n return { type: 'comment', comment: str };\n }\n function comments() {\n const cmnts = [];\n\n let c;\n\n while ((c = comment())) {\n cmnts.push(c);\n }\n return cmnts;\n }\n\n // Selector\n // -------------------------------------------------------------------------\n function selector() {\n whitespace();\n while (css[0] === '}') {\n error('extra closing bracket');\n }\n\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\n\n if (m)\n { return m[0]\n .trim() // remove all comments from selectors\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function(m) {\n return m.replace(/,/g, '\\u200C');\n })\n .split(/\\s*(?![^(]*\\)),\\s*/)\n .map(function(s) {\n return s.replace(/\\u200C/g, ',');\n }); }\n }\n\n // Declarations\n // -------------------------------------------------------------------------\n function declaration() {\n match(/^([;\\s]*)+/); // ignore empty declarations + whitespace\n\n const comment_regexp = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\n let prop = match(/^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n if (!prop) { return; }\n\n prop = prop[0].trim();\n\n if (!match(/^:\\s*/)) { return error('property missing \\':\\''); }\n\n // Quotes regex repeats verbatim inside and outside parentheses\n const val = match(/^((?:\\/\\*.*?\\*\\/|'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\((\\s*'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|[^)]*?)\\s*\\)|[^};])+)/);\n\n const ret = { type: 'declaration', property: prop.replace(comment_regexp, ''), value: val ? val[0].replace(comment_regexp, '').trim() : '' };\n\n match(/^[;\\s]*/);\n\n return ret;\n }\n function declarations() {\n if (!open()) { return error('missing \\'{\\''); }\n\n let d,\n decls = comments();\n\n while ((d = declaration())) {\n decls.push(d);\n decls = decls.concat(comments());\n }\n\n if (!close()) { return error('missing \\'}\\''); }\n\n return decls;\n }\n\n // Keyframes\n // -------------------------------------------------------------------------\n function keyframe() {\n whitespace();\n\n const vals = [];\n\n let m;\n\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n vals.push(m[1]);\n match(/^,\\s*/);\n }\n\n if (vals.length) { return { type: 'keyframe', values: vals, declarations: declarations() }; }\n }\n function at_keyframes() {\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\n\n if (!m) { return; }\n\n const vendor = m[1];\n\n m = match(/^([-\\w]+)\\s*/);\n if (!m) { return error('@keyframes missing name'); } // identifier\n\n const name = m[1];\n\n if (!open()) { return error('@keyframes missing \\'{\\''); }\n\n let frame,\n frames = comments();\n while ((frame = keyframe())) {\n frames.push(frame);\n frames = frames.concat(comments());\n }\n\n if (!close()) { return error('@keyframes missing \\'}\\''); }\n\n return { type: 'keyframes', name: name, vendor: vendor, keyframes: frames };\n }\n\n // @ Rules\n // -------------------------------------------------------------------------\n function at_page() {\n const m = match(/^@page */);\n if (m) {\n const sel = selector() || [];\n return { type: 'page', selectors: sel, declarations: declarations() };\n }\n }\n function at_fontface() {\n const m = match(/^@font-face\\s*/);\n if (m) { return { type: 'font-face', declarations: declarations() }; }\n }\n function at_supports() {\n const m = match(/^@supports *([^{]+)/);\n if (m) { return { type: 'supports', supports: m[1].trim(), rules: rules() }; }\n }\n function at_host() {\n const m = match(/^@host\\s*/);\n if (m) { return { type: 'host', rules: rules() }; }\n }\n function at_media() {\n const m = match(/^@media *([^{]+)/);\n if (m) { return { type: 'media', media: m[1].trim(), rules: rules() }; }\n }\n function at_custom_m() {\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n if (m) { return { type: 'custom-media', name: m[1].trim(), media: m[2].trim() }; }\n }\n function at_document() {\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\n // FIXED\n if (m) { return { type: 'document', document: m[2].trim(), vendor: m[1] ? m[1].trim() : null, rules: rules() }; }\n }\n function at_x() {\n const m = match(/^@(import|charset|namespace)\\s*([^;]+);/);\n if (m) { return { type: m[1], name: m[2].trim() }; }\n }\n function at_rule() {\n whitespace();\n if (css[0] === '@') { return at_keyframes() || at_supports() || at_host() || at_media() || at_custom_m() || at_page() || at_document() || at_fontface() || at_x(); }\n }\n\n // Rules\n // -------------------------------------------------------------------------\n function rule() {\n const sel = selector() || [];\n if (!sel.length) { error('selector missing'); }\n\n const decls = declarations();\n\n return { type: 'rule', selectors: sel, declarations: decls };\n }\n function rules(core) {\n if (!core && !open()) { return error('missing \\'{\\''); }\n\n let node,\n rules = comments();\n\n while (css.length && (core || css[0] !== '}') && (node = at_rule() || rule())) {\n rules.push(node);\n rules = rules.concat(comments());\n }\n\n if (!core && !close()) { return error('missing \\'}\\''); }\n\n return rules;\n }\n\n return { type: 'stylesheet', stylesheet: { rules: rules(true), errors: errors } };\n}\n\n\n// Exports\n// =============================================================================\nexport default cssParse;\n","/**\n * Based on css parser/compiler by NxChg\n * https://github.com/NxtChg/pieces/tree/master/js/css_parser\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Compiles CSS AST to string\n *\n * @param {object} tree CSS AST object\n * @param {string} [delim=''] CSS rule delimiter\n * @param {function} cb Function to be called before each node is processed\n * @returns {string}\n */\nfunction stringifyCss(tree, delim = '', cb) {\n const renderMethods = {\n charset(node) {\n return '@charset ' + node.name + ';';\n },\n comment(node) {\n // Preserve ponyfill marker comments\n return node.comment.indexOf('__CSSVARSPONYFILL') === 0 ? '/*' + node.comment + '*/' : '';\n },\n 'custom-media'(node) {\n return '@custom-media ' + node.name + ' ' + node.media + ';';\n },\n declaration(node) {\n return node.property + ':' + node.value + ';';\n },\n document(node) {\n return '@' + (node.vendor || '') + 'document ' + node.document + '{' + visit(node.rules) + '}';\n },\n 'font-face'(node) {\n return '@font-face' + '{' + visit(node.declarations) + '}';\n },\n host(node) {\n return '@host' + '{' + visit(node.rules) + '}';\n },\n import(node) {\n // FIXED\n return '@import ' + node.name + ';';\n },\n keyframe(node) {\n return node.values.join(',') + '{' + visit(node.declarations) + '}';\n },\n keyframes(node) {\n return '@' + (node.vendor || '') + 'keyframes ' + node.name + '{' + visit(node.keyframes) + '}';\n },\n media(node) {\n return '@media ' + node.media + '{' + visit(node.rules) + '}';\n },\n namespace(node) {\n return '@namespace ' + node.name + ';';\n },\n page(node) {\n return '@page ' + (node.selectors.length ? node.selectors.join(', ') : '') + '{' + visit(node.declarations) + '}';\n },\n rule(node) {\n const decls = node.declarations;\n\n if (decls.length) {\n return node.selectors.join(',') + '{' + visit(decls) + '}';\n }\n },\n supports(node) {\n // FIXED\n return '@supports ' + node.supports + '{' + visit(node.rules) + '}';\n }\n };\n\n function visit(nodes) {\n let buf = '';\n\n for (let i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n\n if (cb) {\n cb(n);\n }\n\n const txt = renderMethods[n.type](n);\n\n if (txt) {\n buf += txt;\n\n if (txt.length && n.selectors) {\n buf += delim;\n }\n }\n }\n\n return buf;\n }\n\n return visit(tree.stylesheet.rules);\n}\n\n\n// Exports\n// =============================================================================\nexport default stringifyCss;\n","/**\n * Based on rework-visit by reworkcss\n * https://github.com/reworkcss/rework-visit\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Visit `node` declarations recursively and invoke `fn(declarations, node)`.\n *\n * @param {object} node\n * @param {function} fn\n */\nfunction walkCss(node, fn){\n node.rules.forEach(function(rule){\n // @media etc\n if (rule.rules) {\n walkCss(rule, fn);\n\n return;\n }\n\n // keyframes\n if (rule.keyframes) {\n rule.keyframes.forEach(function(keyframe){\n if (keyframe.type === 'keyframe') {\n fn(keyframe.declarations, rule);\n }\n });\n\n return;\n }\n\n // @charset, @import etc\n if (!rule.declarations) {\n return;\n }\n\n fn(rule.declarations, node);\n });\n}\n\n\n// Exports\n// =============================================================================\nexport default walkCss;\n","/**\n * Based on rework-vars by reworkcss\n * https://github.com/reworkcss/rework-vars\n */\n\n\n// Dependencies\n// =============================================================================\nimport balanced from 'balanced-match';\nimport mergeDeep from './merge-deep';\nimport parseCss from './parse-css';\nimport stringifyCss from './stringify-css';\nimport walkCss from './walk-css';\n\n\n// Constants & Variables\n// =============================================================================\nconst VAR_PROP_IDENTIFIER = '--';\nconst VAR_FUNC_IDENTIFIER = 'var';\nconst variableStore = {\n // Persisted custom property values (matches modern browsers)\n dom : {},\n // Non-persisted custom properties values\n temp: {},\n // Persisted custom property values passed using options.variables\n user: {}\n};\n\n\n// Functions\n// =============================================================================\n/**\n * Transforms W3C-style CSS variables to static values and returns an updated\n * CSS string.\n *\n * @param {object} cssText CSS containing variable definitions and functions\n * @param {object} [options] Options object\n * @param {boolean} [options.fixNestedCalc=true] Removes nested 'calc' keywords\n * for legacy browser compatibility.\n * @param {boolean} [options.onlyVars=true] Remove declarations that do not\n * contain a CSS variable from the return value. Note that\n * @font-face and @keyframe rules require all declarations to\n * be returned if a CSS variable is used.\n * @param {boolean} [options.persist=false] Persists options.variables,\n * allowing variables set in previous calls to be applied in\n * subsequent calls.\n * @param {boolean} [options.preserve=false] Preserve CSS variable definitions\n * and functions in the return value, allowing \"live\" variable\n * updates via JavaScript to continue working in browsers with\n * native CSS variable support.\n * @param {object} [options.variables={}] CSS variable definitions to include\n * during transformation. Can be used to add new override\n * exisitng definitions.\n * @param {function} [options.onWarning] Callback on each transformation\n * warning. Passes 1) warningMessage as an argument.\n * @returns {string}\n */\nfunction transformVars(cssText, options = {}) {\n const defaults = {\n fixNestedCalc: true,\n onlyVars : true,\n persist : false,\n preserve : false,\n variables : {},\n onWarning() {}\n };\n const settings = mergeDeep(defaults, options);\n const map = settings.persist ? variableStore.dom : variableStore.temp = JSON.parse(JSON.stringify(variableStore.dom));\n\n // Convert cssText to AST (this could throw errors)\n const cssTree = parseCss(cssText);\n\n // Remove non-vars\n if (settings.onlyVars) {\n cssTree.stylesheet.rules = filterVars(cssTree.stylesheet.rules);\n }\n\n // Define variables\n cssTree.stylesheet.rules.forEach(function(rule) {\n const varNameIndices = [];\n\n if (rule.type !== 'rule') {\n return;\n }\n\n // only variables declared for `:root` are supported\n if (rule.selectors.length !== 1 || rule.selectors[0] !== ':root') {\n return;\n }\n\n rule.declarations.forEach(function(decl, i) {\n const prop = decl.property;\n const value = decl.value;\n\n if (prop && prop.indexOf(VAR_PROP_IDENTIFIER) === 0) {\n map[prop] = value;\n varNameIndices.push(i);\n }\n });\n\n // optionally remove `--*` properties from the rule\n if (!settings.preserve) {\n for (let i = varNameIndices.length - 1; i >= 0; i--) {\n rule.declarations.splice(varNameIndices[i], 1);\n }\n }\n });\n\n // Restore persisted user values\n Object.keys(variableStore.user).forEach(key => {\n map[key] = variableStore.user[key];\n });\n\n // Handle variables defined in settings.variables\n if (Object.keys(settings.variables).length) {\n const newRule = {\n declarations: [],\n selectors : [':root'],\n type : 'rule'\n };\n\n Object.keys(settings.variables).forEach(key => {\n // Convert all property names to leading '--' style\n const prop = `--${key.replace(/^-+/, '')}`;\n const value = settings.variables[key];\n\n // Persist settings.variables values\n if (settings.persist) {\n variableStore.user[prop] = value;\n }\n\n // Update map value with settings.variables value\n if (map[prop] !== value) {\n map[prop] = value;\n\n // Add new declaration to newRule\n newRule.declarations.push({\n type : 'declaration',\n property: prop,\n value : value\n });\n }\n });\n\n // Append new :root ruleset\n if (settings.preserve && newRule.declarations.length) {\n cssTree.stylesheet.rules.push(newRule);\n }\n }\n\n // Resolve variables\n walkCss(cssTree.stylesheet, function(declarations, node) {\n let decl;\n let resolvedValue;\n let value;\n\n for (let i = 0; i < declarations.length; i++) {\n decl = declarations[i];\n value = decl.value;\n\n // skip comments\n if (decl.type !== 'declaration') {\n continue;\n }\n\n // skip values that don't contain variable functions\n if (!value || value.indexOf(VAR_FUNC_IDENTIFIER + '(') === -1) {\n continue;\n }\n\n resolvedValue = resolveValue(value, map, settings);\n\n if (resolvedValue !== decl.value) {\n if (!settings.preserve) {\n decl.value = resolvedValue;\n }\n else {\n declarations.splice(i, 0, {\n type : decl.type,\n property: decl.property,\n value : resolvedValue\n });\n\n // skip ahead of preserved declaration\n i++;\n }\n }\n }\n });\n\n // Fix nested calc() values\n if (settings.fixNestedCalc) {\n fixNestedCalc(cssTree.stylesheet.rules);\n }\n\n // Return CSS string\n return stringifyCss(cssTree);\n}\n\n\n// Functions (Private)\n// =============================================================================\n/**\n * Filters rules recursively, retaining only declarations that contain either a\n * CSS variable definition (property) or function (value). Maintains all\n * declarations for @font-face and @keyframes rules that contain a CSS\n * definition or function.\n *\n * @param {array} rules\n * @returns {array}\n */\nfunction filterVars(rules) {\n return rules.filter(rule => {\n // Rule, @font-face, @host, @page\n if (rule.declarations) {\n const declArray = rule.declarations.filter(d => {\n const hasVarProp = d.property && d.property.indexOf(VAR_PROP_IDENTIFIER) === 0;\n const hasVarVal = d.value && d.value.indexOf(VAR_FUNC_IDENTIFIER + '(') > -1;\n\n return hasVarProp || hasVarVal;\n });\n\n // For most rule types the filtered declarations should be applied.\n // @font-face declaratons are unique and require all declarations to\n // be retained if any declaration contains a CSS variable definition\n // or value.\n if (rule.type !== 'font-face') {\n rule.declarations = declArray;\n }\n\n return Boolean(declArray.length);\n }\n // @keyframes\n else if (rule.keyframes) {\n // @keyframe rules require all declarations to be retained if any\n // declaration contains a CSS variable definition or value.\n return Boolean(rule.keyframes.filter(k =>\n Boolean(k.declarations.filter(d => {\n const hasVarProp = d.property && d.property.indexOf(VAR_PROP_IDENTIFIER) === 0;\n const hasVarVal = d.value && d.value.indexOf(VAR_FUNC_IDENTIFIER + '(') > -1;\n\n return hasVarProp || hasVarVal;\n }).length)\n ).length);\n }\n // @document, @media, @supports\n else if (rule.rules) {\n rule.rules = filterVars(rule.rules).filter(r => r.declarations && r.declarations.length);\n\n return Boolean(rule.rules.length);\n }\n\n return true;\n });\n}\n\n/**\n * Removes nested calc keywords for legacy browser compatibility.\n * Example: calc(1 + calc(2 + calc(3 + 3))) => calc(1 + (2 + (3 + 3)))\n *\n * @param {array} rules\n */\nfunction fixNestedCalc(rules) {\n const reCalcExp = /(-[a-z]+-)?calc\\(/; // Match \"calc(\" or \"-vendor-calc(\"\n\n rules.forEach(rule => {\n if (rule.declarations) {\n rule.declarations.forEach(decl => {\n let oldValue = decl.value;\n let newValue = '';\n\n while (reCalcExp.test(oldValue)) {\n const rootCalc = balanced('calc(', ')', oldValue || '');\n\n oldValue = oldValue.slice(rootCalc.end);\n\n while (reCalcExp.test(rootCalc.body)) {\n const nestedCalc = balanced(reCalcExp, ')', rootCalc.body);\n\n rootCalc.body = `${nestedCalc.pre}(${nestedCalc.body})${nestedCalc.post}`;\n }\n\n newValue += `${rootCalc.pre}calc(${rootCalc.body}`;\n newValue += !reCalcExp.test(oldValue) ? `)${rootCalc.post}` : '';\n }\n\n decl.value = newValue || decl.value;\n });\n }\n });\n}\n\n/**\n * Resolves CSS var() function(s) with `map` data or fallback value(s). Returns\n * original `value` if unable to resolve.\n *\n * @param {string} value String containing CSS var() functions to resolve\n * @param {object} map CSS custom property key/values\n * @param {object} settings Settings object passed from transformVars()\n * @param {string} [__recursiveFallback] Fallback when unable to resolve CSS\n * var() function to a map or fallback value. Allows restoring\n * original var() function from recursive resolveValue() calls.\n * @return {string} CSS value with var() function(s) resolved to map or fallback\n * value.\n *\n * @example\n *\n * resolveValue('10px var(--x) 30px', {'--x':'20px'}, {...settings});\n * // => '10px 20px 30px'\n *\n * resolveValue('10px', {}, {...settings});\n * // => '10px'\n */\nfunction resolveValue(value, map, settings = {}, __recursiveFallback) {\n const varFuncData = balanced('var(', ')', value);\n const warningIntro = 'CSS transform warning:';\n\n /**\n * Resolves contents of CSS custom property function\n *\n * @param {string} value String containing contents of CSS var() function\n * @returns {string}\n *\n * @example\n *\n * resolveFunc('--x, var(--y, green)')\n * // => map['--x'] or map['--y'] or 'green'\n *\n * resolveFunc('--fail')\n * // => 'var(--fail)' when map['--fail'] does not exist\n */\n function resolveFunc(value) {\n const name = value.split(',')[0];\n const fallback = (value.match(/(?:\\s*,\\s*){1}(.*)?/) || [])[1];\n const match = map.hasOwnProperty(name) ? String(map[name]) : undefined;\n const replacement = match || (fallback ? String(fallback) : undefined);\n const unresolvedFallback = __recursiveFallback || value;\n\n if (!match) {\n settings.onWarning(`${warningIntro} variable \"${name}\" is undefined`);\n }\n\n if (replacement && replacement !== 'undefined' && replacement.length > 0) {\n return resolveValue(replacement, map, settings, unresolvedFallback);\n }\n else {\n return `var(${unresolvedFallback})`;\n }\n }\n\n if (!varFuncData) {\n if (value.indexOf('var(') !== -1) {\n settings.onWarning(`${warningIntro} missing closing \")\" in the value \"${value}\"`);\n }\n\n return value;\n }\n else if (varFuncData.body.trim().length === 0) {\n settings.onWarning(`${warningIntro} var() must contain a non-whitespace string`);\n\n return value;\n }\n else {\n return (\n varFuncData.pre\n + resolveFunc(varFuncData.body)\n + resolveValue(varFuncData.post, map, settings)\n );\n }\n}\n\n\n// Exports\n// =============================================================================\nexport default transformVars;\nexport { variableStore };","import cssVars from 'css-vars-ponyfill'\ncssVars()\n\n// localStorage wrapper\nfunction initLocalStorage (options) {\n function getItem () {\n return JSON.parse(localStorage.getItem(options.key))\n }\n function setItem (value) {\n localStorage.setItem(options.key, JSON.stringify(value))\n }\n if (localStorage.getItem(options.key) === null) {\n setItem(options.defaultValue) // set default\n }\n if (options.onUpdate) options.onUpdate(getItem()) // set value on pageload\n options.get = getItem\n options.set = (value) => {\n setItem(value)\n return options\n }\n options.update = () => {\n if (options.onUpdate) options.onUpdate(getItem())\n return options\n }\n // detect updates from other tabs\n window.addEventListener('storage', (event) => {\n console.log('stor', event)\n if (event.key === options.key && options.onUpdate) options.onUpdate(getItem())\n }, false)\n return options\n}\n\nlet autoList\nconst autoListCheckbox = document.querySelector('#auto-list-checkbox')\nconst autoListSetting = initLocalStorage({\n key: 'auto-list',\n defaultValue: false,\n onUpdate: (newAutoListSetting) => {\n if (newAutoListSetting === true) {\n autoList = true\n if (autoListCheckbox.checked === false) autoListCheckbox.checked = true\n } else {\n autoList = false\n if (autoListCheckbox.checked === true) autoListCheckbox.checked = false\n }\n }\n})\nautoListCheckbox.addEventListener('change', (e) => {\n if (autoListCheckbox.checked) autoListSetting.set(true).update()\n else autoListSetting.set(false).update()\n})\n\nimport Quill from '~/lib/quill.js'\nimport Delta from 'quill-delta';\nwindow.quill = new Quill(document.querySelector('#note'), {\n modules: {\n toolbar: [\n [{header: [1, 2, false]}],\n ['bold', 'italic', 'underline', 'strike'],\n [{list: 'bullet'}, {list: 'ordered'}],\n [{ 'align': [] }],\n ['link'],\n ['clean']\n ],\n keyboard: {\n bindings: {\n 'list autofill': {\n key: ' ',\n shiftKey: null,\n collapsed: true,\n format: {\n list: false,\n 'code-block': false,\n blockquote: false,\n header: false,\n table: false,\n },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler(range, context) {\n if (!autoList) return true\n // this is part of the default handler, but causes an error for some reason:\n // if (this.quill.scroll.query('list') == null) return true;\n const { length } = context.prefix;\n const [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]':\n case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':\n case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n const delta = new Delta()\n .retain(range.index - offset)\n .delete(length + 1)\n .retain(line.length() - 2 - offset)\n .retain(1, { list: value });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n return false;\n },\n },\n },\n },\n // toolbar: { container: '#toolbar-container' },\n magicUrl: true,\n history: {\n maxStack: 1000\n }\n },\n // formats: ['header'],\n theme: 'snow',\n placeholder: 'Maybe I\\'ll have a todo list here?'\n})\n\nconst delta = initLocalStorage({\n key: 'quill-delta',\n defaultValue: { ops: [] },\n onUpdate: (delta) => {\n quill.setContents(delta, 'silent')\n }\n})\n\nquill.on('text-change', () => {\n delta.set(quill.getContents())\n})\n\n// add old taskler tasks into quill\nif (localStorage.getItem('items') !== null) {\n const items = JSON.parse(localStorage.getItem('items'))\n const delta = quill.getContents()\n if ((items.repeatingTasks && items.repeatingTasks.length) || (items.tasks && items.tasks.length)) {\n delta.ops.push({\n insert: \"Looks like you've used Taskler before. I imported your old tasks.\\n\\n\"\n })\n }\n if (items.repeatingTasks && items.repeatingTasks.length) {\n for (let i = 0; i < items.repeatingTasks.length; i++) {\n delta.ops.push({\n insert: `Repeating task ${i + 1}:\\n`,\n attributes: { bold: true }\n })\n delta.ops.push({\n insert: items.repeatingTasks[i].text + '\\n\\n'\n })\n }\n }\n if (items.tasks && items.tasks.length) {\n for (let i = 0; i < items.tasks.length; i++) {\n delta.ops.push({\n insert: `Task ${i + 1}:\\n`,\n attributes: { bold: true }\n })\n delta.ops.push({\n insert: items.tasks[i] + '\\n\\n'\n })\n }\n }\n quill.setContents(delta)\n localStorage.removeItem('items')\n}\n\n// extension icons\nconst body = document.querySelector('body')\nconst isExtension = body.dataset.buildAs === 'extension'\nif (!isExtension) {\n // browser version check:\n // https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser/9851769\n \n // Firefox 1.0+\n const isFirefox = typeof InstallTrigger !== 'undefined';\n // Chrome 1-71\n const isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);\n\n if (isChrome) document.getElementById('chrome-extension-icon').classList.add('visible')\n if (isFirefox) document.getElementById('firefox-extension-icon').classList.add('visible')\n}\n\nconst darkModeCheckbox = document.querySelector('#dark-mode-checkbox')\nconst darkMode = initLocalStorage({\n key: 'dark-mode',\n defaultValue: false,\n onUpdate: (newDarkMode) => {\n if (newDarkMode === false) {\n // body.classList.remove('dark-mode')\n // body.classList.add('light-mode')\n cssVars({ variables: {\n 'bgcolor': '#fafafa',\n 'bgcolor-overlay': '#F0F0F0',\n 'color': '#272727',\n\n 'logo-dark': '#272727',\n 'logo-mid': '#424242',\n 'logo-light': '#696969',\n }})\n if (darkModeCheckbox.checked === true) darkModeCheckbox.checked = false\n } else if (newDarkMode === true) {\n // body.classList.remove('light-mode')\n // body.classList.add('dark-mode')\n cssVars({ variables: {\n 'bgcolor': '#272727',\n 'bgcolor-overlay': '#313131',\n 'color': '#fafafa',\n\n 'logo-dark': '#fafafa',\n 'logo-mid': '#bdbdbd',\n 'logo-light': '#969696',\n }})\n if (darkModeCheckbox.checked === false) darkModeCheckbox.checked = true\n }\n }\n})\ndarkModeCheckbox.addEventListener('change', (e) => {\n if (darkModeCheckbox.checked) darkMode.set(true).update()\n else darkMode.set(false).update()\n})\n\nconst toolbarCheckbox = document.querySelector('#toolbar-checkbox')\nconst toolbar = document.querySelector('.ql-toolbar')\nconst toolbarSetting = initLocalStorage({\n key: 'toolbar',\n defaultValue: false,\n onUpdate: (newToolbarSetting) => {\n if (newToolbarSetting === true) {\n toolbar.classList.add('visible')\n if (toolbarCheckbox.checked === false) toolbarCheckbox.checked = true\n } else {\n toolbar.classList.remove('visible')\n if (toolbarCheckbox.checked === true) toolbarCheckbox.checked = false\n }\n }\n})\ntoolbarCheckbox.addEventListener('change', (e) => {\n if (toolbarCheckbox.checked) toolbarSetting.set(true).update()\n else toolbarSetting.set(false).update()\n})\n\n// settingsDialog\nconst settingsIcon = document.querySelector('.settings')\nconst dialog = document.querySelector('.settings-dialog')\nsettingsIcon.addEventListener('click', () => {\n dialog.classList.add('visible')\n})\n\ndocument.addEventListener('click', function (e) {\n if (e.target.classList.contains('dialog-container')) {\n var dialog = e.target\n dialog.classList.remove('visible')\n }\n})\n\n// enable transitions\nwindow.addEventListener('load', () => {\n body.classList.remove('no-transition')\n})\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Parchment\"] = factory();\n\telse\n\t\troot[\"Parchment\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 3c334e19bc1efdeb80ab","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/registry.ts\n// module id = 0\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../registry\");\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/attributor/attributor.ts\n// module id = 1\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = require(\"../../collection/linked-list\");\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/abstract/container.ts\n// module id = 2\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"../../attributor/attributor\");\nvar store_1 = require(\"../../attributor/store\");\nvar container_1 = require(\"./container\");\nvar Registry = require(\"../../registry\");\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/abstract/format.ts\n// module id = 3\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n var _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/abstract/leaf.ts\n// module id = 4\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../../registry\");\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent_1 = Registry.create(this.statics.scope);\n blot.wrap(parent_1);\n parent_1.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/abstract/shadow.ts\n// module id = 5\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nvar class_1 = require(\"./class\");\nvar style_1 = require(\"./style\");\nvar Registry = require(\"../registry\");\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/attributor/store.ts\n// module id = 6\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/attributor/class.ts\n// module id = 7\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/attributor/style.ts\n// module id = 8\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = require(\"./blot/abstract/container\");\nvar format_1 = require(\"./blot/abstract/format\");\nvar leaf_1 = require(\"./blot/abstract/leaf\");\nvar scroll_1 = require(\"./blot/scroll\");\nvar inline_1 = require(\"./blot/inline\");\nvar block_1 = require(\"./blot/block\");\nvar embed_1 = require(\"./blot/embed\");\nvar text_1 = require(\"./blot/text\");\nvar attributor_1 = require(\"./attributor/attributor\");\nvar class_1 = require(\"./attributor/class\");\nvar style_1 = require(\"./attributor/style\");\nvar store_1 = require(\"./attributor/store\");\nvar Registry = require(\"./registry\");\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/parchment.ts\n// module id = 10\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length_1 = cur.length();\n if (index < length_1 ||\n (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length_1;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/collection/linked-list.ts\n// module id = 11\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = require(\"./abstract/container\");\nvar Registry = require(\"../registry\");\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/scroll.ts\n// module id = 12\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/inline.ts\n// module id = 13\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/block.ts\n// module id = 14\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = require(\"./abstract/leaf\");\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/embed.ts\n// module id = 15\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = require(\"./abstract/leaf\");\nvar Registry = require(\"../registry\");\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/blot/text.ts\n// module id = 16\n// module chunks = 0","let elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n let _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function(token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position){\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function(searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n","/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","var equal = require('deep-equal');\nvar extend = require('extend');\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\nIterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n};\n\n\nmodule.exports = lib;\n","var diff = require('fast-diff');\nvar equal = require('deep-equal');\nvar extend = require('extend');\nvar op = require('./op');\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n","import Parchment from 'parchment';\n\n\nclass Break extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n insertInto(parent, ref) {\n if (parent.children.length === 0) {\n super.insertInto(parent, ref);\n } else {\n this.remove();\n }\n }\n\n length() {\n return 0;\n }\n\n value() {\n return '';\n }\n}\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\n\nexport default Break;\n","import Parchment from 'parchment';\n\nclass TextBlot extends Parchment.Text { }\n\nexport default TextBlot;\n","import Text from './text';\nimport Parchment from 'parchment';\n\n\nclass Inline extends Parchment.Inline {\n static compare(self, other) {\n let selfIndex = Inline.order.indexOf(self);\n let otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n\n formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && Parchment.query(name, Parchment.Scope.BLOT)) {\n let blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n super.formatAt(index, length, name, value);\n }\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.parent instanceof Inline &&\n Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n let parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n}\nInline.allowedChildren = [Inline, Parchment.Embed, Text];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = [\n 'cursor', 'inline', // Must be lower\n 'underline', 'strike', 'italic', 'bold', 'script',\n 'link', 'code' // Must be higher\n];\n\n\nexport default Inline;\n","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Break from './break';\nimport Inline from './inline';\nimport TextBlot from './text';\n\n\nconst NEWLINE_LENGTH = 1;\n\n\nclass BlockEmbed extends Parchment.Embed {\n attach() {\n super.attach();\n this.attributes = new Parchment.Attributor.Store(this.domNode);\n }\n\n delta() {\n return new Delta().insert(this.value(), extend(this.formats(), this.attributes.values()));\n }\n\n format(name, value) {\n let attribute = Parchment.query(name, Parchment.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n\n formatAt(index, length, name, value) {\n this.format(name, value);\n }\n\n insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n let block = Parchment.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n super.insertAt(index, value, def);\n }\n }\n}\nBlockEmbed.scope = Parchment.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nclass Block extends Parchment.Block {\n constructor(domNode) {\n super(domNode);\n this.cache = {};\n }\n\n delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(Parchment.Leaf).reduce((delta, leaf) => {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new Delta()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n\n deleteAt(index, length) {\n super.deleteAt(index, length);\n this.cache = {};\n }\n\n formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n\n insertAt(index, value, def) {\n if (def != null) return super.insertAt(index, value, def);\n if (value.length === 0) return;\n let lines = value.split('\\n');\n let text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n super.insertAt(Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n let block = this;\n lines.reduce(function(index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n\n insertBefore(blot, ref) {\n let head = this.children.head;\n super.insertBefore(blot, ref);\n if (head instanceof Break) {\n head.remove();\n }\n this.cache = {};\n }\n\n length() {\n if (this.cache.length == null) {\n this.cache.length = super.length() + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n\n moveChildren(target, ref) {\n super.moveChildren(target, ref);\n this.cache = {};\n }\n\n optimize(context) {\n super.optimize(context);\n this.cache = {};\n }\n\n path(index) {\n return super.path(index, true);\n }\n\n removeChild(child) {\n super.removeChild(child);\n this.cache = {};\n }\n\n split(index, force = false) {\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n let clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n let next = super.split(index, force);\n this.cache = {};\n return next;\n }\n }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [Inline, Parchment.Embed, TextBlot];\n\n\nfunction bubbleFormats(blot, formats = {}) {\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = extend(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\n\nexport { bubbleFormats, BlockEmbed, Block as default };\n","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Inline from '../blots/inline';\nimport TextBlot from '../blots/text';\n\n\nclass Code extends Inline {}\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\n\nclass CodeBlock extends Block {\n static create(value) {\n let domNode = super.create(value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n\n static formats() {\n return true;\n }\n\n delta() {\n let text = this.domNode.textContent;\n if (text.endsWith('\\n')) { // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce((delta, frag) => {\n return delta.insert(frag).insert('\\n', this.formats());\n }, new Delta());\n }\n\n format(name, value) {\n if (name === this.statics.blotName && value) return;\n let [text, ] = this.descendant(TextBlot, this.length() - 1);\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n super.format(name, value);\n }\n\n formatAt(index, length, name, value) {\n if (length === 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK) == null ||\n (name === this.statics.blotName && value === this.statics.formats(this.domNode))) {\n return;\n }\n let nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n let prevNewline = this.newlineIndex(index, true) + 1;\n let isolateLength = nextNewline - prevNewline + 1;\n let blot = this.isolate(prevNewline, isolateLength);\n let next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n\n insertAt(index, value, def) {\n if (def != null) return;\n let [text, offset] = this.descendant(TextBlot, index);\n text.insertAt(offset, value);\n }\n\n length() {\n let length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n\n newlineIndex(searchIndex, reverse = false) {\n if (!reverse) {\n let offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n\n optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(Parchment.create('text', '\\n'));\n }\n super.optimize(context);\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n super.replace(target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function(node) {\n let blot = Parchment.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof Parchment.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n}\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\n\nexport { Code, CodeBlock as default };\n","import Parchment from 'parchment';\nimport TextBlot from './text';\n\n\nclass Cursor extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n constructor(domNode, selection) {\n super(domNode);\n this.selection = selection;\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n this._length = 0;\n }\n\n detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n\n format(name, value) {\n if (this._length !== 0) {\n return super.format(name, value);\n }\n let target = this, index = 0;\n while (target != null && target.statics.scope !== Parchment.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n\n index(node, offset) {\n if (node === this.textNode) return 0;\n return super.index(node, offset);\n }\n\n length() {\n return this._length;\n }\n\n position() {\n return [this.textNode, this.textNode.data.length];\n }\n\n remove() {\n super.remove();\n this.parent = null;\n }\n\n restore() {\n if (this.selection.composing || this.parent == null) return;\n let textNode = this.textNode;\n let range = this.selection.getNativeRange();\n let restoreText, start, end;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n [restoreText, start, end] = [textNode, range.start.offset, range.end.offset];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n let text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof TextBlot) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(Parchment.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n [start, end] = [start, end].map(function(offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n\n update(mutations, context) {\n if (mutations.some((mutation) => {\n return mutation.type === 'characterData' && mutation.target === this.textNode;\n })) {\n let range = this.restore();\n if (range) context.range = range;\n }\n }\n\n value() {\n return '';\n }\n}\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = \"\\uFEFF\"; // Zero width no break space\n\n\nexport default Cursor;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","import Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport CodeBlock from '../formats/code';\nimport CursorBlot from '../blots/cursor';\nimport Block, { bubbleFormats } from '../blots/block';\nimport Break from '../blots/break';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\n\n\nconst ASCII = /^[ -~]*$/;\n\n\nclass Editor {\n constructor(scroll) {\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n applyDelta(delta) {\n let consumeNextNewline = false;\n this.scroll.update();\n let scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce((index, op) => {\n let length = op.retain || op.delete || op.insert.length || 1;\n let attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n let text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n this.scroll.insertAt(index, text);\n let [line, offset] = this.scroll.line(index);\n let formats = extend({}, bubbleFormats(line));\n if (line instanceof Block) {\n let [leaf, ] = line.descendant(Parchment.Leaf, offset);\n formats = extend(formats, bubbleFormats(leaf));\n }\n attributes = DeltaOp.attributes.diff(formats, attributes) || {};\n } else if (typeof op.insert === 'object') {\n let key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach((name) => {\n this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce((index, op) => {\n if (typeof op.delete === 'number') {\n this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n\n deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new Delta().retain(index).delete(length));\n }\n\n formatLine(index, length, formats = {}) {\n this.scroll.update();\n Object.keys(formats).forEach((format) => {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n let lines = this.scroll.lines(index, Math.max(length, 1));\n let lengthRemaining = length;\n lines.forEach((line) => {\n let lineLength = line.length();\n if (!(line instanceof CodeBlock)) {\n line.format(format, formats[format]);\n } else {\n let codeIndex = index - line.offset(this.scroll);\n let codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n formatText(index, length, formats = {}) {\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n\n getDelta() {\n return this.scroll.lines().reduce((delta, line) => {\n return delta.concat(line.delta());\n }, new Delta());\n }\n\n getFormat(index, length = 0) {\n let lines = [], leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function(path) {\n let [blot, ] = path;\n if (blot instanceof Block) {\n lines.push(blot);\n } else if (blot instanceof Parchment.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(Parchment.Leaf, index, length);\n }\n let formatsArr = [lines, leaves].map(function(blots) {\n if (blots.length === 0) return {};\n let formats = bubbleFormats(blots.shift());\n while (Object.keys(formats).length > 0) {\n let blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats(bubbleFormats(blot), formats);\n }\n return formats;\n });\n return extend.apply(extend, formatsArr);\n }\n\n getText(index, length) {\n return this.getContents(index, length).filter(function(op) {\n return typeof op.insert === 'string';\n }).map(function(op) {\n return op.insert;\n }).join('');\n }\n\n insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new Delta().retain(index).insert({ [embed]: value }));\n }\n\n insertText(index, text, formats = {}) {\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).insert(text, clone(formats)));\n }\n\n isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n let block = this.scroll.children.head;\n if (block.statics.blotName !== Block.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof Break;\n }\n\n removeFormat(index, length) {\n let text = this.getText(index, length);\n let [line, offset] = this.scroll.line(index + length);\n let suffixLength = 0, suffix = new Delta();\n if (line != null) {\n if (!(line instanceof CodeBlock)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n let contents = this.getContents(index, length + suffixLength);\n let diff = contents.diff(new Delta().insert(text).concat(suffix));\n let delta = new Delta().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n\n update(change, mutations = [], cursorIndex = undefined) {\n let oldDelta = this.delta;\n if (mutations.length === 1 &&\n mutations[0].type === 'characterData' &&\n mutations[0].target.data.match(ASCII) &&\n Parchment.find(mutations[0].target)) {\n // Optimization for character changes\n let textBlot = Parchment.find(mutations[0].target);\n let formats = bubbleFormats(textBlot);\n let index = textBlot.offset(this.scroll);\n let oldValue = mutations[0].oldValue.replace(CursorBlot.CONTENTS, '');\n let oldText = new Delta().insert(oldValue);\n let newText = new Delta().insert(textBlot.value());\n let diffDelta = new Delta().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function(delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new Delta());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !equal(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n}\n\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function(merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function(delta, op) {\n if (op.insert === 1) {\n let attributes = clone(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = clone(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n let text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new Delta());\n}\n\n\nexport default Editor;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","let levels = ['error', 'warn', 'log', 'info'];\nlet level = 'warn';\n\nfunction debug(method, ...args) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n console[method](...args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function(logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function(newLevel) {\n level = newLevel;\n};\n\n\nexport default namespace;\n","import EventEmitter from 'eventemitter3';\nimport logger from './logger';\n\nlet debug = logger('quill:events');\n\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function(eventName) {\n document.addEventListener(eventName, (...args) => {\n [].slice.call(document.querySelectorAll('.ql-container')).forEach((node) => {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n node.__quill.emitter.handleDOM(...args);\n }\n });\n });\n});\n\n\nclass Emitter extends EventEmitter {\n constructor() {\n super();\n this.listeners = {};\n this.on('error', debug.error);\n }\n\n emit() {\n debug.log.apply(debug, arguments);\n super.emit.apply(this, arguments);\n }\n\n handleDOM(event, ...args) {\n (this.listeners[event.type] || []).forEach(function({ node, handler }) {\n if (event.target === node || node.contains(event.target)) {\n handler(event, ...args);\n }\n });\n }\n\n listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node, handler })\n }\n}\n\nEmitter.events = {\n EDITOR_CHANGE : 'editor-change',\n SCROLL_BEFORE_UPDATE : 'scroll-before-update',\n SCROLL_OPTIMIZE : 'scroll-optimize',\n SCROLL_UPDATE : 'scroll-update',\n SELECTION_CHANGE : 'selection-change',\n TEXT_CHANGE : 'text-change'\n};\nEmitter.sources = {\n API : 'api',\n SILENT : 'silent',\n USER : 'user'\n};\n\n\nexport default Emitter;\n","class Module {\n constructor(quill, options = {}) {\n this.quill = quill;\n this.options = options;\n }\n}\nModule.DEFAULTS = {};\n\n\nexport default Module;\n","import Parchment from 'parchment';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport Emitter from './emitter';\nimport logger from './logger';\n\nlet debug = logger('quill:selection');\n\n\nclass Range {\n constructor(index, length = 0) {\n this.index = index;\n this.length = length;\n }\n}\n\n\nclass Selection {\n constructor(scroll, emitter) {\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = Parchment.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, () => {\n if (!this.mouseDown) {\n setTimeout(this.update.bind(this, Emitter.sources.USER), 1);\n }\n });\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type, delta) => {\n if (type === Emitter.events.TEXT_CHANGE && delta.length() > 0) {\n this.update(Emitter.sources.SILENT);\n }\n });\n this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n if (!this.hasFocus()) return;\n let native = this.getNativeRange();\n if (native == null) return;\n if (native.start.node === this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n this.emitter.once(Emitter.events.SCROLL_UPDATE, () => {\n try {\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(Emitter.events.SCROLL_OPTIMIZE, (mutations, context) => {\n if (context.range) {\n const { startNode, startOffset, endNode, endOffset } = context.range;\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(Emitter.sources.SILENT);\n }\n\n handleComposition() {\n this.root.addEventListener('compositionstart', () => {\n this.composing = true;\n });\n this.root.addEventListener('compositionend', () => {\n this.composing = false;\n if (this.cursor.parent) {\n const range = this.cursor.restore();\n if (!range) return;\n setTimeout(() => {\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n\n handleDragging() {\n this.emitter.listenDOM('mousedown', document.body, () => {\n this.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, () => {\n this.mouseDown = false;\n this.update(Emitter.sources.USER);\n });\n }\n\n focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n\n format(format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n this.scroll.update();\n let nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || Parchment.query(format, Parchment.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n let blot = Parchment.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof Parchment.Leaf) {\n let after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n\n getBounds(index, length = 0) {\n let scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n let node, [leaf, offset] = this.scroll.leaf(index);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n let range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n [leaf, offset] = this.scroll.leaf(index + length);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n let side = 'left';\n let rect;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n\n getNativeRange() {\n let selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n let nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n let range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n\n getRange() {\n let normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n let range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n\n hasFocus() {\n return document.activeElement === this.root;\n }\n\n normalizedToRange(range) {\n let positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n let indexes = positions.map((position) => {\n let [node, offset] = position;\n let blot = Parchment.find(node, true);\n let index = blot.offset(this.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof Parchment.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n let end = Math.min(Math.max(...indexes), this.scroll.length() - 1);\n let start = Math.min(end, ...indexes);\n return new Range(start, end-start);\n }\n\n normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) ||\n (!nativeRange.collapsed && !contains(this.root, nativeRange.endContainer))) {\n return null;\n }\n let range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function(position) {\n let node = position.node, offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n\n rangeToNative(range) {\n let indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n let args = [];\n let scrollLength = this.scroll.length();\n indexes.forEach((index, i) => {\n index = Math.min(scrollLength - 1, index);\n let node, [leaf, offset] = this.scroll.leaf(index);\n [node, offset] = leaf.position(offset, i !== 0);\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n\n scrollIntoView(scrollingContainer) {\n let range = this.lastRange;\n if (range == null) return;\n let bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n let limit = this.scroll.length()-1;\n let [first, ] = this.scroll.line(Math.min(range.index, limit));\n let last = first;\n if (range.length > 0) {\n [last, ] = this.scroll.line(Math.min(range.index + range.length, limit));\n }\n if (first == null || last == null) return;\n let scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= (scrollBounds.top - bounds.top);\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += (bounds.bottom - scrollBounds.bottom);\n }\n }\n\n setNativeRange(startNode, startOffset, endNode = startNode, endOffset = startOffset, force = false) {\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n let selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n let native = (this.getNativeRange() || {}).native;\n if (native == null || force ||\n startNode !== native.startContainer ||\n startOffset !== native.startOffset ||\n endNode !== native.endContainer ||\n endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n let range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n\n setRange(range, force = false, source = Emitter.sources.API) {\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n let args = this.rangeToNative(range);\n this.setNativeRange(...args, force);\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n\n update(source = Emitter.sources.USER) {\n let oldRange = this.lastRange;\n let [lastRange, nativeRange] = this.getRange();\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!equal(oldRange, this.lastRange)) {\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n let args = [Emitter.events.SELECTION_CHANGE, clone(this.lastRange), clone(oldRange), source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n }\n}\n\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\n\nexport { Range, Selection as default };\n","class Theme {\n constructor(quill, options) {\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n init() {\n Object.keys(this.options.modules).forEach((name) => {\n if (this.modules[name] == null) {\n this.addModule(name);\n }\n });\n }\n\n addModule(name) {\n let moduleClass = this.quill.constructor.import(`modules/${name}`);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n}\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\n\nexport default Theme;\n","import './polyfill';\nimport Delta from 'quill-delta';\nimport Editor from './editor';\nimport Emitter from './emitter';\nimport Module from './module';\nimport Parchment from 'parchment';\nimport Selection, { Range } from './selection';\nimport extend from 'extend';\nimport logger from './logger';\nimport Theme from './theme';\n\nlet debug = logger('quill');\n\n\nclass Quill {\n static debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n logger.level(limit);\n }\n\n static find(node) {\n return node.__quill || Parchment.find(node);\n }\n\n static import(name) {\n if (this.imports[name] == null) {\n debug.error(`Cannot import ${name}. Are you sure it was registered?`);\n }\n return this.imports[name];\n }\n\n static register(path, target, overwrite = false) {\n if (typeof path !== 'string') {\n let name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach((key) => {\n this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn(`Overwriting ${path} with`, target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) &&\n target.blotName !== 'abstract') {\n Parchment.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n\n constructor(container, options = {}) {\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n let html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new Emitter();\n this.scroll = Parchment.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new Editor(this.scroll);\n this.selection = new Selection(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type) => {\n if (type === Emitter.events.TEXT_CHANGE) {\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\n }\n });\n this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n let range = this.selection.lastRange;\n let index = range && range.length === 0 ? range.index : undefined;\n modify.call(this, () => {\n return this.editor.update(null, mutations, index);\n }, source);\n });\n let contents = this.clipboard.convert(`<div class='ql-editor' style=\"white-space: normal;\">${html}<p><br></p></div>`);\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n addContainer(container, refNode = null) {\n if (typeof container === 'string') {\n let className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n\n blur() {\n this.selection.setRange(null);\n }\n\n deleteText(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.deleteText(index, length);\n }, source, index, -1*length);\n }\n\n disable() {\n this.enable(false);\n }\n\n enable(enabled = true) {\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n\n focus() {\n let scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n\n format(name, value, source = Emitter.sources.API) {\n return modify.call(this, () => {\n let range = this.getSelection(true);\n let change = new Delta();\n if (range == null) {\n return change;\n } else if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n change = this.editor.formatLine(range.index, range.length, { [name]: value });\n } else if (range.length === 0) {\n this.selection.format(name, value);\n return change;\n } else {\n change = this.editor.formatText(range.index, range.length, { [name]: value });\n }\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }, source);\n }\n\n formatLine(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n\n formatText(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n\n getBounds(index, length = 0) {\n let bounds;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n let containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n\n getContents(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getContents(index, length);\n }\n\n getFormat(index = this.getSelection(true), length = 0) {\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n\n getIndex(blot) {\n return blot.offset(this.scroll);\n }\n\n getLength() {\n return this.scroll.length();\n }\n\n getLeaf(index) {\n return this.scroll.leaf(index);\n }\n\n getLine(index) {\n return this.scroll.line(index);\n }\n\n getLines(index = 0, length = Number.MAX_VALUE) {\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n\n getModule(name) {\n return this.theme.modules[name];\n }\n\n getSelection(focus = false) {\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n\n getText(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getText(index, length);\n }\n\n hasFocus() {\n return this.selection.hasFocus();\n }\n\n insertEmbed(index, embed, value, source = Quill.sources.API) {\n return modify.call(this, () => {\n return this.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n\n insertText(index, text, name, value, source) {\n let formats;\n [index, , formats, source] = overload(index, 0, name, value, source);\n return modify.call(this, () => {\n return this.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n\n isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n\n off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n\n on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n\n once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n\n pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n\n removeFormat(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.removeFormat(index, length);\n }, source, index);\n }\n\n scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n\n setContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n let length = this.getLength();\n let deleted = this.editor.deleteText(0, length);\n let applied = this.editor.applyDelta(delta);\n let lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof(lastOp.insert) === 'string' && lastOp.insert[lastOp.insert.length-1] === '\\n') {\n this.editor.deleteText(this.getLength() - 1, 1);\n applied.delete(1);\n }\n let ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n\n setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n [index, length, , source] = overload(index, length, source);\n this.selection.setRange(new Range(index, length), source);\n if (source !== Emitter.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n\n setText(text, source = Emitter.sources.API) {\n let delta = new Delta().insert(text);\n return this.setContents(delta, source);\n }\n\n update(source = Emitter.sources.USER) {\n let change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n\n updateContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n return this.editor.applyDelta(delta, source);\n }, source, true);\n }\n}\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = Emitter.events;\nQuill.sources = Emitter.sources;\n// eslint-disable-next-line no-undef\nQuill.version = typeof(QUILL_VERSION) === 'undefined' ? 'dev' : QUILL_VERSION;\n\nQuill.imports = {\n 'delta' : Delta,\n 'parchment' : Parchment,\n 'core/module' : Module,\n 'core/theme' : Theme\n};\n\n\nfunction expandConfig(container, userConfig) {\n userConfig = extend(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = Theme;\n } else {\n userConfig.theme = Quill.import(`themes/${userConfig.theme}`);\n if (userConfig.theme == null) {\n throw new Error(`Invalid theme ${userConfig.theme}. Did you register it?`);\n }\n }\n let themeConfig = extend(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function(config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function(module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n let moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n let moduleConfig = moduleNames.reduce(function(config, name) {\n let moduleClass = Quill.import(`modules/${name}`);\n if (moduleClass == null) {\n debug.error(`Cannot load ${name} module. Are you sure you registered it?`);\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar &&\n userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = extend(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function(key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function(config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === Emitter.sources.USER) {\n return new Delta();\n }\n let range = index == null ? null : this.getSelection();\n let oldDelta = this.editor.delta;\n let change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, Emitter.sources.SILENT);\n }\n if (change.length() > 0) {\n let args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n let formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if (typeof name === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || Emitter.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n let start, end;\n if (index instanceof Delta) {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n return index.transformPosition(pos, source !== Emitter.sources.USER);\n });\n } else {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n if (pos < index || (pos === index && source === Emitter.sources.USER)) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n }\n return new Range(start, end - start);\n}\n\n\nexport { expandConfig, overload, Quill as default };\n","import Parchment from 'parchment';\nimport Block, { BlockEmbed } from './block';\n\n\nclass Container extends Parchment.Container { }\nContainer.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Container;\n","import Parchment from 'parchment';\nimport TextBlot from './text';\n\nconst GUARD_TEXT = \"\\uFEFF\";\n\n\nclass Embed extends Parchment.Embed {\n constructor(node) {\n super(node);\n this.contentNode = document.createElement('span');\n this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(this.domNode.childNodes).forEach((childNode) => {\n this.contentNode.appendChild(childNode);\n });\n this.leftGuard = document.createTextNode(GUARD_TEXT);\n this.rightGuard = document.createTextNode(GUARD_TEXT);\n this.domNode.appendChild(this.leftGuard);\n this.domNode.appendChild(this.contentNode);\n this.domNode.appendChild(this.rightGuard);\n }\n\n index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return super.index(node, offset);\n }\n\n restore(node) {\n let range, textNode;\n let text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof TextBlot) {\n let prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof TextBlot) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n }\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n\n update(mutations, context) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'characterData' &&\n (mutation.target === this.leftGuard || mutation.target === this.rightGuard)) {\n let range = this.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n}\n\n\nexport default Embed;\n","import Parchment from 'parchment';\nimport Emitter from '../core/emitter';\nimport Block, { BlockEmbed } from './block';\nimport Break from './break';\nimport CodeBlock from '../formats/code';\nimport Container from './container';\n\n\nfunction isLine(blot) {\n return (blot instanceof Block || blot instanceof BlockEmbed);\n}\n\n\nclass Scroll extends Parchment.Scroll {\n constructor(domNode, config) {\n super(domNode);\n this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n this.whitelist = config.whitelist.reduce(function(whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n this.domNode.addEventListener('DOMNodeInserted', function() {});\n this.optimize();\n this.enable();\n }\n\n batchStart() {\n this.batch = true;\n }\n\n batchEnd() {\n this.batch = false;\n this.optimize();\n }\n\n deleteAt(index, length) {\n let [first, offset] = this.line(index);\n let [last, ] = this.line(index + length);\n super.deleteAt(index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof BlockEmbed || last instanceof BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof CodeBlock) {\n let newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof CodeBlock) {\n let newlineIndex = last.newlineIndex(0);\n if (newlineIndex > -1) {\n last.split(newlineIndex + 1);\n }\n }\n let ref = last.children.head instanceof Break ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n\n enable(enabled = true) {\n this.domNode.setAttribute('contenteditable', enabled);\n }\n\n formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n super.formatAt(index, length, format, value);\n this.optimize();\n }\n\n insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || Parchment.query(value, Parchment.Scope.BLOCK) == null) {\n let blot = Parchment.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n let embed = Parchment.create(value, def);\n this.appendChild(embed);\n }\n } else {\n super.insertAt(index, value, def);\n }\n this.optimize();\n }\n\n insertBefore(blot, ref) {\n if (blot.statics.scope === Parchment.Scope.INLINE_BLOT) {\n let wrapper = Parchment.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n super.insertBefore(blot, ref);\n }\n\n leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n\n line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n\n lines(index = 0, length = Number.MAX_VALUE) {\n let getLines = (blot, index, length) => {\n let lines = [], lengthLeft = length;\n blot.children.forEachAt(index, length, function(child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof Parchment.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n\n optimize(mutations = [], context = {}) {\n if (this.batch === true) return;\n super.optimize(mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n\n path(index) {\n return super.path(index).slice(1); // Exclude self\n }\n\n update(mutations) {\n if (this.batch === true) return;\n let source = Emitter.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n super.update(mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n }\n }\n}\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Scroll;\n","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nlet AlignAttribute = new Parchment.Attributor.Attribute('align', 'align', config);\nlet AlignClass = new Parchment.Attributor.Class('align', 'ql-align', config);\nlet AlignStyle = new Parchment.Attributor.Style('align', 'text-align', config);\n\nexport { AlignAttribute, AlignClass, AlignStyle };\n","import Parchment from 'parchment';\n\nclass ColorAttributor extends Parchment.Attributor.Style {\n value(domNode) {\n let value = super.value(domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function(component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n}\n\nlet ColorClass = new Parchment.Attributor.Class('color', 'ql-color', {\n scope: Parchment.Scope.INLINE\n});\nlet ColorStyle = new ColorAttributor('color', 'color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { ColorAttributor, ColorClass, ColorStyle };\n","import Parchment from 'parchment';\nimport { ColorAttributor } from './color';\n\nlet BackgroundClass = new Parchment.Attributor.Class('background', 'ql-bg', {\n scope: Parchment.Scope.INLINE\n});\nlet BackgroundStyle = new ColorAttributor('background', 'background-color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { BackgroundClass, BackgroundStyle };\n","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nlet DirectionAttribute = new Parchment.Attributor.Attribute('direction', 'dir', config);\nlet DirectionClass = new Parchment.Attributor.Class('direction', 'ql-direction', config);\nlet DirectionStyle = new Parchment.Attributor.Style('direction', 'direction', config);\n\nexport { DirectionAttribute, DirectionClass, DirectionStyle };\n","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nlet FontClass = new Parchment.Attributor.Class('font', 'ql-font', config);\n\nclass FontStyleAttributor extends Parchment.Attributor.Style {\n value(node) {\n return super.value(node).replace(/[\"']/g, '');\n }\n}\n\nlet FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexport { FontStyle, FontClass };\n","import Parchment from 'parchment';\n\nlet SizeClass = new Parchment.Attributor.Class('size', 'ql-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nlet SizeStyle = new Parchment.Attributor.Style('size', 'font-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexport { SizeClass, SizeStyle };\n","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nimport { AlignAttribute, AlignStyle } from '../formats/align';\nimport { BackgroundStyle } from '../formats/background';\nimport CodeBlock from '../formats/code';\nimport { ColorStyle } from '../formats/color';\nimport { DirectionAttribute, DirectionStyle } from '../formats/direction';\nimport { FontStyle } from '../formats/font';\nimport { SizeStyle } from '../formats/size';\n\nlet debug = logger('quill:clipboard');\n\n\nconst DOM_KEY = '__ql-matcher';\n\nconst CLIPBOARD_CONFIG = [\n [Node.TEXT_NODE, matchText],\n [Node.TEXT_NODE, matchNewline],\n ['br', matchBreak],\n [Node.ELEMENT_NODE, matchNewline],\n [Node.ELEMENT_NODE, matchBlot],\n [Node.ELEMENT_NODE, matchSpacing],\n [Node.ELEMENT_NODE, matchAttributor],\n [Node.ELEMENT_NODE, matchStyles],\n ['li', matchIndent],\n ['b', matchAlias.bind(matchAlias, 'bold')],\n ['i', matchAlias.bind(matchAlias, 'italic')],\n ['style', matchIgnore]\n];\n\nconst ATTRIBUTE_ATTRIBUTORS = [\n AlignAttribute,\n DirectionAttribute\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nconst STYLE_ATTRIBUTORS = [\n AlignStyle,\n BackgroundStyle,\n ColorStyle,\n DirectionStyle,\n FontStyle,\n SizeStyle\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\n\nclass Clipboard extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.quill.root.addEventListener('paste', this.onPaste.bind(this));\n this.container = this.quill.addContainer('ql-clipboard');\n this.container.setAttribute('contenteditable', true);\n this.container.setAttribute('tabindex', -1);\n this.matchers = [];\n CLIPBOARD_CONFIG.concat(this.options.matchers).forEach(([selector, matcher]) => {\n if (!options.matchVisual && matcher === matchSpacing) return;\n this.addMatcher(selector, matcher);\n });\n }\n\n addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n\n convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\</g, '><'); // Remove spaces between tags\n return this.convert();\n }\n const formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[CodeBlock.blotName]) {\n const text = this.container.innerText;\n this.container.innerHTML = '';\n return new Delta().insert(text, { [CodeBlock.blotName]: formats[CodeBlock.blotName] });\n }\n let [elementMatchers, textMatchers] = this.prepareMatching();\n let delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new Delta().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n\n dangerouslyPasteHTML(index, html, source = Quill.sources.API) {\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, Quill.sources.SILENT);\n } else {\n let paste = this.convert(html);\n this.quill.updateContents(new Delta().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), Quill.sources.SILENT);\n }\n }\n\n onPaste(e) {\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n let range = this.quill.getSelection();\n let delta = new Delta().retain(range.index);\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(Quill.sources.SILENT);\n setTimeout(() => {\n delta = delta.concat(this.convert()).delete(range.length);\n this.quill.updateContents(delta, Quill.sources.USER);\n // range.length contributes to delta.length()\n this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT);\n this.quill.scrollingContainer.scrollTop = scrollTop;\n this.quill.focus();\n }, 1);\n }\n\n prepareMatching() {\n let elementMatchers = [], textMatchers = [];\n this.matchers.forEach((pair) => {\n let [selector, matcher] = pair;\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(this.container.querySelectorAll(selector), (node) => {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n}\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\n\nfunction applyFormat(delta, format, value) {\n if (typeof format === 'object') {\n return Object.keys(format).reduce(function(delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function(delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, extend({}, {[format]: value}, op.attributes));\n }\n }, new Delta());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n const DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n let endText = \"\";\n for (let i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n let op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1*text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n let style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) { // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function(delta, matcher) {\n return matcher(node, delta);\n }, new Delta());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], (delta, childNode) => {\n let childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new Delta());\n } else {\n return new Delta();\n }\n}\n\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n let attributes = Parchment.Attributor.Attribute.keys(node);\n let classes = Parchment.Attributor.Class.keys(node);\n let styles = Parchment.Attributor.Style.keys(node);\n let formats = {};\n attributes.concat(classes).concat(styles).forEach((name) => {\n let attr = Parchment.query(name, Parchment.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name]\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n let match = Parchment.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof Parchment.Embed) {\n let embed = {};\n let value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new Delta().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new Delta();\n}\n\nfunction matchIndent(node, delta) {\n let match = Parchment.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n let indent = -1, parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((Parchment.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new Delta().retain(delta.length() - 1).retain(1, { indent: indent}));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || (delta.length() > 0 && node.nextSibling && isLine(node.nextSibling))) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n let nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight*1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n let formats = {};\n let style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') ||\n parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) { // Could be 0.5in\n delta = new Delta().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n let text = node.data;\n // Word represents empty line with <o:p>&nbsp;</o:p>\n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n let replacer = function(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if ((node.previousSibling == null && isLine(node.parentNode)) ||\n (node.previousSibling != null && isLine(node.previousSibling))) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if ((node.nextSibling == null && isLine(node.parentNode)) ||\n (node.nextSibling != null && isLine(node.nextSibling))) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\n\nexport { Clipboard as default, matchAttributor, matchBlot, matchNewline, matchSpacing, matchText };\n","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass History extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.lastRecorded = 0;\n this.ignoreChange = false;\n this.clear();\n this.quill.on(Quill.events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\n if (eventName !== Quill.events.TEXT_CHANGE || this.ignoreChange) return;\n if (!this.options.userOnly || source === Quill.sources.USER) {\n this.record(delta, oldDelta);\n } else {\n this.transform(delta);\n }\n });\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, this.undo.bind(this));\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, this.redo.bind(this));\n if (/Win/i.test(navigator.platform)) {\n this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, this.redo.bind(this));\n }\n }\n\n change(source, dest) {\n if (this.stack[source].length === 0) return;\n let delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], Quill.sources.USER);\n this.ignoreChange = false;\n let index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n\n clear() {\n this.stack = { undo: [], redo: [] };\n }\n\n cutoff() {\n this.lastRecorded = 0;\n }\n\n record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n let undoDelta = this.quill.getContents().diff(oldDelta);\n let timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n let delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n\n redo() {\n this.change('redo', 'undo');\n }\n\n transform(delta) {\n this.stack.undo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n\n undo() {\n this.change('undo', 'redo');\n }\n}\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n let lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function(attr) {\n return Parchment.query(attr, Parchment.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n let deleteLength = delta.reduce(function(length, op) {\n length += (op.delete || 0);\n return length;\n }, 0);\n let changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\n\nexport { History as default, getLastChangeIndex };\n","import clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\nimport Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:keyboard');\n\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n\nclass Keyboard extends Module {\n static match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function(key) {\n return (!!binding[key] !== evt[key] && binding[key] !== null);\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n\n constructor(quill, options) {\n super(quill, options);\n this.bindings = {};\n Object.keys(this.options.bindings).forEach((name) => {\n if (name === 'list autofill' &&\n quill.scroll.whitelist != null &&\n !quill.scroll.whitelist['list']) {\n return;\n }\n if (this.options.bindings[name]) {\n this.addBinding(this.options.bindings[name]);\n }\n });\n this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function() {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null },\n { collapsed: true, offset: 0 },\n handleBackspace);\n this.listen();\n }\n\n addBinding(key, context = {}, handler = {}) {\n let binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = extend(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n\n listen() {\n this.quill.root.addEventListener('keydown', (evt) => {\n if (evt.defaultPrevented) return;\n let which = evt.which || evt.keyCode;\n let bindings = (this.bindings[which] || []).filter(function(binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n let range = this.quill.getSelection();\n if (range == null || !this.quill.hasFocus()) return;\n let [line, offset] = this.quill.getLine(range.index);\n let [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n let [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\n let prefixText = leafStart instanceof Parchment.Text ? leafStart.value().slice(0, offsetStart) : '';\n let suffixText = leafEnd instanceof Parchment.Text ? leafEnd.value().slice(offsetEnd) : '';\n let curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: this.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n let prevented = bindings.some((binding) => {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function(name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (typeof binding.format === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function(name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return equal(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(this, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n}\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold' : makeFormatHandler('bold'),\n 'italic' : makeFormatHandler('italic'),\n 'underline' : makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', Quill.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', Quill.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', Quill.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, Quill.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function(range) {\n this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function(range) {\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index)\n .delete(range.length)\n .insert('\\t');\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function(range, context) {\n this.quill.format('list', false, Quill.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, Quill.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function(range) {\n let [line, offset] = this.quill.getLine(range.index);\n let formats = extend({}, line.formats(), { list: 'checked' });\n let delta = new Delta().retain(range.index)\n .insert('\\n', formats)\n .retain(line.length() - offset - 1)\n .retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function(range, context) {\n let [line, offset] = this.quill.getLine(range.index);\n let delta = new Delta().retain(range.index)\n .insert('\\n', context.format)\n .retain(line.length() - offset - 1)\n .retain(1, { header: null });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function(range, context) {\n let length = context.prefix.length;\n let [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]': case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-': case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index - offset)\n .delete(length + 1)\n .retain(line.length() - 2 - offset)\n .retain(1, { list: value });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function(range) {\n const [line, offset] = this.quill.getLine(range.index);\n const delta = new Delta()\n .retain(range.index + line.length() - offset - 2)\n .retain(1, { 'code-block': null })\n .delete(1);\n this.quill.updateContents(delta, Quill.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n const where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return {\n key,\n shiftKey,\n altKey: null,\n [where]: /^$/,\n handler: function(range) {\n let index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += (range.length + 1);\n }\n const [leaf, ] = this.quill.getLeaf(index);\n if (!(leaf instanceof Parchment.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, Quill.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, Quill.sources.USER);\n }\n }\n return false;\n }\n };\n}\n\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n let [line, ] = this.quill.getLine(range.index);\n let formats = {};\n if (context.offset === 0) {\n let [prev, ] = this.quill.getLine(range.index - 1);\n if (prev != null && prev.length() > 1) {\n let curFormats = line.formats();\n let prevFormats = this.quill.getFormat(range.index-1, 1);\n formats = DeltaOp.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n let length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index-length, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index-length, length, formats, Quill.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n let length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n let formats = {}, nextLength = 0;\n let [line, ] = this.quill.getLine(range.index);\n if (context.offset >= line.length() - 1) {\n let [next, ] = this.quill.getLine(range.index + 1);\n if (next) {\n let curFormats = line.formats();\n let nextFormats = this.quill.getFormat(range.index, 1);\n formats = DeltaOp.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, Quill.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n let lines = this.quill.getLines(range);\n let formats = {};\n if (lines.length > 1) {\n let firstFormats = lines[0].formats();\n let lastFormats = lines[lines.length - 1].formats();\n formats = DeltaOp.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, Quill.sources.USER);\n }\n this.quill.setSelection(range.index, Quill.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n let lineFormats = Object.keys(context.format).reduce(function(lineFormats, format) {\n if (Parchment.query(format, Parchment.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, Quill.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach((name) => {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n this.quill.format(name, context.format[name], Quill.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: {'code-block': true },\n handler: function(range) {\n let CodeBlock = Parchment.query('code-block');\n let index = range.index, length = range.length;\n let [block, offset] = this.quill.scroll.descendant(CodeBlock, index);\n if (block == null) return;\n let scrollIndex = this.quill.getIndex(block);\n let start = block.newlineIndex(offset, true) + 1;\n let end = block.newlineIndex(scrollIndex + offset + length);\n let lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach((line, i) => {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(Quill.sources.USER);\n this.quill.setSelection(index, length, Quill.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function(range, context) {\n this.quill.format(format, !context.format[format], Quill.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if (typeof binding === 'object') {\n binding = clone(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\n\nexport { Keyboard as default, SHORTKEY };\n","import Parchment from 'parchment';\nimport Quill from './core/quill';\n\nimport Block, { BlockEmbed } from './blots/block';\nimport Break from './blots/break';\nimport Container from './blots/container';\nimport Cursor from './blots/cursor';\nimport Embed from './blots/embed';\nimport Inline from './blots/inline';\nimport Scroll from './blots/scroll';\nimport TextBlot from './blots/text';\n\nimport Clipboard from './modules/clipboard';\nimport History from './modules/history';\nimport Keyboard from './modules/keyboard';\n\nQuill.register({\n 'blots/block' : Block,\n 'blots/block/embed' : BlockEmbed,\n 'blots/break' : Break,\n 'blots/container' : Container,\n 'blots/cursor' : Cursor,\n 'blots/embed' : Embed,\n 'blots/inline' : Inline,\n 'blots/scroll' : Scroll,\n 'blots/text' : TextBlot,\n\n 'modules/clipboard' : Clipboard,\n 'modules/history' : History,\n 'modules/keyboard' : Keyboard\n});\n\nParchment.register(Block, Break, Cursor, Inline, Scroll, TextBlot);\n\n\nexport default Quill;\n","import Parchment from 'parchment';\n\nclass IdentAttributor extends Parchment.Attributor.Class {\n add(node, value) {\n if (value === '+1' || value === '-1') {\n let indent = this.value(node) || 0;\n value = (value === '+1' ? (indent + 1) : (indent - 1));\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return super.add(node, value);\n }\n }\n\n canAdd(node, value) {\n return super.canAdd(node, value) || super.canAdd(node, parseInt(value));\n }\n\n value(node) {\n return parseInt(super.value(node)) || undefined; // Don't return NaN\n }\n}\n\nlet IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: Parchment.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexport { IndentClass };\n","import Block from '../blots/block';\n\n\nclass Blockquote extends Block {}\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\n\nexport default Blockquote;\n","import Block from '../blots/block';\n\n\nclass Header extends Block {\n static formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n}\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n\nexport default Header;\n","import Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Container from '../blots/container';\n\n\nclass ListItem extends Block {\n static formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : super.formats(domNode);\n }\n\n format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(Parchment.create(this.statics.scope));\n } else {\n super.format(name, value);\n }\n }\n\n remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n super.remove();\n }\n }\n\n replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return super.replaceWith(name, value);\n }\n }\n}\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\n\nclass List extends Container {\n static create(value) {\n let tagName = value === 'ordered' ? 'OL' : 'UL';\n let node = super.create(tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n\n constructor(domNode) {\n super(domNode);\n const listEventHandler = (e) => {\n if (e.target.parentNode !== domNode) return;\n let format = this.statics.formats(domNode);\n let blot = Parchment.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if(format === 'unchecked') {\n blot.format('list', 'checked');\n }\n }\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n }\n\n format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n\n formats() {\n // We don't inherit from FormatBlot\n return { [this.statics.blotName]: this.statics.formats(this.domNode) };\n }\n\n insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n super.insertBefore(blot, ref);\n } else {\n let index = ref == null ? this.length() : ref.offset(this);\n let after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n\n optimize(context) {\n super.optimize(context);\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n next.domNode.tagName === this.domNode.tagName &&\n next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n let item = Parchment.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n super.replace(target);\n }\n}\nList.blotName = 'list';\nList.scope = Parchment.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\n\nexport { ListItem, List as default };\n","import Inline from '../blots/inline';\n\nclass Bold extends Inline {\n static create() {\n return super.create();\n }\n\n static formats() {\n return true;\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n}\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexport default Bold;\n","import Bold from './bold';\n\nclass Italic extends Bold { }\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexport default Italic;\n","import Inline from '../blots/inline';\n\n\nclass Link extends Inline {\n static create(value) {\n let node = super.create(value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('target', '_blank');\n return node;\n }\n\n static formats(domNode) {\n return domNode.getAttribute('href');\n }\n\n static sanitize(url) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n\n format(name, value) {\n if (name !== this.statics.blotName || !value) return super.format(name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n}\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\n\nfunction sanitize(url, protocols) {\n let anchor = document.createElement('a');\n anchor.href = url;\n let protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\n\nexport { Link as default, sanitize };\n","import Inline from '../blots/inline';\n\nclass Script extends Inline {\n static create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return super.create(value);\n }\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n}\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexport default Script;\n","import Inline from '../blots/inline';\n\nclass Strike extends Inline { }\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexport default Strike;\n","import Inline from '../blots/inline';\n\nclass Underline extends Inline { }\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexport default Underline;\n","import Parchment from 'parchment';\nimport { sanitize } from '../formats/link';\n\nconst ATTRIBUTES = [\n 'alt',\n 'height',\n 'width'\n];\n\n\nclass Image extends Parchment.Embed {\n static create(value) {\n let node = super.create(value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce(function(formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n\n static match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n }\n\n static sanitize(url) {\n return sanitize(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n}\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\n\nexport default Image;\n","import { BlockEmbed } from '../blots/block';\nimport Link from '../formats/link';\n\nconst ATTRIBUTES = [\n 'height',\n 'width'\n];\n\n\nclass Video extends BlockEmbed {\n static create(value) {\n let node = super.create(value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce(function(formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n\n static sanitize(url) {\n return Link.sanitize(url);\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n}\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\n\nexport default Video;\n","import Embed from '../blots/embed';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass FormulaBlot extends Embed {\n static create(value) {\n let node = super.create(value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n\n static value(domNode) {\n return domNode.getAttribute('data-value');\n }\n}\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\n\nclass Formula extends Module {\n static register() {\n Quill.register(FormulaBlot, true);\n }\n\n constructor() {\n super();\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n }\n}\n\n\nexport { FormulaBlot, Formula as default };\n","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\nimport CodeBlock from '../formats/code';\n\n\nclass SyntaxCodeBlock extends CodeBlock {\n replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n super.replaceWith(block);\n }\n\n highlight(highlight) {\n let text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n}\nSyntaxCodeBlock.className = 'ql-syntax';\n\n\nlet CodeToken = new Parchment.Attributor.Class('token', 'hljs', {\n scope: Parchment.Scope.INLINE\n});\n\n\nclass Syntax extends Module {\n static register() {\n Quill.register(CodeToken, true);\n Quill.register(SyntaxCodeBlock, true);\n }\n\n constructor(quill, options) {\n super(quill, options);\n if (typeof this.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n let timer = null;\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n this.highlight();\n timer = null;\n }, this.options.interval);\n });\n this.highlight();\n }\n\n highlight() {\n if (this.quill.selection.composing) return;\n this.quill.update(Quill.sources.USER);\n let range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach((code) => {\n code.highlight(this.options.highlight);\n });\n this.quill.update(Quill.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, Quill.sources.SILENT);\n }\n }\n}\nSyntax.DEFAULTS = {\n highlight: (function() {\n if (window.hljs == null) return null;\n return function(text) {\n let result = window.hljs.highlightAuto(text);\n return result.value;\n };\n })(),\n interval: 1000\n};\n\n\nexport { SyntaxCodeBlock as CodeBlock, CodeToken, Syntax as default};\n","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:toolbar');\n\n\nclass Toolbar extends Module {\n constructor(quill, options) {\n super(quill, options);\n if (Array.isArray(this.options.container)) {\n let container = document.createElement('div');\n addControls(container, this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n this.container = container;\n } else if (typeof this.options.container === 'string') {\n this.container = document.querySelector(this.options.container);\n } else {\n this.container = this.options.container;\n }\n if (!(this.container instanceof HTMLElement)) {\n return debug.error('Container required for toolbar', this.options);\n }\n this.container.classList.add('ql-toolbar');\n this.controls = [];\n this.handlers = {};\n Object.keys(this.options.handlers).forEach((format) => {\n this.addHandler(format, this.options.handlers[format]);\n });\n [].forEach.call(this.container.querySelectorAll('button, select'), (input) => {\n this.attach(input);\n });\n this.quill.on(Quill.events.EDITOR_CHANGE, (type, range) => {\n if (type === Quill.events.SELECTION_CHANGE) {\n this.update(range);\n }\n });\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n let [range, ] = this.quill.selection.getRange(); // quill.getSelection triggers update\n this.update(range);\n });\n }\n\n addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n\n attach(input) {\n let format = [].find.call(input.classList, (className) => {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (Parchment.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n let eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, (e) => {\n let value;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n let selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n this.quill.focus();\n let [range, ] = this.quill.selection.getRange();\n if (this.handlers[format] != null) {\n this.handlers[format].call(this, value);\n } else if (Parchment.query(format).prototype instanceof Parchment.Embed) {\n value = prompt(`Enter ${format}`);\n if (!value) return;\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ [format]: value })\n , Quill.sources.USER);\n } else {\n this.quill.format(format, value, Quill.sources.USER);\n }\n this.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n\n update(range) {\n let formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function(pair) {\n let [format, input] = pair;\n if (input.tagName === 'SELECT') {\n let option;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n let value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector(`option[value=\"${value}\"]`);\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n let isActive = formats[format] === input.getAttribute('value') ||\n (formats[format] != null && formats[format].toString() === input.getAttribute('value')) ||\n (formats[format] == null && !input.getAttribute('value'));\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n}\nToolbar.DEFAULTS = {};\n\n\nfunction addButton(container, format, value) {\n let input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function(controls) {\n let group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function(control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n let format = Object.keys(control)[0];\n let value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n let input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function() {\n let range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n let formats = this.quill.getFormat();\n Object.keys(formats).forEach((name) => {\n // Clean functionality in existing apps only clean inline formats\n if (Parchment.query(name, Parchment.Scope.INLINE) != null) {\n this.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, Quill.sources.USER);\n }\n },\n direction: function(value) {\n let align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', Quill.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, Quill.sources.USER);\n }\n this.quill.format('direction', value, Quill.sources.USER);\n },\n indent: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n let indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n let modifier = (value === '+1') ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, Quill.sources.USER);\n }\n },\n link: function(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, Quill.sources.USER);\n },\n list: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, Quill.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', Quill.sources.USER);\n }\n } else {\n this.quill.format('list', value, Quill.sources.USER);\n }\n }\n }\n}\n\n\nexport { Toolbar as default, addControls };\n","module.exports = {\n 'align': {\n '' : require('../assets/icons/align-left.svg'),\n 'center' : require('../assets/icons/align-center.svg'),\n 'right' : require('../assets/icons/align-right.svg'),\n 'justify' : require('../assets/icons/align-justify.svg')\n },\n 'background': require('../assets/icons/background.svg'),\n 'blockquote': require('../assets/icons/blockquote.svg'),\n 'bold' : require('../assets/icons/bold.svg'),\n 'clean' : require('../assets/icons/clean.svg'),\n 'code' : require('../assets/icons/code.svg'),\n 'code-block': require('../assets/icons/code.svg'),\n 'color' : require('../assets/icons/color.svg'),\n 'direction' : {\n '' : require('../assets/icons/direction-ltr.svg'),\n 'rtl' : require('../assets/icons/direction-rtl.svg')\n },\n 'float': {\n 'center' : require('../assets/icons/float-center.svg'),\n 'full' : require('../assets/icons/float-full.svg'),\n 'left' : require('../assets/icons/float-left.svg'),\n 'right' : require('../assets/icons/float-right.svg')\n },\n 'formula' : require('../assets/icons/formula.svg'),\n 'header': {\n '1' : require('../assets/icons/header.svg'),\n '2' : require('../assets/icons/header-2.svg')\n },\n 'italic' : require('../assets/icons/italic.svg'),\n 'image' : require('../assets/icons/image.svg'),\n 'indent': {\n '+1' : require('../assets/icons/indent.svg'),\n '-1' : require('../assets/icons/outdent.svg')\n },\n 'link' : require('../assets/icons/link.svg'),\n 'list': {\n 'ordered' : require('../assets/icons/list-ordered.svg'),\n 'bullet' : require('../assets/icons/list-bullet.svg'),\n 'check' : require('../assets/icons/list-check.svg')\n },\n 'script': {\n 'sub' : require('../assets/icons/subscript.svg'),\n 'super' : require('../assets/icons/superscript.svg'),\n },\n 'strike' : require('../assets/icons/strike.svg'),\n 'underline' : require('../assets/icons/underline.svg'),\n 'video' : require('../assets/icons/video.svg')\n};\n","import Keyboard from '../modules/keyboard';\nimport DropdownIcon from '../assets/icons/dropdown.svg';\n\nlet optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nclass Picker {\n constructor(select) {\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', () => {\n this.togglePicker();\n });\n this.label.addEventListener('keydown', (event) => {\n switch(event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case Keyboard.keys.ENTER:\n this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case Keyboard.keys.ESCAPE:\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n\n buildItem(option) {\n let item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', () => {\n this.selectItem(item, true);\n });\n item.addEventListener('keydown', (event) => {\n switch(event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case Keyboard.keys.ENTER:\n this.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case Keyboard.keys.ESCAPE:\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n\n buildLabel() {\n let label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = DropdownIcon;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n\n buildOptions() {\n let options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = `ql-picker-options-${optionsCounter}`;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach((option) => {\n let item = this.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n this.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n\n buildPicker() {\n [].slice.call(this.select.attributes).forEach((item) => {\n this.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n\n escape() {\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(() => this.label.focus(), 1);\n }\n\n close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n\n selectItem(item, trigger = false) {\n let selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if (typeof Event === 'object') { // IE11\n let event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n\n update() {\n let option;\n if (this.select.selectedIndex > -1) {\n let item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n let isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n}\n\n\nexport default Picker;\n","import Picker from './picker';\n\n\nclass ColorPicker extends Picker {\n constructor(select, label) {\n super(select);\n this.label.innerHTML = label;\n this.container.classList.add('ql-color-picker');\n [].slice.call(this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function(item) {\n item.classList.add('ql-primary');\n });\n }\n\n buildItem(option) {\n let item = super.buildItem(option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n let colorLabel = this.label.querySelector('.ql-color-label');\n let value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n}\n\n\nexport default ColorPicker;\n","import Picker from './picker';\n\n\nclass IconPicker extends Picker {\n constructor(select, icons) {\n super(select);\n this.container.classList.add('ql-icon-picker');\n [].forEach.call(this.container.querySelectorAll('.ql-picker-item'), (item) => {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n this.defaultItem = this.container.querySelector('.ql-selected');\n this.selectItem(this.defaultItem);\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n}\n\n\nexport default IconPicker;\n","class Tooltip {\n constructor(quill, boundsContainer) {\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', () => {\n this.root.style.marginTop = (-1*this.quill.root.scrollTop) + 'px';\n });\n }\n this.hide();\n }\n\n hide() {\n this.root.classList.add('ql-hidden');\n }\n\n position(reference) {\n let left = reference.left + reference.width/2 - this.root.offsetWidth/2;\n // root.scrollTop should be 0 if scrollContainer !== root\n let top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n let containerBounds = this.boundsContainer.getBoundingClientRect();\n let rootBounds = this.root.getBoundingClientRect();\n let shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n let height = rootBounds.bottom - rootBounds.top;\n let verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = (top - verticalShift) + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n\n show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n}\n\n\nexport default Tooltip;\n","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Emitter from '../core/emitter';\nimport Keyboard from '../modules/keyboard';\nimport Theme from '../core/theme';\nimport ColorPicker from '../ui/color-picker';\nimport IconPicker from '../ui/icon-picker';\nimport Picker from '../ui/picker';\nimport Tooltip from '../ui/tooltip';\n\n\nconst ALIGNS = [ false, 'center', 'right', 'justify' ];\n\nconst COLORS = [\n \"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\",\n \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\",\n \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\",\n \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\",\n \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"\n];\n\nconst FONTS = [ false, 'serif', 'monospace' ];\n\nconst HEADERS = [ '1', '2', '3', false ];\n\nconst SIZES = [ 'small', false, 'large', 'huge' ];\n\n\nclass BaseTheme extends Theme {\n constructor(quill, options) {\n super(quill, options);\n let listener = (e) => {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (this.tooltip != null && !this.tooltip.root.contains(e.target) &&\n document.activeElement !== this.tooltip.textbox && !this.quill.hasFocus()) {\n this.tooltip.hide();\n }\n if (this.pickers != null) {\n this.pickers.forEach(function(picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n }\n\n addModule(name) {\n let module = super.addModule(name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n\n buildButtons(buttons, icons) {\n buttons.forEach((button) => {\n let className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach((name) => {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n let value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n\n buildPickers(selects, icons) {\n this.pickers = selects.map((select) => {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new IconPicker(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n let format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new ColorPicker(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new Picker(select);\n }\n });\n let update = () => {\n this.pickers.forEach(function(picker) {\n picker.update();\n });\n };\n this.quill.on(Emitter.events.EDITOR_CHANGE, update);\n }\n}\nBaseTheme.DEFAULTS = extend(true, {}, Theme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function() {\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', () => {\n if (fileInput.files != null && fileInput.files[0] != null) {\n let reader = new FileReader();\n reader.onload = (e) => {\n let range = this.quill.getSelection(true);\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ image: e.target.result })\n , Emitter.sources.USER);\n this.quill.setSelection(range.index + 1, Emitter.sources.SILENT);\n fileInput.value = \"\";\n }\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\n\nclass BaseTooltip extends Tooltip {\n constructor(quill, boundsContainer) {\n super(quill, boundsContainer);\n this.textbox = this.root.querySelector('input[type=\"text\"]');\n this.listen();\n }\n\n listen() {\n this.textbox.addEventListener('keydown', (event) => {\n if (Keyboard.match(event, 'enter')) {\n this.save();\n event.preventDefault();\n } else if (Keyboard.match(event, 'escape')) {\n this.cancel();\n event.preventDefault();\n }\n });\n }\n\n cancel() {\n this.hide();\n }\n\n edit(mode = 'link', preview = null) {\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(`data-${mode}`) || '');\n this.root.setAttribute('data-mode', mode);\n }\n\n restoreFocus() {\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n\n save() {\n let value = this.textbox.value;\n switch(this.root.getAttribute('data-mode')) {\n case 'link': {\n let scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, Emitter.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, Emitter.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video': {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula': {\n if (!value) break;\n let range = this.quill.getSelection(true);\n if (range != null) {\n let index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, Emitter.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', Emitter.sources.USER);\n }\n this.quill.setSelection(index + 2, Emitter.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n}\n\n\nfunction extractVideoUrl(url) {\n let match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) ||\n url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) { // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values, defaultValue = false) {\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\n\nexport { BaseTooltip, BaseTheme as default };\n","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n ['bold', 'italic', 'link'],\n [{ header: 1 }, { header: 2 }, 'blockquote']\n];\n\nclass BubbleTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-bubble');\n }\n\n extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n }\n}\nBubbleTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\n\nclass BubbleTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.quill.on(Emitter.events.EDITOR_CHANGE, (type, range, oldRange, source) => {\n if (type !== Emitter.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === Emitter.sources.USER) {\n this.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n this.root.style.left = '0px';\n this.root.style.width = '';\n this.root.style.width = this.root.offsetWidth + 'px';\n let lines = this.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n this.position(this.quill.getBounds(range));\n } else {\n let lastLine = lines[lines.length - 1];\n let index = this.quill.getIndex(lastLine);\n let length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n let bounds = this.quill.getBounds(new Range(index, length));\n this.position(bounds);\n }\n } else if (document.activeElement !== this.textbox && this.quill.hasFocus()) {\n this.hide();\n }\n });\n }\n\n listen() {\n super.listen();\n this.root.querySelector('.ql-close').addEventListener('click', () => {\n this.root.classList.remove('ql-editing');\n });\n this.quill.on(Emitter.events.SCROLL_OPTIMIZE, () => {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(() => {\n if (this.root.classList.contains('ql-hidden')) return;\n let range = this.quill.getSelection();\n if (range != null) {\n this.position(this.quill.getBounds(range));\n }\n }, 1);\n });\n }\n\n cancel() {\n this.show();\n }\n\n position(reference) {\n let shift = super.position(reference);\n let arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = (-1*shift - arrow.offsetWidth/2) + 'px';\n }\n}\nBubbleTooltip.TEMPLATE = [\n '<span class=\"ql-tooltip-arrow\"></span>',\n '<div class=\"ql-tooltip-editor\">',\n '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">',\n '<a class=\"ql-close\"></a>',\n '</div>'\n].join('');\n\n\nexport { BubbleTooltip, BubbleTheme as default };\n","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport LinkBlot from '../formats/link';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n [{ header: ['1', '2', '3', false] }],\n ['bold', 'italic', 'underline', 'link'],\n [{ list: 'ordered' }, { list: 'bullet' }],\n ['clean']\n];\n\nclass SnowTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-snow');\n }\n\n extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function(range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n}\nSnowTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (value) {\n let range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n let preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n let tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\n\nclass SnowTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.preview = this.root.querySelector('a.ql-preview');\n }\n\n listen() {\n super.listen();\n this.root.querySelector('a.ql-action').addEventListener('click', (event) => {\n if (this.root.classList.contains('ql-editing')) {\n this.save();\n } else {\n this.edit('link', this.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', (event) => {\n if (this.linkRange != null) {\n let range = this.linkRange;\n this.restoreFocus();\n this.quill.formatText(range, 'link', false, Emitter.sources.USER);\n delete this.linkRange;\n }\n event.preventDefault();\n this.hide();\n });\n this.quill.on(Emitter.events.SELECTION_CHANGE, (range, oldRange, source) => {\n if (range == null) return;\n if (range.length === 0 && source === Emitter.sources.USER) {\n let [link, offset] = this.quill.scroll.descendant(LinkBlot, range.index);\n if (link != null) {\n this.linkRange = new Range(range.index - offset, link.length());\n let preview = LinkBlot.formats(link.domNode);\n this.preview.textContent = preview;\n this.preview.setAttribute('href', preview);\n this.show();\n this.position(this.quill.getBounds(this.linkRange));\n return;\n }\n } else {\n delete this.linkRange;\n }\n this.hide();\n });\n }\n\n show() {\n super.show();\n this.root.removeAttribute('data-mode');\n }\n}\nSnowTooltip.TEMPLATE = [\n '<a class=\"ql-preview\" target=\"_blank\" href=\"about:blank\"></a>',\n '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">',\n '<a class=\"ql-action\"></a>',\n '<a class=\"ql-remove\"></a>'\n].join('');\n\n\nexport default SnowTheme;\n","import Quill from './core';\n\nimport { AlignClass, AlignStyle } from './formats/align';\nimport { DirectionAttribute, DirectionClass, DirectionStyle } from './formats/direction';\nimport { IndentClass as Indent } from './formats/indent';\n\nimport Blockquote from './formats/blockquote';\nimport Header from './formats/header';\nimport List, { ListItem } from './formats/list';\n\nimport { BackgroundClass, BackgroundStyle } from './formats/background';\nimport { ColorClass, ColorStyle } from './formats/color';\nimport { FontClass, FontStyle } from './formats/font';\nimport { SizeClass, SizeStyle } from './formats/size';\n\nimport Bold from './formats/bold';\nimport Italic from './formats/italic';\nimport Link from './formats/link';\nimport Script from './formats/script';\nimport Strike from './formats/strike';\nimport Underline from './formats/underline';\n\nimport Image from './formats/image';\nimport Video from './formats/video';\n\nimport CodeBlock, { Code as InlineCode } from './formats/code';\n\nimport Formula from './modules/formula';\nimport Syntax from './modules/syntax';\nimport Toolbar from './modules/toolbar';\n\nimport Icons from './ui/icons';\nimport Picker from './ui/picker';\nimport ColorPicker from './ui/color-picker';\nimport IconPicker from './ui/icon-picker';\nimport Tooltip from './ui/tooltip';\n\nimport BubbleTheme from './themes/bubble';\nimport SnowTheme from './themes/snow';\n\n\nQuill.register({\n 'attributors/attribute/direction': DirectionAttribute,\n\n 'attributors/class/align': AlignClass,\n 'attributors/class/background': BackgroundClass,\n 'attributors/class/color': ColorClass,\n 'attributors/class/direction': DirectionClass,\n 'attributors/class/font': FontClass,\n 'attributors/class/size': SizeClass,\n\n 'attributors/style/align': AlignStyle,\n 'attributors/style/background': BackgroundStyle,\n 'attributors/style/color': ColorStyle,\n 'attributors/style/direction': DirectionStyle,\n 'attributors/style/font': FontStyle,\n 'attributors/style/size': SizeStyle\n}, true);\n\n\nQuill.register({\n 'formats/align': AlignClass,\n 'formats/direction': DirectionClass,\n 'formats/indent': Indent,\n\n 'formats/background': BackgroundStyle,\n 'formats/color': ColorStyle,\n 'formats/font': FontClass,\n 'formats/size': SizeClass,\n\n 'formats/blockquote': Blockquote,\n 'formats/code-block': CodeBlock,\n 'formats/header': Header,\n 'formats/list': List,\n\n 'formats/bold': Bold,\n 'formats/code': InlineCode,\n 'formats/italic': Italic,\n 'formats/link': Link,\n 'formats/script': Script,\n 'formats/strike': Strike,\n 'formats/underline': Underline,\n\n 'formats/image': Image,\n 'formats/video': Video,\n\n 'formats/list/item': ListItem,\n\n 'modules/formula': Formula,\n 'modules/syntax': Syntax,\n 'modules/toolbar': Toolbar,\n\n 'themes/bubble': BubbleTheme,\n 'themes/snow': SnowTheme,\n\n 'ui/icons': Icons,\n 'ui/picker': Picker,\n 'ui/icon-picker': IconPicker,\n 'ui/color-picker': ColorPicker,\n 'ui/tooltip': Tooltip\n}, true);\n\n\nexport default Quill;\n","!function(t,e){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)(\"object\"==typeof exports?exports:t)[n]=r[n]}}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=16)}([function(t,e,r){\"use strict\";var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===o.call(t)},s=function(t){if(!t||\"[object Object]\"!==o.call(t))return!1;var e,r=n.call(t,\"constructor\"),i=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!r&&!i)return!1;for(e in t);return void 0===e||n.call(t,e)};t.exports=function t(){var e,r,n,o,a,h,u=arguments[0],l=1,f=arguments.length,c=!1;for(\"boolean\"==typeof u&&(c=u,u=arguments[1]||{},l=2),(null==u||\"object\"!=typeof u&&\"function\"!=typeof u)&&(u={});l<f;++l)if(null!=(e=arguments[l]))for(r in e)n=u[r],u!==(o=e[r])&&(c&&o&&(s(o)||(a=i(o)))?(a?(a=!1,h=n&&i(n)?n:[]):h=n&&s(n)?n:{},u[r]=t(c,h,o)):void 0!==o&&(u[r]=o));return u}},function(t,e,r){var n=Array.prototype.slice,o=r(13),i=r(12),s=t.exports=function(t,e,r){return r||(r={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||\"object\"!=typeof t&&\"object\"!=typeof e?r.strict?t===e:t==e:function(t,e,r){var u,l;if(a(t)||a(e))return!1;if(t.prototype!==e.prototype)return!1;if(i(t))return!!i(e)&&(t=n.call(t),e=n.call(e),s(t,e,r));if(h(t)){if(!h(e))return!1;if(t.length!==e.length)return!1;for(u=0;u<t.length;u++)if(t[u]!==e[u])return!1;return!0}try{var f=o(t),c=o(e)}catch(t){return!1}if(f.length!=c.length)return!1;for(f.sort(),c.sort(),u=f.length-1;u>=0;u--)if(f[u]!=c[u])return!1;for(u=f.length-1;u>=0;u--)if(l=f[u],!s(t[l],e[l],r))return!1;return typeof t==typeof e}(t,e,r))};function a(t){return null===t||void 0===t}function h(t){return!(!t||\"object\"!=typeof t||\"number\"!=typeof t.length)&&(\"function\"==typeof t.copy&&\"function\"==typeof t.slice&&!(t.length>0&&\"number\"!=typeof t[0]))}},function(t,e,r){\"use strict\";var n=function(t){switch(typeof t){case\"string\":return t;case\"boolean\":return t?\"true\":\"false\";case\"number\":return isFinite(t)?t:\"\";default:return\"\"}};t.exports=function(t,e,r,a){return e=e||\"&\",r=r||\"=\",null===t&&(t=void 0),\"object\"==typeof t?i(s(t),function(s){var a=encodeURIComponent(n(s))+r;return o(t[s])?i(t[s],function(t){return a+encodeURIComponent(n(t))}).join(e):a+encodeURIComponent(n(t[s]))}).join(e):a?encodeURIComponent(n(a))+r+encodeURIComponent(n(t)):\"\"};var o=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)};function i(t,e){if(t.map)return t.map(e);for(var r=[],n=0;n<t.length;n++)r.push(e(t[n],n));return r}var s=Object.keys||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.push(r);return e}},function(t,e,r){\"use strict\";function n(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,r,i){e=e||\"&\",r=r||\"=\";var s={};if(\"string\"!=typeof t||0===t.length)return s;var a=/\\+/g;t=t.split(e);var h=1e3;i&&\"number\"==typeof i.maxKeys&&(h=i.maxKeys);var u=t.length;h>0&&u>h&&(u=h);for(var l=0;l<u;++l){var f,c,p,g,y=t[l].replace(a,\"%20\"),v=y.indexOf(r);v>=0?(f=y.substr(0,v),c=y.substr(v+1)):(f=y,c=\"\"),p=decodeURIComponent(f),g=decodeURIComponent(c),n(s,p)?o(s[p])?s[p].push(g):s[p]=[s[p],g]:s[p]=g}return s};var o=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)}},function(t,e,r){\"use strict\";e.decode=e.parse=r(3),e.encode=e.stringify=r(2)},function(t,e,r){\"use strict\";t.exports={isString:function(t){return\"string\"==typeof t},isObject:function(t){return\"object\"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,\"loaded\",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,\"id\",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){(function(t,n){var o;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){\"object\"==typeof e&&e&&e.nodeType,\"object\"==typeof t&&t&&t.nodeType;var s=\"object\"==typeof n&&n;s.global!==s&&s.window!==s&&s.self;var a,h=2147483647,u=36,l=1,f=26,c=38,p=700,g=72,y=128,v=\"-\",m=/^xn--/,b=/[^\\x20-\\x7E]/,d=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,x={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},j=u-l,w=Math.floor,O=String.fromCharCode;function A(t){throw new RangeError(x[t])}function k(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function E(t,e){var r=t.split(\"@\"),n=\"\";return r.length>1&&(n=r[0]+\"@\",t=r[1]),n+k((t=t.replace(d,\".\")).split(\".\"),e).join(\".\")}function C(t){for(var e,r,n=[],o=0,i=t.length;o<i;)(e=t.charCodeAt(o++))>=55296&&e<=56319&&o<i?56320==(64512&(r=t.charCodeAt(o++)))?n.push(((1023&e)<<10)+(1023&r)+65536):(n.push(e),o--):n.push(e);return n}function P(t){return k(t,function(t){var e=\"\";return t>65535&&(e+=O((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=O(t)}).join(\"\")}function I(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:u}function S(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function T(t,e,r){var n=0;for(t=r?w(t/p):t>>1,t+=w(t/e);t>j*f>>1;n+=u)t=w(t/j);return w(n+(j+1)*t/(t+c))}function L(t){var e,r,n,o,i,s,a,c,p,m,b=[],d=t.length,x=0,j=y,O=g;for((r=t.lastIndexOf(v))<0&&(r=0),n=0;n<r;++n)t.charCodeAt(n)>=128&&A(\"not-basic\"),b.push(t.charCodeAt(n));for(o=r>0?r+1:0;o<d;){for(i=x,s=1,a=u;o>=d&&A(\"invalid-input\"),((c=I(t.charCodeAt(o++)))>=u||c>w((h-x)/s))&&A(\"overflow\"),x+=c*s,!(c<(p=a<=O?l:a>=O+f?f:a-O));a+=u)s>w(h/(m=u-p))&&A(\"overflow\"),s*=m;O=T(x-i,e=b.length+1,0==i),w(x/e)>h-j&&A(\"overflow\"),j+=w(x/e),x%=e,b.splice(x++,0,j)}return P(b)}function U(t){var e,r,n,o,i,s,a,c,p,m,b,d,x,j,k,E=[];for(d=(t=C(t)).length,e=y,r=0,i=g,s=0;s<d;++s)(b=t[s])<128&&E.push(O(b));for(n=o=E.length,o&&E.push(v);n<d;){for(a=h,s=0;s<d;++s)(b=t[s])>=e&&b<a&&(a=b);for(a-e>w((h-r)/(x=n+1))&&A(\"overflow\"),r+=(a-e)*x,e=a,s=0;s<d;++s)if((b=t[s])<e&&++r>h&&A(\"overflow\"),b==e){for(c=r,p=u;!(c<(m=p<=i?l:p>=i+f?f:p-i));p+=u)k=c-m,j=u-m,E.push(O(S(m+k%j,0))),c=w(k/j);E.push(O(S(c,0))),i=T(r,x,n==o),r=0,++n}++r,++e}return E.join(\"\")}a={version:\"1.4.1\",ucs2:{decode:C,encode:P},decode:L,encode:U,toASCII:function(t){return E(t,function(t){return b.test(t)?\"xn--\"+U(t):t})},toUnicode:function(t){return E(t,function(t){return m.test(t)?L(t.slice(4).toLowerCase()):t})}},void 0===(o=function(){return a}.call(e,r,e,t))||(t.exports=o)}()}).call(this,r(7)(t),r(6))},function(t,e,r){\"use strict\";var n=r(8),o=r(5);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=d,e.resolve=function(t,e){return d(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?d(t,!1,!0).resolveObject(e):e},e.format=function(t){o.isString(t)&&(t=d(t));return t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i;var s=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,h=/^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,u=[\"{\",\"}\",\"|\",\"\\\\\",\"^\",\"`\"].concat([\"<\",\">\",'\"',\"`\",\" \",\"\\r\",\"\\n\",\"\\t\"]),l=[\"'\"].concat(u),f=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(l),c=[\"/\",\"?\",\"#\"],p=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,y={javascript:!0,\"javascript:\":!0},v={javascript:!0,\"javascript:\":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0},b=r(4);function d(t,e,r){if(t&&o.isObject(t)&&t instanceof i)return t;var n=new i;return n.parse(t,e,r),n}i.prototype.parse=function(t,e,r){if(!o.isString(t))throw new TypeError(\"Parameter 'url' must be a string, not \"+typeof t);var i=t.indexOf(\"?\"),a=-1!==i&&i<t.indexOf(\"#\")?\"?\":\"#\",u=t.split(a);u[0]=u[0].replace(/\\\\/g,\"/\");var d=t=u.join(a);if(d=d.trim(),!r&&1===t.split(\"#\").length){var x=h.exec(d);if(x)return this.path=d,this.href=d,this.pathname=x[1],x[2]?(this.search=x[2],this.query=e?b.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search=\"\",this.query={}),this}var j=s.exec(d);if(j){var w=(j=j[0]).toLowerCase();this.protocol=w,d=d.substr(j.length)}if(r||j||d.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)){var O=\"//\"===d.substr(0,2);!O||j&&v[j]||(d=d.substr(2),this.slashes=!0)}if(!v[j]&&(O||j&&!m[j])){for(var A,k,E=-1,C=0;C<c.length;C++){-1!==(P=d.indexOf(c[C]))&&(-1===E||P<E)&&(E=P)}-1!==(k=-1===E?d.lastIndexOf(\"@\"):d.lastIndexOf(\"@\",E))&&(A=d.slice(0,k),d=d.slice(k+1),this.auth=decodeURIComponent(A)),E=-1;for(C=0;C<f.length;C++){var P;-1!==(P=d.indexOf(f[C]))&&(-1===E||P<E)&&(E=P)}-1===E&&(E=d.length),this.host=d.slice(0,E),d=d.slice(E),this.parseHost(),this.hostname=this.hostname||\"\";var I=\"[\"===this.hostname[0]&&\"]\"===this.hostname[this.hostname.length-1];if(!I)for(var S=this.hostname.split(/\\./),T=(C=0,S.length);C<T;C++){var L=S[C];if(L&&!L.match(p)){for(var U=\"\",q=0,R=L.length;q<R;q++)L.charCodeAt(q)>127?U+=\"x\":U+=L[q];if(!U.match(p)){var M=S.slice(0,C),N=S.slice(C+1),_=L.match(g);_&&(M.push(_[1]),N.unshift(_[2])),N.length&&(d=\"/\"+N.join(\".\")+d),this.hostname=M.join(\".\");break}}}this.hostname.length>255?this.hostname=\"\":this.hostname=this.hostname.toLowerCase(),I||(this.hostname=n.toASCII(this.hostname));var z=this.port?\":\"+this.port:\"\",D=this.hostname||\"\";this.host=D+z,this.href+=this.host,I&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),\"/\"!==d[0]&&(d=\"/\"+d))}if(!y[w])for(C=0,T=l.length;C<T;C++){var F=l[C];if(-1!==d.indexOf(F)){var W=encodeURIComponent(F);W===F&&(W=escape(F)),d=d.split(F).join(W)}}var Q=d.indexOf(\"#\");-1!==Q&&(this.hash=d.substr(Q),d=d.slice(0,Q));var $=d.indexOf(\"?\");if(-1!==$?(this.search=d.substr($),this.query=d.substr($+1),e&&(this.query=b.parse(this.query)),d=d.slice(0,$)):e&&(this.search=\"\",this.query={}),d&&(this.pathname=d),m[w]&&this.hostname&&!this.pathname&&(this.pathname=\"/\"),this.pathname||this.search){z=this.pathname||\"\";var H=this.search||\"\";this.path=z+H}return this.href=this.format(),this},i.prototype.format=function(){var t=this.auth||\"\";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,\":\"),t+=\"@\");var e=this.protocol||\"\",r=this.pathname||\"\",n=this.hash||\"\",i=!1,s=\"\";this.host?i=t+this.host:this.hostname&&(i=t+(-1===this.hostname.indexOf(\":\")?this.hostname:\"[\"+this.hostname+\"]\"),this.port&&(i+=\":\"+this.port)),this.query&&o.isObject(this.query)&&Object.keys(this.query).length&&(s=b.stringify(this.query));var a=this.search||s&&\"?\"+s||\"\";return e&&\":\"!==e.substr(-1)&&(e+=\":\"),this.slashes||(!e||m[e])&&!1!==i?(i=\"//\"+(i||\"\"),r&&\"/\"!==r.charAt(0)&&(r=\"/\"+r)):i||(i=\"\"),n&&\"#\"!==n.charAt(0)&&(n=\"#\"+n),a&&\"?\"!==a.charAt(0)&&(a=\"?\"+a),e+i+(r=r.replace(/[?#]/g,function(t){return encodeURIComponent(t)}))+(a=a.replace(\"#\",\"%23\"))+n},i.prototype.resolve=function(t){return this.resolveObject(d(t,!1,!0)).format()},i.prototype.resolveObject=function(t){if(o.isString(t)){var e=new i;e.parse(t,!1,!0),t=e}for(var r=new i,n=Object.keys(this),s=0;s<n.length;s++){var a=n[s];r[a]=this[a]}if(r.hash=t.hash,\"\"===t.href)return r.href=r.format(),r;if(t.slashes&&!t.protocol){for(var h=Object.keys(t),u=0;u<h.length;u++){var l=h[u];\"protocol\"!==l&&(r[l]=t[l])}return m[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname=\"/\"),r.href=r.format(),r}if(t.protocol&&t.protocol!==r.protocol){if(!m[t.protocol]){for(var f=Object.keys(t),c=0;c<f.length;c++){var p=f[c];r[p]=t[p]}return r.href=r.format(),r}if(r.protocol=t.protocol,t.host||v[t.protocol])r.pathname=t.pathname;else{for(var g=(t.pathname||\"\").split(\"/\");g.length&&!(t.host=g.shift()););t.host||(t.host=\"\"),t.hostname||(t.hostname=\"\"),\"\"!==g[0]&&g.unshift(\"\"),g.length<2&&g.unshift(\"\"),r.pathname=g.join(\"/\")}if(r.search=t.search,r.query=t.query,r.host=t.host||\"\",r.auth=t.auth,r.hostname=t.hostname||t.host,r.port=t.port,r.pathname||r.search){var y=r.pathname||\"\",b=r.search||\"\";r.path=y+b}return r.slashes=r.slashes||t.slashes,r.href=r.format(),r}var d=r.pathname&&\"/\"===r.pathname.charAt(0),x=t.host||t.pathname&&\"/\"===t.pathname.charAt(0),j=x||d||r.host&&t.pathname,w=j,O=r.pathname&&r.pathname.split(\"/\")||[],A=(g=t.pathname&&t.pathname.split(\"/\")||[],r.protocol&&!m[r.protocol]);if(A&&(r.hostname=\"\",r.port=null,r.host&&(\"\"===O[0]?O[0]=r.host:O.unshift(r.host)),r.host=\"\",t.protocol&&(t.hostname=null,t.port=null,t.host&&(\"\"===g[0]?g[0]=t.host:g.unshift(t.host)),t.host=null),j=j&&(\"\"===g[0]||\"\"===O[0])),x)r.host=t.host||\"\"===t.host?t.host:r.host,r.hostname=t.hostname||\"\"===t.hostname?t.hostname:r.hostname,r.search=t.search,r.query=t.query,O=g;else if(g.length)O||(O=[]),O.pop(),O=O.concat(g),r.search=t.search,r.query=t.query;else if(!o.isNullOrUndefined(t.search)){if(A)r.hostname=r.host=O.shift(),(I=!!(r.host&&r.host.indexOf(\"@\")>0)&&r.host.split(\"@\"))&&(r.auth=I.shift(),r.host=r.hostname=I.shift());return r.search=t.search,r.query=t.query,o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.href=r.format(),r}if(!O.length)return r.pathname=null,r.search?r.path=\"/\"+r.search:r.path=null,r.href=r.format(),r;for(var k=O.slice(-1)[0],E=(r.host||t.host||O.length>1)&&(\".\"===k||\"..\"===k)||\"\"===k,C=0,P=O.length;P>=0;P--)\".\"===(k=O[P])?O.splice(P,1):\"..\"===k?(O.splice(P,1),C++):C&&(O.splice(P,1),C--);if(!j&&!w)for(;C--;C)O.unshift(\"..\");!j||\"\"===O[0]||O[0]&&\"/\"===O[0].charAt(0)||O.unshift(\"\"),E&&\"/\"!==O.join(\"/\").substr(-1)&&O.push(\"\");var I,S=\"\"===O[0]||O[0]&&\"/\"===O[0].charAt(0);A&&(r.hostname=r.host=S?\"\":O.length?O.shift():\"\",(I=!!(r.host&&r.host.indexOf(\"@\")>0)&&r.host.split(\"@\"))&&(r.auth=I.shift(),r.host=r.hostname=I.shift()));return(j=j||r.host&&O.length)&&!S&&O.unshift(\"\"),O.length?r.pathname=O.join(\"/\"):(r.pathname=null,r.path=null),o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:\"\")+(r.search?r.search:\"\")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},i.prototype.parseHost=function(){var t=this.host,e=a.exec(t);e&&(\":\"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,r){\"use strict\";const n=\"undefined\"==typeof URL?r(9).URL:URL;function o(t,e){return e.some(e=>e instanceof RegExp?e.test(t):e===t)}t.exports=((t,e)=>{e=Object.assign({normalizeProtocol:!0,normalizeHttps:!1,stripFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e);const r=(t=t.trim()).startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,\"http://\"));const i=new n(t);if(e.normalizeHttps&&\"https:\"===i.protocol&&(i.protocol=\"http:\"),e.stripFragment&&(i.hash=\"\"),i.pathname&&(i.pathname=i.pathname.replace(/\\/{2,}/g,\"/\")),i.pathname&&(i.pathname=decodeURI(i.pathname)),!0===e.removeDirectoryIndex&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let t=i.pathname.split(\"/\");o(t[t.length-1],e.removeDirectoryIndex)&&(t=t.slice(0,t.length-1),i.pathname=t.slice(1).join(\"/\")+\"/\")}if(i.hostname&&(i.hostname=i.hostname.replace(/\\.$/,\"\"),e.stripWWW&&(i.hostname=i.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(const t of[...i.searchParams.keys()])o(t,e.removeQueryParameters)&&i.searchParams.delete(t);return e.sortQueryParameters&&i.searchParams.sort(),t=i.toString(),(e.removeTrailingSlash||\"/\"===i.pathname)&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),t})},function(t,e,r){var n=r(1),o=r(0),i={attributes:{compose:function(t,e,r){\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var n=o(!0,{},e);for(var i in r||(n=Object.keys(n).reduce(function(t,e){return null!=n[e]&&(t[e]=n[e]),t},{})),t)void 0!==t[i]&&void 0===e[i]&&(n[i]=t[i]);return Object.keys(n).length>0?n:void 0},diff:function(t,e){\"object\"!=typeof t&&(t={}),\"object\"!=typeof e&&(e={});var r=Object.keys(t).concat(Object.keys(e)).reduce(function(r,o){return n(t[o],e[o])||(r[o]=void 0===e[o]?null:e[o]),r},{});return Object.keys(r).length>0?r:void 0},transform:function(t,e,r){if(\"object\"!=typeof t)return e;if(\"object\"==typeof e){if(!r)return e;var n=Object.keys(e).reduce(function(r,n){return void 0===t[n]&&(r[n]=e[n]),r},{});return Object.keys(n).length>0?n:void 0}}},iterator:function(t){return new s(t)},length:function(t){return\"number\"==typeof t.delete?t.delete:\"number\"==typeof t.retain?t.retain:\"string\"==typeof t.insert?t.insert.length:1}};function s(t){this.ops=t,this.index=0,this.offset=0}s.prototype.hasNext=function(){return this.peekLength()<1/0},s.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var r=this.offset,n=i.length(e);if(t>=n-r?(t=n-r,this.index+=1,this.offset=0):this.offset+=t,\"number\"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),\"number\"==typeof e.retain?o.retain=t:\"string\"==typeof e.insert?o.insert=e.insert.substr(r,t):o.insert=e.insert,o}return{retain:1/0}},s.prototype.peek=function(){return this.ops[this.index]},s.prototype.peekLength=function(){return this.ops[this.index]?i.length(this.ops[this.index])-this.offset:1/0},s.prototype.peekType=function(){return this.ops[this.index]?\"number\"==typeof this.ops[this.index].delete?\"delete\":\"number\"==typeof this.ops[this.index].retain?\"retain\":\"insert\":\"retain\"},t.exports=i},function(t,e){var r=\"[object Arguments]\"==function(){return Object.prototype.toString.call(arguments)}();function n(t){return\"[object Arguments]\"==Object.prototype.toString.call(t)}function o(t){return t&&\"object\"==typeof t&&\"number\"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,\"callee\")&&!Object.prototype.propertyIsEnumerable.call(t,\"callee\")||!1}(e=t.exports=r?n:o).supported=n,e.unsupported=o},function(t,e){function r(t){var e=[];for(var r in t)e.push(r);return e}(t.exports=\"function\"==typeof Object.keys?Object.keys:r).shim=r},function(t,e){var r=-1,n=1,o=0;function i(t,e,u){if(t==e)return t?[[o,t]]:[];(u<0||t.length<u)&&(u=null);var f=a(t,e),c=t.substring(0,f);f=h(t=t.substring(f),e=e.substring(f));var p=t.substring(t.length-f),g=function(t,e){var u;if(!t)return[[n,e]];if(!e)return[[r,t]];var l=t.length>e.length?t:e,f=t.length>e.length?e:t,c=l.indexOf(f);if(-1!=c)return u=[[n,l.substring(0,c)],[o,f],[n,l.substring(c+f.length)]],t.length>e.length&&(u[0][0]=u[2][0]=r),u;if(1==f.length)return[[r,t],[n,e]];var p=function(t,e){var r=t.length>e.length?t:e,n=t.length>e.length?e:t;if(r.length<4||2*n.length<r.length)return null;function o(t,e,r){for(var n,o,i,s,u=t.substring(r,r+Math.floor(t.length/4)),l=-1,f=\"\";-1!=(l=e.indexOf(u,l+1));){var c=a(t.substring(r),e.substring(l)),p=h(t.substring(0,r),e.substring(0,l));f.length<p+c&&(f=e.substring(l-p,l)+e.substring(l,l+c),n=t.substring(0,r-p),o=t.substring(r+c),i=e.substring(0,l-p),s=e.substring(l+c))}return 2*f.length>=t.length?[n,o,i,s,f]:null}var i,s,u,l,f,c=o(r,n,Math.ceil(r.length/4)),p=o(r,n,Math.ceil(r.length/2));if(!c&&!p)return null;i=p?c&&c[4].length>p[4].length?c:p:c;t.length>e.length?(s=i[0],u=i[1],l=i[2],f=i[3]):(l=i[0],f=i[1],s=i[2],u=i[3]);var g=i[4];return[s,u,l,f,g]}(t,e);if(p){var g=p[0],y=p[1],v=p[2],m=p[3],b=p[4],d=i(g,v),x=i(y,m);return d.concat([[o,b]],x)}return function(t,e){for(var o=t.length,i=e.length,a=Math.ceil((o+i)/2),h=a,u=2*a,l=new Array(u),f=new Array(u),c=0;c<u;c++)l[c]=-1,f[c]=-1;l[h+1]=0,f[h+1]=0;for(var p=o-i,g=p%2!=0,y=0,v=0,m=0,b=0,d=0;d<a;d++){for(var x=-d+y;x<=d-v;x+=2){for(var j=h+x,w=(C=x==-d||x!=d&&l[j-1]<l[j+1]?l[j+1]:l[j-1]+1)-x;C<o&&w<i&&t.charAt(C)==e.charAt(w);)C++,w++;if(l[j]=C,C>o)v+=2;else if(w>i)y+=2;else if(g){var O=h+p-x;if(O>=0&&O<u&&-1!=f[O]){var A=o-f[O];if(C>=A)return s(t,e,C,w)}}}for(var k=-d+m;k<=d-b;k+=2){for(var O=h+k,E=(A=k==-d||k!=d&&f[O-1]<f[O+1]?f[O+1]:f[O-1]+1)-k;A<o&&E<i&&t.charAt(o-A-1)==e.charAt(i-E-1);)A++,E++;if(f[O]=A,A>o)b+=2;else if(E>i)m+=2;else if(!g){var j=h+p-k;if(j>=0&&j<u&&-1!=l[j]){var C=l[j],w=h+C-j;if(C>=(A=o-A))return s(t,e,C,w)}}}}return[[r,t],[n,e]]}(t,e)}(t=t.substring(0,t.length-f),e=e.substring(0,e.length-f));return c&&g.unshift([o,c]),p&&g.push([o,p]),function t(e){e.push([o,\"\"]);var i=0;var s=0;var u=0;var l=\"\";var f=\"\";var c;for(;i<e.length;)switch(e[i][0]){case n:u++,f+=e[i][1],i++;break;case r:s++,l+=e[i][1],i++;break;case o:s+u>1?(0!==s&&0!==u&&(0!==(c=a(f,l))&&(i-s-u>0&&e[i-s-u-1][0]==o?e[i-s-u-1][1]+=f.substring(0,c):(e.splice(0,0,[o,f.substring(0,c)]),i++),f=f.substring(c),l=l.substring(c)),0!==(c=h(f,l))&&(e[i][1]=f.substring(f.length-c)+e[i][1],f=f.substring(0,f.length-c),l=l.substring(0,l.length-c))),0===s?e.splice(i-u,s+u,[n,f]):0===u?e.splice(i-s,s+u,[r,l]):e.splice(i-s-u,s+u,[r,l],[n,f]),i=i-s-u+(s?1:0)+(u?1:0)+1):0!==i&&e[i-1][0]==o?(e[i-1][1]+=e[i][1],e.splice(i,1)):i++,u=0,s=0,l=\"\",f=\"\"}\"\"===e[e.length-1][1]&&e.pop();var p=!1;i=1;for(;i<e.length-1;)e[i-1][0]==o&&e[i+1][0]==o&&(e[i][1].substring(e[i][1].length-e[i-1][1].length)==e[i-1][1]?(e[i][1]=e[i-1][1]+e[i][1].substring(0,e[i][1].length-e[i-1][1].length),e[i+1][1]=e[i-1][1]+e[i+1][1],e.splice(i-1,1),p=!0):e[i][1].substring(0,e[i+1][1].length)==e[i+1][1]&&(e[i-1][1]+=e[i+1][1],e[i][1]=e[i][1].substring(e[i+1][1].length)+e[i+1][1],e.splice(i+1,1),p=!0)),i++;p&&t(e)}(g),null!=u&&(g=function(t,e){var n=function(t,e){if(0===e)return[o,t];for(var n=0,i=0;i<t.length;i++){var s=t[i];if(s[0]===r||s[0]===o){var a=n+s[1].length;if(e===a)return[i+1,t];if(e<a){t=t.slice();var h=e-n,u=[s[0],s[1].slice(0,h)],l=[s[0],s[1].slice(h)];return t.splice(i,1,u,l),[i+1,t]}n=a}}throw new Error(\"cursor_pos is out of bounds!\")}(t,e),i=n[1],s=n[0],a=i[s],h=i[s+1];if(null==a)return t;if(a[0]!==o)return t;if(null!=h&&a[1]+h[1]===h[1]+a[1])return i.splice(s,2,h,a),l(i,s,2);if(null!=h&&0===h[1].indexOf(a[1])){i.splice(s,2,[h[0],a[1]],[0,a[1]]);var u=h[1].slice(a[1].length);return u.length>0&&i.splice(s+2,0,[h[0],u]),l(i,s,3)}return t}(g,u)),g=function(t){for(var e=!1,i=function(t){return t.charCodeAt(0)>=56320&&t.charCodeAt(0)<=57343},s=function(t){return t.charCodeAt(t.length-1)>=55296&&t.charCodeAt(t.length-1)<=56319},a=2;a<t.length;a+=1)t[a-2][0]===o&&s(t[a-2][1])&&t[a-1][0]===r&&i(t[a-1][1])&&t[a][0]===n&&i(t[a][1])&&(e=!0,t[a-1][1]=t[a-2][1].slice(-1)+t[a-1][1],t[a][1]=t[a-2][1].slice(-1)+t[a][1],t[a-2][1]=t[a-2][1].slice(0,-1));if(!e)return t;for(var h=[],a=0;a<t.length;a+=1)t[a][1].length>0&&h.push(t[a]);return h}(g)}function s(t,e,r,n){var o=t.substring(0,r),s=e.substring(0,n),a=t.substring(r),h=e.substring(n),u=i(o,s),l=i(a,h);return u.concat(l)}function a(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var r=0,n=Math.min(t.length,e.length),o=n,i=0;r<o;)t.substring(i,o)==e.substring(i,o)?i=r=o:n=o,o=Math.floor((n-r)/2+r);return o}function h(t,e){if(!t||!e||t.charAt(t.length-1)!=e.charAt(e.length-1))return 0;for(var r=0,n=Math.min(t.length,e.length),o=n,i=0;r<o;)t.substring(t.length-o,t.length-i)==e.substring(e.length-o,e.length-i)?i=r=o:n=o,o=Math.floor((n-r)/2+r);return o}var u=i;function l(t,e,r){for(var n=e+r-1;n>=0&&n>=e-1;n--)if(n+1<t.length){var o=t[n],i=t[n+1];o[0]===i[1]&&t.splice(n,2,[o[0],o[1]+i[1]])}return t}u.INSERT=n,u.DELETE=r,u.EQUAL=o,t.exports=u},function(t,e,r){var n=r(14),o=r(1),i=r(0),s=r(11),a=String.fromCharCode(0),h=function(t){Array.isArray(t)?this.ops=t:null!=t&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]};h.prototype.insert=function(t,e){var r={};return 0===t.length?this:(r.insert=t,null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(r.attributes=e),this.push(r))},h.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},h.prototype.retain=function(t,e){if(t<=0)return this;var r={retain:t};return null!=e&&\"object\"==typeof e&&Object.keys(e).length>0&&(r.attributes=e),this.push(r)},h.prototype.push=function(t){var e=this.ops.length,r=this.ops[e-1];if(t=i(!0,{},t),\"object\"==typeof r){if(\"number\"==typeof t.delete&&\"number\"==typeof r.delete)return this.ops[e-1]={delete:r.delete+t.delete},this;if(\"number\"==typeof r.delete&&null!=t.insert&&(e-=1,\"object\"!=typeof(r=this.ops[e-1])))return this.ops.unshift(t),this;if(o(t.attributes,r.attributes)){if(\"string\"==typeof t.insert&&\"string\"==typeof r.insert)return this.ops[e-1]={insert:r.insert+t.insert},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if(\"number\"==typeof t.retain&&\"number\"==typeof r.retain)return this.ops[e-1]={retain:r.retain+t.retain},\"object\"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},h.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},h.prototype.filter=function(t){return this.ops.filter(t)},h.prototype.forEach=function(t){this.ops.forEach(t)},h.prototype.map=function(t){return this.ops.map(t)},h.prototype.partition=function(t){var e=[],r=[];return this.forEach(function(n){(t(n)?e:r).push(n)}),[e,r]},h.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},h.prototype.changeLength=function(){return this.reduce(function(t,e){return e.insert?t+s.length(e):e.delete?t-e.delete:t},0)},h.prototype.length=function(){return this.reduce(function(t,e){return t+s.length(e)},0)},h.prototype.slice=function(t,e){t=t||0,\"number\"!=typeof e&&(e=1/0);for(var r=[],n=s.iterator(this.ops),o=0;o<e&&n.hasNext();){var i;o<t?i=n.next(t-o):(i=n.next(e-o),r.push(i)),o+=s.length(i)}return new h(r)},h.prototype.compose=function(t){for(var e=s.iterator(this.ops),r=s.iterator(t.ops),n=new h;e.hasNext()||r.hasNext();)if(\"insert\"===r.peekType())n.push(r.next());else if(\"delete\"===e.peekType())n.push(e.next());else{var o=Math.min(e.peekLength(),r.peekLength()),i=e.next(o),a=r.next(o);if(\"number\"==typeof a.retain){var u={};\"number\"==typeof i.retain?u.retain=o:u.insert=i.insert;var l=s.attributes.compose(i.attributes,a.attributes,\"number\"==typeof i.retain);l&&(u.attributes=l),n.push(u)}else\"number\"==typeof a.delete&&\"number\"==typeof i.retain&&n.push(a)}return n.chop()},h.prototype.concat=function(t){var e=new h(this.ops.slice());return t.ops.length>0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},h.prototype.diff=function(t,e){if(this.ops===t.ops)return new h;var r=[this,t].map(function(e){return e.map(function(r){if(null!=r.insert)return\"string\"==typeof r.insert?r.insert:a;throw new Error(\"diff() called \"+(e===t?\"on\":\"with\")+\" non-document\")}).join(\"\")}),i=new h,u=n(r[0],r[1],e),l=s.iterator(this.ops),f=s.iterator(t.ops);return u.forEach(function(t){for(var e=t[1].length;e>0;){var r=0;switch(t[0]){case n.INSERT:r=Math.min(f.peekLength(),e),i.push(f.next(r));break;case n.DELETE:r=Math.min(e,l.peekLength()),l.next(r),i.delete(r);break;case n.EQUAL:r=Math.min(l.peekLength(),f.peekLength(),e);var a=l.next(r),h=f.next(r);o(a.insert,h.insert)?i.retain(r,s.attributes.diff(a.attributes,h.attributes)):i.push(h).delete(r)}e-=r}}),i.chop()},h.prototype.eachLine=function(t,e){e=e||\"\\n\";for(var r=s.iterator(this.ops),n=new h,o=0;r.hasNext();){if(\"insert\"!==r.peekType())return;var i=r.peek(),a=s.length(i)-r.peekLength(),u=\"string\"==typeof i.insert?i.insert.indexOf(e,a)-a:-1;if(u<0)n.push(r.next());else if(u>0)n.push(r.next(u));else{if(!1===t(n,r.next(1).attributes||{},o))return;o+=1,n=new h}}n.length()>0&&t(n,{},o)},h.prototype.transform=function(t,e){if(e=!!e,\"number\"==typeof t)return this.transformPosition(t,e);for(var r=s.iterator(this.ops),n=s.iterator(t.ops),o=new h;r.hasNext()||n.hasNext();)if(\"insert\"!==r.peekType()||!e&&\"insert\"===n.peekType())if(\"insert\"===n.peekType())o.push(n.next());else{var i=Math.min(r.peekLength(),n.peekLength()),a=r.next(i),u=n.next(i);if(a.delete)continue;u.delete?o.push(u):o.retain(i,s.attributes.transform(a.attributes,u.attributes,e))}else o.retain(s.length(r.next()));return o.chop()},h.prototype.transformPosition=function(t,e){e=!!e;for(var r=s.iterator(this.ops),n=0;r.hasNext()&&n<=t;){var o=r.peekLength(),i=r.peekType();r.next(),\"delete\"!==i?(\"insert\"===i&&(n<t||!e)&&(t+=o),n+=o):t-=Math.min(o,t-n)}return t},t.exports=h},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var r=[],n=!0,o=!1,i=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);n=!0);}catch(t){o=!0,i=t}finally{try{!n&&a.return&&a.return()}finally{if(o)throw i}}return r}(t,e);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},i=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),s=h(r(15)),a=h(r(10));function h(t){return t&&t.__esModule?t:{default:t}}var u={globalRegularExpression:/(https?:\\/\\/|www\\.)[\\S]+/g,urlRegularExpression:/(https?:\\/\\/[\\S]+)|(www.[\\S]+)/,normalizeRegularExpression:/(https?:\\/\\/[\\S]+)|(www.[\\S]+)/,normalizeUrlOptions:{stripFragment:!1,stripWWW:!1}},l=function(){function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.quill=e,r=r||{},this.options=o({},u,r),this.registerTypeListener(),this.registerPasteListener()}return i(t,[{key:\"registerPasteListener\",value:function(){var t=this;this.quill.clipboard.addMatcher(Node.TEXT_NODE,function(e,r){if(\"string\"==typeof e.data){var n=e.data.match(t.options.globalRegularExpression);if(n&&n.length>0){var o=new s.default,i=e.data;n.forEach(function(t){var e=i.split(t),r=e.shift();o.insert(r),o.insert(t,{link:t}),i=e.join(t)}),o.insert(i),r.ops=o.ops}return r}})}},{key:\"registerTypeListener\",value:function(){var t=this;this.quill.on(\"text-change\",function(e){var r=e.ops;if(!(!r||r.length<1||r.length>2)){var n=r[r.length-1];n.insert&&\"string\"==typeof n.insert&&n.insert.match(/\\s/)&&t.checkTextForUrl()}})}},{key:\"checkTextForUrl\",value:function(){var t=this.quill.getSelection();if(t){var e=this.quill.getLeaf(t.index),r=n(e,1)[0];if(r.text){var o=r.text.match(this.options.urlRegularExpression);if(o){var i=r.text.length-o.index,s=t.index-i;this.textToUrl(s,o[0])}}}}},{key:\"textToUrl\",value:function(t,e){var r=(new s.default).retain(t).delete(e.length).insert(e,{link:this.normalize(e)});this.quill.updateContents(r)}},{key:\"normalize\",value:function(t){return this.options.normalizeRegularExpression.test(t)?(0,a.default)(t,this.options.normalizeUrlOptions):t}}]),t}();e.default=l,window.Quill&&window.Quill.register(\"modules/magicUrl\",l)}])});","// import Quill from 'quill/core'\n\n// import { AlignClass, AlignStyle } from 'quill/formats/align'\n// import { DirectionAttribute, DirectionClass, DirectionStyle } from 'quill/formats/direction'\n// import Indent from 'quill/formats/indent'\n\n// import Blockquote from 'quill/formats/blockquote'\n// import Header from 'quill/formats/header'\n// import List, { ListItem } from 'quill/formats/list'\n\n// import { BackgroundClass, BackgroundStyle } from 'quill/formats/background'\n// import { ColorClass, ColorStyle } from 'quill/formats/color'\n// import { FontClass, FontStyle } from 'quill/formats/font'\n// import { SizeClass, SizeStyle } from 'quill/formats/size'\n\n// import Bold from 'quill/formats/bold'\n// import Italic from 'quill/formats/italic'\n// import Link from 'quill/formats/link'\n// import Script from 'quill/formats/script'\n// import Strike from 'quill/formats/strike'\n// import Underline from 'quill/formats/underline'\n\n// import Image from 'quill/formats/image'\n// import Video from 'quill/formats/video'\n\n// import CodeBlock, { Code as InlineCode } from 'quill/formats/code'\n\n// import Syntax from 'quill/modules/syntax'\n// import Toolbar from 'quill/modules/toolbar'\n\n// import Icons from 'quill/ui/icons'\n// import Picker from 'quill/ui/picker'\n// import ColorPicker from 'quill/ui/color-picker'\n// import IconPicker from 'quill/ui/icon-picker'\n// import Tooltip from 'quill/ui/tooltip'\n\n// import SnowTheme from 'quill/themes/snow'\n\n// import MagicUrl from 'quill-magic-url'\n\n// Quill.register(\n// {\n// 'attributors/attribute/direction': DirectionAttribute,\n\n// 'attributors/class/align': AlignClass,\n// 'attributors/class/background': BackgroundClass,\n// 'attributors/class/color': ColorClass,\n// 'attributors/class/direction': DirectionClass,\n// 'attributors/class/font': FontClass,\n// 'attributors/class/size': SizeClass,\n\n// 'attributors/style/align': AlignStyle,\n// 'attributors/style/background': BackgroundStyle,\n// 'attributors/style/color': ColorStyle,\n// 'attributors/style/direction': DirectionStyle,\n// 'attributors/style/font': FontStyle,\n// 'attributors/style/size': SizeStyle,\n// },\n// true,\n// )\n\n// Quill.register(\n// {\n// 'formats/align': AlignClass,\n// // 'formats/direction': DirectionClass,\n// // 'formats/indent': Indent,\n\n// // 'formats/background': BackgroundStyle,\n// // 'formats/color': ColorStyle,\n// // 'formats/font': FontClass,\n// // 'formats/size': SizeClass,\n\n// // 'formats/blockquote': Blockquote,\n// // 'formats/code-block': CodeBlock,\n// 'formats/header': Header,\n// 'formats/list': List,\n// 'formats/list-item': ListItem,\n// 'formats/bold': Bold,\n// // 'formats/code': InlineCode,\n// 'formats/italic': Italic,\n// 'formats/link': Link,\n// // 'formats/script': Script,\n// 'formats/strike': Strike,\n// 'formats/underline': Underline,\n\n// // 'formats/image': Image,\n// // 'formats/video': Video,\n\n// // 'modules/syntax': Syntax,\n// 'modules/toolbar': Toolbar,\n\n// 'themes/snow': SnowTheme,\n\n// // 'ui/icons': Icons,\n// // 'ui/picker': Picker,\n// // 'ui/icon-picker': IconPicker,\n// // 'ui/color-picker': ColorPicker,\n// // 'ui/tooltip': Tooltip,\n\n// 'modules/magicUrl': MagicUrl,\n// },\n// true,\n// );\n\nimport Quill from 'quill/quill'\nimport MagicUrl from 'quill-magic-url'\nQuill.register('modules/magicUrl', MagicUrl)\n\nexport default Quill\n","import cssVars from 'css-vars-ponyfill'\ncssVars()\n\n// localStorage wrapper\nfunction initLocalStorage (options) {\n function getItem () {\n return JSON.parse(localStorage.getItem(options.key))\n }\n function setItem (value) {\n localStorage.setItem(options.key, JSON.stringify(value))\n }\n if (localStorage.getItem(options.key) === null) {\n setItem(options.defaultValue) // set default\n }\n if (options.onUpdate) options.onUpdate(getItem()) // set value on pageload\n options.get = getItem\n options.set = (value) => {\n setItem(value)\n return options\n }\n options.update = () => {\n if (options.onUpdate) options.onUpdate(getItem())\n return options\n }\n // detect updates from other tabs\n window.addEventListener('storage', (event) => {\n console.log('stor', event)\n if (event.key === options.key && options.onUpdate) options.onUpdate(getItem())\n }, false)\n return options\n}\n\nlet autoList\nconst autoListCheckbox = document.querySelector('#auto-list-checkbox')\nconst autoListSetting = initLocalStorage({\n key: 'auto-list',\n defaultValue: false,\n onUpdate: (newAutoListSetting) => {\n if (newAutoListSetting === true) {\n autoList = true\n if (autoListCheckbox.checked === false) autoListCheckbox.checked = true\n } else {\n autoList = false\n if (autoListCheckbox.checked === true) autoListCheckbox.checked = false\n }\n }\n})\nautoListCheckbox.addEventListener('change', (e) => {\n if (autoListCheckbox.checked) autoListSetting.set(true).update()\n else autoListSetting.set(false).update()\n})\n\nimport Quill from '~/lib/quill.js'\nimport Delta from 'quill-delta';\nwindow.quill = new Quill(document.querySelector('#note'), {\n modules: {\n toolbar: [\n [{header: [1, 2, false]}],\n ['bold', 'italic', 'underline', 'strike'],\n [{list: 'bullet'}, {list: 'ordered'}],\n [{ 'align': [] }],\n ['link'],\n ['clean']\n ],\n keyboard: {\n bindings: {\n 'list autofill': {\n key: ' ',\n shiftKey: null,\n collapsed: true,\n format: {\n list: false,\n 'code-block': false,\n blockquote: false,\n header: false,\n table: false,\n },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler(range, context) {\n if (!autoList) return true\n // this is part of the default handler, but causes an error for some reason:\n // if (this.quill.scroll.query('list') == null) return true;\n const { length } = context.prefix;\n const [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]':\n case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':\n case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n const delta = new Delta()\n .retain(range.index - offset)\n .delete(length + 1)\n .retain(line.length() - 2 - offset)\n .retain(1, { list: value });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n return false;\n },\n },\n },\n },\n // toolbar: { container: '#toolbar-container' },\n magicUrl: true,\n history: {\n maxStack: 1000\n }\n },\n // formats: ['header'],\n theme: 'snow',\n placeholder: 'Maybe I\\'ll have a todo list here?'\n})\n\nconst delta = initLocalStorage({\n key: 'quill-delta',\n defaultValue: { ops: [] },\n onUpdate: (delta) => {\n quill.setContents(delta, 'silent')\n }\n})\n\nquill.on('text-change', () => {\n delta.set(quill.getContents())\n})\n\n// add old taskler tasks into quill\nif (localStorage.getItem('items') !== null) {\n const items = JSON.parse(localStorage.getItem('items'))\n const delta = quill.getContents()\n if ((items.repeatingTasks && items.repeatingTasks.length) || (items.tasks && items.tasks.length)) {\n delta.ops.push({\n insert: \"Looks like you've used Taskler before. I imported your old tasks.\\n\\n\"\n })\n }\n if (items.repeatingTasks && items.repeatingTasks.length) {\n for (let i = 0; i < items.repeatingTasks.length; i++) {\n delta.ops.push({\n insert: `Repeating task ${i + 1}:\\n`,\n attributes: { bold: true }\n })\n delta.ops.push({\n insert: items.repeatingTasks[i].text + '\\n\\n'\n })\n }\n }\n if (items.tasks && items.tasks.length) {\n for (let i = 0; i < items.tasks.length; i++) {\n delta.ops.push({\n insert: `Task ${i + 1}:\\n`,\n attributes: { bold: true }\n })\n delta.ops.push({\n insert: items.tasks[i] + '\\n\\n'\n })\n }\n }\n quill.setContents(delta)\n localStorage.removeItem('items')\n}\n\n// extension icons\nconst body = document.querySelector('body')\nconst isExtension = body.dataset.buildAs === 'extension'\nif (!isExtension) {\n // browser version check:\n // https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser/9851769\n \n // Firefox 1.0+\n const isFirefox = typeof InstallTrigger !== 'undefined';\n // Chrome 1-71\n const isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);\n\n if (isChrome) document.getElementById('chrome-extension-icon').classList.add('visible')\n if (isFirefox) document.getElementById('firefox-extension-icon').classList.add('visible')\n}\n\nconst darkModeCheckbox = document.querySelector('#dark-mode-checkbox')\nconst darkMode = initLocalStorage({\n key: 'dark-mode',\n defaultValue: false,\n onUpdate: (newDarkMode) => {\n if (newDarkMode === false) {\n // body.classList.remove('dark-mode')\n // body.classList.add('light-mode')\n cssVars({ variables: {\n 'bgcolor': '#fafafa',\n 'bgcolor-overlay': '#F0F0F0',\n 'color': '#272727',\n\n 'logo-dark': '#272727',\n 'logo-mid': '#424242',\n 'logo-light': '#696969',\n }})\n if (darkModeCheckbox.checked === true) darkModeCheckbox.checked = false\n } else if (newDarkMode === true) {\n // body.classList.remove('light-mode')\n // body.classList.add('dark-mode')\n cssVars({ variables: {\n 'bgcolor': '#272727',\n 'bgcolor-overlay': '#313131',\n 'color': '#fafafa',\n\n 'logo-dark': '#fafafa',\n 'logo-mid': '#bdbdbd',\n 'logo-light': '#969696',\n }})\n if (darkModeCheckbox.checked === false) darkModeCheckbox.checked = true\n }\n }\n})\ndarkModeCheckbox.addEventListener('change', (e) => {\n if (darkModeCheckbox.checked) darkMode.set(true).update()\n else darkMode.set(false).update()\n})\n\nconst toolbarCheckbox = document.querySelector('#toolbar-checkbox')\nconst toolbar = document.querySelector('.ql-toolbar')\nconst toolbarSetting = initLocalStorage({\n key: 'toolbar',\n defaultValue: false,\n onUpdate: (newToolbarSetting) => {\n if (newToolbarSetting === true) {\n toolbar.classList.add('visible')\n if (toolbarCheckbox.checked === false) toolbarCheckbox.checked = true\n } else {\n toolbar.classList.remove('visible')\n if (toolbarCheckbox.checked === true) toolbarCheckbox.checked = false\n }\n }\n})\ntoolbarCheckbox.addEventListener('change', (e) => {\n if (toolbarCheckbox.checked) toolbarSetting.set(true).update()\n else toolbarSetting.set(false).update()\n})\n\n// settingsDialog\nconst settingsIcon = document.querySelector('.settings')\nconst dialog = document.querySelector('.settings-dialog')\nsettingsIcon.addEventListener('click', () => {\n dialog.classList.add('visible')\n})\n\ndocument.addEventListener('click', function (e) {\n if (e.target.classList.contains('dialog-container')) {\n var dialog = e.target\n dialog.classList.remove('visible')\n }\n})\n\n// enable transitions\nwindow.addEventListener('load', () => {\n body.classList.remove('no-transition')\n})\n"]}
+2 -2
docs/manifest.json
··· 1 1 { 2 2 "manifest_version": 2, 3 3 "name": "Taskler", 4 - "version": "2.0.0", 4 + "version": "2.0.3", 5 5 "homepage_url": "https://taskler.kasp.io/", 6 6 "description": "A simple text editor on your New Tab page", 7 7 "icons": { ··· 13 13 "newtab": "index.html" 14 14 }, 15 15 "permissions": [] 16 - } 16 + }
+1 -1
src/manifest.json
··· 1 1 { 2 2 "manifest_version": 2, 3 3 "name": "Taskler", 4 - "version": "2.0.1", 4 + "version": "2.0.3", 5 5 "homepage_url": "https://taskler.kasp.io/", 6 6 "description": "A simple text editor on your New Tab page", 7 7 "icons": {