text: (window.webpackJsonp = window.webpackJsonp || []).push([
      [18],
      {
          111: function(t, n, e) {
              t.exports = e.p + 'assets/img/pianobg.77851d4.jpg';
          },
          112: function(t, n, e) {
              var i = e(286);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('2842937a', i, !1, { sourceMap: !1 });
          },
          113: function(t, n, e) {
              var i = e(288);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('78ec4d3a', i, !1, { sourceMap: !1 });
          },
          114: function(t, n, e) {
              var i = e(291);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('7ff102c5', i, !1, { sourceMap: !1 });
          },
          116: function(t, n, e) {
              var i = e(296);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('7e516453', i, !1, { sourceMap: !1 });
          },
          117: function(t, n, e) {
              var i = e(298);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('205d33d3', i, !1, { sourceMap: !1 });
          },
          118: function(t, n, e) {
              var i = e(300);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('06ca6a45', i, !1, { sourceMap: !1 });
          },
          119: function(t, n, e) {
              var i = e(302);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('ccd09076', i, !1, { sourceMap: !1 });
          },
          120: function(t, n, e) {
              var i = e(304);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('6d693766', i, !1, { sourceMap: !1 });
          },
          121: function(t, n, e) {
              var i = e(306);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('b7df9d1e', i, !1, { sourceMap: !1 });
          },
          122: function(t, n, e) {
              var i = e(308);
              'string' == typeof i && (i = [[t.i, i, '']]),
                  i.locals && (t.exports = i.locals);
              (0, e(21).default)('4de30bb6', i, !1, { sourceMap: !1 });
          },
          285: function(t, n, e) {
              'use strict';
              var i = e(112);
              e.n(i).a;
          },
          286: function(t, n, e) {
              (n = e(20)(!1)).push([
                  t.i,
                  '.note-bar{position:absolute;z-index:10;top:0;touch-action:none;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.note-bar,.note-bar>canvas{width:100%;height:100%}',
                  '',
              ]),
                  (t.exports = n);
          },
          287: function(t, n, e) {
              'use strict';
              var i = e(113);
              e.n(i).a;
          },
          288: function(t, n, e) {
              (n = e(20)(!1)).push([
                  t.i,
                  '.keyboard-c{position:absolute;bottom:0;left:0;width:100%;padding:0 0 15px}.keyboard{position:absolute;bottom:15px;height:200px;touch-action:none;cursor:default;overflow:visible;transition:transform .2s;-webkit-user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transform-origin:0 100%;font-size:12px;box-shadow:0 0 10px rgba(0,0,0,.267)}.keyboard>.black{position:absolute;height:125px;margin:0 0 0 26px;width:0;bottom:75px;z-index:4;pointer-events:none}.keyboard>.black>div{position:absolute;left:0;top:0;width:27px;height:100%;background-color:#444;border:1px solid rgba(0,0,0,.533);border-radius:3px;color:#fff;text-align:center}.keyboard>.black>div.act{background-color:#c783b2;border-color:rgba(0,0,0,.533)}.keyboard>.white{height:200px;white-space:nowrap;bottom:0;margin:0 0 0 1px;z-index:2;pointer-events:none}.keyboard>.white>div{position:relative;display:inline-block;width:41px;height:100%;background-color:#fff;border:1px solid rgba(0,0,0,.267);margin:0 0 0 -1px;box-sizing:border-box;border-radius:4px;text-align:center;color:#000}.keyboard>.white>div.act{background-color:rgba(173,60,138,.6)}.keyboard>.white>div>div.pn{position:absolute;width:100%;bottom:10px;font-size:12px}.keyboard>.white>div>div.pn>div.sub,.keyboard>.white>div>div.pn>div.sup{display:inline-block;margin:0 2px}.keyboard>.white>div>div.pn>div.sub{transform:scale(.9) translateY(5px)}.keyboard>.white>div>div.pn>div.sup{transform:scale(.9) translateY(-5px)}.keyboard.hidenum>div>div>span,.keyboard.hidepname>div.white>div>div{display:none}.keyboard>.center-c{position:absolute;bottom:35px;left:925px;font-size:12px;color:#a43983;z-index:5;pointer-events:none}',
                  '',
              ]),
                  (t.exports = n);
          },
          289: function(t, n) {
              t.exports =
                  'data:image/png;base64,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';
          },
          290: function(t, n, e) {
              'use strict';
              var i = e(114);
              e.n(i).a;
          },
          291: function(t, n, e) {
              (n = e(20)(!1)).push([
                  t.i,
                  '.old-entry{min-height:20px}.old-entry>div{padding:.6em 0 0;margin:0 20px;text-align:right;font-size:13px}.visit-ct>.logo-ct{position:relative;margin:0}.visit-ct>.logo-ct>.pn-logo{position:absolute;top:0;left:18px;width:40px;max-width:30%;overflow:hidden;border-radius:110px;border:2px solid #fff;box-shadow:0 0 10px rgba(0,0,0,.2);margin:0 auto}.visit-ct>.logo-ct>.pn-logo:before{padding-top:100%;content:"";display:block}.visit-ct>.logo-ct>.pn-logo>img{position:absolute;top:0;max-height:100%}.visit-ct>.logo-ct>.pn-info{margin:0 0 0 78px}.visit-ct>.logo-ct>.pn-info>h1{padding:4px 0 0;margin:0;font-size:16px;font-weight:700}.visit-ct>.logo-ct>.pn-info>p{margin:0;word-break:break-all}.visit-ct>.tips-wrapper{padding:50px 0 30px;margin:0 20px;font-size:17px;min-height:2em}.visit-ct>.tips-wrapper>div{text-align:center;transition:opacity .3s}.visit-ct>.tips-wrapper>div.hidden{opacity:0}.visit-ct>.tips-wrapper>div b{margin:0 6px;font-size:17px;color:#444}.visit-ct>.doc-div{margin:0 15px;padding:10px 0 0}.visit-ct>.doc-div p{margin:8px 0}',
                  '',
              ]),
                  (t.exports = n);
          },
          295: function(t, n, e) {
              'use strict';
              var i = e(116);
              e.n(i).a;
          },
          296: function(t, n, e) {
              (n = e(20)(!1)).push([
                  t.i,
                  '.xw-input{margin:0 2px;border:1px solid rgba(0,0,0,.333);border-radius:3px;padding:4px 8px}.pc-keyboard-save{padding:0}.pc-keyboard-save>.t-save-tips{margin:1em 0}.pc-keyboard-save>.title{margin:0 0 1em}.pc-keyboard-save .save-list{position:relative;padding:0 0 1em}.pc-keyboard-save .save-list .save-list-item{display:inline-block;margin:3px;transition:all .6s}.pc-keyboard-save .save-list .save-list-item>div.cont{position:relative;padding:10px 12px;width:280px;border-radius:3px;box-shadow:0 0 6px rgba(0,0,0,.267);background-color:#fff}.pc-keyboard-save .save-list .save-list-item>div.cont>.name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 50px 5px 0}.pc-keyboard-save .save-list .save-list-item>div.cont>.time{font-size:12px}.pc-keyboard-save .save-list .save-list-item>div.cont>.btns{position:absolute;bottom:5px;right:3px;text-align:center}.pc-keyboard-save .save-list .save-list-item>div.cont>.btns>.xw-button{font-size:12px}.pc-keyboard-save .save-list-enter{opacity:0;transform:translateY(-100px) scale(.5)}.pc-keyboard-save .save-list-leave-to{opacity:0;transform:scale(.2) translateY(-100px) rotate(30deg)}.pc-keyboard-save .save-list-leave-active{position:absolute}',
                  '',
              ]),
                  (t.exports = n);
          },
          297: function(t, n, e) {
              'use strict';
              var i = e(117);
              e.n(i).a;
          },
          298: function(t, n, e) {
              (n = e(20)(!1)).push([t.i, '', '']), (t.exports = n);
          },
          299: function(t, n, e) {
              'use strict';
              var i = e(118);
              e.n(i).a;
          },
          300: function(t, n, e) {
              (n = e(20)(!1)).push([
                  t.i,
                  '.faq-item{background:#fff;padding:16px 0 8px;border-radius:5px;box-shadow:0 0 5px rgba(0,0,0,.267);margin:0 0 1em}.faq-item>header{position:relative;font-size:16px;padding:0 10px 0 20px;color:#000}.faq-item>header:before{position:absolute;top:8px;left:0;content:"";display:inline-block;width:14px;height:9px;background:#2479c1}.faq-item>p{margin:5px 10px 5px 20px}',
                  '',
              ]),
                  (t.exports = n);
          },
          301: function(t, n, e) {
              'use strict';
              var i = e(119);
              e.n(i).a;
          },
          302: function(t, n, e) {
              (n = e(20)(!1)).push([
                  t.i,
                  '.pc-kbd-ct{padding:30px 5px 15px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1272px;margin:0 auto}.pc-kbd-ct>.pc-kbd-row{display:block;white-space:nowrap;height:52px;margin:0 0 5px}.pc-kbd-ct>.pc-kbd-row>div{display:inline-block;width:50px;height:50px;margin:0 5px 0 0;background:#fff;border:1px solid rgba(0,0,0,.302);border-radius:4px;line-height:1;vertical-align:top}.pc-kbd-ct>.pc-kbd-row>div.disable{background:#7d97ad;border:1px solid rgba(0,0,0,.2)}.pc-kbd-ct>.pc-kbd-row>div.d{background-color:rgba(199,39,76,.502)}.pc-kbd-ct>.pc-kbd-row>div.selec{-webkit-animation:shanshan 1s infinite;animation:shanshan 1s infinite}.pc-kbd-ct>.pc-kbd-row>div>.key-name{padding:5px 8px 0;pointer-events:none}.pc-kbd-ct>.pc-kbd-row>div>.key-rep{font-size:12px;padding:6px 0 0;color:rgba(16,10,255,.8);font-weight:700;text-align:center;pointer-events:none}.pc-kbd-set{width:1272px;margin:0 auto;padding:0 0 50px}.pc-kbd-set>.row-title{margin:0 10px .5em;font-size:16px;font-weight:700}.pc-kbd-set>.row{margin:0 10px}.pc-kbd-set>.row.faq-item{margin:0 10px 1em}.pc-kbd-set .xw-button{font-size:14px;margin:0 .25em}.pc-kbd-set .select-key{display:inline-block;width:50px;height:50px;margin:0 5px 0 0;background:rgba(0,0,0,.733);border:1px solid rgba(0,0,0,.302);border-radius:4px;line-height:1;vertical-align:top}.pc-kbd-set .select-key>.key-name{padding:5px 8px 0;pointer-events:none;font-weight:700;color:#fff}.pc-kbd-set .edit-container{margin:5px 0 0;border:1px solid rgba(0,0,0,.2);padding:3px 16px 20px;background:#fff}.pc-kbd-set .edit-container>.btn-group{margin:10px 0 0}@-webkit-keyframes shanshan{0%{border:1px solid rgba(16,10,255,.8);color:rgba(16,10,255,.8);background-color:rgba(16,10,255,.2)}49%{border:1px solid rgba(16,10,255,.8);color:rgba(16,10,255,.8);background-color:rgba(16,10,255,.2)}50%{border:1px solid rgba(0,0,0,.302);color:#000}to{border:1px solid rgba(0,0,0,.302);color:#000}}@keyframes shanshan{0%{border:1px solid rgba(16,10,255,.8);color:rgba(16,10,255,.8);background-color:rgba(16,10,255,.2)}49%{border:1px solid rgba(16,10,255,.8);color:rgba(16,10,255,.8);background-color:rgba(16,10,255,.2)}50%{border:1px solid rgba(0,0,0,.302);color:#000}to{border:1px solid rgba(0,0,0,.302);color:#000}}',
                  '',
              ]),
                  (t.exports = n);
          },
          303: function(t, n, e) {
              'use strict';
              var i = e(120);
              e.n(i).a;
          },
          304: function(t, n, e) {
              (n = e(20)(!1)).push([
                  t.i,
                  '.setting-panel{position:relative}.setting-panel>.slide-menu{position:relative;top:4px;z-index:10;margin:0;padding:0 15px;line-height:32px;overflow-y:hidden;font-size:13px;white-space:nowrap;background:#fff;box-shadow:0 0 5px rgba(0,0,0,.2)}.setting-panel>.slide-menu>a{display:inline-block;padding:0 12px;cursor:pointer;margin:0 1px;background-color:hsla(0,0%,100%,.333);transition:background-color .3s;text-decoration:none;color:rgba(0,0,0,.667);font-size:14px}.setting-panel>.slide-menu>a.active{position:relative;background-color:rgba(1,102,189,.133);color:#0166bd;font-weight:700;border:1px solid rgba(1,102,189,.2);border-width:0 1px}.setting-panel>.slide-menu>a:focus,.setting-panel>.slide-menu>a:hover{outline:none;background-color:rgba(1,102,189,.133)}.setting-panel>.slide-menu>a>.iconfont{padding:0 3px 0 0}.setting-panel>.st-cont{position:absolute;top:36px;left:0;bottom:0;width:100%;overflow-y:auto}',
                  '',
              ]),
                  (t.exports = n);
          },
          305: function(t, n, e) {
              'use strict';
              var i = e(121);
              e.n(i).a;
          },
          306: function(t, n, e) {
              var i = e(20),
                  a = e(58),
                  r = e(111);
              n = i(!1);
              var o = a(r);
              n.push([
                  t.i,
                  '.piano{top:50px;left:0;right:0;background-image:url(' +
                      o +
                      ')}.piano,.piano>.loading{position:absolute;overflow:hidden}.piano>.loading{z-index:20;top:50%;left:50%;width:200px;background:#fff;padding:0 0 10px;box-shadow:0 0 5px rgba(0,0,0,.2);border-radius:5px;transform:translate(-50%,-50%)}.piano>.loading>.loading-status{position:relative;height:7em;font-size:13px}.piano>.loading>.loading-status .loading-icon{padding:3em 0 0}.piano>.loading>.text{padding:20px 0;font-size:15px;text-align:center}.piano>.loading>.loading-bar{display:block;height:2px;max-width:100%;background:rgba(1,102,189,.851)}',
                  '',
              ]),
                  (t.exports = n);
          },
          307: function(t, n, e) {
              'use strict';
              var i = e(122);
              e.n(i).a;
          },
          308: function(t, n, e) {
              (n = e(20)(!1)).push([
                  t.i,
                  '#app,body,html{position:relative;width:100%;height:100%}.xw-footer{display:none}',
                  '',
              ]),
                  (t.exports = n);
          },
          458: function(t, n, e) {
              'use strict';
              e.r(n);
              var i = function() {
                  var t = this.$createElement,
                      n = this._self._c || t;
                  return n(
                      'div',
                      { attrs: { id: 'app' } },
                      [
                          this.state.hideNavBar
                              ? this._e()
                              : n('xw-header', [
                                    n('div', { staticClass: 'header-logo' }, [
                                        n('a', { attrs: { href: '/piano/' } }, [
                                            this._v(
                                                '\n            xiwnn.com\n         '
                                            ),
                                        ]),
                                    ]),
                                ]),
                          n('piano'),
                          n('xw-footer'),
                      ],
                      1
                  );
              };
              i._withStripped = !0;
              var a = e(2),
                  r = e.n(a),
                  o = e(3),
                  s = e.n(o),
                  c = e(10),
                  l = e(0),
                  u = e(11),
                  p = e.n(u);
              function d(t, n) {
                  var e = Object.keys(t);
                  if (Object.getOwnPropertySymbols) {
                      var i = Object.getOwnPropertySymbols(t);
                      n &&
                          (i = i.filter(function(n) {
                              return Object.getOwnPropertyDescriptor(
                                  t,
                                  n
                              ).enumerable;
                          })),
                          e.push.apply(e, i);
                  }
                  return e;
              }
              function f(t) {
                  for (var n = 1; n < arguments.length; n++) {
                      var e = null != arguments[n] ? arguments[n] : {};
                      n % 2
                          ? d(Object(e), !0).forEach(function(n) {
                                p()(t, n, e[n]);
                            })
                          : Object.getOwnPropertyDescriptors
                          ? Object.defineProperties(
                                t,
                                Object.getOwnPropertyDescriptors(e)
                            )
                          : d(Object(e)).forEach(function(n) {
                                Object.defineProperty(
                                    t,
                                    n,
                                    Object.getOwnPropertyDescriptor(e, n)
                                );
                            });
                  }
                  return t;
              }
              var h = {
                      90: 28,
                      83: 29,
                      88: 30,
                      68: 31,
                      67: 32,
                      86: 33,
                      71: 34,
                      66: 35,
                      72: 36,
                      78: 37,
                      74: 38,
                      77: 39,
                      188: 40,
                      81: 40,
                      76: 41,
                      50: 41,
                      190: 42,
                      87: 42,
                      186: 43,
                      51: 43,
                      191: 44,
                      69: 44,
                      82: 45,
                      53: 46,
                      84: 47,
                      54: 48,
                      89: 49,
                      55: 50,
                      85: 51,
                      73: 52,
                      57: 53,
                      79: 54,
                      48: 55,
                      80: 56,
                      219: 57,
                      187: 58,
                      221: 59,
                  },
                  v = {
                      8: 73,
                      32: 40,
                      37: 44,
                      38: 42,
                      39: 47,
                      40: 45,
                      48: 68,
                      49: 52,
                      50: 54,
                      51: 56,
                      52: 57,
                      53: 59,
                      54: 61,
                      55: 63,
                      56: 64,
                      57: 66,
                      65: 28,
                      66: 23,
                      67: 20,
                      68: 32,
                      69: 44,
                      70: 33,
                      71: 35,
                      72: 37,
                      73: 52,
                      74: 39,
                      75: 40,
                      76: 42,
                      77: 27,
                      78: 25,
                      79: 54,
                      80: 56,
                      81: 40,
                      82: 45,
                      83: 30,
                      84: 47,
                      85: 51,
                      86: 21,
                      87: 42,
                      88: 18,
                      89: 49,
                      90: 16,
                      96: 49,
                      97: 52,
                      98: 54,
                      99: 56,
                      100: 57,
                      101: 59,
                      102: 61,
                      103: 63,
                      104: 64,
                      105: 66,
                      106: 71,
                      107: 68,
                      109: 73,
                      110: 51,
                      111: 69,
                      186: 44,
                      187: 71,
                      188: 28,
                      189: 69,
                      190: 30,
                      191: 32,
                      192: 51,
                      219: 57,
                      220: 61,
                      221: 59,
                      222: 45,
                  },
                  b = function() {
                      return f({}, v);
                  },
                  m = function() {
                      return f({}, h);
                  },
                  g = e(55),
                  y = e(54),
                  w = function() {
                      var t = this,
                          n = t.$createElement,
                          e = t._self._c || n;
                      return e(
                          'div',
                          {
                              ref: 'piano',
                              staticClass: 'piano',
                              style: { top: t.hideNavBar ? '0px' : '50px' },
                          },
                          [
                              e('panelsMain'),
                              e('note-bar'),
                              e('keyboard'),
                              t.loading
                                  ? e('div', { staticClass: 'loading' }, [
                                        e(
                                            'div',
                                            { staticClass: 'loading-status' },
                                            [
                                                e(
                                                    'xwLoading',
                                                    { attrs: { loading: !0 } },
                                                    [
                                                        t._v(
                                                            '\n            ' +
                                                                t._s(
                                                                    t.loadmsg
                                                                        ? t.loadmsg
                                                                        : 'loading...'
                                                                ) +
                                                                '\n         '
                                                        ),
                                                    ]
                                                ),
                                            ],
                                            1
                                        ),
                                        e('div', {
                                            staticClass: 'loading-bar',
                                            style: { width: t.persent + '%' },
                                        }),
                                    ])
                                  : t._e(),
                              t.isunsupported
                                  ? e('unsupported', {
                                        attrs: {
                                            reason:
                                                '不支持html5音频接口(AudioContext)特性',
                                        },
                                    })
                                  : t._e(),
                          ],
                          1
                      );
                  };
              w._withStripped = !0;
              var x = function() {
                  var t = this.$createElement,
                      n = this._self._c || t;
                  return n(
                      'div',
                      {
                          ref: 'nbCont',
                          staticClass: 'note-bar',
                          style: { height: this.height + 'px' },
                      },
                      [n('canvas', { ref: 'canvas' })]
                  );
              };
              x._withStripped = !0;
              var k = e(68),
                  O = e(65),
                  T = new Array(89);
              T[0] = [0, 0];
              var S = new Array(89);
              S[0] = [0, 0];
              for (
                  var j = new Array(89),
                      M = [],
                      C = [],
                      _ = '',
                      E = '',
                      P = [0, 2, 0, 0, -2, 0, 2, 0, 0, -2, 0, 0],
                      N = [1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0],
                      L = ['A', '', 'B', 'C', '', 'D', '', 'E', 'F', '', 'G', ''],
                      z = 0,
                      D = 0;
                  z < 88;
                  z++
              ) {
                  var A = z + 1,
                      I = z % 12,
                      H = '';
                  if (
                      (A <= 15
                          ? (H = String(Math.floor((27 - A) / 12)))
                          : A >= 40 && (H = String(Math.floor((A - 28) / 12))),
                      1 === N[I])
                  ) {
                      var q = '';
                      H &&
                          (q =
                              A < 39
                                  ? '<div class="sub">'.concat(H, '</div>')
                                  : '<div class="sup">'.concat(H, '</div>'));
                      var Y = L[I],
                          X = A < 28 ? Y : Y.toLowerCase();
                      (E += "<div data-key='"
                          .concat(A, "'><span>")
                          .concat(A, '</span><div class="pn" >')
                          .concat(X)
                          .concat(q, '</div></div>')),
                          (j[A] = ''.concat(X).concat(H)),
                          (T[A] = [40 * D, 40]),
                          M.push(A),
                          C.push(0),
                          D++;
                  } else {
                      var R = L[I - 1],
                          J = A < 28 ? R : R.toLowerCase(),
                          G = C.length - 1;
                      (_ += "<div data-key='"
                          .concat(A, '\' style="left:')
                          .concat(40 * G + P[I], 'px;"><span>')
                          .concat(A, '</span></div>')),
                          (j[A] = '#'.concat(J).concat(H)),
                          (T[A] = [40 * G + 40 - 13 + P[I], 26]),
                          (C[C.length - 1] = A);
                  }
              }
              for (var K = 1; K < 89; K++) {
                  var U = T[K];
                  if (26 === U[1]) S[K] = [U[0], U[1]];
                  else {
                      var F = T[K - 1],
                          W = F[0] + F[1],
                          B = 0,
                          Z =
                              (W + (B = 88 === K ? U[0] + U[1] : T[K + 1][0])) /
                              2,
                          V = B - W;
                      V < 22 && (V = 22), (S[K] = [Z - V / 2, V]);
                  }
              }
              var Q = _,
                  $ = E;
              function tt(t, n) {
                  var e = t / 40,
                      i = Math.floor(e);
                  if (!(n < -200)) {
                      if (-n < 75) return M[i];
                      var a = t - 40 * i;
                      if (a <= 13) {
                          var r = C[i - 1];
                          if (r) return r;
                      } else if (a >= 27) {
                          var o = C[i];
                          if (o) return o;
                      }
                      return M[i];
                  }
              }
              for (
                  var nt = [
                          58,
                          288,
                          25,
                          202,
                          0,
                          217,
                          152,
                          307,
                          97,
                          330,
                          230,
                          172,
                      ],
                      et = 0;
                  et < 12;
                  et++
              )
                  nt[et] = 'hsla('.concat(nt[et], ', 90%, 60%, 0.9)');
              var it = {
                      data: function() {
                          return { height: 0, width: 200, scale: 1, left: 0 };
                      },
                      mounted: function() {
                          Object(k.d)(this), (this.enable = !0), this.tick();
                      },
                      destroyed: function() {
                          this.enable = !1;
                      },
                      methods: {
                          tick: function() {
                              this.enable &&
                                  (!(function(t, n, e) {
                                      var i = t.getContext('2d'),
                                          a = t.width,
                                          r = t.height;
                                      i.clearRect(0, 0, a, r),
                                          k.f.clientWidth > 400 &&
                                              ((i.shadowColor = '#0003'),
                                              (i.shadowBlur = 6),
                                              (i.shadowOffsetX = 0),
                                              (i.shadowOffsetY = 0));
                                      for (
                                          var o = Date.now(),
                                              s = O.b.timeline,
                                              c = 1;
                                          c < s.length;
                                          c++
                                      ) {
                                          var l = s[c];
                                          if (l.length) {
                                              var u = S[c],
                                                  p = o;
                                              i.fillStyle = nt[c % nt.length];
                                              for (
                                                  var d = l.length - 1;
                                                  d >= 0;
                                                  d--
                                              ) {
                                                  var f = l[d];
                                                  if (1 == f[1]) {
                                                      var h = (p - f[0]) / 6,
                                                          v = (o - p) / 6,
                                                          b = r - v;
                                                      if (b < 0) {
                                                          (p = o),
                                                              l.splice(0, d + 2);
                                                          break;
                                                      }
                                                      b < h && (h = b),
                                                          i.fillRect(
                                                              (u[0] - e) * n,
                                                              r - v,
                                                              u[1] * n,
                                                              -h
                                                          );
                                                  } else 0 == f[1] && (p = f[0]);
                                              }
                                          }
                                      }
                                  })(this.$refs.canvas, this.scale, this.left),
                                  requestAnimationFrame(this.tick));
                          },
                          setSize: function(t, n, e, i) {
                              (this.height = n),
                                  (this.width = t),
                                  (this.scale = e),
                                  (this.left = i),
                                  (this.$refs.canvas.width = t),
                                  (this.$refs.canvas.height = n);
                          },
                      },
                  },
                  at = (e(285), e(51)),
                  rt = Object(at.a)(it, x, [], !1, null, null, null);
              rt.options.__file = 'src/client/pages/piano/new/comp/note-bar.vue';
              var ot = rt.exports,
                  st = function() {
                      var t = this.$createElement,
                          n = this._self._c || t;
                      return n(
                          'div',
                          { ref: 'keyboardConatiner', staticClass: 'keyboard-c' },
                          [
                              n(
                                  'div',
                                  {
                                      ref: 'keyboard',
                                      staticClass: 'keyboard',
                                      class: {
                                          hidenum: !this.cacheConf.showKbdNum,
                                          hidepname: !this.cacheConf
                                              .showPitchName,
                                      },
                                      style: {
                                          transform:
                                              'scale(' +
                                              this.scale +
                                              ') translateX(-' +
                                              this.left +
                                              'px)',
                                      },
                                  },
                                  [
                                      n('div', {
                                          ref: 'blacks',
                                          staticClass: 'black',
                                      }),
                                      n('div', {
                                          ref: 'whites',
                                          staticClass: 'white',
                                      }),
                                      n('div', {
                                          directives: [
                                              {
                                                  name: 'show',
                                                  rawName: 'v-show',
                                                  value: this.cacheConf
                                                      .showCenterCText,
                                                  expression:
                                                      'cacheConf.showCenterCText',
                                              },
                                          ],
                                          ref: 'centerC',
                                          staticClass: 'center-c',
                                      }),
                                  ]
                              ),
                          ]
                      );
                  };
              function ct(t, n) {
                  var e;
                  if (
                      'undefined' == typeof Symbol ||
                      null == t[Symbol.iterator]
                  ) {
                      if (
                          Array.isArray(t) ||
                          (e = (function(t, n) {
                              if (!t) return;
                              if ('string' == typeof t) return lt(t, n);
                              var e = Object.prototype.toString
                                  .call(t)
                                  .slice(8, -1);
                              'Object' === e &&
                                  t.constructor &&
                                  (e = t.constructor.name);
                              if ('Map' === e || 'Set' === e)
                                  return Array.from(t);
                              if (
                                  'Arguments' === e ||
                                  /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(
                                      e
                                  )
                              )
                                  return lt(t, n);
                          })(t)) ||
                          (n && t && 'number' == typeof t.length)
                      ) {
                          e && (t = e);
                          var i = 0,
                              a = function() {};
                          return {
                              s: a,
                              n: function() {
                                  return i >= t.length
                                      ? { done: !0 }
                                      : { done: !1, value: t[i++] };
                              },
                              e: function(t) {
                                  throw t;
                              },
                              f: a,
                          };
                      }
                      throw new TypeError(
                          'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
                      );
                  }
                  var r,
                      o = !0,
                      s = !1;
                  return {
                      s: function() {
                          e = t[Symbol.iterator]();
                      },
                      n: function() {
                          var t = e.next();
                          return (o = t.done), t;
                      },
                      e: function(t) {
                          (s = !0), (r = t);
                      },
                      f: function() {
                          try {
                              o || null == e.return || e.return();
                          } finally {
                              if (s) throw r;
                          }
                      },
                  };
              }
              function lt(t, n) {
                  (null == n || n > t.length) && (n = t.length);
                  for (var e = 0, i = new Array(n); e < n; e++) i[e] = t[e];
                  return i;
              }
              st._withStripped = !0;
              var ut = {
                      data: function() {
                          return {
                              scale: 1,
                              offsetTop: 0,
                              offsetLeft: 0,
                              left: 0,
                          };
                      },
                      computed: {
                          cacheConf: function() {
                              return this.$store.state.cacheConf;
                          },
                      },
                      mounted: function() {
                          this.init(),
                              this.initEvent(),
                              (this.$refs.centerC.innerText = '中央C'),
                              Object(k.b)(this);
                      },
                      methods: {
                          init: function() {
                              var t = this.$refs,
                                  n = t.blacks,
                                  e = t.whites;
                              (n.innerHTML = Q), (e.innerHTML = $);
                              var i = new Array(89);
                              function a(t) {
                                  for (var n = 0; n < t.children.length; n++) {
                                      var e = t.children[n],
                                          a = parseInt(
                                              e.getAttribute('data-key'),
                                              10
                                          );
                                      a && (i[a] = e);
                                  }
                              }
                              a(n), a(e), (this.keyDoms = i);
                          },
                          initEvent: function() {
                              var t,
                                  n = this,
                                  e = this.$refs.keyboardConatiner;
                              'ontouchstart' in window &&
                                  ((t = !1),
                                  e.addEventListener(
                                      'touchstart',
                                      function(e) {
                                          e.stopPropagation(),
                                              e.preventDefault(),
                                              (t = !0);
                                          for (
                                              var i = e.touches, a = [], r = 0;
                                              r < e.touches.length;
                                              r++
                                          ) {
                                              var o = i[r],
                                                  s = o.pageX - n.offsetLeft,
                                                  c = o.pageY - n.offsetTop,
                                                  l = tt(
                                                      s / n.scale + n.left,
                                                      c / n.scale
                                                  );
                                              l && a.push(l);
                                          }
                                          a.length && O.a.down(a, !0, 1);
                                      },
                                      !0
                                  ),
                                  document.addEventListener(
                                      'touchmove',
                                      function(e) {
                                          if (t) {
                                              e.stopPropagation(),
                                                  e.preventDefault();
                                              for (
                                                  var i = e.touches,
                                                      a = [],
                                                      r = 0;
                                                  r < e.touches.length;
                                                  r++
                                              ) {
                                                  var o = i[r],
                                                      s = o.pageX - n.offsetLeft,
                                                      c = o.pageY - n.offsetTop,
                                                      l = tt(
                                                          s / n.scale + n.left,
                                                          c / n.scale
                                                      );
                                                  l && a.push(l);
                                              }
                                              O.a.down(a, !0, 1);
                                          }
                                      },
                                      !0
                                  ),
                                  document.addEventListener(
                                      'touchend',
                                      function(e) {
                                          if (t) {
                                              e.stopPropagation(),
                                                  e.preventDefault(),
                                                  0 === e.touches.length &&
                                                      (t = !1);
                                              for (
                                                  var i = e.touches,
                                                      a = [],
                                                      r = 0;
                                                  r < e.touches.length;
                                                  r++
                                              ) {
                                                  var o = i[r],
                                                      s = o.pageX - n.offsetLeft,
                                                      c = o.pageY - n.offsetTop,
                                                      l = tt(
                                                          s / n.scale + n.left,
                                                          c / n.scale
                                                      );
                                                  l && a.push(l);
                                              }
                                              O.a.down(a, !0, 1),
                                                  0 === i.length && (t = !1);
                                          }
                                      },
                                      !0
                                  )),
                                  (function() {
                                      var t = !1;
                                      window._play = (key)=>{
                                          O.a.down([key], !0, 1);
                                      }
                                      window._stop = (key)=>{
                                          O.a.up([key], 1);
                                      }
                                      e.addEventListener(
                                          'mousedown',
                                          function(e) {
                                              console.log(e);
                                              e.stopPropagation(),
                                                  e.preventDefault(),
                                                  (t = !0);
                                              var i = e.pageX - n.offsetLeft,
                                                  a = e.pageY - n.offsetTop,
                                                  r = tt(
                                                      i / n.scale + n.left,
                                                      a / n.scale
                                                  );
                                              
                                              console.log(i, a, r);
                                              r && O.a.down([r], !0, 1);
                                          },
                                          !0
                                      ),
                                          document.addEventListener(
                                              'mousemove',
                                              function(e) {
                                                  if (t) {
                                                      e.stopPropagation(),
                                                          e.preventDefault();
                                                      var i =
                                                              e.pageX -
                                                              n.offsetLeft,
                                                          a =
                                                              e.pageY -
                                                              n.offsetTop,
                                                          r = tt(
                                                              i / n.scale +
                                                                  n.left,
                                                              a / n.scale
                                                          );
                                                      O.a.down([r], !0, 1);
                                                  }
                                              },
                                              !0
                                          ),
                                          document.addEventListener(
                                              'mouseup',
                                              function(e) {
                                                  if (t) {
                                                      e.stopPropagation(),
                                                          e.preventDefault(),
                                                          (t = !1);
                                                      var i =
                                                              e.pageX -
                                                              n.offsetLeft,
                                                          a =
                                                              e.pageY -
                                                              n.offsetTop,
                                                          r = tt(
                                                              i / n.scale +
                                                                  n.left,
                                                              a / n.scale
                                                          );
                                                      O.a.up([r], 1);
                                                  }
                                              },
                                              !0
                                          );
                                  })(),
                                  O.a.onDown(function(t) {
                                      var e,
                                          i = ct(t);
                                      try {
                                          for (i.s(); !(e = i.n()).done; ) {
                                              var a = e.value;
                                              n.keyDoms[a].setAttribute(
                                                  'class',
                                                  'act'
                                              );
                                          }
                                      } catch (t) {
                                          i.e(t);
                                      } finally {
                                          i.f();
                                      }
                                  }),
                                  O.a.onUp(function(t) {
                                      var e,
                                          i = ct(t);
                                      try {
                                          for (i.s(); !(e = i.n()).done; ) {
                                              var a = e.value;
                                              n.keyDoms[a].setAttribute(
                                                  'class',
                                                  ''
                                              );
                                          }
                                      } catch (t) {
                                          i.e(t);
                                      } finally {
                                          i.f();
                                      }
                                  });
                          },
                          setSize: function(t, n) {
                              (this.scale = t), (this.left = n);
                              var e = (function(t) {
                                  for (
                                      var n = t.offsetTop,
                                          e = t.offsetLeft,
                                          i = t.offsetParent;
                                      null != i;
  
                                  )
                                      (n += i.offsetTop),
                                          (e += i.offsetLeft),
                                          (i = i.offsetParent);
                                  return { left: e, top: n };
                              })(this.$refs.keyboard);
                              (this.offsetTop = e.top + 200),
                                  (this.offsetLeft = e.left);
                          },
                      },
                  },
                  pt = (e(287), Object(at.a)(ut, st, [], !1, null, null, null));
              pt.options.__file = 'src/client/pages/piano/new/comp/keyboard.vue';
              var dt = pt.exports,
                  ft = function() {
                      var t = this,
                          n = t.$createElement,
                          e = t._self._c || n;
                      return e(
                          'div',
                          {
                              staticClass: 'setting-panel',
                              style: { height: t.height + 'px' },
                          },
                          [
                              e('div', { staticClass: 'rit-btn' }),
                              e(
                                  'menu',
                                  { staticClass: 'slide-menu' },
                                  t._l(t.manus, function(n, i) {
                                      return e(
                                          'a',
                                          {
                                              key: i,
                                              class:
                                                  t.select === i ? 'active' : '',
                                              attrs: {
                                                  tabindex: '0',
                                                  href: 'javascript:void(0)',
                                              },
                                              on: {
                                                  click: function(n) {
                                                      return t.setSelect(i);
                                                  },
                                              },
                                          },
                                          [
                                              n[1]
                                                  ? e('i', {
                                                        staticClass: 'iconfont',
                                                        class: n[1],
                                                    })
                                                  : t._e(),
                                              e('span', {
                                                  domProps: {
                                                      textContent: t._s(n[0]),
                                                  },
                                              }),
                                          ]
                                      );
                                  }),
                                  0
                              ),
                              e(
                                  'section',
                                  { staticClass: 'st-cont' },
                                  [
                                      0 === t.select ? e('visit') : t._e(),
                                      1 === t.select ? e('settings') : t._e(),
                                      2 === t.select ? e('pc-keyboard') : t._e(),
                                      3 === t.select ? e('midiFile') : t._e(),
                                      4 === t.select ? e('pinlun') : t._e(),
                                  ],
                                  1
                              ),
                          ]
                      );
                  };
              ft._withStripped = !0;
              var ht = function() {
                  var t = this,
                      n = t.$createElement,
                      e = t._self._c || n;
                  return e('div', { staticClass: 'visit-ct' }, [
                      e('div', { staticClass: 'old-entry' }, [
                          t.state.showOldEntry
                              ? e('div', [
                                    e('span', [
                                        t._v(
                                            '感谢您的访问，当前版本是作者重写过的新版本，以前版本：'
                                        ),
                                    ]),
                                    e(
                                        'a',
                                        {
                                            attrs: {
                                                href: '/piano/v1',
                                                target: '_blank',
                                            },
                                        },
                                        [
                                            t._v(
                                                '\n            由此去👉\n         '
                                            ),
                                        ]
                                    ),
                                ])
                              : t._e(),
                      ]),
                      e('div', { staticClass: 'logo-ct' }, [
                          e('div', { staticClass: 'pn-logo' }, [
                              e('img', {
                                  attrs: {
                                      src: t.keyboardImage,
                                      alt: '钢琴键盘',
                                  },
                              }),
                          ]),
                          t._m(0),
                      ]),
                      e('div', { staticClass: 'tips-wrapper' }, [
                          e('div', {
                              ref: 'tipsDom',
                              domProps: { innerHTML: t._s(t.tips[t.tipIdx]) },
                          }),
                      ]),
                      e('div', {
                          staticClass: 'doc-div',
                          domProps: { innerHTML: t._s(t.mainDoc) },
                      }),
                  ]);
              };
              ht._withStripped = !0;
              var vt = e(289),
                  bt = e.n(vt),
                  mt = {
                      components: {},
                      data: function() {
                          return {
                              keyboardImage: bt.a,
                              tips: [
                                  '我们支持MIDI文件播放啦，去<b>MIDI播放</b>栏看看吧',
                                  '在上方打开<b>设置</b>面板可调节键盘大小',
                                  '试着按下您的电脑键盘，可以用电脑键盘进行弹奏',
                                  '在上方打开<b>电脑键盘映射</b>面板可设置 电脑键盘 和 钢琴键盘 的绑定关系。',
                                  '您可以在<b>吐槽专区</b>给作者提交反馈哦。',
                                  '作者正在开发录制功能，期待吗？',
                              ],
                              tipIdx: 0,
                              sinterval: 0,
                          };
                      },
                      computed: {
                          state: function() {
                              return this.$store.state;
                          },
                          mainDoc: function() {
                              return this.$store.state.mainDoc;
                          },
                      },
                      mounted: function() {
                          var t = this;
                          this.sinterval = setInterval(function() {
                              window.innerWidth <= 360
                                  ? t.slideTips2()
                                  : t.slideTips();
                          }, 5e3);
                      },
                      destroyed: function() {
                          clearInterval(this.sinterval);
                      },
                      methods: {
                          slideTips: function() {
                              var t = this;
                              this.$refs.tipsDom.setAttribute('class', 'hidden'),
                                  setTimeout(function() {
                                      (t.tipIdx = (t.tipIdx + 1) % t.tips.length),
                                          t.$refs.tipsDom.setAttribute(
                                              'class',
                                              ''
                                          );
                                  }, 300);
                          },
                          slideTips2: function() {
                              this.tipIdx2 >= 0 || (this.tipIdx2 = this.tipIdx),
                                  (this.tipIdx2 =
                                      (this.tipIdx2 + 1) % this.tips.length),
                                  (this.$refs.tipsDom.innerHTML = this.tips[
                                      this.tipIdx2
                                  ]);
                          },
                      },
                  },
                  gt =
                      (e(290),
                      Object(at.a)(
                          mt,
                          ht,
                          [
                              function() {
                                  var t = this.$createElement,
                                      n = this._self._c || t;
                                  return n('div', { staticClass: 'pn-info' }, [
                                      n('h1', [
                                          this._v('xiwnn.com - 在线钢琴模拟器'),
                                      ]),
                                      n('p', [
                                          this._v('https://www.xiwnn.com/piano'),
                                      ]),
                                  ]);
                              },
                          ],
                          !1,
                          null,
                          null,
                          null
                      ));
              gt.options.__file =
                  'src/client/pages/piano/new/comp/panels/visit.vue';
              var yt = gt.exports,
                  wt = function() {
                      var t = this,
                          n = t.$createElement,
                          e = t._self._c || n;
                      return e('div', [
                          e(
                              'div',
                              { ref: 'keyboardCT', staticClass: 'pc-kbd-ct' },
                              t._l(t.kbdMain, function(n, i) {
                                  return e(
                                      'div',
                                      { key: i, staticClass: 'pc-kbd-row' },
                                      t._l(n, function(n, i) {
                                          return e(
                                              'div',
                                              {
                                                  key: i,
                                                  class: {
                                                      disable: 1 == n.d,
                                                      selec:
                                                          t.editState &&
                                                          n.c == t.selectedKey,
                                                  },
                                                  style: {
                                                      width: n.w
                                                          ? n.w + 'px'
                                                          : '',
                                                      height: n.h
                                                          ? n.h + 'px'
                                                          : '',
                                                      marginLeft: n.m
                                                          ? n.m + 'px'
                                                          : '',
                                                  },
                                                  attrs: {
                                                      name: n.c,
                                                      disable: 1 == n.d,
                                                  },
                                              },
                                              [
                                                  e(
                                                      'div',
                                                      { staticClass: 'key-name' },
                                                      [
                                                          t._v(
                                                              '\n                    ' +
                                                                  t._s(n.n) +
                                                                  '\n                '
                                                          ),
                                                      ]
                                                  ),
                                                  1 !== n.d
                                                      ? e(
                                                            'div',
                                                            {
                                                                staticClass:
                                                                    'key-rep',
                                                            },
                                                            [
                                                                t._v(
                                                                    '\n                    ' +
                                                                        t._s(
                                                                            t.getEqualName(
                                                                                n.c
                                                                            )
                                                                        ) +
                                                                        '\n                '
                                                                ),
                                                            ]
                                                        )
                                                      : t._e(),
                                              ]
                                          );
                                      }),
                                      0
                                  );
                              }),
                              0
                          ),
                          e(
                              'div',
                              { staticClass: 'pc-kbd-set' },
                              [
                                  e(
                                      'div',
                                      { staticClass: 'row' },
                                      [
                                          e('span', [t._v('您可以 ')]),
                                          e(
                                              'xw-button',
                                              {
                                                  attrs: {
                                                      type: 'primary',
                                                      tabindex: '0',
                                                  },
                                                  on: {
                                                      click: function(n) {
                                                          t.editState = !t.editState;
                                                      },
                                                  },
                                              },
                                              [
                                                  t._v(
                                                      '\n                ' +
                                                          t._s(
                                                              t.editState
                                                                  ? '退出编辑'
                                                                  : '编辑'
                                                          ) +
                                                          '\n            '
                                                  ),
                                              ]
                                          ),
                                          e('span', [t._v(' 上面的映射')]),
                                      ],
                                      1
                                  ),
                                  t.editState
                                      ? e(
                                            'div',
                                            { staticClass: 'row edit-container' },
                                            [
                                                e('p', [
                                                    t._v(
                                                        'PS: 鼠标或键盘在上方选中一个电脑键之后，然后用鼠标在下方的钢琴键盘中按下对应的键，即可进行映射和绑定。'
                                                    ),
                                                ]),
                                                0 === t.selectedKey
                                                    ? e('div', [
                                                          t._v(
                                                              '\n                请用鼠标或者电脑键盘按下一个键\n            '
                                                          ),
                                                      ])
                                                    : e('div', [
                                                          e('span', [
                                                              t._v('已选中 '),
                                                          ]),
                                                          e(
                                                              'div',
                                                              {
                                                                  staticClass:
                                                                      'select-key',
                                                                  style: {
                                                                      width: t.getPcKeyWidth(
                                                                          t.selectedKey
                                                                      ),
                                                                  },
                                                              },
                                                              [
                                                                  e(
                                                                      'div',
                                                                      {
                                                                          staticClass:
                                                                              'key-name',
                                                                      },
                                                                      [
                                                                          t._v(
                                                                              '\n                        ' +
                                                                                  t._s(
                                                                                      t.getPcKeyName(
                                                                                          t.selectedKey
                                                                                      )
                                                                                  ) +
                                                                                  '\n                    '
                                                                          ),
                                                                      ]
                                                                  ),
                                                              ]
                                                          ),
                                                          e('span', [
                                                              t._v(
                                                                  '键，此键当前'
                                                              ),
                                                          ]),
                                                          e('span', [
                                                              t._v(
                                                                  t._s(
                                                                      t.getName(
                                                                          t.selectedKey
                                                                      )
                                                                          ? '已经设置为钢琴第 ' +
                                                                                t.getKeyIndex(
                                                                                    t.selectedKey
                                                                                ) +
                                                                                ' 个键，音名：' +
                                                                                t.getName(
                                                                                    t.selectedKey
                                                                                )
                                                                          : '未绑定钢琴键'
                                                                  )
                                                              ),
                                                          ]),
                                                      ]),
                                                e(
                                                    'div',
                                                    { staticClass: 'btn-group' },
                                                    [
                                                        e('span', [t._v('全部')]),
                                                        e(
                                                            'xw-button',
                                                            {
                                                                attrs: {
                                                                    type:
                                                                        'primary',
                                                                },
                                                                on: {
                                                                    click:
                                                                        t.degradeYin,
                                                                },
                                                            },
                                                            [
                                                                t._v(
                                                                    '\n                    降低 (降调)\n                '
                                                                ),
                                                            ]
                                                        ),
                                                        e('span', [
                                                            t._v('半个音高，'),
                                                        ]),
                                                        e('span', [t._v('全部')]),
                                                        e(
                                                            'xw-button',
                                                            {
                                                                attrs: {
                                                                    type:
                                                                        'primary',
                                                                },
                                                                on: {
                                                                    click:
                                                                        t.upgradeYin,
                                                                },
                                                            },
                                                            [
                                                                t._v(
                                                                    '\n                    升高 (升调)\n                '
                                                                ),
                                                            ]
                                                        ),
                                                        e('span', [
                                                            t._v('半个音高，'),
                                                        ]),
                                                        e('span', [
                                                            t._v('这里可以'),
                                                        ]),
                                                        e(
                                                            'xw-button',
                                                            {
                                                                attrs: {
                                                                    type:
                                                                        'primary',
                                                                },
                                                                on: {
                                                                    click: function(
                                                                        n
                                                                    ) {
                                                                        return t.clearConfig();
                                                                    },
                                                                },
                                                            },
                                                            [
                                                                t._v(
                                                                    '\n                    清空\n                '
                                                                ),
                                                            ]
                                                        ),
                                                        e('span', [
                                                            t._v('上面的配置，'),
                                                        ]),
                                                        e('span', [
                                                            t._v('还可以'),
                                                        ]),
                                                        e(
                                                            'xw-button',
                                                            {
                                                                attrs: {
                                                                    type:
                                                                        'primary',
                                                                },
                                                                on: {
                                                                    click: function(
                                                                        n
                                                                    ) {
                                                                        return t.restoreConfig();
                                                                    },
                                                                },
                                                            },
                                                            [
                                                                t._v(
                                                                    '\n                    还原\n                '
                                                                ),
                                                            ]
                                                        ),
                                                        e('span', [
                                                            t._v(
                                                                '成默认配置(C大调纯白键版)，'
                                                            ),
                                                        ]),
                                                        e('span', [
                                                            t._v('或者是'),
                                                        ]),
                                                        e(
                                                            'xw-button',
                                                            {
                                                                attrs: {
                                                                    type:
                                                                        'primary',
                                                                },
                                                                on: {
                                                                    click: function(
                                                                        n
                                                                    ) {
                                                                        return t.restoreConfig2();
                                                                    },
                                                                },
                                                            },
                                                            [
                                                                t._v(
                                                                    '\n                    还原\n                '
                                                                ),
                                                            ]
                                                        ),
                                                        e('span', [
                                                            t._v(
                                                                '成以前版本的默认配置(C大调包括黑键版)。'
                                                            ),
                                                        ]),
                                                    ],
                                                    1
                                                ),
                                            ]
                                        )
                                      : t._e(),
                                  e(
                                      'div',
                                      { staticClass: 'row' },
                                      [e('pcKeyboardSave')],
                                      1
                                  ),
                                  e(
                                      'div',
                                      { staticClass: 'row' },
                                      [e('pcKeyboardSaveSys')],
                                      1
                                  ),
                                  e('div', { staticClass: 'row-title' }, [
                                      t._v('\n            FAQ :\n        '),
                                  ]),
                                  e('faq', {
                                      staticClass: 'row',
                                      attrs: {
                                          question:
                                              '有些玩家在吐槽专区问到为什么不能按下黑键？',
                                          answer:
                                              '\n            1. 请在上方找到 系统默认键盘配置方案-> 黑键方案 -> 点击 `使用`。\n            2. 在上方找到一个编辑按钮，点击 `编辑` ，在展开的配置界面上进行个性化的配置。\n            ',
                                      },
                                  }),
                                  e('faq', {
                                      staticClass: 'row',
                                      attrs: {
                                          question:
                                              '为什么我的电脑键盘有的键不能多个同时按下去？',
                                          answer:
                                              '键盘生产商在生产键盘时做了限制。有些键盘生产商为了节省开支，会把许多键放在一条线路上，这样相同区域的多个键被同时按下时，只会有一个键起作用。',
                                      },
                                  }),
                              ],
                              1
                          ),
                      ]);
                  };
              wt._withStripped = !0;
              var xt = e(115),
                  kt = e.n(xt),
                  Ot = function() {
                      var t = this,
                          n = t.$createElement,
                          e = t._self._c || n;
                      return e(
                          'div',
                          { staticClass: 'pc-keyboard-save' },
                          [
                              e(
                                  'div',
                                  { staticClass: 't-save-tips' },
                                  [
                                      e('span', [t._v('或者用 ')]),
                                      e('input', {
                                          directives: [
                                              {
                                                  name: 'model',
                                                  rawName: 'v-model',
                                                  value: t.inputName,
                                                  expression: 'inputName',
                                              },
                                          ],
                                          staticClass: 'xw-input',
                                          attrs: {
                                              id: '',
                                              type: 'text',
                                              maxlength: '30',
                                              placeholder: '请输入一个存档名称',
                                          },
                                          domProps: { value: t.inputName },
                                          on: {
                                              focus: t.inputFocus,
                                              blur: t.inputBlur,
                                              input: function(n) {
                                                  n.target.composing ||
                                                      (t.inputName =
                                                          n.target.value);
                                              },
                                          },
                                      }),
                                      e('span', [t._v(' 作为名称')]),
                                      e(
                                          'xw-button',
                                          {
                                              attrs: { type: 'primary' },
                                              on: {
                                                  click: function(n) {
                                                      return t.save();
                                                  },
                                              },
                                          },
                                          [t._v('\n            保存\n        ')]
                                      ),
                                      e('span', [t._v('至下方的本地存档，')]),
                                      e('span', [t._v('也可以')]),
                                      e(
                                          'xw-button',
                                          {
                                              attrs: { type: 'primary' },
                                              on: {
                                                  click: function(n) {
                                                      return t.saveFile();
                                                  },
                                              },
                                          },
                                          [t._v('\n            另存为\n        ')]
                                      ),
                                      e('span', [t._v('本地.xkmp文件，')]),
                                      e('span', [t._v('还可以')]),
                                      e(
                                          'xw-button',
                                          {
                                              attrs: { type: 'primary' },
                                              on: {
                                                  click: function(n) {
                                                      return t.chooseFile();
                                                  },
                                              },
                                          },
                                          [t._v('\n            读取\n        ')]
                                      ),
                                      e('span', [t._v('本地保存的.xkmp文件。')]),
                                  ],
                                  1
                              ),
                              e('h4', { staticClass: 'title' }, [
                                  t._v(
                                      '\n        ' +
                                          t._s(
                                              0 === t.list.length
                                                  ? '本地暂无配置存档'
                                                  : '您的配置存档:'
                                          ) +
                                          '\n    '
                                  ),
                              ]),
                              e(
                                  'transition-group',
                                  {
                                      staticClass: 'save-list',
                                      attrs: { name: 'save-list', tag: 'div' },
                                  },
                                  t._l(t.list, function(n, i) {
                                      return e(
                                          'div',
                                          {
                                              key: n.key,
                                              staticClass: 'save-list-item',
                                          },
                                          [
                                              e('div', { staticClass: 'cont' }, [
                                                  e(
                                                      'div',
                                                      { staticClass: 'name' },
                                                      [
                                                          t._v(
                                                              '\n                    ' +
                                                                  t._s(n.name) +
                                                                  '\n                '
                                                          ),
                                                      ]
                                                  ),
                                                  e(
                                                      'div',
                                                      { staticClass: 'time' },
                                                      [
                                                          t._v(
                                                              '\n                    保存于：' +
                                                                  t._s(
                                                                      t.howLong(
                                                                          n.time
                                                                      )
                                                                  ) +
                                                                  '\n                '
                                                          ),
                                                      ]
                                                  ),
                                                  e(
                                                      'div',
                                                      { staticClass: 'btns' },
                                                      [
                                                          e(
                                                              'xw-button',
                                                              {
                                                                  attrs: {
                                                                      type:
                                                                          'danger',
                                                                  },
                                                                  on: {
                                                                      click: function(
                                                                          n
                                                                      ) {
                                                                          return t.remove(
                                                                              i
                                                                          );
                                                                      },
                                                                  },
                                                              },
                                                              [
                                                                  t._v(
                                                                      '\n                        删除\n                    '
                                                                  ),
                                                              ]
                                                          ),
                                                          e(
                                                              'xw-button',
                                                              {
                                                                  on: {
                                                                      click: function(
                                                                          n
                                                                      ) {
                                                                          return t.use(
                                                                              i
                                                                          );
                                                                      },
                                                                  },
                                                              },
                                                              [
                                                                  t._v(
                                                                      '\n                        使用\n                    '
                                                                  ),
                                                              ]
                                                          ),
                                                      ],
                                                      1
                                                  ),
                                              ]),
                                          ]
                                      );
                                  }),
                                  0
                              ),
                          ],
                          1
                      );
                  };
              Ot._withStripped = !0;
              var Tt = e(53),
                  St = e(76),
                  jt = e(75);
              function Mt(t) {
                  var n = null;
                  if (
                      (''
                          .concat(t)
                          .replace(/钢琴键盘映射文件:\n(.*)/g, function(t, e) {
                              n = e;
                          }),
                      n)
                  )
                      try {
                          var e = JSON.parse(n),
                              i = {};
                          for (var a in e) {
                              var r = parseInt(a, 10);
                              r && (i[r] = e[a]);
                          }
                          return i;
                      } catch (t) {
                          throw new Error('文件解析失败，文件格式可能有误');
                      }
                  throw new Error('文件为空或文件格式有误');
              }
              var Ct = e(52),
                  _t = {
                      components: { xwButton: Tt.a },
                      data: function() {
                          return {
                              inputName: '未命名的存档',
                              list: [],
                              listKey: 1,
                          };
                      },
                      mounted: function() {
                          var t = this,
                              n = this.loadLocalList();
                          n.forEach(function(n) {
                              n.key = t.listKey++;
                          }),
                              (this.list = n);
                      },
                      methods: {
                          howLong: jt.b,
                          randomKey: function() {
                              return ''.concat(Date.now());
                          },
                          remove: function(t) {
                              confirm('确认要删除吗？') &&
                                  (this.list.splice(t, 1),
                                  this.saveToLocal(this.list));
                          },
                          use: function(t) {
                              var n = this.list[t];
                              if (n) {
                                  var e = n.data;
                                  try {
                                      var i = JSON.parse(e),
                                          a = {};
                                      for (var r in i) {
                                          var o = parseInt(r, 10);
                                          o && (a[o] = i[r]);
                                      }
                                      (this.$store.state.cacheConf.pckey2key = a),
                                          (this.inputName = n.name),
                                          window._paq &&
                                              window._paq.push([
                                                  'trackEvent',
                                                  'piano',
                                                  '点击',
                                                  '使用本地存档',
                                              ]),
                                          Ct.a.success('应用成功');
                                  } catch (t) {}
                              }
                          },
                          loadLocalList: function() {
                              var t = window.localStorage.getItem('kmap');
                              try {
                                  if (t) {
                                      var n = JSON.parse(t);
                                      if (Array.isArray(n)) return n;
                                  }
                              } catch (t) {}
                              return [];
                          },
                          saveToLocal: function(t) {
                              var n = JSON.stringify(t);
                              window.localStorage.setItem('kmap', n);
                          },
                          getMapData: function() {
                              var t = this.$store.state.cacheConf.pckey2key,
                                  n = {};
                              for (var e in t) {
                                  var i = parseInt(e, 10);
                                  i && (n[i] = t[e]);
                              }
                              return n;
                          },
                          save: function() {
                              var t = this.getMapData(),
                                  n = {
                                      key: this.randomKey(),
                                      name: this.inputName,
                                      time: Date.now(),
                                      data: JSON.stringify(t),
                                  };
                              this.list.unshift(n),
                                  this.saveToLocal(this.list),
                                  window._paq &&
                                      window._paq.push([
                                          'trackEvent',
                                          'piano',
                                          '点击',
                                          '保存键盘存档',
                                      ]);
                          },
                          saveFile: function() {
                              var t = (function(t) {
                                      return 'https://www.xiwnn.com/piano/\n钢琴键盘映射文件:\n'.concat(
                                          JSON.stringify(t)
                                      );
                                  })(this.getMapData()),
                                  n = this.inputName || '未命名的钢琴映射文件';
                              window._paq &&
                                  window._paq.push([
                                      'trackEvent',
                                      'piano',
                                      '点击',
                                      '另存为本地.xkmp',
                                  ]),
                                  (function(t, n) {
                                      var e = document.createElement('a');
                                      e.download = n;
                                      var i = new Blob([t]);
                                      (e.href = URL.createObjectURL(i)),
                                          document.body.appendChild(e),
                                          e.click(),
                                          document.body.removeChild(e);
                                  })(t, ''.concat(n, '.xkmp'));
                          },
                          chooseFile: function() {
                              var t,
                                  n,
                                  e,
                                  i = this;
                              (t = '.xkmp'),
                                  (n = function(t) {
                                      var n =
                                          arguments.length > 1 &&
                                          void 0 !== arguments[1]
                                              ? arguments[1]
                                              : '';
                                      try {
                                          var e = Mt(t),
                                              a = {
                                                  key: i.randomKey(),
                                                  name: n,
                                                  time: Date.now(),
                                                  data: JSON.stringify(e),
                                              };
                                          i.list.unshift(a),
                                              i.saveToLocal(i.list),
                                              window._paq &&
                                                  window._paq.push([
                                                      'trackEvent',
                                                      'piano',
                                                      '点击',
                                                      '读取本地.xkmp',
                                                  ]);
                                      } catch (t) {
                                          alert(t);
                                      }
                                  }),
                                  ((e = document.createElement('input')).type =
                                      'file'),
                                  (e.accept = t),
                                  (e.onchange = function() {
                                      var t = e.files;
                                      if (t.length) {
                                          var i = t[0],
                                              a = new FileReader();
                                          (a.onload = function() {
                                              n(a.result, i.name);
                                          }),
                                              a.readAsText(i);
                                      }
                                  }),
                                  e.click();
                          },
                          inputFocus: function() {
                              Object(St.g)();
                          },
                          inputBlur: function() {
                              Object(St.f)();
                          },
                      },
                  },
                  Et = (e(295), Object(at.a)(_t, Ot, [], !1, null, null, null));
              Et.options.__file =
                  'src/client/pages/piano/new/comp/panels/pc-keyboard-save.vue';
              var Pt = Et.exports,
                  Nt = function() {
                      var t = this,
                          n = t.$createElement,
                          e = t._self._c || n;
                      return e('div', { staticClass: 'pc-keyboard-save' }, [
                          e('h4', { staticClass: 'title' }, [
                              t._v('\n        系统默认键盘配置:\n    '),
                          ]),
                          t.list.length > 0
                              ? e(
                                    'div',
                                    [
                                        e(
                                            'transition-group',
                                            {
                                                staticClass: 'save-list',
                                                attrs: {
                                                    name: 'save-list',
                                                    tag: 'div',
                                                },
                                            },
                                            t._l(t.list, function(n, i) {
                                                return e(
                                                    'div',
                                                    {
                                                        key: n.key,
                                                        staticClass:
                                                            'save-list-item',
                                                    },
                                                    [
                                                        e(
                                                            'div',
                                                            {
                                                                staticClass:
                                                                    'cont',
                                                            },
                                                            [
                                                                e(
                                                                    'div',
                                                                    {
                                                                        staticClass:
                                                                            'name',
                                                                    },
                                                                    [
                                                                        t._v(
                                                                            '\n                        ' +
                                                                                t._s(
                                                                                    n.name
                                                                                ) +
                                                                                '\n                    '
                                                                        ),
                                                                    ]
                                                                ),
                                                                e(
                                                                    'div',
                                                                    {
                                                                        staticClass:
                                                                            'time',
                                                                    },
                                                                    [
                                                                        t._v(
                                                                            '\n                        ' +
                                                                                t._s(
                                                                                    n.tips
                                                                                ) +
                                                                                '\n                    '
                                                                        ),
                                                                    ]
                                                                ),
                                                                e(
                                                                    'div',
                                                                    {
                                                                        staticClass:
                                                                            'btns',
                                                                    },
                                                                    [
                                                                        e(
                                                                            'xw-button',
                                                                            {
                                                                                on: {
                                                                                    click: function(
                                                                                        n
                                                                                    ) {
                                                                                        return t.use(
                                                                                            i
                                                                                        );
                                                                                    },
                                                                                },
                                                                            },
                                                                            [
                                                                                t._v(
                                                                                    '\n                            使用\n                        '
                                                                                ),
                                                                            ]
                                                                        ),
                                                                    ],
                                                                    1
                                                                ),
                                                            ]
                                                        ),
                                                    ]
                                                );
                                            }),
                                            0
                                        ),
                                    ],
                                    1
                                )
                              : t._e(),
                      ]);
                  };
              Nt._withStripped = !0;
              var Lt = {
                      components: { xwButton: Tt.a },
                      data: function() {
                          return { list: [] };
                      },
                      mounted: function() {
                          this.list.push({
                              key: '1',
                              name: '不带黑键方案',
                              tips: 'C大调纯白键的方案，带小数字键盘',
                              data: JSON.stringify(b()),
                          }),
                              this.list.push({
                                  key: '2',
                                  name: '黑键方案',
                                  tips: 'C大调, 能按到黑键的方案',
                                  data: JSON.stringify(m()),
                              });
                      },
                      methods: {
                          use: function(t) {
                              var n = this.list[t];
                              if (n) {
                                  var e = n.data;
                                  try {
                                      var i = JSON.parse(e),
                                          a = {};
                                      for (var r in i) {
                                          var o = parseInt(r, 10);
                                          o && (a[o] = i[r]);
                                      }
                                      (this.$store.state.cacheConf.pckey2key = a),
                                          (this.inputName = n.name),
                                          window._paq &&
                                              window._paq.push([
                                                  'trackEvent',
                                                  'piano',
                                                  '点击',
                                                  '使用系统默认配置'.concat(t),
                                              ]),
                                          Ct.a.success('应用成功');
                                  } catch (t) {}
                              }
                          },
                      },
                  },
                  zt = (e(297), Object(at.a)(Lt, Nt, [], !1, null, null, null));
              zt.options.__file =
                  'src/client/pages/piano/new/comp/panels/pc-keyboard-save-sys.vue';
              var Dt = zt.exports,
                  At = function() {
                      var t = this.$createElement,
                          n = this._self._c || t;
                      return n('div', { staticClass: 'faq-item' }, [
                          n('header', [this._v(this._s(this.question))]),
                          n('p', [this._v(this._s(this.answer))]),
                      ]);
                  };
              At._withStripped = !0;
              var It = {
                      props: {
                          question: { type: String, default: '' },
                          answer: { type: String, default: '' },
                      },
                      data: function() {
                          return {};
                      },
                  },
                  Ht = (e(299), Object(at.a)(It, At, [], !1, null, null, null));
              Ht.options.__file = 'src/client/pages/piano/new/comp/comp/faq.vue';
              var qt = Ht.exports,
                  Yt = new Array(256),
                  Xt = new Array(256),
                  Rt = Object(St.a)();
              Rt.forEach(function(t) {
                  t.forEach(function(t) {
                      1 !== t.d && (Xt[t.c] = t);
                  });
              });
              var Jt = {
                      components: {
                          xwButton: Tt.a,
                          pcKeyboardSave: Pt,
                          pcKeyboardSaveSys: Dt,
                          faq: qt,
                      },
                      data: function() {
                          return { kbdMain: Rt, editState: !1, selectedKey: 0 };
                      },
                      computed: {},
                      mounted: function() {
                          this.bindToArray(),
                              Object(St.e)(this.onEvent),
                              O.a.onDown(this.onKeypressDown);
                      },
                      destroyed: function() {
                          Object(St.d)(this.onEvent),
                              O.a.offDown(this.onKeypressDown);
                      },
                      methods: {
                          onKeypressDown: function(t, n) {
                              if (
                                  1 === n &&
                                  this.editState &&
                                  0 !== this.selectedKey &&
                                  t.length
                              ) {
                                  var e = kt()(t, 1)[0],
                                      i = this.$store.state.cacheConf.pckey2key;
                                  this.$set(i, this.selectedKey, e),
                                      window._paq &&
                                          window._paq.push([
                                              'trackEvent',
                                              'piano',
                                              '点击',
                                              '设置按键',
                                          ]);
                              }
                          },
                          getEqualName: function(t) {
                              var n = this.$store.state.cacheConf.pckey2key[t];
                              return n && j[n] ? '♩ = '.concat(j[n]) : '';
                          },
                          getName: function(t) {
                              var n = this.$store.state.cacheConf.pckey2key[t];
                              return n && j[n] ? j[n] : '';
                          },
                          getKeyIndex: function(t) {
                              return this.$store.state.cacheConf.pckey2key[t];
                          },
                          getPcKeyName: function(t) {
                              return Xt[t] ? Xt[t].n : '';
                          },
                          getPcKeyWidth: function(t) {
                              return Xt[t] && Xt[t].w
                                  ? ''.concat(Xt[t].w, 'px')
                                  : '';
                          },
                          bindDomClickEvent: function(t, n) {
                              var e = !1;
                              function i(t) {
                                  e && ((e = !1), Object(St.c)(n)),
                                      t.stopPropagation(),
                                      t.preventDefault();
                              }
                              t.addEventListener(
                                  'mousedown',
                                  function(t) {
                                      (e = !0),
                                          Object(St.b)(n),
                                          t.stopPropagation(),
                                          t.preventDefault();
                                  },
                                  !0
                              ),
                                  t.addEventListener('mouseleave', i, !0),
                                  t.addEventListener('mouseup', i, !0);
                          },
                          bindCommentEvent: function() {},
                          bindToArray: function() {
                              for (
                                  var t = this.$refs.keyboardCT, n = 0;
                                  n < t.children.length;
                                  n++
                              )
                                  for (
                                      var e = t.children[n], i = 0;
                                      i < e.children.length;
                                      i++
                                  ) {
                                      var a = e.children[i];
                                      if (!a.getAttribute('disable')) {
                                          var r = a.getAttribute('name'),
                                              o = parseInt(r, 10);
                                          (Yt[o] = a),
                                              this.bindDomClickEvent(a, o);
                                      }
                                  }
                          },
                          onEvent: function(t, n) {
                              var e = Yt[n];
                              e &&
                                  (t
                                      ? (e.classList.add('d'),
                                        this.editState && (this.selectedKey = n))
                                      : e.classList.remove('d'));
                          },
                          upgradeYin: function() {
                              var t = this.$store.state.cacheConf.pckey2key;
                              for (var n in t) {
                                  var e = parseInt(n, 10);
                                  e && (t[e] = t[e] + 1);
                              }
                              window._paq &&
                                  window._paq.push([
                                      'trackEvent',
                                      'piano',
                                      '点击',
                                      '升调',
                                  ]),
                                  Ct.a.success('升调成功');
                          },
                          degradeYin: function() {
                              var t = this.$store.state.cacheConf.pckey2key;
                              for (var n in t) {
                                  var e = parseInt(n, 10);
                                  e && (t[e] = t[e] - 1);
                              }
                              window._paq &&
                                  window._paq.push([
                                      'trackEvent',
                                      'piano',
                                      '点击',
                                      '降调',
                                  ]),
                                  Ct.a.success('升调成功');
                          },
                          clearConfig: function() {
                              (this.$store.state.cacheConf.pckey2key = {}),
                                  window._paq &&
                                      window._paq.push([
                                          'trackEvent',
                                          'piano',
                                          '点击',
                                          '清除配置',
                                      ]),
                                  Ct.a.success('清除成功');
                          },
                          restoreConfig: function() {
                              (this.$store.state.cacheConf.pckey2key = b()),
                                  window._paq &&
                                      window._paq.push([
                                          'trackEvent',
                                          'piano',
                                          '点击',
                                          '还原默认配置',
                                      ]),
                                  Ct.a.success('还原成功');
                          },
                          restoreConfig2: function() {
                              (this.$store.state.cacheConf.pckey2key = m()),
                                  window._paq &&
                                      window._paq.push([
                                          'trackEvent',
                                          'piano',
                                          '点击',
                                          '还原成老配置',
                                      ]),
                                  Ct.a.success('还原成功');
                          },
                      },
                  },
                  Gt = (e(301), Object(at.a)(Jt, wt, [], !1, null, null, null));
              Gt.options.__file =
                  'src/client/pages/piano/new/comp/panels/pc-keyboard.vue';
              var Kt = Gt.exports,
                  Ut = e(77),
                  Ft = {
                      components: {
                          visit: yt,
                          settings: function() {
                              return Promise.all([e.e(1), e.e(15)]).then(
                                  e.bind(null, 467)
                              );
                          },
                          pcKeyboard: Kt,
                          pinlun: function() {
                              return Promise.all([e.e(1), e.e(14)]).then(
                                  e.bind(null, 490)
                              );
                          },
                          midiFile: function() {
                              return Promise.all([e.e(0), e.e(1), e.e(13)]).then(
                                  e.bind(null, 474)
                              );
                          },
                      },
                      data: function() {
                          return {
                              height: 1e3,
                              width: 200,
                              scale: 1,
                              select: 0,
                              manus: [
                                  ['感谢访问'],
                                  ['设置', 'icon-shezhi'],
                                  ['电脑键盘映射', 'icon-jianpan'],
                                  ['MIDI播放'],
                                  ['吐槽专区', 'icon-pinglun'],
                              ],
                          };
                      },
                      computed: {
                          state: function() {
                              return this.$store.state;
                          },
                      },
                      mounted: function() {
                          Object(k.c)(this),
                              Object(Ut.d)(
                                  this.state.cacheConf.autoSustainTime / 1e3
                              );
                      },
                      methods: {
                          setSelect: function(t) {
                              this.select !== t &&
                                  ((this.select = t),
                                  window._paq &&
                                      window._paq.push([
                                          'trackEvent',
                                          'piano',
                                          '点击',
                                          '面板:'.concat(this.manus[t][0]),
                                      ]));
                          },
                          setSize: function(t, n, e) {
                              (this.height = n),
                                  (this.width = t),
                                  (this.scale = e);
                          },
                      },
                  },
                  Wt = (e(303), Object(at.a)(Ft, ft, [], !1, null, null, null));
              Wt.options.__file =
                  'src/client/pages/piano/new/comp/panels-main.vue';
              var Bt = Wt.exports,
                  Zt = e(64);
              function Vt() {
                  var t = l.a.isServer
                      ? l.a.action.req.headers['user-agent']
                      : window.navigator.userAgent;
                  return (
                      !!/MSIE 8\.0/.test(t) ||
                      !!/MSIE 9\.0/.test(t) ||
                          !!/MSIE 10\.0/.test(t) ||
                              !(!/rv:11\.0/.test(t) || !/\(Windows NT/.test(t))
                  );
              }
              var Qt = {
                      components: {
                          noteBar: ot,
                          keyboard: dt,
                          panelsMain: Bt,
                          xwLoading: Zt.a,
                          unsupported: function() {
                              return e.e(16).then(e.bind(null, 492));
                          },
                      },
                      data: function() {
                          return {
                              loading: !1,
                              loadmsg: '',
                              persent: 0,
                              isunsupported: Vt(),
                          };
                      },
                      computed: {
                          hideNavBar: function() {
                              return this.$store.state.hideNavBar;
                          },
                      },
                      mounted: function() {
                          (this.$refs.piano.style.bottom = '0'),
                              Object(k.e)(this),
                              this.init(),
                              this.initSize();
                      },
                      destroyed: function() {
                          Object(St.g)();
                      },
                      methods: {
                          initSize: function() {
                              var t = window.innerWidth;
                              if (t > 0) {
                                  if (t < 415)
                                      this.$store.state.cacheConf.scale = 20;
                                  else if (t < 600)
                                      this.$store.state.cacheConf.scale = 15;
                                  else {
                                      if (!(t < 800)) return;
                                      this.$store.state.cacheConf.scale = 10;
                                  }
                                  this.$nextTick(k.a);
                              }
                          },
                          init: function() {
                              this.loadJS()
                                  .then(function() {})
                                  .catch(function(t) {
                                      console.error(t);
                                  }),
                                  Object(St.f)(this.$store.state.cacheConf);
                          },
                          loadJS: function() {
                              var t = this;
                              return s()(
                                  r.a.mark(function n() {
                                      return r.a.wrap(
                                          function(n) {
                                              for (;;)
                                                  switch ((n.prev = n.next)) {
                                                      case 0:
                                                          return (
                                                              (t.loading = !0),
                                                              (n.prev = 1),
                                                              (n.next = 4),
                                                              Object(Ut.a)({
                                                                  soundfontUrl:
                                                                      'https://cdn.jsdelivr.net/gh/gleitz/midi-js-soundfonts@gh-pages/MusyngKite',
                                                                  instrument:
                                                                      'acoustic_grand_piano',
                                                                  onProgress: function(
                                                                      n,
                                                                      e
                                                                  ) {
                                                                      t.persent =
                                                                          'mp3' ===
                                                                          n
                                                                              ? (e /
                                                                                    1434960) *
                                                                                100
                                                                              : (e /
                                                                                    1707887) *
                                                                                100;
                                                                  },
                                                              })
                                                          );
                                                      case 4:
                                                          return (
                                                              (t.loadmsg =
                                                                  '加载音频中...'),
                                                              (n.next = 7),
                                                              Object(Ut.e)()
                                                          );
                                                      case 7:
                                                          (t.loadmsg =
                                                              '资源加载成功'),
                                                              (n.next = 14);
                                                          break;
                                                      case 10:
                                                          (n.prev = 10),
                                                              (n.t0 = n.catch(1)),
                                                              (t.loadmsg =
                                                                  '资源加载失败'),
                                                              console.log(n.t0);
                                                      case 14:
                                                          setTimeout(function() {
                                                              t.loading = !1;
                                                          }, 1e3);
                                                      case 15:
                                                      case 'end':
                                                          return n.stop();
                                                  }
                                          },
                                          n,
                                          null,
                                          [[1, 10]]
                                      );
                                  })
                              )();
                          },
                      },
                  },
                  $t = (e(305), Object(at.a)(Qt, w, [], !1, null, null, null));
              $t.options.__file = 'src/client/pages/piano/new/comp/piano.vue';
              var tn = $t.exports,
                  nn =
                      (e(56),
                      e(73),
                      {
                          createStore: function() {
                              return new c.a.Store({
                                  state: {
                                      mainDoc: '',
                                      hideNavBar: !1,
                                      showOldEntry: !0,
                                      cacheConf: {
                                          showKbdNum: !1,
                                          showCenterCText: !0,
                                          showPitchName: !0,
                                          holdPitchBar: !1,
                                          autoSustainTime: 500,
                                          shiftSharp: !0,
                                          tabSustain: !0,
                                          scale: 1,
                                          barScale: 1,
                                          left: 0.5,
                                          pckey2key: b(),
                                      },
                                  },
                                  mutations: {
                                      setData: function(t, n) {
                                          t.mainDoc = n && n.doc;
                                      },
                                      setDefaultParams: function(t) {
                                          '1' === l.a.query.hideNavBar &&
                                              ((t.hideNavBar = !0),
                                              (t.showOldEntry = !1)),
                                              '1' === l.a.query.hideCCT &&
                                                  (t.cacheConf.showCenterCText = !1),
                                              '1' === l.a.query.hidePN &&
                                                  (t.cacheConf.showPitchName = !1);
                                      },
                                  },
                                  actions: {
                                      setDefaultParams: function(t) {
                                          return s()(
                                              r.a.mark(function n() {
                                                  return r.a.wrap(function(n) {
                                                      for (;;)
                                                          switch (
                                                              (n.prev = n.next)
                                                          ) {
                                                              case 0:
                                                                  (0, t.commit)(
                                                                      'setDefaultParams'
                                                                  );
                                                              case 2:
                                                              case 'end':
                                                                  return n.stop();
                                                          }
                                                  }, n);
                                              })
                                          )();
                                      },
                                  },
                              });
                          },
                          fetchData: function(t) {
                              return s()(
                                  r.a.mark(function n() {
                                      var e;
                                      return r.a.wrap(function(n) {
                                          for (;;)
                                              switch ((n.prev = n.next)) {
                                                  case 0:
                                                      return (
                                                          (e = t.store),
                                                          (n.next = 3),
                                                          e.dispatch(
                                                              'setDefaultParams'
                                                          )
                                                      );
                                                  case 3:
                                                  case 'end':
                                                      return n.stop();
                                              }
                                      }, n);
                                  })
                              )();
                          },
                          name: 'App',
                          components: { xwHeader: g.a, xwFooter: y.a, piano: tn },
                          data: function() {
                              return {};
                          },
                          computed: {
                              state: function() {
                                  return this.$store.state;
                              },
                          },
                          mounted: function() {},
                          methods: {},
                      }),
                  en = (e(307), Object(at.a)(nn, i, [], !1, null, null, null));
              en.options.__file = 'src/client/pages/piano/new/app.vue';
              n.default = en.exports;
          },
          65: function(t, n, e) {
              'use strict';
              e.d(n, 'a', function() {
                  return h;
              }),
                  e.d(n, 'b', function() {
                      return v;
                  });
              var i = e(60),
                  a = e.n(i),
                  r = e(61),
                  o = e.n(r);
              function s(t, n) {
                  var e;
                  if (
                      'undefined' == typeof Symbol ||
                      null == t[Symbol.iterator]
                  ) {
                      if (
                          Array.isArray(t) ||
                          (e = (function(t, n) {
                              if (!t) return;
                              if ('string' == typeof t) return c(t, n);
                              var e = Object.prototype.toString
                                  .call(t)
                                  .slice(8, -1);
                              'Object' === e &&
                                  t.constructor &&
                                  (e = t.constructor.name);
                              if ('Map' === e || 'Set' === e)
                                  return Array.from(t);
                              if (
                                  'Arguments' === e ||
                                  /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(
                                      e
                                  )
                              )
                                  return c(t, n);
                          })(t)) ||
                          (n && t && 'number' == typeof t.length)
                      ) {
                          e && (t = e);
                          var i = 0,
                              a = function() {};
                          return {
                              s: a,
                              n: function() {
                                  return i >= t.length
                                      ? { done: !0 }
                                      : { done: !1, value: t[i++] };
                              },
                              e: function(t) {
                                  throw t;
                              },
                              f: a,
                          };
                      }
                      throw new TypeError(
                          'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
                      );
                  }
                  var r,
                      o = !0,
                      s = !1;
                  return {
                      s: function() {
                          e = t[Symbol.iterator]();
                      },
                      n: function() {
                          var t = e.next();
                          return (o = t.done), t;
                      },
                      e: function(t) {
                          (s = !0), (r = t);
                      },
                      f: function() {
                          try {
                              o || null == e.return || e.return();
                          } finally {
                              if (s) throw r;
                          }
                      },
                  };
              }
              function c(t, n) {
                  (null == n || n > t.length) && (n = t.length);
                  for (var e = 0, i = new Array(n); e < n; e++) i[e] = t[e];
                  return i;
              }
              var l = (function() {
                  function t() {
                      var n =
                          arguments.length > 0 && void 0 !== arguments[0]
                              ? arguments[0]
                              : {};
                      a()(this, t),
                          (this.pressList = new Array(89).fill(0)),
                          (this.tempPressList = new Array(89).fill(0)),
                          (this.sustainPreUpList = new Array(89).fill(0)),
                          (this.sustainPreUpByList = new Array(89).fill(0)),
                          (this.sustaining = !1),
                          (this.on_down_cb_list = []),
                          (this.on_up_cb_list = []),
                          n.onDown && this.onDown(n.onDown),
                          n.onUp && this.onUp(n.onUp);
                  }
                  return (
                      o()(t, [
                          {
                              key: 'down',
                              value: function() {
                                  var t =
                                          arguments.length > 0 &&
                                          void 0 !== arguments[0]
                                              ? arguments[0]
                                              : [],
                                      n =
                                          !(
                                              arguments.length > 1 &&
                                              void 0 !== arguments[1]
                                          ) || arguments[1],
                                      e =
                                          arguments.length > 2 &&
                                          void 0 !== arguments[2]
                                              ? arguments[2]
                                              : 0,
                                      i = this.pressList,
                                      a = this.tempPressList,
                                      r = [],
                                      o = [];
                                  if (n) {
                                      a.fill(0);
                                      var c,
                                          l = s(t);
                                      try {
                                          for (l.s(); !(c = l.n()).done; ) {
                                              var u = c.value;
                                              u > 0 && u < 89 && (a[u] = 1);
                                          }
                                      } catch (t) {
                                          l.e(t);
                                      } finally {
                                          l.f();
                                      }
                                      for (var p = 1; p < 89; p++)
                                          a[p]
                                              ? 0 === i[p] &&
                                                ((i[p] = 1), r.push(p))
                                              : 1 === i[p] &&
                                                ((i[p] = 0), o.push(p));
                                  } else {
                                      var d,
                                          f = s(t);
                                      try {
                                          for (f.s(); !(d = f.n()).done; ) {
                                              var h = d.value;
                                              h > 0 &&
                                                  h < 89 &&
                                                  0 === i[h] &&
                                                  (r.push(h), (i[h] = 1));
                                          }
                                      } catch (t) {
                                          f.e(t);
                                      } finally {
                                          f.f();
                                      }
                                  }
                                  if (this.sustaining) {
                                      for (var v = 0; v < o.length; v += 1)
                                          (this.sustainPreUpList[o[v]] = 1),
                                              (this.sustainPreUpByList[o[v]] = e);
                                      for (var b = 0; b < r.length; b += 1)
                                          this.sustainPreUpList[r[b]] = 0;
                                  } else o.length && this._do_up(o, e);
                                  r.length && this._do_down(r, e);
                              },
                          },
                          {
                              key: 'up',
                              value: function() {
                                  var t,
                                      n =
                                          arguments.length > 0 &&
                                          void 0 !== arguments[0]
                                              ? arguments[0]
                                              : [],
                                      e =
                                          arguments.length > 1 &&
                                          void 0 !== arguments[1]
                                              ? arguments[1]
                                              : 0,
                                      i = this.pressList,
                                      a = [],
                                      r = s(n);
                                  try {
                                      for (r.s(); !(t = r.n()).done; ) {
                                          var o = t.value;
                                          o > 0 &&
                                              o < 89 &&
                                              1 === i[o] &&
                                              (a.push(o), (i[o] = 0));
                                      }
                                  } catch (t) {
                                      r.e(t);
                                  } finally {
                                      r.f();
                                  }
                                  if (this.sustaining)
                                      for (var c = 0; c < a.length; c += 1)
                                          (this.sustainPreUpList[a[c]] = 1),
                                              (this.sustainPreUpByList[a[c]] = e);
                                  else a.length && this._do_up(a, e);
                              },
                          },
                          {
                              key: 'sustainOn',
                              value: function() {
                                  this.sustainOff(), (this.sustaining = !0);
                              },
                          },
                          {
                              key: 'sustainOff',
                              value: function() {
                                  this.sustaining = !1;
                                  for (
                                      var t = [], n = 0;
                                      n < this.sustainPreUpList.length;
                                      n += 1
                                  )
                                      1 === this.sustainPreUpList[n] &&
                                          (t.push(n),
                                          (this.sustainPreUpList[n] = 0));
                                  t.length && this._do_up(t, 0);
                              },
                          },
                          {
                              key: 'upAll',
                              value: function() {
                                  for (
                                      var t =
                                              arguments.length > 0 &&
                                              void 0 !== arguments[0]
                                                  ? arguments[0]
                                                  : 0,
                                          n = this.pressList,
                                          e = [],
                                          i = 1;
                                      i < 89;
                                      i++
                                  )
                                      1 === n[i] && ((n[i] = 0), e.push(i));
                                  e.length && this._do_up(e, t);
                              },
                          },
                          {
                              key: '_do_down',
                              value: function() {
                                  var t,
                                      n =
                                          arguments.length > 0 &&
                                          void 0 !== arguments[0]
                                              ? arguments[0]
                                              : [],
                                      e =
                                          arguments.length > 1
                                              ? arguments[1]
                                              : void 0,
                                      i = s(this.on_down_cb_list);
                                  try {
                                      for (i.s(); !(t = i.n()).done; ) {
                                          var a = t.value;
                                          try {
                                              a(n, e);
                                          } catch (t) {
                                              console.error(t);
                                          }
                                      }
                                  } catch (t) {
                                      i.e(t);
                                  } finally {
                                      i.f();
                                  }
                              },
                          },
                          {
                              key: '_do_up',
                              value: function() {
                                  var t,
                                      n =
                                          arguments.length > 0 &&
                                          void 0 !== arguments[0]
                                              ? arguments[0]
                                              : [],
                                      e =
                                          arguments.length > 1
                                              ? arguments[1]
                                              : void 0,
                                      i = s(this.on_up_cb_list);
                                  try {
                                      for (i.s(); !(t = i.n()).done; ) {
                                          var a = t.value;
                                          try {
                                              a(n, e);
                                          } catch (t) {
                                              console.error(t);
                                          }
                                      }
                                  } catch (t) {
                                      i.e(t);
                                  } finally {
                                      i.f();
                                  }
                              },
                          },
                          {
                              key: 'onDown',
                              value: function(t) {
                                  if ('function' != typeof t)
                                      throw new Error(
                                          'callback is not a function'
                                      );
                                  this.on_down_cb_list.indexOf(t) < 0 &&
                                      this.on_down_cb_list.push(t);
                              },
                          },
                          {
                              key: 'onUp',
                              value: function(t) {
                                  if ('function' != typeof t)
                                      throw new Error(
                                          'callback is not a function'
                                      );
                                  this.on_up_cb_list.indexOf(t) < 0 &&
                                      this.on_up_cb_list.push(t);
                              },
                          },
                          {
                              key: 'offDown',
                              value: function(t) {
                                  var n = this.on_down_cb_list.indexOf(t);
                                  n >= 0 && this.on_down_cb_list.splice(n, 1);
                              },
                          },
                          {
                              key: 'offUp',
                              value: function(t) {
                                  var n = this.on_up_cb_list.indexOf(t);
                                  n >= 0 && this.on_up_cb_list.splice(n, 1);
                              },
                          },
                      ]),
                      t
                  );
              })();
              function u(t, n) {
                  var e;
                  if (
                      'undefined' == typeof Symbol ||
                      null == t[Symbol.iterator]
                  ) {
                      if (
                          Array.isArray(t) ||
                          (e = (function(t, n) {
                              if (!t) return;
                              if ('string' == typeof t) return p(t, n);
                              var e = Object.prototype.toString
                                  .call(t)
                                  .slice(8, -1);
                              'Object' === e &&
                                  t.constructor &&
                                  (e = t.constructor.name);
                              if ('Map' === e || 'Set' === e)
                                  return Array.from(t);
                              if (
                                  'Arguments' === e ||
                                  /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(
                                      e
                                  )
                              )
                                  return p(t, n);
                          })(t)) ||
                          (n && t && 'number' == typeof t.length)
                      ) {
                          e && (t = e);
                          var i = 0,
                              a = function() {};
                          return {
                              s: a,
                              n: function() {
                                  return i >= t.length
                                      ? { done: !0 }
                                      : { done: !1, value: t[i++] };
                              },
                              e: function(t) {
                                  throw t;
                              },
                              f: a,
                          };
                      }
                      throw new TypeError(
                          'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
                      );
                  }
                  var r,
                      o = !0,
                      s = !1;
                  return {
                      s: function() {
                          e = t[Symbol.iterator]();
                      },
                      n: function() {
                          var t = e.next();
                          return (o = t.done), t;
                      },
                      e: function(t) {
                          (s = !0), (r = t);
                      },
                      f: function() {
                          try {
                              o || null == e.return || e.return();
                          } finally {
                              if (s) throw r;
                          }
                      },
                  };
              }
              function p(t, n) {
                  (null == n || n > t.length) && (n = t.length);
                  for (var e = 0, i = new Array(n); e < n; e++) i[e] = t[e];
                  return i;
              }
              var d = (function() {
                      function t() {
                          a()(this, t), (this.timeline = []), this.reset();
                      }
                      return (
                          o()(t, [
                              {
                                  key: 'reset',
                                  value: function() {
                                      this.timeline = new Array(99);
                                      for (
                                          var t = 0;
                                          t < this.timeline.length;
                                          t++
                                      )
                                          this.timeline[t] = [];
                                  },
                              },
                              {
                                  key: 'recordKeyDown',
                                  value: function(t) {
                                      var n,
                                          e = u(t);
                                      try {
                                          for (e.s(); !(n = e.n()).done; ) {
                                              var i = n.value,
                                                  a = this.timeline[i],
                                                  r = a[a.length - 1];
                                              (r && 1 === r[1]) ||
                                                  a.push([Date.now(), 1]);
                                          }
                                      } catch (t) {
                                          e.e(t);
                                      } finally {
                                          e.f();
                                      }
                                  },
                              },
                              {
                                  key: 'recordKeyUp',
                                  value: function(t) {
                                      var n,
                                          e = u(t);
                                      try {
                                          for (e.s(); !(n = e.n()).done; ) {
                                              var i = n.value,
                                                  a = this.timeline[i],
                                                  r = a[a.length - 1];
                                              (r && 0 === r[1]) ||
                                                  a.push([Date.now(), 0]);
                                          }
                                      } catch (t) {
                                          e.e(t);
                                      } finally {
                                          e.f();
                                      }
                                  },
                              },
                              { key: 'load', value: function() {} },
                              { key: 'save', value: function() {} },
                          ]),
                          t
                      );
                  })(),
                  f = e(77),
                  h = new l(),
                  v = new d();
              h.onDown(function(t) {
                  v.recordKeyDown(t), Object(f.c)(t);
              }),
                  h.onUp(function(t) {
                      v.recordKeyUp(t), Object(f.b)(t);
                  });
          },
          68: function(t, n, e) {
              'use strict';
              e.d(n, 'f', function() {
                  return r;
              }),
                  e.d(n, 'a', function() {
                      return o;
                  }),
                  e.d(n, 'd', function() {
                      return s;
                  }),
                  e.d(n, 'e', function() {
                      return c;
                  }),
                  e.d(n, 'b', function() {
                      return l;
                  }),
                  e.d(n, 'c', function() {
                      return u;
                  });
              var i = e(0),
                  a = {
                      piano: null,
                      noteBar: null,
                      keyboard: null,
                      settingsPanel: null,
                  },
                  r = { clientWidth: 300, scale: 1, leftOst: 0, leftScale: 0 };
              function o() {
                  var t = a.piano,
                      n = a.noteBar,
                      e = a.keyboard,
                      i = a.settingsPanel;
                  if (t && t.$refs && t.$refs.piano) {
                      var o = t.$refs.piano,
                          s = o.clientWidth,
                          c = o.clientHeight,
                          l = s / 2081;
                      r.clientWidth = s;
                      var u = t.$store.state.cacheConf,
                          p = u.scale,
                          d = u.left,
                          f = (p + 11) / 12;
                      (u.barScale = 1 / f), (r.leftScale = 1 - u.barScale);
                      var h = f * l;
                      r.scale = h;
                      var v = r.leftScale * d * 2081;
                      e && e.setSize(h, v);
                      var b = c - 200 * h - 15;
                      n && n.setSize(s, b, h, v), i && i.setSize(s, b, h);
                  }
              }
              function s(t) {
                  (a.noteBar = t), o();
              }
              function c(t) {
                  (a.piano = t), o();
              }
              function l(t) {
                  (a.keyboard = t), o();
              }
              function u(t) {
                  (a.settingsPanel = t), o();
              }
              i.a.isClient && window.addEventListener('resize', o);
          },
          76: function(t, n, e) {
              'use strict';
              e.d(n, 'b', function() {
                  return p;
              }),
                  e.d(n, 'c', function() {
                      return d;
                  }),
                  e.d(n, 'e', function() {
                      return f;
                  }),
                  e.d(n, 'd', function() {
                      return h;
                  }),
                  e.d(n, 'f', function() {
                      return v;
                  }),
                  e.d(n, 'g', function() {
                      return b;
                  }),
                  e.d(n, 'a', function() {
                      return m;
                  });
              var i = e(65),
                  a = !1,
                  r = [],
                  o = new Array(250).fill(!1),
                  s = { shiftSharp: !1, tabSustain: !1, pckey2key: {} },
                  c = new Array(255).fill(!1);
              function l(t) {
                  if ((p(t.which, s.shiftSharp && t.shiftKey), c[t.which]))
                      return t.preventDefault(), !1;
              }
              function u(t) {
                  if ((d(t.which, s.shiftSharp && t.shiftKey), c[t.which]))
                      return t.preventDefault(), !1;
              }
              function p(t) {
                  var n =
                      arguments.length > 1 &&
                      void 0 !== arguments[1] &&
                      arguments[1];
                  if (!1 === o[t]) {
                      if (((o[t] = !0), 20 === t && s.tabSustain))
                          return void i.a.sustainOn();
                      if (16 === t && s.shiftSharp) return void i.a.upAll(1);
                      var e = s.pckey2key,
                          a = e[t];
                      a &&
                          (n && a < 88
                              ? i.a.down([a + 1], !1)
                              : i.a.down([a], !1)),
                          r.forEach(function(n) {
                              n(!0, t);
                          });
                  }
              }
              function d(t) {
                  var n =
                      arguments.length > 1 &&
                      void 0 !== arguments[1] &&
                      arguments[1];
                  if (!0 === o[t]) {
                      if (((o[t] = !1), 20 === t && s.tabSustain))
                          return void i.a.sustainOff();
                      if (16 === t && s.shiftSharp) return void i.a.upAll(1);
                      var e = s.pckey2key,
                          a = e[t];
                      a && (n && a < 88 ? i.a.up([a + 1]) : i.a.up([a])),
                          r.forEach(function(n) {
                              n(!1, t);
                          });
                  }
              }
              function f(t) {
                  t instanceof Function && -1 === r.indexOf(t) && r.push(t);
              }
              function h(t) {
                  var n = r.indexOf(t);
                  n >= 0 && r.splice(n, 1);
              }
              function v(t) {
                  // a ||
                  //     ((a = !0),
                  //     t && (s = t),
                  //     document.addEventListener('keydown', l),
                  //     document.addEventListener('keyup', u));
              }
              function b() {
                  // a &&
                  //     ((a = !1),
                  //     document.removeEventListener('keydown', l),
                  //     document.removeEventListener('keyup', u));
              }
              function m() {
                  return [
                      [
                          { n: '~', c: 192 },
                          { n: '1', c: 49 },
                          { n: '2', c: 50 },
                          { n: '3', c: 51 },
                          { n: '4', c: 52 },
                          { n: '5', c: 53 },
                          { n: '6', c: 54 },
                          { n: '7', c: 55 },
                          { n: '8', c: 56 },
                          { n: '9', c: 57 },
                          { n: '0', c: 48 },
                          { n: '-', c: 189 },
                          { n: '=', c: 187 },
                          { n: 'Backspace', c: 8, w: 90 },
                          { n: 'Insert', c: 45, d: 1, m: 20 },
                          { n: 'Home', c: 36, d: 1 },
                          { n: 'PgU', c: 33, d: 1 },
                          { n: 'Num', c: 144, d: 1, m: 20 },
                          { n: '/', c: 111 },
                          { n: '*', c: 106 },
                          { n: '-', c: 109 },
                      ],
                      [
                          { n: 'Tab', c: 9, w: 72, d: 1 },
                          { n: 'Q', c: 81 },
                          { n: 'W', c: 87 },
                          { n: 'E', c: 69 },
                          { n: 'R', c: 82 },
                          { n: 'T', c: 84 },
                          { n: 'Y', c: 89 },
                          { n: 'U', c: 85 },
                          { n: 'I', c: 73 },
                          { n: 'O', c: 79 },
                          { n: 'P', c: 80 },
                          { n: '{', c: 219 },
                          { n: '}', c: 221 },
                          { n: '\\', c: 220, w: 68 },
                          { n: 'Del', c: 46, d: 1, m: 20 },
                          { n: 'End', c: 35, d: 1 },
                          { n: 'PgD', c: 34, d: 1 },
                          { n: '7', c: 103, m: 20 },
                          { n: '8', c: 104 },
                          { n: '9', c: 105 },
                          { n: '+', c: 107, h: 107 },
                      ],
                      [
                          { n: 'Caps Lock', c: 20, w: 94, d: 1 },
                          { n: 'A', c: 65 },
                          { n: 'S', c: 83 },
                          { n: 'D', c: 68 },
                          { n: 'F', c: 70 },
                          { n: 'G', c: 71 },
                          { n: 'H', c: 72 },
                          { n: 'J', c: 74 },
                          { n: 'K', c: 75 },
                          { n: 'L', c: 76 },
                          { n: ';', c: 186 },
                          { n: '"', c: 222 },
                          { n: 'Enter', c: 13, w: 103, d: 1 },
                          { n: '4', c: 100, m: 211 },
                          { n: '5', c: 101 },
                          { n: '6', c: 102 },
                      ],
                      [
                          { n: 'Shift', c: 16, w: 116, d: 1 },
                          { n: 'Z', c: 90 },
                          { n: 'X', c: 88 },
                          { n: 'C', c: 67 },
                          { n: 'V', c: 86 },
                          { n: 'B', c: 66 },
                          { n: 'N', c: 78 },
                          { n: 'M', c: 77 },
                          { n: '<', c: 188 },
                          { n: '>', c: 190 },
                          { n: '?', c: 191 },
                          { n: 'Shift', c: 16, w: 138, d: 1 },
                          { n: '↑', c: 38, m: 77 },
                          { n: '1', c: 97, m: 77 },
                          { n: '2', c: 98 },
                          { n: '3', c: 99 },
                          { n: 'Enter', c: 13, d: 1, h: 107 },
                      ],
                      [
                          { n: 'Ctrl', c: 17, w: 60, d: 1 },
                          { n: 'Win', c: 91, w: 60, d: 1 },
                          { n: 'Alt', c: 18, w: 60, d: 1 },
                          { n: 'Space', c: 32, w: 429 },
                          { n: 'Alt', c: 18, w: 60, d: 1 },
                          { n: 'Opt', c: 93, w: 60, d: 1 },
                          { n: 'Ctrl', c: 17, w: 60, d: 1 },
                          { n: '←', c: 37, m: 20 },
                          { n: '↓', c: 40 },
                          { n: '→', c: 39 },
                          { n: '0', c: 96, w: 107, m: 20 },
                          { n: '.', c: 110 },
                      ],
                  ];
              }
              [
                  [
                      { n: '~', c: 192 },
                      { n: '1', c: 49 },
                      { n: '2', c: 50 },
                      { n: '3', c: 51 },
                      { n: '4', c: 52 },
                      { n: '5', c: 53 },
                      { n: '6', c: 54 },
                      { n: '7', c: 55 },
                      { n: '8', c: 56 },
                      { n: '9', c: 57 },
                      { n: '0', c: 48 },
                      { n: '-', c: 189 },
                      { n: '=', c: 187 },
                      { n: 'Backspace', c: 8, w: 90 },
                      { n: 'Insert', c: 45, d: 1, m: 20 },
                      { n: 'Home', c: 36, d: 1 },
                      { n: 'PgU', c: 33, d: 1 },
                      { n: 'Num', c: 144, d: 1, m: 20 },
                      { n: '/', c: 111 },
                      { n: '*', c: 106 },
                      { n: '-', c: 109 },
                  ],
                  [
                      { n: 'Tab', c: 9, w: 72, d: 1 },
                      { n: 'Q', c: 81 },
                      { n: 'W', c: 87 },
                      { n: 'E', c: 69 },
                      { n: 'R', c: 82 },
                      { n: 'T', c: 84 },
                      { n: 'Y', c: 89 },
                      { n: 'U', c: 85 },
                      { n: 'I', c: 73 },
                      { n: 'O', c: 79 },
                      { n: 'P', c: 80 },
                      { n: '{', c: 219 },
                      { n: '}', c: 221 },
                      { n: '\\', c: 220, w: 68 },
                      { n: 'Del', c: 46, d: 1, m: 20 },
                      { n: 'End', c: 35, d: 1 },
                      { n: 'PgD', c: 34, d: 1 },
                      { n: '7', c: 103, m: 20 },
                      { n: '8', c: 104 },
                      { n: '9', c: 105 },
                      { n: '+', c: 107, h: 107 },
                  ],
                  [
                      { n: 'Caps Lock', c: 20, w: 94, d: 1 },
                      { n: 'A', c: 65 },
                      { n: 'S', c: 83 },
                      { n: 'D', c: 68 },
                      { n: 'F', c: 70 },
                      { n: 'G', c: 71 },
                      { n: 'H', c: 72 },
                      { n: 'J', c: 74 },
                      { n: 'K', c: 75 },
                      { n: 'L', c: 76 },
                      { n: ';', c: 186 },
                      { n: '"', c: 222 },
                      { n: 'Enter', c: 13, w: 103, d: 1 },
                      { n: '4', c: 100, m: 211 },
                      { n: '5', c: 101 },
                      { n: '6', c: 102 },
                  ],
                  [
                      { n: 'Shift', c: 16, w: 116, d: 1 },
                      { n: 'Z', c: 90 },
                      { n: 'X', c: 88 },
                      { n: 'C', c: 67 },
                      { n: 'V', c: 86 },
                      { n: 'B', c: 66 },
                      { n: 'N', c: 78 },
                      { n: 'M', c: 77 },
                      { n: '<', c: 188 },
                      { n: '>', c: 190 },
                      { n: '?', c: 191 },
                      { n: 'Shift', c: 16, w: 138, d: 1 },
                      { n: '↑', c: 38, m: 77 },
                      { n: '1', c: 97, m: 77 },
                      { n: '2', c: 98 },
                      { n: '3', c: 99 },
                      { n: 'Enter', c: 13, d: 1, h: 107 },
                  ],
                  [
                      { n: 'Ctrl', c: 17, w: 60, d: 1 },
                      { n: 'Win', c: 91, w: 60, d: 1 },
                      { n: 'Alt', c: 18, w: 60, d: 1 },
                      { n: 'Space', c: 32, w: 429 },
                      { n: 'Alt', c: 18, w: 60, d: 1 },
                      { n: 'Opt', c: 93, w: 60, d: 1 },
                      { n: 'Ctrl', c: 17, w: 60, d: 1 },
                      { n: '←', c: 37, m: 20 },
                      { n: '↓', c: 40 },
                      { n: '→', c: 39 },
                      { n: '0', c: 96, w: 107, m: 20 },
                      { n: '.', c: 110 },
                  ],
              ].forEach(function(t) {
                  t.forEach(function(t) {
                      1 !== t.d && (c[t.c] = !0);
                  });
              });
          },
          77: function(t, n, e) {
              'use strict';
              e.d(n, 'a', function() {
                  return j;
              }),
                  e.d(n, 'e', function() {
                      return M;
                  }),
                  e.d(n, 'c', function() {
                      return C;
                  }),
                  e.d(n, 'b', function() {
                      return _;
                  }),
                  e.d(n, 'd', function() {
                      return E;
                  });
              for (
                  var i = { Soundfont: {}, players: {}, defaultPlayer: null },
                      a = new Array(89),
                      r = [
                          'C',
                          'Db',
                          'D',
                          'Eb',
                          'E',
                          'F',
                          'Gb',
                          'G',
                          'Ab',
                          'A',
                          'Bb',
                          'B',
                      ],
                      o = 1,
                      s = 0;
                  o < 89;
                  o++
              ) {
                  var c = (o + 12 - 4) % 12;
                  0 == c && s++;
                  var l = ''.concat(r[c]).concat(s);
                  a[o] = l;
              }
              var u = e(2),
                  p = e.n(u),
                  d = e(3),
                  f = e.n(d),
                  h = e(9),
                  v = e.n(h);
              function b() {
                  var t = new Audio(),
                      n = t.canPlayType('audio/mpeg'),
                      e = t.canPlayType('audio/ogg; codecs="vorbis"');
                  return 'probably' === e
                      ? 'ogg'
                      : 'probably' === n
                      ? 'mp3'
                      : 'maybe' === e
                      ? 'ogg'
                      : 'mp3';
              }
              var m = e(60),
                  g = e.n(m),
                  y = e(61),
                  w = e.n(y),
                  x = {
                      _keyStr:
                          'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
                      decodeArrayBuffer: function(t) {
                          var n = Math.ceil((3 * t.length) / 4),
                              e = new ArrayBuffer(n);
                          return this.decode(t, e), e;
                      },
                      decode: function(t, n) {
                          var e,
                              i,
                              a,
                              r,
                              o,
                              s,
                              c,
                              l = this._keyStr.indexOf(t.charAt(t.length - 1)),
                              u = this._keyStr.indexOf(t.charAt(t.length - 1)),
                              p = Math.ceil((3 * t.length) / 4);
                          64 == l && p--, 64 == u && p--;
                          var d = 0,
                              f = 0;
                          for (
                              e = n ? new Uint8Array(n) : new Uint8Array(p),
                                  t = t.replace(/[^A-Za-z0-9+/=]/g, ''),
                                  d = 0;
                              d < p;
                              d += 3
                          )
                              (i =
                                  (this._keyStr.indexOf(t.charAt(f++)) << 2) |
                                  ((o = this._keyStr.indexOf(t.charAt(f++))) >>
                                      4)),
                                  (a =
                                      ((15 & o) << 4) |
                                      ((s = this._keyStr.indexOf(
                                          t.charAt(f++)
                                      )) >>
                                          2)),
                                  (r =
                                      ((3 & s) << 6) |
                                      (c = this._keyStr.indexOf(t.charAt(f++)))),
                                  (e[d] = i),
                                  64 != s && (e[d + 1] = a),
                                  64 != c && (e[d + 2] = r);
                          return e;
                      },
                  },
                  k = (function() {
                      function t(n) {
                          g()(this, t),
                              (this.instrument = n),
                              (this.sources = new Array(89).fill(!1)),
                              (this.buffers = new Array(89).fill(!1)),
                              (this.sourceBufferInited = !1),
                              (this.prepareState = 0),
                              (this.endGradualTime = 0.5);
                      }
                      var n, e;
                      return (
                          w()(t, [
                              {
                                  key: 'prepare',
                                  value:
                                      ((e = f()(
                                          p.a.mark(function t() {
                                              return p.a.wrap(
                                                  function(t) {
                                                      for (;;)
                                                          switch (
                                                              (t.prev = t.next)
                                                          ) {
                                                              case 0:
                                                                  if (
                                                                      0 ===
                                                                      this
                                                                          .prepareState
                                                                  ) {
                                                                      t.next = 2;
                                                                      break;
                                                                  }
                                                                  return t.abrupt(
                                                                      'return'
                                                                  );
                                                              case 2:
                                                                  return (
                                                                      (this.prepareState = 1),
                                                                      (this.ctx = new (window.AudioContext ||
                                                                          window.webkitAudioContext)()),
                                                                      (t.prev = 4),
                                                                      (t.next = 7),
                                                                      this.initSoureBuffer()
                                                                  );
                                                              case 7:
                                                                  (this.prepareState = 2),
                                                                      (t.next = 14);
                                                                  break;
                                                              case 10:
                                                                  (t.prev = 10),
                                                                      (t.t0 = t.catch(
                                                                          4
                                                                      )),
                                                                      (this.prepareState = 0),
                                                                      console.error(
                                                                          t.t0
                                                                      );
                                                              case 14:
                                                              case 'end':
                                                                  return t.stop();
                                                          }
                                                  },
                                                  t,
                                                  this,
                                                  [[4, 10]]
                                              );
                                          })
                                      )),
                                      function() {
                                          return e.apply(this, arguments);
                                      }),
                              },
                              {
                                  key: 'initSoureBuffer',
                                  value:
                                      ((n = f()(
                                          p.a.mark(function t() {
                                              var n,
                                                  e,
                                                  r,
                                                  o,
                                                  s,
                                                  c = this;
                                              return p.a.wrap(
                                                  function(t) {
                                                      for (;;)
                                                          switch (
                                                              (t.prev = t.next)
                                                          ) {
                                                              case 0:
                                                                  if (
                                                                      (n =
                                                                          i
                                                                              .Soundfont[
                                                                              this
                                                                                  .instrument
                                                                          ])
                                                                  ) {
                                                                      t.next = 3;
                                                                      break;
                                                                  }
                                                                  throw new Error(
                                                                      "it's not exists soundfound of named ".concat(
                                                                          this
                                                                              .instrument
                                                                      )
                                                                  );
                                                              case 3:
                                                                  for (
                                                                      e = this
                                                                          .ctx,
                                                                          r = [],
                                                                          o = function(
                                                                              t
                                                                          ) {
                                                                              var i,
                                                                                  o;
                                                                              r.push(
                                                                                  ((i =
                                                                                      a[
                                                                                          t
                                                                                      ]),
                                                                                  (o =
                                                                                      n[
                                                                                          i
                                                                                      ]),
                                                                                  void new Promise(
                                                                                      function(
                                                                                          n,
                                                                                          i
                                                                                      ) {
                                                                                          if (
                                                                                              o
                                                                                          ) {
                                                                                              var a = o.split(
                                                                                                      ','
                                                                                                  )[1],
                                                                                                  r = x.decodeArrayBuffer(
                                                                                                      a
                                                                                                  );
                                                                                              new Promise(
                                                                                                  function(
                                                                                                      t,
                                                                                                      n
                                                                                                  ) {
                                                                                                      e.decodeAudioData(
                                                                                                          r,
                                                                                                          t,
                                                                                                          n
                                                                                                      );
                                                                                                  }
                                                                                              )
                                                                                                  .then(
                                                                                                      function(
                                                                                                          e
                                                                                                      ) {
                                                                                                          (c.buffers[
                                                                                                              t
                                                                                                          ] = e),
                                                                                                              n();
                                                                                                      }
                                                                                                  )
                                                                                                  .catch(
                                                                                                      i
                                                                                                  );
                                                                                          }
                                                                                      }
                                                                                  ))
                                                                              );
                                                                          },
                                                                          s = 1;
                                                                      s < 89;
                                                                      s++
                                                                  )
                                                                      o(s);
                                                                  return (
                                                                      (t.next = 9),
                                                                      Promise.all(
                                                                          r
                                                                      )
                                                                  );
                                                              case 9:
                                                                  this.sourceBufferInited = !0;
                                                              case 10:
                                                              case 'end':
                                                                  return t.stop();
                                                          }
                                                  },
                                                  t,
                                                  this
                                              );
                                          })
                                      )),
                                      function() {
                                          return n.apply(this, arguments);
                                      }),
                              },
                              {
                                  key: 'setEndGradualTime',
                                  value: function(t) {
                                      this.endGradualTime =
                                          t > 0 && t <= 5 ? t : 0;
                                  },
                              },
                              {
                                  key: 'noteOn',
                                  value: function(t) {
                                      if (this.buffers[t]) {
                                          this.sources[t] && this.noteOff(t);
                                          var n = this.buffers[t],
                                              e = this.ctx.createBufferSource();
                                          e.buffer = n;
                                          var i = this.ctx.createGain();
                                          i.connect(this.ctx.destination),
                                              (i.gain.value = 0),
                                              e.connect(i),
                                              e.start(),
                                              i.gain.linearRampToValueAtTime(
                                                  3,
                                                  this.ctx.currentTime + 0.02
                                              ),
                                              (this.sources[t] = {
                                                  source: e,
                                                  gainNode: i,
                                              });
                                      } else this.prepare();
                                  },
                              },
                              {
                                  key: 'noteOff',
                                  value: function(t) {
                                      if (this.sources[t]) {
                                          var n = this.sources[t],
                                              e = n.source,
                                              i = n.gainNode.gain;
                                          i.linearRampToValueAtTime(
                                              i.value,
                                              this.ctx.currentTime
                                          ),
                                              i.linearRampToValueAtTime(
                                                  0,
                                                  this.ctx.currentTime +
                                                      0.1 +
                                                      this.endGradualTime
                                              ),
                                              setTimeout(function() {
                                                  e.disconnect();
                                              }, 1e3 *
                                                  (0.11 + this.endGradualTime)),
                                              (this.sources[t] = null);
                                      }
                                  },
                              },
                              { key: 'stopAllNotes', value: function() {} },
                          ]),
                          t
                      );
                  })();
              function O(t) {
                  var n = new k(t);
                  (i.players[t] = n), (i.defaultPlayer = n);
              }
              function T(t) {
                  (window.MIDI = i), window.eval(t), delete window.MIDI;
              }
              function S() {
                  return (S = f()(
                      p.a.mark(function t(n) {
                          var e, i, a, r, o;
                          return p.a.wrap(function(t) {
                              for (;;)
                                  switch ((t.prev = t.next)) {
                                      case 0:
                                          return (
                                              (e = n.soundfontUrl),
                                              (i = n.instrument),
                                              (a = n.onProgress),
                                              (r = b()),
                                              (o = ''
                                                  .concat(e, '/')
                                                  .concat(i, '-')
                                                  .concat(r, '.js')),
                                              (t.next = 5),
                                              v.a.get(o, {
                                                  onDownloadProgress: function(
                                                      t
                                                  ) {
                                                      a(r, t.loaded);
                                                  },
                                              })
                                          );
                                      case 5:
                                          return (
                                              T(t.sent.data),
                                              O(i),
                                              t.abrupt('return', 'ok')
                                          );
                                      case 9:
                                      case 'end':
                                          return t.stop();
                                  }
                          }, t);
                      })
                  )).apply(this, arguments);
              }
              var j = function(t) {
                  return S.apply(this, arguments);
              };
              function M() {
                  i.defaultPlayer &&
                      i.defaultPlayer.prepare &&
                      i.defaultPlayer.prepare();
              }
              function C(t) {
                  i.defaultPlayer &&
                      t.forEach(function(t) {
                          i.defaultPlayer.noteOn(t);
                      });
              }
              function _(t) {
                  i.defaultPlayer &&
                      t.forEach(function(t) {
                          i.defaultPlayer.noteOff(t);
                      });
              }
              function E(t) {
                  i.defaultPlayer && i.defaultPlayer.setEndGradualTime(t);
              }
          },
      },
  ]);
  