Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
1dc02c72
D
DeepSpeech
项目概览
PaddlePaddle
/
DeepSpeech
大约 1 年 前同步成功
通知
206
Star
8425
Fork
1598
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
245
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DeepSpeech
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
245
Issue
245
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1dc02c72
编写于
4月 13, 2022
作者:
W
WilliamZhang06
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added online web client, test=doc
上级
7724845c
变更
21
隐藏空白更改
内联
并排
Showing
21 changed file
with
2852 addition
and
0 deletion
+2852
-0
paddlespeech/server/tests/asr/online/web/app.py
paddlespeech/server/tests/asr/online/web/app.py
+22
-0
paddlespeech/server/tests/asr/online/web/static/css/font-awesome.min.css
...rver/tests/asr/online/web/static/css/font-awesome.min.css
+4
-0
paddlespeech/server/tests/asr/online/web/static/css/style.css
...lespeech/server/tests/asr/online/web/static/css/style.css
+453
-0
paddlespeech/server/tests/asr/online/web/static/fonts/FontAwesome.otf
.../server/tests/asr/online/web/static/fonts/FontAwesome.otf
+0
-0
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.eot
...tests/asr/online/web/static/fonts/fontawesome-webfont.eot
+0
-0
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.svg
...tests/asr/online/web/static/fonts/fontawesome-webfont.svg
+1951
-0
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.ttf
...tests/asr/online/web/static/fonts/fontawesome-webfont.ttf
+0
-0
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.woff
...ests/asr/online/web/static/fonts/fontawesome-webfont.woff
+0
-0
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.woff2
...sts/asr/online/web/static/fonts/fontawesome-webfont.woff2
+0
-0
paddlespeech/server/tests/asr/online/web/static/image/PaddleSpeech_logo.png
...r/tests/asr/online/web/static/image/PaddleSpeech_logo.png
+0
-0
paddlespeech/server/tests/asr/online/web/static/image/voice-dictation.svg
...ver/tests/asr/online/web/static/image/voice-dictation.svg
+94
-0
paddlespeech/server/tests/asr/online/web/static/js/SoundRecognizer.js
.../server/tests/asr/online/web/static/js/SoundRecognizer.js
+133
-0
paddlespeech/server/tests/asr/online/web/static/js/jquery-3.2.1.min.js
...server/tests/asr/online/web/static/js/jquery-3.2.1.min.js
+4
-0
paddlespeech/server/tests/asr/online/web/static/js/recorder/engine/mp3.js
...ver/tests/asr/online/web/static/js/recorder/engine/mp3.js
+6
-0
paddlespeech/server/tests/asr/online/web/static/js/recorder/engine/pcm.js
...ver/tests/asr/online/web/static/js/recorder/engine/pcm.js
+6
-0
paddlespeech/server/tests/asr/online/web/static/js/recorder/engine/wav.js
...ver/tests/asr/online/web/static/js/recorder/engine/wav.js
+6
-0
paddlespeech/server/tests/asr/online/web/static/js/recorder/extensions/frequency.histogram.view.js
...static/js/recorder/extensions/frequency.histogram.view.js
+6
-0
paddlespeech/server/tests/asr/online/web/static/js/recorder/extensions/lib.fft.js
...s/asr/online/web/static/js/recorder/extensions/lib.fft.js
+6
-0
paddlespeech/server/tests/asr/online/web/static/js/recorder/recorder-core.js
.../tests/asr/online/web/static/js/recorder/recorder-core.js
+6
-0
paddlespeech/server/tests/asr/online/web/static/paddle.ico
paddlespeech/server/tests/asr/online/web/static/paddle.ico
+0
-0
paddlespeech/server/tests/asr/online/web/templates/index.html
...lespeech/server/tests/asr/online/web/templates/index.html
+155
-0
未找到文件。
paddlespeech/server/tests/asr/online/web/app.py
0 → 100644
浏览文件 @
1dc02c72
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2021 Mobvoi Inc. All Rights Reserved.
# Author: zhendong.peng@mobvoi.com (Zhendong Peng)
import
argparse
from
flask
import
Flask
,
render_template
parser
=
argparse
.
ArgumentParser
(
description
=
'training your network'
)
parser
.
add_argument
(
'--port'
,
default
=
19999
,
type
=
int
,
help
=
'port id'
)
args
=
parser
.
parse_args
()
app
=
Flask
(
__name__
)
@
app
.
route
(
'/'
)
def
index
():
return
render_template
(
'index.html'
)
if
__name__
==
'__main__'
:
app
.
run
(
host
=
'0.0.0.0'
,
port
=
args
.
port
,
debug
=
True
)
paddlespeech/server/tests/asr/online/web/static/css/font-awesome.min.css
0 → 100644
浏览文件 @
1dc02c72
/*!
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
@font-face
{
font-family
:
'FontAwesome'
;
src
:
url('../fonts/fontawesome-webfont.eot?v=4.7.0')
;
src
:
url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0')
format
(
'embedded-opentype'
),
url('../fonts/fontawesome-webfont.woff2?v=4.7.0')
format
(
'woff2'
),
url('../fonts/fontawesome-webfont.woff?v=4.7.0')
format
(
'woff'
),
url('../fonts/fontawesome-webfont.ttf?v=4.7.0')
format
(
'truetype'
),
url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular')
format
(
'svg'
);
font-weight
:
normal
;
font-style
:
normal
}
.fa
{
display
:
inline-block
;
font
:
normal
normal
normal
14px
/
1
FontAwesome
;
font-size
:
inherit
;
text-rendering
:
auto
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
}
.fa-lg
{
font-size
:
1.33333333em
;
line-height
:
.75em
;
vertical-align
:
-15%
}
.fa-2x
{
font-size
:
2em
}
.fa-3x
{
font-size
:
3em
}
.fa-4x
{
font-size
:
4em
}
.fa-5x
{
font-size
:
5em
}
.fa-fw
{
width
:
1.28571429em
;
text-align
:
center
}
.fa-ul
{
padding-left
:
0
;
margin-left
:
2.14285714em
;
list-style-type
:
none
}
.fa-ul
>
li
{
position
:
relative
}
.fa-li
{
position
:
absolute
;
left
:
-2.14285714em
;
width
:
2.14285714em
;
top
:
.14285714em
;
text-align
:
center
}
.fa-li.fa-lg
{
left
:
-1.85714286em
}
.fa-border
{
padding
:
.2em
.25em
.15em
;
border
:
solid
.08em
#eee
;
border-radius
:
.1em
}
.fa-pull-left
{
float
:
left
}
.fa-pull-right
{
float
:
right
}
.fa.fa-pull-left
{
margin-right
:
.3em
}
.fa.fa-pull-right
{
margin-left
:
.3em
}
.pull-right
{
float
:
right
}
.pull-left
{
float
:
left
}
.fa.pull-left
{
margin-right
:
.3em
}
.fa.pull-right
{
margin-left
:
.3em
}
.fa-spin
{
-webkit-animation
:
fa-spin
2s
infinite
linear
;
animation
:
fa-spin
2s
infinite
linear
}
.fa-pulse
{
-webkit-animation
:
fa-spin
1s
infinite
steps
(
8
);
animation
:
fa-spin
1s
infinite
steps
(
8
)}
@-webkit-keyframes
fa-spin
{
0
%
{
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
)}
100
%
{
-webkit-transform
:
rotate
(
359deg
);
transform
:
rotate
(
359deg
)}}
@keyframes
fa-spin
{
0
%
{
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
)}
100
%
{
-webkit-transform
:
rotate
(
359deg
);
transform
:
rotate
(
359deg
)}}
.fa-rotate-90
{
-ms-filter
:
"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"
;
-webkit-transform
:
rotate
(
90deg
);
-ms-transform
:
rotate
(
90deg
);
transform
:
rotate
(
90deg
)}
.fa-rotate-180
{
-ms-filter
:
"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"
;
-webkit-transform
:
rotate
(
180deg
);
-ms-transform
:
rotate
(
180deg
);
transform
:
rotate
(
180deg
)}
.fa-rotate-270
{
-ms-filter
:
"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"
;
-webkit-transform
:
rotate
(
270deg
);
-ms-transform
:
rotate
(
270deg
);
transform
:
rotate
(
270deg
)}
.fa-flip-horizontal
{
-ms-filter
:
"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"
;
-webkit-transform
:
scale
(
-1
,
1
);
-ms-transform
:
scale
(
-1
,
1
);
transform
:
scale
(
-1
,
1
)}
.fa-flip-vertical
{
-ms-filter
:
"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"
;
-webkit-transform
:
scale
(
1
,
-1
);
-ms-transform
:
scale
(
1
,
-1
);
transform
:
scale
(
1
,
-1
)}
:root
.fa-rotate-90
,
:root
.fa-rotate-180
,
:root
.fa-rotate-270
,
:root
.fa-flip-horizontal
,
:root
.fa-flip-vertical
{
filter
:
none
}
.fa-stack
{
position
:
relative
;
display
:
inline-block
;
width
:
2em
;
height
:
2em
;
line-height
:
2em
;
vertical-align
:
middle
}
.fa-stack-1x
,
.fa-stack-2x
{
position
:
absolute
;
left
:
0
;
width
:
100%
;
text-align
:
center
}
.fa-stack-1x
{
line-height
:
inherit
}
.fa-stack-2x
{
font-size
:
2em
}
.fa-inverse
{
color
:
#fff
}
.fa-glass
:before
{
content
:
"\f000"
}
.fa-music
:before
{
content
:
"\f001"
}
.fa-search
:before
{
content
:
"\f002"
}
.fa-envelope-o
:before
{
content
:
"\f003"
}
.fa-heart
:before
{
content
:
"\f004"
}
.fa-star
:before
{
content
:
"\f005"
}
.fa-star-o
:before
{
content
:
"\f006"
}
.fa-user
:before
{
content
:
"\f007"
}
.fa-film
:before
{
content
:
"\f008"
}
.fa-th-large
:before
{
content
:
"\f009"
}
.fa-th
:before
{
content
:
"\f00a"
}
.fa-th-list
:before
{
content
:
"\f00b"
}
.fa-check
:before
{
content
:
"\f00c"
}
.fa-remove
:before
,
.fa-close
:before
,
.fa-times
:before
{
content
:
"\f00d"
}
.fa-search-plus
:before
{
content
:
"\f00e"
}
.fa-search-minus
:before
{
content
:
"\f010"
}
.fa-power-off
:before
{
content
:
"\f011"
}
.fa-signal
:before
{
content
:
"\f012"
}
.fa-gear
:before
,
.fa-cog
:before
{
content
:
"\f013"
}
.fa-trash-o
:before
{
content
:
"\f014"
}
.fa-home
:before
{
content
:
"\f015"
}
.fa-file-o
:before
{
content
:
"\f016"
}
.fa-clock-o
:before
{
content
:
"\f017"
}
.fa-road
:before
{
content
:
"\f018"
}
.fa-download
:before
{
content
:
"\f019"
}
.fa-arrow-circle-o-down
:before
{
content
:
"\f01a"
}
.fa-arrow-circle-o-up
:before
{
content
:
"\f01b"
}
.fa-inbox
:before
{
content
:
"\f01c"
}
.fa-play-circle-o
:before
{
content
:
"\f01d"
}
.fa-rotate-right
:before
,
.fa-repeat
:before
{
content
:
"\f01e"
}
.fa-refresh
:before
{
content
:
"\f021"
}
.fa-list-alt
:before
{
content
:
"\f022"
}
.fa-lock
:before
{
content
:
"\f023"
}
.fa-flag
:before
{
content
:
"\f024"
}
.fa-headphones
:before
{
content
:
"\f025"
}
.fa-volume-off
:before
{
content
:
"\f026"
}
.fa-volume-down
:before
{
content
:
"\f027"
}
.fa-volume-up
:before
{
content
:
"\f028"
}
.fa-qrcode
:before
{
content
:
"\f029"
}
.fa-barcode
:before
{
content
:
"\f02a"
}
.fa-tag
:before
{
content
:
"\f02b"
}
.fa-tags
:before
{
content
:
"\f02c"
}
.fa-book
:before
{
content
:
"\f02d"
}
.fa-bookmark
:before
{
content
:
"\f02e"
}
.fa-print
:before
{
content
:
"\f02f"
}
.fa-camera
:before
{
content
:
"\f030"
}
.fa-font
:before
{
content
:
"\f031"
}
.fa-bold
:before
{
content
:
"\f032"
}
.fa-italic
:before
{
content
:
"\f033"
}
.fa-text-height
:before
{
content
:
"\f034"
}
.fa-text-width
:before
{
content
:
"\f035"
}
.fa-align-left
:before
{
content
:
"\f036"
}
.fa-align-center
:before
{
content
:
"\f037"
}
.fa-align-right
:before
{
content
:
"\f038"
}
.fa-align-justify
:before
{
content
:
"\f039"
}
.fa-list
:before
{
content
:
"\f03a"
}
.fa-dedent
:before
,
.fa-outdent
:before
{
content
:
"\f03b"
}
.fa-indent
:before
{
content
:
"\f03c"
}
.fa-video-camera
:before
{
content
:
"\f03d"
}
.fa-photo
:before
,
.fa-image
:before
,
.fa-picture-o
:before
{
content
:
"\f03e"
}
.fa-pencil
:before
{
content
:
"\f040"
}
.fa-map-marker
:before
{
content
:
"\f041"
}
.fa-adjust
:before
{
content
:
"\f042"
}
.fa-tint
:before
{
content
:
"\f043"
}
.fa-edit
:before
,
.fa-pencil-square-o
:before
{
content
:
"\f044"
}
.fa-share-square-o
:before
{
content
:
"\f045"
}
.fa-check-square-o
:before
{
content
:
"\f046"
}
.fa-arrows
:before
{
content
:
"\f047"
}
.fa-step-backward
:before
{
content
:
"\f048"
}
.fa-fast-backward
:before
{
content
:
"\f049"
}
.fa-backward
:before
{
content
:
"\f04a"
}
.fa-play
:before
{
content
:
"\f04b"
}
.fa-pause
:before
{
content
:
"\f04c"
}
.fa-stop
:before
{
content
:
"\f04d"
}
.fa-forward
:before
{
content
:
"\f04e"
}
.fa-fast-forward
:before
{
content
:
"\f050"
}
.fa-step-forward
:before
{
content
:
"\f051"
}
.fa-eject
:before
{
content
:
"\f052"
}
.fa-chevron-left
:before
{
content
:
"\f053"
}
.fa-chevron-right
:before
{
content
:
"\f054"
}
.fa-plus-circle
:before
{
content
:
"\f055"
}
.fa-minus-circle
:before
{
content
:
"\f056"
}
.fa-times-circle
:before
{
content
:
"\f057"
}
.fa-check-circle
:before
{
content
:
"\f058"
}
.fa-question-circle
:before
{
content
:
"\f059"
}
.fa-info-circle
:before
{
content
:
"\f05a"
}
.fa-crosshairs
:before
{
content
:
"\f05b"
}
.fa-times-circle-o
:before
{
content
:
"\f05c"
}
.fa-check-circle-o
:before
{
content
:
"\f05d"
}
.fa-ban
:before
{
content
:
"\f05e"
}
.fa-arrow-left
:before
{
content
:
"\f060"
}
.fa-arrow-right
:before
{
content
:
"\f061"
}
.fa-arrow-up
:before
{
content
:
"\f062"
}
.fa-arrow-down
:before
{
content
:
"\f063"
}
.fa-mail-forward
:before
,
.fa-share
:before
{
content
:
"\f064"
}
.fa-expand
:before
{
content
:
"\f065"
}
.fa-compress
:before
{
content
:
"\f066"
}
.fa-plus
:before
{
content
:
"\f067"
}
.fa-minus
:before
{
content
:
"\f068"
}
.fa-asterisk
:before
{
content
:
"\f069"
}
.fa-exclamation-circle
:before
{
content
:
"\f06a"
}
.fa-gift
:before
{
content
:
"\f06b"
}
.fa-leaf
:before
{
content
:
"\f06c"
}
.fa-fire
:before
{
content
:
"\f06d"
}
.fa-eye
:before
{
content
:
"\f06e"
}
.fa-eye-slash
:before
{
content
:
"\f070"
}
.fa-warning
:before
,
.fa-exclamation-triangle
:before
{
content
:
"\f071"
}
.fa-plane
:before
{
content
:
"\f072"
}
.fa-calendar
:before
{
content
:
"\f073"
}
.fa-random
:before
{
content
:
"\f074"
}
.fa-comment
:before
{
content
:
"\f075"
}
.fa-magnet
:before
{
content
:
"\f076"
}
.fa-chevron-up
:before
{
content
:
"\f077"
}
.fa-chevron-down
:before
{
content
:
"\f078"
}
.fa-retweet
:before
{
content
:
"\f079"
}
.fa-shopping-cart
:before
{
content
:
"\f07a"
}
.fa-folder
:before
{
content
:
"\f07b"
}
.fa-folder-open
:before
{
content
:
"\f07c"
}
.fa-arrows-v
:before
{
content
:
"\f07d"
}
.fa-arrows-h
:before
{
content
:
"\f07e"
}
.fa-bar-chart-o
:before
,
.fa-bar-chart
:before
{
content
:
"\f080"
}
.fa-twitter-square
:before
{
content
:
"\f081"
}
.fa-facebook-square
:before
{
content
:
"\f082"
}
.fa-camera-retro
:before
{
content
:
"\f083"
}
.fa-key
:before
{
content
:
"\f084"
}
.fa-gears
:before
,
.fa-cogs
:before
{
content
:
"\f085"
}
.fa-comments
:before
{
content
:
"\f086"
}
.fa-thumbs-o-up
:before
{
content
:
"\f087"
}
.fa-thumbs-o-down
:before
{
content
:
"\f088"
}
.fa-star-half
:before
{
content
:
"\f089"
}
.fa-heart-o
:before
{
content
:
"\f08a"
}
.fa-sign-out
:before
{
content
:
"\f08b"
}
.fa-linkedin-square
:before
{
content
:
"\f08c"
}
.fa-thumb-tack
:before
{
content
:
"\f08d"
}
.fa-external-link
:before
{
content
:
"\f08e"
}
.fa-sign-in
:before
{
content
:
"\f090"
}
.fa-trophy
:before
{
content
:
"\f091"
}
.fa-github-square
:before
{
content
:
"\f092"
}
.fa-upload
:before
{
content
:
"\f093"
}
.fa-lemon-o
:before
{
content
:
"\f094"
}
.fa-phone
:before
{
content
:
"\f095"
}
.fa-square-o
:before
{
content
:
"\f096"
}
.fa-bookmark-o
:before
{
content
:
"\f097"
}
.fa-phone-square
:before
{
content
:
"\f098"
}
.fa-twitter
:before
{
content
:
"\f099"
}
.fa-facebook-f
:before
,
.fa-facebook
:before
{
content
:
"\f09a"
}
.fa-github
:before
{
content
:
"\f09b"
}
.fa-unlock
:before
{
content
:
"\f09c"
}
.fa-credit-card
:before
{
content
:
"\f09d"
}
.fa-feed
:before
,
.fa-rss
:before
{
content
:
"\f09e"
}
.fa-hdd-o
:before
{
content
:
"\f0a0"
}
.fa-bullhorn
:before
{
content
:
"\f0a1"
}
.fa-bell
:before
{
content
:
"\f0f3"
}
.fa-certificate
:before
{
content
:
"\f0a3"
}
.fa-hand-o-right
:before
{
content
:
"\f0a4"
}
.fa-hand-o-left
:before
{
content
:
"\f0a5"
}
.fa-hand-o-up
:before
{
content
:
"\f0a6"
}
.fa-hand-o-down
:before
{
content
:
"\f0a7"
}
.fa-arrow-circle-left
:before
{
content
:
"\f0a8"
}
.fa-arrow-circle-right
:before
{
content
:
"\f0a9"
}
.fa-arrow-circle-up
:before
{
content
:
"\f0aa"
}
.fa-arrow-circle-down
:before
{
content
:
"\f0ab"
}
.fa-globe
:before
{
content
:
"\f0ac"
}
.fa-wrench
:before
{
content
:
"\f0ad"
}
.fa-tasks
:before
{
content
:
"\f0ae"
}
.fa-filter
:before
{
content
:
"\f0b0"
}
.fa-briefcase
:before
{
content
:
"\f0b1"
}
.fa-arrows-alt
:before
{
content
:
"\f0b2"
}
.fa-group
:before
,
.fa-users
:before
{
content
:
"\f0c0"
}
.fa-chain
:before
,
.fa-link
:before
{
content
:
"\f0c1"
}
.fa-cloud
:before
{
content
:
"\f0c2"
}
.fa-flask
:before
{
content
:
"\f0c3"
}
.fa-cut
:before
,
.fa-scissors
:before
{
content
:
"\f0c4"
}
.fa-copy
:before
,
.fa-files-o
:before
{
content
:
"\f0c5"
}
.fa-paperclip
:before
{
content
:
"\f0c6"
}
.fa-save
:before
,
.fa-floppy-o
:before
{
content
:
"\f0c7"
}
.fa-square
:before
{
content
:
"\f0c8"
}
.fa-navicon
:before
,
.fa-reorder
:before
,
.fa-bars
:before
{
content
:
"\f0c9"
}
.fa-list-ul
:before
{
content
:
"\f0ca"
}
.fa-list-ol
:before
{
content
:
"\f0cb"
}
.fa-strikethrough
:before
{
content
:
"\f0cc"
}
.fa-underline
:before
{
content
:
"\f0cd"
}
.fa-table
:before
{
content
:
"\f0ce"
}
.fa-magic
:before
{
content
:
"\f0d0"
}
.fa-truck
:before
{
content
:
"\f0d1"
}
.fa-pinterest
:before
{
content
:
"\f0d2"
}
.fa-pinterest-square
:before
{
content
:
"\f0d3"
}
.fa-google-plus-square
:before
{
content
:
"\f0d4"
}
.fa-google-plus
:before
{
content
:
"\f0d5"
}
.fa-money
:before
{
content
:
"\f0d6"
}
.fa-caret-down
:before
{
content
:
"\f0d7"
}
.fa-caret-up
:before
{
content
:
"\f0d8"
}
.fa-caret-left
:before
{
content
:
"\f0d9"
}
.fa-caret-right
:before
{
content
:
"\f0da"
}
.fa-columns
:before
{
content
:
"\f0db"
}
.fa-unsorted
:before
,
.fa-sort
:before
{
content
:
"\f0dc"
}
.fa-sort-down
:before
,
.fa-sort-desc
:before
{
content
:
"\f0dd"
}
.fa-sort-up
:before
,
.fa-sort-asc
:before
{
content
:
"\f0de"
}
.fa-envelope
:before
{
content
:
"\f0e0"
}
.fa-linkedin
:before
{
content
:
"\f0e1"
}
.fa-rotate-left
:before
,
.fa-undo
:before
{
content
:
"\f0e2"
}
.fa-legal
:before
,
.fa-gavel
:before
{
content
:
"\f0e3"
}
.fa-dashboard
:before
,
.fa-tachometer
:before
{
content
:
"\f0e4"
}
.fa-comment-o
:before
{
content
:
"\f0e5"
}
.fa-comments-o
:before
{
content
:
"\f0e6"
}
.fa-flash
:before
,
.fa-bolt
:before
{
content
:
"\f0e7"
}
.fa-sitemap
:before
{
content
:
"\f0e8"
}
.fa-umbrella
:before
{
content
:
"\f0e9"
}
.fa-paste
:before
,
.fa-clipboard
:before
{
content
:
"\f0ea"
}
.fa-lightbulb-o
:before
{
content
:
"\f0eb"
}
.fa-exchange
:before
{
content
:
"\f0ec"
}
.fa-cloud-download
:before
{
content
:
"\f0ed"
}
.fa-cloud-upload
:before
{
content
:
"\f0ee"
}
.fa-user-md
:before
{
content
:
"\f0f0"
}
.fa-stethoscope
:before
{
content
:
"\f0f1"
}
.fa-suitcase
:before
{
content
:
"\f0f2"
}
.fa-bell-o
:before
{
content
:
"\f0a2"
}
.fa-coffee
:before
{
content
:
"\f0f4"
}
.fa-cutlery
:before
{
content
:
"\f0f5"
}
.fa-file-text-o
:before
{
content
:
"\f0f6"
}
.fa-building-o
:before
{
content
:
"\f0f7"
}
.fa-hospital-o
:before
{
content
:
"\f0f8"
}
.fa-ambulance
:before
{
content
:
"\f0f9"
}
.fa-medkit
:before
{
content
:
"\f0fa"
}
.fa-fighter-jet
:before
{
content
:
"\f0fb"
}
.fa-beer
:before
{
content
:
"\f0fc"
}
.fa-h-square
:before
{
content
:
"\f0fd"
}
.fa-plus-square
:before
{
content
:
"\f0fe"
}
.fa-angle-double-left
:before
{
content
:
"\f100"
}
.fa-angle-double-right
:before
{
content
:
"\f101"
}
.fa-angle-double-up
:before
{
content
:
"\f102"
}
.fa-angle-double-down
:before
{
content
:
"\f103"
}
.fa-angle-left
:before
{
content
:
"\f104"
}
.fa-angle-right
:before
{
content
:
"\f105"
}
.fa-angle-up
:before
{
content
:
"\f106"
}
.fa-angle-down
:before
{
content
:
"\f107"
}
.fa-desktop
:before
{
content
:
"\f108"
}
.fa-laptop
:before
{
content
:
"\f109"
}
.fa-tablet
:before
{
content
:
"\f10a"
}
.fa-mobile-phone
:before
,
.fa-mobile
:before
{
content
:
"\f10b"
}
.fa-circle-o
:before
{
content
:
"\f10c"
}
.fa-quote-left
:before
{
content
:
"\f10d"
}
.fa-quote-right
:before
{
content
:
"\f10e"
}
.fa-spinner
:before
{
content
:
"\f110"
}
.fa-circle
:before
{
content
:
"\f111"
}
.fa-mail-reply
:before
,
.fa-reply
:before
{
content
:
"\f112"
}
.fa-github-alt
:before
{
content
:
"\f113"
}
.fa-folder-o
:before
{
content
:
"\f114"
}
.fa-folder-open-o
:before
{
content
:
"\f115"
}
.fa-smile-o
:before
{
content
:
"\f118"
}
.fa-frown-o
:before
{
content
:
"\f119"
}
.fa-meh-o
:before
{
content
:
"\f11a"
}
.fa-gamepad
:before
{
content
:
"\f11b"
}
.fa-keyboard-o
:before
{
content
:
"\f11c"
}
.fa-flag-o
:before
{
content
:
"\f11d"
}
.fa-flag-checkered
:before
{
content
:
"\f11e"
}
.fa-terminal
:before
{
content
:
"\f120"
}
.fa-code
:before
{
content
:
"\f121"
}
.fa-mail-reply-all
:before
,
.fa-reply-all
:before
{
content
:
"\f122"
}
.fa-star-half-empty
:before
,
.fa-star-half-full
:before
,
.fa-star-half-o
:before
{
content
:
"\f123"
}
.fa-location-arrow
:before
{
content
:
"\f124"
}
.fa-crop
:before
{
content
:
"\f125"
}
.fa-code-fork
:before
{
content
:
"\f126"
}
.fa-unlink
:before
,
.fa-chain-broken
:before
{
content
:
"\f127"
}
.fa-question
:before
{
content
:
"\f128"
}
.fa-info
:before
{
content
:
"\f129"
}
.fa-exclamation
:before
{
content
:
"\f12a"
}
.fa-superscript
:before
{
content
:
"\f12b"
}
.fa-subscript
:before
{
content
:
"\f12c"
}
.fa-eraser
:before
{
content
:
"\f12d"
}
.fa-puzzle-piece
:before
{
content
:
"\f12e"
}
.fa-microphone
:before
{
content
:
"\f130"
}
.fa-microphone-slash
:before
{
content
:
"\f131"
}
.fa-shield
:before
{
content
:
"\f132"
}
.fa-calendar-o
:before
{
content
:
"\f133"
}
.fa-fire-extinguisher
:before
{
content
:
"\f134"
}
.fa-rocket
:before
{
content
:
"\f135"
}
.fa-maxcdn
:before
{
content
:
"\f136"
}
.fa-chevron-circle-left
:before
{
content
:
"\f137"
}
.fa-chevron-circle-right
:before
{
content
:
"\f138"
}
.fa-chevron-circle-up
:before
{
content
:
"\f139"
}
.fa-chevron-circle-down
:before
{
content
:
"\f13a"
}
.fa-html5
:before
{
content
:
"\f13b"
}
.fa-css3
:before
{
content
:
"\f13c"
}
.fa-anchor
:before
{
content
:
"\f13d"
}
.fa-unlock-alt
:before
{
content
:
"\f13e"
}
.fa-bullseye
:before
{
content
:
"\f140"
}
.fa-ellipsis-h
:before
{
content
:
"\f141"
}
.fa-ellipsis-v
:before
{
content
:
"\f142"
}
.fa-rss-square
:before
{
content
:
"\f143"
}
.fa-play-circle
:before
{
content
:
"\f144"
}
.fa-ticket
:before
{
content
:
"\f145"
}
.fa-minus-square
:before
{
content
:
"\f146"
}
.fa-minus-square-o
:before
{
content
:
"\f147"
}
.fa-level-up
:before
{
content
:
"\f148"
}
.fa-level-down
:before
{
content
:
"\f149"
}
.fa-check-square
:before
{
content
:
"\f14a"
}
.fa-pencil-square
:before
{
content
:
"\f14b"
}
.fa-external-link-square
:before
{
content
:
"\f14c"
}
.fa-share-square
:before
{
content
:
"\f14d"
}
.fa-compass
:before
{
content
:
"\f14e"
}
.fa-toggle-down
:before
,
.fa-caret-square-o-down
:before
{
content
:
"\f150"
}
.fa-toggle-up
:before
,
.fa-caret-square-o-up
:before
{
content
:
"\f151"
}
.fa-toggle-right
:before
,
.fa-caret-square-o-right
:before
{
content
:
"\f152"
}
.fa-euro
:before
,
.fa-eur
:before
{
content
:
"\f153"
}
.fa-gbp
:before
{
content
:
"\f154"
}
.fa-dollar
:before
,
.fa-usd
:before
{
content
:
"\f155"
}
.fa-rupee
:before
,
.fa-inr
:before
{
content
:
"\f156"
}
.fa-cny
:before
,
.fa-rmb
:before
,
.fa-yen
:before
,
.fa-jpy
:before
{
content
:
"\f157"
}
.fa-ruble
:before
,
.fa-rouble
:before
,
.fa-rub
:before
{
content
:
"\f158"
}
.fa-won
:before
,
.fa-krw
:before
{
content
:
"\f159"
}
.fa-bitcoin
:before
,
.fa-btc
:before
{
content
:
"\f15a"
}
.fa-file
:before
{
content
:
"\f15b"
}
.fa-file-text
:before
{
content
:
"\f15c"
}
.fa-sort-alpha-asc
:before
{
content
:
"\f15d"
}
.fa-sort-alpha-desc
:before
{
content
:
"\f15e"
}
.fa-sort-amount-asc
:before
{
content
:
"\f160"
}
.fa-sort-amount-desc
:before
{
content
:
"\f161"
}
.fa-sort-numeric-asc
:before
{
content
:
"\f162"
}
.fa-sort-numeric-desc
:before
{
content
:
"\f163"
}
.fa-thumbs-up
:before
{
content
:
"\f164"
}
.fa-thumbs-down
:before
{
content
:
"\f165"
}
.fa-youtube-square
:before
{
content
:
"\f166"
}
.fa-youtube
:before
{
content
:
"\f167"
}
.fa-xing
:before
{
content
:
"\f168"
}
.fa-xing-square
:before
{
content
:
"\f169"
}
.fa-youtube-play
:before
{
content
:
"\f16a"
}
.fa-dropbox
:before
{
content
:
"\f16b"
}
.fa-stack-overflow
:before
{
content
:
"\f16c"
}
.fa-instagram
:before
{
content
:
"\f16d"
}
.fa-flickr
:before
{
content
:
"\f16e"
}
.fa-adn
:before
{
content
:
"\f170"
}
.fa-bitbucket
:before
{
content
:
"\f171"
}
.fa-bitbucket-square
:before
{
content
:
"\f172"
}
.fa-tumblr
:before
{
content
:
"\f173"
}
.fa-tumblr-square
:before
{
content
:
"\f174"
}
.fa-long-arrow-down
:before
{
content
:
"\f175"
}
.fa-long-arrow-up
:before
{
content
:
"\f176"
}
.fa-long-arrow-left
:before
{
content
:
"\f177"
}
.fa-long-arrow-right
:before
{
content
:
"\f178"
}
.fa-apple
:before
{
content
:
"\f179"
}
.fa-windows
:before
{
content
:
"\f17a"
}
.fa-android
:before
{
content
:
"\f17b"
}
.fa-linux
:before
{
content
:
"\f17c"
}
.fa-dribbble
:before
{
content
:
"\f17d"
}
.fa-skype
:before
{
content
:
"\f17e"
}
.fa-foursquare
:before
{
content
:
"\f180"
}
.fa-trello
:before
{
content
:
"\f181"
}
.fa-female
:before
{
content
:
"\f182"
}
.fa-male
:before
{
content
:
"\f183"
}
.fa-gittip
:before
,
.fa-gratipay
:before
{
content
:
"\f184"
}
.fa-sun-o
:before
{
content
:
"\f185"
}
.fa-moon-o
:before
{
content
:
"\f186"
}
.fa-archive
:before
{
content
:
"\f187"
}
.fa-bug
:before
{
content
:
"\f188"
}
.fa-vk
:before
{
content
:
"\f189"
}
.fa-weibo
:before
{
content
:
"\f18a"
}
.fa-renren
:before
{
content
:
"\f18b"
}
.fa-pagelines
:before
{
content
:
"\f18c"
}
.fa-stack-exchange
:before
{
content
:
"\f18d"
}
.fa-arrow-circle-o-right
:before
{
content
:
"\f18e"
}
.fa-arrow-circle-o-left
:before
{
content
:
"\f190"
}
.fa-toggle-left
:before
,
.fa-caret-square-o-left
:before
{
content
:
"\f191"
}
.fa-dot-circle-o
:before
{
content
:
"\f192"
}
.fa-wheelchair
:before
{
content
:
"\f193"
}
.fa-vimeo-square
:before
{
content
:
"\f194"
}
.fa-turkish-lira
:before
,
.fa-try
:before
{
content
:
"\f195"
}
.fa-plus-square-o
:before
{
content
:
"\f196"
}
.fa-space-shuttle
:before
{
content
:
"\f197"
}
.fa-slack
:before
{
content
:
"\f198"
}
.fa-envelope-square
:before
{
content
:
"\f199"
}
.fa-wordpress
:before
{
content
:
"\f19a"
}
.fa-openid
:before
{
content
:
"\f19b"
}
.fa-institution
:before
,
.fa-bank
:before
,
.fa-university
:before
{
content
:
"\f19c"
}
.fa-mortar-board
:before
,
.fa-graduation-cap
:before
{
content
:
"\f19d"
}
.fa-yahoo
:before
{
content
:
"\f19e"
}
.fa-google
:before
{
content
:
"\f1a0"
}
.fa-reddit
:before
{
content
:
"\f1a1"
}
.fa-reddit-square
:before
{
content
:
"\f1a2"
}
.fa-stumbleupon-circle
:before
{
content
:
"\f1a3"
}
.fa-stumbleupon
:before
{
content
:
"\f1a4"
}
.fa-delicious
:before
{
content
:
"\f1a5"
}
.fa-digg
:before
{
content
:
"\f1a6"
}
.fa-pied-piper-pp
:before
{
content
:
"\f1a7"
}
.fa-pied-piper-alt
:before
{
content
:
"\f1a8"
}
.fa-drupal
:before
{
content
:
"\f1a9"
}
.fa-joomla
:before
{
content
:
"\f1aa"
}
.fa-language
:before
{
content
:
"\f1ab"
}
.fa-fax
:before
{
content
:
"\f1ac"
}
.fa-building
:before
{
content
:
"\f1ad"
}
.fa-child
:before
{
content
:
"\f1ae"
}
.fa-paw
:before
{
content
:
"\f1b0"
}
.fa-spoon
:before
{
content
:
"\f1b1"
}
.fa-cube
:before
{
content
:
"\f1b2"
}
.fa-cubes
:before
{
content
:
"\f1b3"
}
.fa-behance
:before
{
content
:
"\f1b4"
}
.fa-behance-square
:before
{
content
:
"\f1b5"
}
.fa-steam
:before
{
content
:
"\f1b6"
}
.fa-steam-square
:before
{
content
:
"\f1b7"
}
.fa-recycle
:before
{
content
:
"\f1b8"
}
.fa-automobile
:before
,
.fa-car
:before
{
content
:
"\f1b9"
}
.fa-cab
:before
,
.fa-taxi
:before
{
content
:
"\f1ba"
}
.fa-tree
:before
{
content
:
"\f1bb"
}
.fa-spotify
:before
{
content
:
"\f1bc"
}
.fa-deviantart
:before
{
content
:
"\f1bd"
}
.fa-soundcloud
:before
{
content
:
"\f1be"
}
.fa-database
:before
{
content
:
"\f1c0"
}
.fa-file-pdf-o
:before
{
content
:
"\f1c1"
}
.fa-file-word-o
:before
{
content
:
"\f1c2"
}
.fa-file-excel-o
:before
{
content
:
"\f1c3"
}
.fa-file-powerpoint-o
:before
{
content
:
"\f1c4"
}
.fa-file-photo-o
:before
,
.fa-file-picture-o
:before
,
.fa-file-image-o
:before
{
content
:
"\f1c5"
}
.fa-file-zip-o
:before
,
.fa-file-archive-o
:before
{
content
:
"\f1c6"
}
.fa-file-sound-o
:before
,
.fa-file-audio-o
:before
{
content
:
"\f1c7"
}
.fa-file-movie-o
:before
,
.fa-file-video-o
:before
{
content
:
"\f1c8"
}
.fa-file-code-o
:before
{
content
:
"\f1c9"
}
.fa-vine
:before
{
content
:
"\f1ca"
}
.fa-codepen
:before
{
content
:
"\f1cb"
}
.fa-jsfiddle
:before
{
content
:
"\f1cc"
}
.fa-life-bouy
:before
,
.fa-life-buoy
:before
,
.fa-life-saver
:before
,
.fa-support
:before
,
.fa-life-ring
:before
{
content
:
"\f1cd"
}
.fa-circle-o-notch
:before
{
content
:
"\f1ce"
}
.fa-ra
:before
,
.fa-resistance
:before
,
.fa-rebel
:before
{
content
:
"\f1d0"
}
.fa-ge
:before
,
.fa-empire
:before
{
content
:
"\f1d1"
}
.fa-git-square
:before
{
content
:
"\f1d2"
}
.fa-git
:before
{
content
:
"\f1d3"
}
.fa-y-combinator-square
:before
,
.fa-yc-square
:before
,
.fa-hacker-news
:before
{
content
:
"\f1d4"
}
.fa-tencent-weibo
:before
{
content
:
"\f1d5"
}
.fa-qq
:before
{
content
:
"\f1d6"
}
.fa-wechat
:before
,
.fa-weixin
:before
{
content
:
"\f1d7"
}
.fa-send
:before
,
.fa-paper-plane
:before
{
content
:
"\f1d8"
}
.fa-send-o
:before
,
.fa-paper-plane-o
:before
{
content
:
"\f1d9"
}
.fa-history
:before
{
content
:
"\f1da"
}
.fa-circle-thin
:before
{
content
:
"\f1db"
}
.fa-header
:before
{
content
:
"\f1dc"
}
.fa-paragraph
:before
{
content
:
"\f1dd"
}
.fa-sliders
:before
{
content
:
"\f1de"
}
.fa-share-alt
:before
{
content
:
"\f1e0"
}
.fa-share-alt-square
:before
{
content
:
"\f1e1"
}
.fa-bomb
:before
{
content
:
"\f1e2"
}
.fa-soccer-ball-o
:before
,
.fa-futbol-o
:before
{
content
:
"\f1e3"
}
.fa-tty
:before
{
content
:
"\f1e4"
}
.fa-binoculars
:before
{
content
:
"\f1e5"
}
.fa-plug
:before
{
content
:
"\f1e6"
}
.fa-slideshare
:before
{
content
:
"\f1e7"
}
.fa-twitch
:before
{
content
:
"\f1e8"
}
.fa-yelp
:before
{
content
:
"\f1e9"
}
.fa-newspaper-o
:before
{
content
:
"\f1ea"
}
.fa-wifi
:before
{
content
:
"\f1eb"
}
.fa-calculator
:before
{
content
:
"\f1ec"
}
.fa-paypal
:before
{
content
:
"\f1ed"
}
.fa-google-wallet
:before
{
content
:
"\f1ee"
}
.fa-cc-visa
:before
{
content
:
"\f1f0"
}
.fa-cc-mastercard
:before
{
content
:
"\f1f1"
}
.fa-cc-discover
:before
{
content
:
"\f1f2"
}
.fa-cc-amex
:before
{
content
:
"\f1f3"
}
.fa-cc-paypal
:before
{
content
:
"\f1f4"
}
.fa-cc-stripe
:before
{
content
:
"\f1f5"
}
.fa-bell-slash
:before
{
content
:
"\f1f6"
}
.fa-bell-slash-o
:before
{
content
:
"\f1f7"
}
.fa-trash
:before
{
content
:
"\f1f8"
}
.fa-copyright
:before
{
content
:
"\f1f9"
}
.fa-at
:before
{
content
:
"\f1fa"
}
.fa-eyedropper
:before
{
content
:
"\f1fb"
}
.fa-paint-brush
:before
{
content
:
"\f1fc"
}
.fa-birthday-cake
:before
{
content
:
"\f1fd"
}
.fa-area-chart
:before
{
content
:
"\f1fe"
}
.fa-pie-chart
:before
{
content
:
"\f200"
}
.fa-line-chart
:before
{
content
:
"\f201"
}
.fa-lastfm
:before
{
content
:
"\f202"
}
.fa-lastfm-square
:before
{
content
:
"\f203"
}
.fa-toggle-off
:before
{
content
:
"\f204"
}
.fa-toggle-on
:before
{
content
:
"\f205"
}
.fa-bicycle
:before
{
content
:
"\f206"
}
.fa-bus
:before
{
content
:
"\f207"
}
.fa-ioxhost
:before
{
content
:
"\f208"
}
.fa-angellist
:before
{
content
:
"\f209"
}
.fa-cc
:before
{
content
:
"\f20a"
}
.fa-shekel
:before
,
.fa-sheqel
:before
,
.fa-ils
:before
{
content
:
"\f20b"
}
.fa-meanpath
:before
{
content
:
"\f20c"
}
.fa-buysellads
:before
{
content
:
"\f20d"
}
.fa-connectdevelop
:before
{
content
:
"\f20e"
}
.fa-dashcube
:before
{
content
:
"\f210"
}
.fa-forumbee
:before
{
content
:
"\f211"
}
.fa-leanpub
:before
{
content
:
"\f212"
}
.fa-sellsy
:before
{
content
:
"\f213"
}
.fa-shirtsinbulk
:before
{
content
:
"\f214"
}
.fa-simplybuilt
:before
{
content
:
"\f215"
}
.fa-skyatlas
:before
{
content
:
"\f216"
}
.fa-cart-plus
:before
{
content
:
"\f217"
}
.fa-cart-arrow-down
:before
{
content
:
"\f218"
}
.fa-diamond
:before
{
content
:
"\f219"
}
.fa-ship
:before
{
content
:
"\f21a"
}
.fa-user-secret
:before
{
content
:
"\f21b"
}
.fa-motorcycle
:before
{
content
:
"\f21c"
}
.fa-street-view
:before
{
content
:
"\f21d"
}
.fa-heartbeat
:before
{
content
:
"\f21e"
}
.fa-venus
:before
{
content
:
"\f221"
}
.fa-mars
:before
{
content
:
"\f222"
}
.fa-mercury
:before
{
content
:
"\f223"
}
.fa-intersex
:before
,
.fa-transgender
:before
{
content
:
"\f224"
}
.fa-transgender-alt
:before
{
content
:
"\f225"
}
.fa-venus-double
:before
{
content
:
"\f226"
}
.fa-mars-double
:before
{
content
:
"\f227"
}
.fa-venus-mars
:before
{
content
:
"\f228"
}
.fa-mars-stroke
:before
{
content
:
"\f229"
}
.fa-mars-stroke-v
:before
{
content
:
"\f22a"
}
.fa-mars-stroke-h
:before
{
content
:
"\f22b"
}
.fa-neuter
:before
{
content
:
"\f22c"
}
.fa-genderless
:before
{
content
:
"\f22d"
}
.fa-facebook-official
:before
{
content
:
"\f230"
}
.fa-pinterest-p
:before
{
content
:
"\f231"
}
.fa-whatsapp
:before
{
content
:
"\f232"
}
.fa-server
:before
{
content
:
"\f233"
}
.fa-user-plus
:before
{
content
:
"\f234"
}
.fa-user-times
:before
{
content
:
"\f235"
}
.fa-hotel
:before
,
.fa-bed
:before
{
content
:
"\f236"
}
.fa-viacoin
:before
{
content
:
"\f237"
}
.fa-train
:before
{
content
:
"\f238"
}
.fa-subway
:before
{
content
:
"\f239"
}
.fa-medium
:before
{
content
:
"\f23a"
}
.fa-yc
:before
,
.fa-y-combinator
:before
{
content
:
"\f23b"
}
.fa-optin-monster
:before
{
content
:
"\f23c"
}
.fa-opencart
:before
{
content
:
"\f23d"
}
.fa-expeditedssl
:before
{
content
:
"\f23e"
}
.fa-battery-4
:before
,
.fa-battery
:before
,
.fa-battery-full
:before
{
content
:
"\f240"
}
.fa-battery-3
:before
,
.fa-battery-three-quarters
:before
{
content
:
"\f241"
}
.fa-battery-2
:before
,
.fa-battery-half
:before
{
content
:
"\f242"
}
.fa-battery-1
:before
,
.fa-battery-quarter
:before
{
content
:
"\f243"
}
.fa-battery-0
:before
,
.fa-battery-empty
:before
{
content
:
"\f244"
}
.fa-mouse-pointer
:before
{
content
:
"\f245"
}
.fa-i-cursor
:before
{
content
:
"\f246"
}
.fa-object-group
:before
{
content
:
"\f247"
}
.fa-object-ungroup
:before
{
content
:
"\f248"
}
.fa-sticky-note
:before
{
content
:
"\f249"
}
.fa-sticky-note-o
:before
{
content
:
"\f24a"
}
.fa-cc-jcb
:before
{
content
:
"\f24b"
}
.fa-cc-diners-club
:before
{
content
:
"\f24c"
}
.fa-clone
:before
{
content
:
"\f24d"
}
.fa-balance-scale
:before
{
content
:
"\f24e"
}
.fa-hourglass-o
:before
{
content
:
"\f250"
}
.fa-hourglass-1
:before
,
.fa-hourglass-start
:before
{
content
:
"\f251"
}
.fa-hourglass-2
:before
,
.fa-hourglass-half
:before
{
content
:
"\f252"
}
.fa-hourglass-3
:before
,
.fa-hourglass-end
:before
{
content
:
"\f253"
}
.fa-hourglass
:before
{
content
:
"\f254"
}
.fa-hand-grab-o
:before
,
.fa-hand-rock-o
:before
{
content
:
"\f255"
}
.fa-hand-stop-o
:before
,
.fa-hand-paper-o
:before
{
content
:
"\f256"
}
.fa-hand-scissors-o
:before
{
content
:
"\f257"
}
.fa-hand-lizard-o
:before
{
content
:
"\f258"
}
.fa-hand-spock-o
:before
{
content
:
"\f259"
}
.fa-hand-pointer-o
:before
{
content
:
"\f25a"
}
.fa-hand-peace-o
:before
{
content
:
"\f25b"
}
.fa-trademark
:before
{
content
:
"\f25c"
}
.fa-registered
:before
{
content
:
"\f25d"
}
.fa-creative-commons
:before
{
content
:
"\f25e"
}
.fa-gg
:before
{
content
:
"\f260"
}
.fa-gg-circle
:before
{
content
:
"\f261"
}
.fa-tripadvisor
:before
{
content
:
"\f262"
}
.fa-odnoklassniki
:before
{
content
:
"\f263"
}
.fa-odnoklassniki-square
:before
{
content
:
"\f264"
}
.fa-get-pocket
:before
{
content
:
"\f265"
}
.fa-wikipedia-w
:before
{
content
:
"\f266"
}
.fa-safari
:before
{
content
:
"\f267"
}
.fa-chrome
:before
{
content
:
"\f268"
}
.fa-firefox
:before
{
content
:
"\f269"
}
.fa-opera
:before
{
content
:
"\f26a"
}
.fa-internet-explorer
:before
{
content
:
"\f26b"
}
.fa-tv
:before
,
.fa-television
:before
{
content
:
"\f26c"
}
.fa-contao
:before
{
content
:
"\f26d"
}
.fa-500px
:before
{
content
:
"\f26e"
}
.fa-amazon
:before
{
content
:
"\f270"
}
.fa-calendar-plus-o
:before
{
content
:
"\f271"
}
.fa-calendar-minus-o
:before
{
content
:
"\f272"
}
.fa-calendar-times-o
:before
{
content
:
"\f273"
}
.fa-calendar-check-o
:before
{
content
:
"\f274"
}
.fa-industry
:before
{
content
:
"\f275"
}
.fa-map-pin
:before
{
content
:
"\f276"
}
.fa-map-signs
:before
{
content
:
"\f277"
}
.fa-map-o
:before
{
content
:
"\f278"
}
.fa-map
:before
{
content
:
"\f279"
}
.fa-commenting
:before
{
content
:
"\f27a"
}
.fa-commenting-o
:before
{
content
:
"\f27b"
}
.fa-houzz
:before
{
content
:
"\f27c"
}
.fa-vimeo
:before
{
content
:
"\f27d"
}
.fa-black-tie
:before
{
content
:
"\f27e"
}
.fa-fonticons
:before
{
content
:
"\f280"
}
.fa-reddit-alien
:before
{
content
:
"\f281"
}
.fa-edge
:before
{
content
:
"\f282"
}
.fa-credit-card-alt
:before
{
content
:
"\f283"
}
.fa-codiepie
:before
{
content
:
"\f284"
}
.fa-modx
:before
{
content
:
"\f285"
}
.fa-fort-awesome
:before
{
content
:
"\f286"
}
.fa-usb
:before
{
content
:
"\f287"
}
.fa-product-hunt
:before
{
content
:
"\f288"
}
.fa-mixcloud
:before
{
content
:
"\f289"
}
.fa-scribd
:before
{
content
:
"\f28a"
}
.fa-pause-circle
:before
{
content
:
"\f28b"
}
.fa-pause-circle-o
:before
{
content
:
"\f28c"
}
.fa-stop-circle
:before
{
content
:
"\f28d"
}
.fa-stop-circle-o
:before
{
content
:
"\f28e"
}
.fa-shopping-bag
:before
{
content
:
"\f290"
}
.fa-shopping-basket
:before
{
content
:
"\f291"
}
.fa-hashtag
:before
{
content
:
"\f292"
}
.fa-bluetooth
:before
{
content
:
"\f293"
}
.fa-bluetooth-b
:before
{
content
:
"\f294"
}
.fa-percent
:before
{
content
:
"\f295"
}
.fa-gitlab
:before
{
content
:
"\f296"
}
.fa-wpbeginner
:before
{
content
:
"\f297"
}
.fa-wpforms
:before
{
content
:
"\f298"
}
.fa-envira
:before
{
content
:
"\f299"
}
.fa-universal-access
:before
{
content
:
"\f29a"
}
.fa-wheelchair-alt
:before
{
content
:
"\f29b"
}
.fa-question-circle-o
:before
{
content
:
"\f29c"
}
.fa-blind
:before
{
content
:
"\f29d"
}
.fa-audio-description
:before
{
content
:
"\f29e"
}
.fa-volume-control-phone
:before
{
content
:
"\f2a0"
}
.fa-braille
:before
{
content
:
"\f2a1"
}
.fa-assistive-listening-systems
:before
{
content
:
"\f2a2"
}
.fa-asl-interpreting
:before
,
.fa-american-sign-language-interpreting
:before
{
content
:
"\f2a3"
}
.fa-deafness
:before
,
.fa-hard-of-hearing
:before
,
.fa-deaf
:before
{
content
:
"\f2a4"
}
.fa-glide
:before
{
content
:
"\f2a5"
}
.fa-glide-g
:before
{
content
:
"\f2a6"
}
.fa-signing
:before
,
.fa-sign-language
:before
{
content
:
"\f2a7"
}
.fa-low-vision
:before
{
content
:
"\f2a8"
}
.fa-viadeo
:before
{
content
:
"\f2a9"
}
.fa-viadeo-square
:before
{
content
:
"\f2aa"
}
.fa-snapchat
:before
{
content
:
"\f2ab"
}
.fa-snapchat-ghost
:before
{
content
:
"\f2ac"
}
.fa-snapchat-square
:before
{
content
:
"\f2ad"
}
.fa-pied-piper
:before
{
content
:
"\f2ae"
}
.fa-first-order
:before
{
content
:
"\f2b0"
}
.fa-yoast
:before
{
content
:
"\f2b1"
}
.fa-themeisle
:before
{
content
:
"\f2b2"
}
.fa-google-plus-circle
:before
,
.fa-google-plus-official
:before
{
content
:
"\f2b3"
}
.fa-fa
:before
,
.fa-font-awesome
:before
{
content
:
"\f2b4"
}
.fa-handshake-o
:before
{
content
:
"\f2b5"
}
.fa-envelope-open
:before
{
content
:
"\f2b6"
}
.fa-envelope-open-o
:before
{
content
:
"\f2b7"
}
.fa-linode
:before
{
content
:
"\f2b8"
}
.fa-address-book
:before
{
content
:
"\f2b9"
}
.fa-address-book-o
:before
{
content
:
"\f2ba"
}
.fa-vcard
:before
,
.fa-address-card
:before
{
content
:
"\f2bb"
}
.fa-vcard-o
:before
,
.fa-address-card-o
:before
{
content
:
"\f2bc"
}
.fa-user-circle
:before
{
content
:
"\f2bd"
}
.fa-user-circle-o
:before
{
content
:
"\f2be"
}
.fa-user-o
:before
{
content
:
"\f2c0"
}
.fa-id-badge
:before
{
content
:
"\f2c1"
}
.fa-drivers-license
:before
,
.fa-id-card
:before
{
content
:
"\f2c2"
}
.fa-drivers-license-o
:before
,
.fa-id-card-o
:before
{
content
:
"\f2c3"
}
.fa-quora
:before
{
content
:
"\f2c4"
}
.fa-free-code-camp
:before
{
content
:
"\f2c5"
}
.fa-telegram
:before
{
content
:
"\f2c6"
}
.fa-thermometer-4
:before
,
.fa-thermometer
:before
,
.fa-thermometer-full
:before
{
content
:
"\f2c7"
}
.fa-thermometer-3
:before
,
.fa-thermometer-three-quarters
:before
{
content
:
"\f2c8"
}
.fa-thermometer-2
:before
,
.fa-thermometer-half
:before
{
content
:
"\f2c9"
}
.fa-thermometer-1
:before
,
.fa-thermometer-quarter
:before
{
content
:
"\f2ca"
}
.fa-thermometer-0
:before
,
.fa-thermometer-empty
:before
{
content
:
"\f2cb"
}
.fa-shower
:before
{
content
:
"\f2cc"
}
.fa-bathtub
:before
,
.fa-s15
:before
,
.fa-bath
:before
{
content
:
"\f2cd"
}
.fa-podcast
:before
{
content
:
"\f2ce"
}
.fa-window-maximize
:before
{
content
:
"\f2d0"
}
.fa-window-minimize
:before
{
content
:
"\f2d1"
}
.fa-window-restore
:before
{
content
:
"\f2d2"
}
.fa-times-rectangle
:before
,
.fa-window-close
:before
{
content
:
"\f2d3"
}
.fa-times-rectangle-o
:before
,
.fa-window-close-o
:before
{
content
:
"\f2d4"
}
.fa-bandcamp
:before
{
content
:
"\f2d5"
}
.fa-grav
:before
{
content
:
"\f2d6"
}
.fa-etsy
:before
{
content
:
"\f2d7"
}
.fa-imdb
:before
{
content
:
"\f2d8"
}
.fa-ravelry
:before
{
content
:
"\f2d9"
}
.fa-eercast
:before
{
content
:
"\f2da"
}
.fa-microchip
:before
{
content
:
"\f2db"
}
.fa-snowflake-o
:before
{
content
:
"\f2dc"
}
.fa-superpowers
:before
{
content
:
"\f2dd"
}
.fa-wpexplorer
:before
{
content
:
"\f2de"
}
.fa-meetup
:before
{
content
:
"\f2e0"
}
.sr-only
{
position
:
absolute
;
width
:
1px
;
height
:
1px
;
padding
:
0
;
margin
:
-1px
;
overflow
:
hidden
;
clip
:
rect
(
0
,
0
,
0
,
0
);
border
:
0
}
.sr-only-focusable
:active
,
.sr-only-focusable
:focus
{
position
:
static
;
width
:
auto
;
height
:
auto
;
margin
:
0
;
overflow
:
visible
;
clip
:
auto
}
paddlespeech/server/tests/asr/online/web/static/css/style.css
0 → 100644
浏览文件 @
1dc02c72
/*
* @Author: baipengxia
* @Date: 2021-03-12 11:44:28
* @Last Modified by: baipengxia
* @Last Modified time: 2021-03-12 15:14:24
*/
/** COMMON RESET **/
*
{
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
}
body
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
hr
,
p
,
dl
,
dt
,
dd
,
ul
,
ol
,
li
,
fieldset
,
lengend
,
button
,
input
,
textarea
,
th
,
td
{
margin
:
0
;
padding
:
0
;
color
:
#000
;
}
body
{
font-size
:
14px
;
}
html
,
body
{
min-width
:
1200px
;
}
button
,
input
,
select
,
textarea
{
font-size
:
14px
;
}
h1
{
font-size
:
18px
;
}
h2
{
font-size
:
14px
;
}
h3
{
font-size
:
14px
;
}
ul
,
ol
,
li
{
list-style
:
none
;
}
a
{
text-decoration
:
none
;
}
a
:hover
{
text-decoration
:
none
;
}
fieldset
,
img
{
border
:
none
;
}
table
{
border-collapse
:
collapse
;
border-spacing
:
0
;
}
i
{
font-style
:
normal
;
}
label
{
position
:
inherit
;
}
.clearfix
:after
{
content
:
"."
;
display
:
block
;
height
:
0
;
clear
:
both
;
visibility
:
hidden
;
}
.clearfix
{
zoom
:
1
;
display
:
block
;
}
html
,
body
{
font-family
:
Tahoma
,
Arial
,
'microsoft yahei'
,
'Roboto'
,
'Droid Sans'
,
'Helvetica Neue'
,
'Droid Sans Fallback'
,
'Heiti SC'
,
'Hiragino Sans GB'
,
'Simsun'
,
'sans-self'
;
}
.audio-banner
{
width
:
100%
;
overflow
:
auto
;
padding
:
0
;
background
:
url('../image/voice-dictation.svg')
;
background-size
:
cover
;
}
.weaper
{
width
:
1200px
;
height
:
155px
;
margin
:
72px
auto
;
}
.text-content
{
width
:
670px
;
height
:
100%
;
float
:
left
;
}
.text-content
.title
{
font-size
:
34px
;
font-family
:
'PingFangSC-Medium'
;
font-weight
:
500
;
color
:
rgba
(
255
,
255
,
255
,
1
);
line-height
:
48px
;
}
.text-content
.con
{
font-size
:
16px
;
font-family
:
PingFangSC-Light
;
font-weight
:
300
;
color
:
rgba
(
255
,
255
,
255
,
1
);
line-height
:
30px
;
}
.img-con
{
width
:
416px
;
height
:
100%
;
float
:
right
;
}
.img-con
img
{
width
:
100%
;
height
:
100%
;
}
.con-container
{
margin-top
:
34px
;
}
.audio-advantage
{
background
:
#f8f9fa
;
}
.asr-advantage
{
width
:
1200px
;
margin
:
0
auto
;
}
.asr-advantage
h2
{
text-align
:
center
;
font-size
:
22px
;
padding
:
30px
0
0
0
;
}
.asr-advantage
>
ul
>
li
{
box-sizing
:
border-box
;
padding
:
0
16px
;
width
:
33%
;
text-align
:
center
;
margin-bottom
:
35px
;
}
.asr-advantage
>
ul
>
li
.icons
{
margin-top
:
10px
;
margin-bottom
:
20px
;
width
:
42px
;
height
:
42px
;
}
.service-item-content
{
margin-top
:
35px
;
display
:
flex
;
justify-content
:
center
;
flex-wrap
:
wrap
;
}
.service-item-content
img
{
width
:
160px
;
vertical-align
:
bottom
;
}
.service-item-content
>
li
{
box-sizing
:
border-box
;
padding
:
0
16px
;
width
:
33%
;
text-align
:
center
;
margin-bottom
:
35px
;
}
.service-item-content
>
li
.service-item-content-title
{
line-height
:
1.5
;
font-weight
:
700
;
margin-top
:
10px
;
}
.service-item-content
>
li
.service-item-content-desc
{
margin-top
:
5px
;
line-height
:
1.8
;
color
:
#657384
;
}
.audio-scene-con
{
width
:
100%
;
padding-bottom
:
84px
;
background
:
#fff
;
}
.audio-scene
{
overflow
:
auto
;
width
:
1200px
;
background
:
#fff
;
text-align
:
center
;
padding
:
0
;
margin
:
0
auto
;
}
.audio-scene
h2
{
padding
:
30px
0
0
0
;
font-size
:
22px
;
text-align
:
center
;
}
.audio-experience
{
width
:
100%
;
height
:
538px
;
background
:
#fff
;
padding
:
0
;
margin
:
0
;
overflow
:
auto
;
}
.asr-box
{
width
:
1200px
;
height
:
394px
;
margin
:
64px
auto
;
}
.asr-box
h2
{
font-size
:
22px
;
text-align
:
center
;
margin-bottom
:
64px
;
}
.voice-container
{
position
:
relative
;
width
:
1200px
;
height
:
308px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
border-radius
:
8px
;
border
:
1px
solid
rgba
(
225
,
225
,
225
,
1
);
}
.voice-container
.voice
{
height
:
236px
;
width
:
100%
;
border-radius
:
8px
;
}
.voice-container
.voice
textarea
{
height
:
100%
;
width
:
100%
;
border
:
none
;
outline
:
none
;
border-radius
:
8px
;
padding
:
25px
;
font-size
:
14px
;
box-sizing
:
border-box
;
resize
:
none
;
}
.voice-input
{
width
:
100%
;
height
:
72px
;
box-sizing
:
border-box
;
padding-left
:
35px
;
background
:
rgba
(
242
,
244
,
245
,
1
);
border-radius
:
8px
;
line-height
:
72px
;
}
.voice-input
.el-select
{
width
:
492px
;
}
.start-voice
{
display
:
inline-block
;
margin-left
:
10px
;
}
.start-voice
.time
{
margin-right
:
25px
;
}
.asr-advantage
>
ul
>
li
{
margin-bottom
:
77px
;
}
#msg
{
width
:
100%
;
line-height
:
40px
;
font-size
:
14px
;
margin-left
:
330px
;
}
#captcha
{
margin-left
:
350px
!important
;
display
:
inline-block
;
position
:
relative
;
}
.black
{
position
:
fixed
;
width
:
100%
;
height
:
100%
;
z-index
:
5
;
background
:
rgba
(
0
,
0
,
0
,
0.5
);
top
:
0
;
left
:
0
;
}
.container
{
position
:
fixed
;
z-index
:
6
;
top
:
25%
;
left
:
10%
;
}
.audio-scene-con
{
width
:
100%
;
padding-bottom
:
84px
;
background
:
#fff
;
}
#sound
{
color
:
#fff
;
cursor
:
pointer
;
background
:
#147ede
;
padding
:
10px
;
margin-top
:
30px
;
margin-left
:
135px
;
width
:
176px
;
height
:
30px
!important
;
text-align
:
center
;
line-height
:
30px
!important
;
border-radius
:
10px
;
}
.con-ten
{
position
:
absolute
;
width
:
100%
;
height
:
100%
;
z-index
:
5
;
background
:
#fff
;
opacity
:
0.5
;
top
:
0
;
left
:
0
;
}
.websocket-url
{
width
:
320px
;
height
:
20px
;
border
:
1px
solid
#dcdfe6
;
line-height
:
20px
;
padding
:
10px
;
border-radius
:
4px
;
}
.voice-btn
{
color
:
#fff
;
background-color
:
#409eff
;
font-weight
:
500
;
padding
:
12px
20px
;
font-size
:
14px
;
border-radius
:
4px
;
border
:
0
;
cursor
:
pointer
;
}
.voice-btn.end
{
display
:
none
;
}
.result-text
{
background
:
#fff
;
padding
:
20px
;
}
.voice-footer
{
border-top
:
1px
solid
#dddede
;
background
:
#f7f9fa
;
text-align
:
center
;
margin-bottom
:
8px
;
color
:
#333
;
font-size
:
12px
;
padding
:
20px
0
;
}
/** line animate **/
.time-box
{
display
:
none
;
margin-left
:
10px
;
width
:
300px
;
}
.total-time
{
font-size
:
14px
;
color
:
#545454
;
}
.voice-btn.end.show
,
.time-box.show
{
display
:
inline
;
}
.start-taste-line
{
margin-right
:
20px
;
display
:
inline-block
;
}
.start-taste-line
hr
{
background-color
:
#187cff
;
width
:
3px
;
height
:
8px
;
margin
:
0
3px
;
display
:
inline-block
;
border
:
none
;
}
.hr
{
animation
:
note
0.2s
ease-in-out
;
animation-iteration-count
:
infinite
;
animation-direction
:
alternate
;
}
.hr-one
{
animation-delay
:
-0.9s
;
}
.hr-two
{
animation-delay
:
-0.8s
;
}
.hr-three
{
animation-delay
:
-0.7s
;
}
.hr-four
{
animation-delay
:
-0.6s
;
}
.hr-five
{
animation-delay
:
-0.5s
;
}
.hr-six
{
animation-delay
:
-0.4s
;
}
.hr-seven
{
animation-delay
:
-0.3s
;
}
.hr-eight
{
animation-delay
:
-0.2s
;
}
.hr-nine
{
animation-delay
:
-0.1s
;
}
@keyframes
note
{
from
{
transform
:
scaleY
(
1
);
}
to
{
transform
:
scaleY
(
4
);
}
}
\ No newline at end of file
paddlespeech/server/tests/asr/online/web/static/fonts/FontAwesome.otf
0 → 100644
浏览文件 @
1dc02c72
文件已添加
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.eot
0 → 100644
浏览文件 @
1dc02c72
文件已添加
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.svg
0 → 100644
浏览文件 @
1dc02c72
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.ttf
0 → 100644
浏览文件 @
1dc02c72
文件已添加
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.woff
0 → 100644
浏览文件 @
1dc02c72
文件已添加
paddlespeech/server/tests/asr/online/web/static/fonts/fontawesome-webfont.woff2
0 → 100644
浏览文件 @
1dc02c72
文件已添加
paddlespeech/server/tests/asr/online/web/static/image/PaddleSpeech_logo.png
0 → 100644
浏览文件 @
1dc02c72
71.5 KB
paddlespeech/server/tests/asr/online/web/static/image/voice-dictation.svg
0 → 100644
浏览文件 @
1dc02c72
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
paddlespeech/server/tests/asr/online/web/static/js/SoundRecognizer.js
0 → 100644
浏览文件 @
1dc02c72
SoundRecognizer
=
{
rec
:
null
,
wave
:
null
,
SampleRate
:
16000
,
testBitRate
:
16
,
isCloseRecorder
:
false
,
SendInterval
:
300
,
realTimeSendTryType
:
'
pcm
'
,
realTimeSendTryEncBusy
:
0
,
realTimeSendTryTime
:
0
,
realTimeSendTryNumber
:
0
,
transferUploadNumberMax
:
0
,
realTimeSendTryChunk
:
null
,
soundType
:
"
pcm
"
,
init
:
function
(
config
)
{
this
.
soundType
=
config
.
soundType
||
'
pcm
'
;
this
.
SampleRate
=
config
.
sampleRate
||
16000
;
this
.
recwaveElm
=
config
.
recwaveElm
||
''
;
this
.
TransferUpload
=
config
.
translerCallBack
||
this
.
TransferProcess
;
this
.
initRecorder
();
},
RealTimeSendTryReset
:
function
(
type
)
{
this
.
realTimeSendTryType
=
type
;
this
.
realTimeSendTryTime
=
0
;
},
RealTimeSendTry
:
function
(
rec
,
isClose
)
{
var
that
=
this
;
var
t1
=
Date
.
now
(),
endT
=
0
,
recImpl
=
Recorder
.
prototype
;
if
(
this
.
realTimeSendTryTime
==
0
)
{
this
.
realTimeSendTryTime
=
t1
;
this
.
realTimeSendTryEncBusy
=
0
;
this
.
realTimeSendTryNumber
=
0
;
this
.
transferUploadNumberMax
=
0
;
this
.
realTimeSendTryChunk
=
null
;
}
if
(
!
isClose
&&
t1
-
this
.
realTimeSendTryTime
<
this
.
SendInterval
)
{
return
;
//控制缓冲达到指定间隔才进行传输
}
this
.
realTimeSendTryTime
=
t1
;
var
number
=
++
this
.
realTimeSendTryNumber
;
//借用SampleData函数进行数据的连续处理,采样率转换是顺带的
var
chunk
=
Recorder
.
SampleData
(
rec
.
buffers
,
rec
.
srcSampleRate
,
this
.
SampleRate
,
this
.
realTimeSendTryChunk
,
{
frameType
:
isClose
?
""
:
this
.
realTimeSendTryType
});
//清理已处理完的缓冲数据,释放内存以支持长时间录音,最后完成录音时不能调用stop,因为数据已经被清掉了
for
(
var
i
=
this
.
realTimeSendTryChunk
?
this
.
realTimeSendTryChunk
.
index
:
0
;
i
<
chunk
.
index
;
i
++
)
{
rec
.
buffers
[
i
]
=
null
;
}
this
.
realTimeSendTryChunk
=
chunk
;
//没有新数据,或结束时的数据量太小,不能进行mock转码
if
(
chunk
.
data
.
length
==
0
||
isClose
&&
chunk
.
data
.
length
<
2000
)
{
this
.
TransferUpload
(
number
,
null
,
0
,
null
,
isClose
);
return
;
}
//实时编码队列阻塞处理
if
(
!
isClose
)
{
if
(
this
.
realTimeSendTryEncBusy
>=
2
)
{
console
.
log
(
"
编码队列阻塞,已丢弃一帧
"
,
1
);
return
;
}
}
this
.
realTimeSendTryEncBusy
++
;
//通过mock方法实时转码成mp3、wav
var
encStartTime
=
Date
.
now
();
var
recMock
=
Recorder
({
type
:
this
.
realTimeSendTryType
,
sampleRate
:
this
.
SampleRate
//采样率
,
bitRate
:
this
.
testBitRate
//比特率
});
recMock
.
mock
(
chunk
.
data
,
chunk
.
sampleRate
);
recMock
.
stop
(
function
(
blob
,
duration
)
{
that
.
realTimeSendTryEncBusy
&&
(
that
.
realTimeSendTryEncBusy
--
);
blob
.
encTime
=
Date
.
now
()
-
encStartTime
;
//转码好就推入传输
that
.
TransferUpload
(
number
,
blob
,
duration
,
recMock
,
isClose
);
},
function
(
msg
)
{
that
.
realTimeSendTryEncBusy
&&
(
that
.
realTimeSendTryEncBusy
--
);
//转码错误?没想到什么时候会产生错误!
console
.
log
(
"
不应该出现的错误:
"
+
msg
,
1
);
});
},
recordClose
:
function
()
{
try
{
this
.
rec
.
close
(
function
()
{
this
.
isCloseRecorder
=
true
;
});
this
.
RealTimeSendTry
(
this
.
rec
,
true
);
//最后一次发送
}
catch
(
ex
)
{
// recordClose();
}
},
recordEnd
:
function
()
{
try
{
this
.
rec
.
stop
(
function
(
blob
,
time
)
{
this
.
recordClose
();
},
function
(
s
)
{
this
.
recordClose
();
});
}
catch
(
ex
)
{
}
},
initRecorder
:
function
()
{
var
that
=
this
;
var
rec
=
Recorder
({
type
:
that
.
soundType
,
bitRate
:
that
.
testBitRate
,
sampleRate
:
that
.
SampleRate
,
onProcess
:
function
(
buffers
,
level
,
time
,
sampleRate
)
{
that
.
wave
.
input
(
buffers
[
buffers
.
length
-
1
],
level
,
sampleRate
);
that
.
RealTimeSendTry
(
rec
,
false
);
//推入实时处理,因为是unknown格式,这里简化函数调用,没有用到buffers和bufferSampleRate,因为这些数据和rec.buffers是完全相同的。
}
});
rec
.
open
(
function
()
{
that
.
wave
=
Recorder
.
FrequencyHistogramView
({
elem
:
that
.
recwaveElm
,
lineCount
:
90
,
position
:
0
,
minHeight
:
1
,
stripeEnable
:
false
});
rec
.
start
();
that
.
isCloseRecorder
=
false
;
that
.
RealTimeSendTryReset
(
that
.
soundType
);
//重置
});
this
.
rec
=
rec
;
},
TransferProcess
:
function
(
number
,
blobOrNull
,
duration
,
blobRec
,
isClose
)
{
}
}
\ No newline at end of file
paddlespeech/server/tests/asr/online/web/static/js/jquery-3.2.1.min.js
0 → 100644
浏览文件 @
1dc02c72
/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */
!
function
(
a
,
b
){
"
use strict
"
;
"
object
"
==
typeof
module
&&
"
object
"
==
typeof
module
.
exports
?
module
.
exports
=
a
.
document
?
b
(
a
,
!
0
):
function
(
a
){
if
(
!
a
.
document
)
throw
new
Error
(
"
jQuery requires a window with a document
"
);
return
b
(
a
)}:
b
(
a
)}(
"
undefined
"
!=
typeof
window
?
window
:
this
,
function
(
a
,
b
){
"
use strict
"
;
var
c
=
[],
d
=
a
.
document
,
e
=
Object
.
getPrototypeOf
,
f
=
c
.
slice
,
g
=
c
.
concat
,
h
=
c
.
push
,
i
=
c
.
indexOf
,
j
=
{},
k
=
j
.
toString
,
l
=
j
.
hasOwnProperty
,
m
=
l
.
toString
,
n
=
m
.
call
(
Object
),
o
=
{};
function
p
(
a
,
b
){
b
=
b
||
d
;
var
c
=
b
.
createElement
(
"
script
"
);
c
.
text
=
a
,
b
.
head
.
appendChild
(
c
).
parentNode
.
removeChild
(
c
)}
var
q
=
"
3.2.1
"
,
r
=
function
(
a
,
b
){
return
new
r
.
fn
.
init
(
a
,
b
)},
s
=
/^
[\s\u
FEFF
\x
A0
]
+|
[\s\u
FEFF
\x
A0
]
+$/g
,
t
=
/^-ms-/
,
u
=
/-
([
a-z
])
/g
,
v
=
function
(
a
,
b
){
return
b
.
toUpperCase
()};
r
.
fn
=
r
.
prototype
=
{
jquery
:
q
,
constructor
:
r
,
length
:
0
,
toArray
:
function
(){
return
f
.
call
(
this
)},
get
:
function
(
a
){
return
null
==
a
?
f
.
call
(
this
):
a
<
0
?
this
[
a
+
this
.
length
]:
this
[
a
]},
pushStack
:
function
(
a
){
var
b
=
r
.
merge
(
this
.
constructor
(),
a
);
return
b
.
prevObject
=
this
,
b
},
each
:
function
(
a
){
return
r
.
each
(
this
,
a
)},
map
:
function
(
a
){
return
this
.
pushStack
(
r
.
map
(
this
,
function
(
b
,
c
){
return
a
.
call
(
b
,
c
,
b
)}))},
slice
:
function
(){
return
this
.
pushStack
(
f
.
apply
(
this
,
arguments
))},
first
:
function
(){
return
this
.
eq
(
0
)},
last
:
function
(){
return
this
.
eq
(
-
1
)},
eq
:
function
(
a
){
var
b
=
this
.
length
,
c
=+
a
+
(
a
<
0
?
b
:
0
);
return
this
.
pushStack
(
c
>=
0
&&
c
<
b
?[
this
[
c
]]:[])},
end
:
function
(){
return
this
.
prevObject
||
this
.
constructor
()},
push
:
h
,
sort
:
c
.
sort
,
splice
:
c
.
splice
},
r
.
extend
=
r
.
fn
.
extend
=
function
(){
var
a
,
b
,
c
,
d
,
e
,
f
,
g
=
arguments
[
0
]
||
{},
h
=
1
,
i
=
arguments
.
length
,
j
=!
1
;
for
(
"
boolean
"
==
typeof
g
&&
(
j
=
g
,
g
=
arguments
[
h
]
||
{},
h
++
),
"
object
"
==
typeof
g
||
r
.
isFunction
(
g
)
||
(
g
=
{}),
h
===
i
&&
(
g
=
this
,
h
--
);
h
<
i
;
h
++
)
if
(
null
!=
(
a
=
arguments
[
h
]))
for
(
b
in
a
)
c
=
g
[
b
],
d
=
a
[
b
],
g
!==
d
&&
(
j
&&
d
&&
(
r
.
isPlainObject
(
d
)
||
(
e
=
Array
.
isArray
(
d
)))?(
e
?(
e
=!
1
,
f
=
c
&&
Array
.
isArray
(
c
)?
c
:[]):
f
=
c
&&
r
.
isPlainObject
(
c
)?
c
:{},
g
[
b
]
=
r
.
extend
(
j
,
f
,
d
)):
void
0
!==
d
&&
(
g
[
b
]
=
d
));
return
g
},
r
.
extend
({
expando
:
"
jQuery
"
+
(
q
+
Math
.
random
()).
replace
(
/
\D
/g
,
""
),
isReady
:
!
0
,
error
:
function
(
a
){
throw
new
Error
(
a
)},
noop
:
function
(){},
isFunction
:
function
(
a
){
return
"
function
"
===
r
.
type
(
a
)},
isWindow
:
function
(
a
){
return
null
!=
a
&&
a
===
a
.
window
},
isNumeric
:
function
(
a
){
var
b
=
r
.
type
(
a
);
return
(
"
number
"
===
b
||
"
string
"
===
b
)
&&!
isNaN
(
a
-
parseFloat
(
a
))},
isPlainObject
:
function
(
a
){
var
b
,
c
;
return
!
(
!
a
||
"
[object Object]
"
!==
k
.
call
(
a
))
&&
(
!
(
b
=
e
(
a
))
||
(
c
=
l
.
call
(
b
,
"
constructor
"
)
&&
b
.
constructor
,
"
function
"
==
typeof
c
&&
m
.
call
(
c
)
===
n
))},
isEmptyObject
:
function
(
a
){
var
b
;
for
(
b
in
a
)
return
!
1
;
return
!
0
},
type
:
function
(
a
){
return
null
==
a
?
a
+
""
:
"
object
"
==
typeof
a
||
"
function
"
==
typeof
a
?
j
[
k
.
call
(
a
)]
||
"
object
"
:
typeof
a
},
globalEval
:
function
(
a
){
p
(
a
)},
camelCase
:
function
(
a
){
return
a
.
replace
(
t
,
"
ms-
"
).
replace
(
u
,
v
)},
each
:
function
(
a
,
b
){
var
c
,
d
=
0
;
if
(
w
(
a
)){
for
(
c
=
a
.
length
;
d
<
c
;
d
++
)
if
(
b
.
call
(
a
[
d
],
d
,
a
[
d
])
===!
1
)
break
}
else
for
(
d
in
a
)
if
(
b
.
call
(
a
[
d
],
d
,
a
[
d
])
===!
1
)
break
;
return
a
},
trim
:
function
(
a
){
return
null
==
a
?
""
:(
a
+
""
).
replace
(
s
,
""
)},
makeArray
:
function
(
a
,
b
){
var
c
=
b
||
[];
return
null
!=
a
&&
(
w
(
Object
(
a
))?
r
.
merge
(
c
,
"
string
"
==
typeof
a
?[
a
]:
a
):
h
.
call
(
c
,
a
)),
c
},
inArray
:
function
(
a
,
b
,
c
){
return
null
==
b
?
-
1
:
i
.
call
(
b
,
a
,
c
)},
merge
:
function
(
a
,
b
){
for
(
var
c
=+
b
.
length
,
d
=
0
,
e
=
a
.
length
;
d
<
c
;
d
++
)
a
[
e
++
]
=
b
[
d
];
return
a
.
length
=
e
,
a
},
grep
:
function
(
a
,
b
,
c
){
for
(
var
d
,
e
=
[],
f
=
0
,
g
=
a
.
length
,
h
=!
c
;
f
<
g
;
f
++
)
d
=!
b
(
a
[
f
],
f
),
d
!==
h
&&
e
.
push
(
a
[
f
]);
return
e
},
map
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
0
,
h
=
[];
if
(
w
(
a
))
for
(
d
=
a
.
length
;
f
<
d
;
f
++
)
e
=
b
(
a
[
f
],
f
,
c
),
null
!=
e
&&
h
.
push
(
e
);
else
for
(
f
in
a
)
e
=
b
(
a
[
f
],
f
,
c
),
null
!=
e
&&
h
.
push
(
e
);
return
g
.
apply
([],
h
)},
guid
:
1
,
proxy
:
function
(
a
,
b
){
var
c
,
d
,
e
;
if
(
"
string
"
==
typeof
b
&&
(
c
=
a
[
b
],
b
=
a
,
a
=
c
),
r
.
isFunction
(
a
))
return
d
=
f
.
call
(
arguments
,
2
),
e
=
function
(){
return
a
.
apply
(
b
||
this
,
d
.
concat
(
f
.
call
(
arguments
)))},
e
.
guid
=
a
.
guid
=
a
.
guid
||
r
.
guid
++
,
e
},
now
:
Date
.
now
,
support
:
o
}),
"
function
"
==
typeof
Symbol
&&
(
r
.
fn
[
Symbol
.
iterator
]
=
c
[
Symbol
.
iterator
]),
r
.
each
(
"
Boolean Number String Function Array Date RegExp Object Error Symbol
"
.
split
(
"
"
),
function
(
a
,
b
){
j
[
"
[object
"
+
b
+
"
]
"
]
=
b
.
toLowerCase
()});
function
w
(
a
){
var
b
=!!
a
&&
"
length
"
in
a
&&
a
.
length
,
c
=
r
.
type
(
a
);
return
"
function
"
!==
c
&&!
r
.
isWindow
(
a
)
&&
(
"
array
"
===
c
||
0
===
b
||
"
number
"
==
typeof
b
&&
b
>
0
&&
b
-
1
in
a
)}
var
x
=
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
,
r
,
s
,
t
,
u
=
"
sizzle
"
+
1
*
new
Date
,
v
=
a
.
document
,
w
=
0
,
x
=
0
,
y
=
ha
(),
z
=
ha
(),
A
=
ha
(),
B
=
function
(
a
,
b
){
return
a
===
b
&&
(
l
=!
0
),
0
},
C
=
{}.
hasOwnProperty
,
D
=
[],
E
=
D
.
pop
,
F
=
D
.
push
,
G
=
D
.
push
,
H
=
D
.
slice
,
I
=
function
(
a
,
b
){
for
(
var
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
if
(
a
[
c
]
===
b
)
return
c
;
return
-
1
},
J
=
"
checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped
"
,
K
=
"
[
\\
x20
\\
t
\\
r
\\
n
\\
f]
"
,
L
=
"
(?:
\\\\
.|[
\\
w-]|[^
\
0-
\\
xa0])+
"
,
M
=
"
\\
[
"
+
K
+
"
*(
"
+
L
+
"
)(?:
"
+
K
+
"
*([*^$|!~]?=)
"
+
K
+
"
*(?:'((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\\"
])*)
\"
|(
"
+
L
+
"
))|)
"
+
K
+
"
*
\\
]
"
,
N
=
"
:(
"
+
L
+
"
)(?:
\\
((('((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\\"
])*)
\"
)|((?:
\\\\
.|[^
\\\\
()[
\\
]]|
"
+
M
+
"
)*)|.*)
\\
)|)
"
,
O
=
new
RegExp
(
K
+
"
+
"
,
"
g
"
),
P
=
new
RegExp
(
"
^
"
+
K
+
"
+|((?:^|[^
\\\\
])(?:
\\\\
.)*)
"
+
K
+
"
+$
"
,
"
g
"
),
Q
=
new
RegExp
(
"
^
"
+
K
+
"
*,
"
+
K
+
"
*
"
),
R
=
new
RegExp
(
"
^
"
+
K
+
"
*([>+~]|
"
+
K
+
"
)
"
+
K
+
"
*
"
),
S
=
new
RegExp
(
"
=
"
+
K
+
"
*([^
\\
]'
\"
]*?)
"
+
K
+
"
*
\\
]
"
,
"
g
"
),
T
=
new
RegExp
(
N
),
U
=
new
RegExp
(
"
^
"
+
L
+
"
$
"
),
V
=
{
ID
:
new
RegExp
(
"
^#(
"
+
L
+
"
)
"
),
CLASS
:
new
RegExp
(
"
^
\\
.(
"
+
L
+
"
)
"
),
TAG
:
new
RegExp
(
"
^(
"
+
L
+
"
|[*])
"
),
ATTR
:
new
RegExp
(
"
^
"
+
M
),
PSEUDO
:
new
RegExp
(
"
^
"
+
N
),
CHILD
:
new
RegExp
(
"
^:(only|first|last|nth|nth-last)-(child|of-type)(?:
\\
(
"
+
K
+
"
*(even|odd|(([+-]|)(
\\
d*)n|)
"
+
K
+
"
*(?:([+-]|)
"
+
K
+
"
*(
\\
d+)|))
"
+
K
+
"
*
\\
)|)
"
,
"
i
"
),
bool
:
new
RegExp
(
"
^(?:
"
+
J
+
"
)$
"
,
"
i
"
),
needsContext
:
new
RegExp
(
"
^
"
+
K
+
"
*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:
\\
(
"
+
K
+
"
*((?:-
\\
d)?
\\
d*)
"
+
K
+
"
*
\\
)|)(?=[^-]|$)
"
,
"
i
"
)},
W
=
/^
(?:
input|select|textarea|button
)
$/i
,
X
=
/^h
\d
$/i
,
Y
=
/^
[^
{
]
+
\{\s
*
\[
native
\w
/
,
Z
=
/^
(?:
#
([\w
-
]
+
)
|
(\w
+
)
|
\.([\w
-
]
+
))
$/
,
$
=
/
[
+~
]
/
,
_
=
new
RegExp
(
"
\\\\
([
\\
da-f]{1,6}
"
+
K
+
"
?|(
"
+
K
+
"
)|.)
"
,
"
ig
"
),
aa
=
function
(
a
,
b
,
c
){
var
d
=
"
0x
"
+
b
-
65536
;
return
d
!==
d
||
c
?
b
:
d
<
0
?
String
.
fromCharCode
(
d
+
65536
):
String
.
fromCharCode
(
d
>>
10
|
55296
,
1023
&
d
|
56320
)},
ba
=
/
([\0
-
\x
1f
\x
7f
]
|^-
?\d)
|^-$|
[^\0
-
\x
1f
\x
7f-
\u
FFFF
\w
-
]
/g
,
ca
=
function
(
a
,
b
){
return
b
?
"
\
0
"
===
a
?
"
\
ufffd
"
:
a
.
slice
(
0
,
-
1
)
+
"
\\
"
+
a
.
charCodeAt
(
a
.
length
-
1
).
toString
(
16
)
+
"
"
:
"
\\
"
+
a
},
da
=
function
(){
m
()},
ea
=
ta
(
function
(
a
){
return
a
.
disabled
===!
0
&&
(
"
form
"
in
a
||
"
label
"
in
a
)},{
dir
:
"
parentNode
"
,
next
:
"
legend
"
});
try
{
G
.
apply
(
D
=
H
.
call
(
v
.
childNodes
),
v
.
childNodes
),
D
[
v
.
childNodes
.
length
].
nodeType
}
catch
(
fa
){
G
=
{
apply
:
D
.
length
?
function
(
a
,
b
){
F
.
apply
(
a
,
H
.
call
(
b
))}:
function
(
a
,
b
){
var
c
=
a
.
length
,
d
=
0
;
while
(
a
[
c
++
]
=
b
[
d
++
]);
a
.
length
=
c
-
1
}}}
function
ga
(
a
,
b
,
d
,
e
){
var
f
,
h
,
j
,
k
,
l
,
o
,
r
,
s
=
b
&&
b
.
ownerDocument
,
w
=
b
?
b
.
nodeType
:
9
;
if
(
d
=
d
||
[],
"
string
"
!=
typeof
a
||!
a
||
1
!==
w
&&
9
!==
w
&&
11
!==
w
)
return
d
;
if
(
!
e
&&
((
b
?
b
.
ownerDocument
||
b
:
v
)
!==
n
&&
m
(
b
),
b
=
b
||
n
,
p
)){
if
(
11
!==
w
&&
(
l
=
Z
.
exec
(
a
)))
if
(
f
=
l
[
1
]){
if
(
9
===
w
){
if
(
!
(
j
=
b
.
getElementById
(
f
)))
return
d
;
if
(
j
.
id
===
f
)
return
d
.
push
(
j
),
d
}
else
if
(
s
&&
(
j
=
s
.
getElementById
(
f
))
&&
t
(
b
,
j
)
&&
j
.
id
===
f
)
return
d
.
push
(
j
),
d
}
else
{
if
(
l
[
2
])
return
G
.
apply
(
d
,
b
.
getElementsByTagName
(
a
)),
d
;
if
((
f
=
l
[
3
])
&&
c
.
getElementsByClassName
&&
b
.
getElementsByClassName
)
return
G
.
apply
(
d
,
b
.
getElementsByClassName
(
f
)),
d
}
if
(
c
.
qsa
&&!
A
[
a
+
"
"
]
&&
(
!
q
||!
q
.
test
(
a
))){
if
(
1
!==
w
)
s
=
b
,
r
=
a
;
else
if
(
"
object
"
!==
b
.
nodeName
.
toLowerCase
()){(
k
=
b
.
getAttribute
(
"
id
"
))?
k
=
k
.
replace
(
ba
,
ca
):
b
.
setAttribute
(
"
id
"
,
k
=
u
),
o
=
g
(
a
),
h
=
o
.
length
;
while
(
h
--
)
o
[
h
]
=
"
#
"
+
k
+
"
"
+
sa
(
o
[
h
]);
r
=
o
.
join
(
"
,
"
),
s
=
$
.
test
(
a
)
&&
qa
(
b
.
parentNode
)
||
b
}
if
(
r
)
try
{
return
G
.
apply
(
d
,
s
.
querySelectorAll
(
r
)),
d
}
catch
(
x
){}
finally
{
k
===
u
&&
b
.
removeAttribute
(
"
id
"
)}}}
return
i
(
a
.
replace
(
P
,
"
$1
"
),
b
,
d
,
e
)}
function
ha
(){
var
a
=
[];
function
b
(
c
,
e
){
return
a
.
push
(
c
+
"
"
)
>
d
.
cacheLength
&&
delete
b
[
a
.
shift
()],
b
[
c
+
"
"
]
=
e
}
return
b
}
function
ia
(
a
){
return
a
[
u
]
=!
0
,
a
}
function
ja
(
a
){
var
b
=
n
.
createElement
(
"
fieldset
"
);
try
{
return
!!
a
(
b
)}
catch
(
c
){
return
!
1
}
finally
{
b
.
parentNode
&&
b
.
parentNode
.
removeChild
(
b
),
b
=
null
}}
function
ka
(
a
,
b
){
var
c
=
a
.
split
(
"
|
"
),
e
=
c
.
length
;
while
(
e
--
)
d
.
attrHandle
[
c
[
e
]]
=
b
}
function
la
(
a
,
b
){
var
c
=
b
&&
a
,
d
=
c
&&
1
===
a
.
nodeType
&&
1
===
b
.
nodeType
&&
a
.
sourceIndex
-
b
.
sourceIndex
;
if
(
d
)
return
d
;
if
(
c
)
while
(
c
=
c
.
nextSibling
)
if
(
c
===
b
)
return
-
1
;
return
a
?
1
:
-
1
}
function
ma
(
a
){
return
function
(
b
){
var
c
=
b
.
nodeName
.
toLowerCase
();
return
"
input
"
===
c
&&
b
.
type
===
a
}}
function
na
(
a
){
return
function
(
b
){
var
c
=
b
.
nodeName
.
toLowerCase
();
return
(
"
input
"
===
c
||
"
button
"
===
c
)
&&
b
.
type
===
a
}}
function
oa
(
a
){
return
function
(
b
){
return
"
form
"
in
b
?
b
.
parentNode
&&
b
.
disabled
===!
1
?
"
label
"
in
b
?
"
label
"
in
b
.
parentNode
?
b
.
parentNode
.
disabled
===
a
:
b
.
disabled
===
a
:
b
.
isDisabled
===
a
||
b
.
isDisabled
!==!
a
&&
ea
(
b
)
===
a
:
b
.
disabled
===
a
:
"
label
"
in
b
&&
b
.
disabled
===
a
}}
function
pa
(
a
){
return
ia
(
function
(
b
){
return
b
=+
b
,
ia
(
function
(
c
,
d
){
var
e
,
f
=
a
([],
c
.
length
,
b
),
g
=
f
.
length
;
while
(
g
--
)
c
[
e
=
f
[
g
]]
&&
(
c
[
e
]
=!
(
d
[
e
]
=
c
[
e
]))})})}
function
qa
(
a
){
return
a
&&
"
undefined
"
!=
typeof
a
.
getElementsByTagName
&&
a
}
c
=
ga
.
support
=
{},
f
=
ga
.
isXML
=
function
(
a
){
var
b
=
a
&&
(
a
.
ownerDocument
||
a
).
documentElement
;
return
!!
b
&&
"
HTML
"
!==
b
.
nodeName
},
m
=
ga
.
setDocument
=
function
(
a
){
var
b
,
e
,
g
=
a
?
a
.
ownerDocument
||
a
:
v
;
return
g
!==
n
&&
9
===
g
.
nodeType
&&
g
.
documentElement
?(
n
=
g
,
o
=
n
.
documentElement
,
p
=!
f
(
n
),
v
!==
n
&&
(
e
=
n
.
defaultView
)
&&
e
.
top
!==
e
&&
(
e
.
addEventListener
?
e
.
addEventListener
(
"
unload
"
,
da
,
!
1
):
e
.
attachEvent
&&
e
.
attachEvent
(
"
onunload
"
,
da
)),
c
.
attributes
=
ja
(
function
(
a
){
return
a
.
className
=
"
i
"
,
!
a
.
getAttribute
(
"
className
"
)}),
c
.
getElementsByTagName
=
ja
(
function
(
a
){
return
a
.
appendChild
(
n
.
createComment
(
""
)),
!
a
.
getElementsByTagName
(
"
*
"
).
length
}),
c
.
getElementsByClassName
=
Y
.
test
(
n
.
getElementsByClassName
),
c
.
getById
=
ja
(
function
(
a
){
return
o
.
appendChild
(
a
).
id
=
u
,
!
n
.
getElementsByName
||!
n
.
getElementsByName
(
u
).
length
}),
c
.
getById
?(
d
.
filter
.
ID
=
function
(
a
){
var
b
=
a
.
replace
(
_
,
aa
);
return
function
(
a
){
return
a
.
getAttribute
(
"
id
"
)
===
b
}},
d
.
find
.
ID
=
function
(
a
,
b
){
if
(
"
undefined
"
!=
typeof
b
.
getElementById
&&
p
){
var
c
=
b
.
getElementById
(
a
);
return
c
?[
c
]:[]}}):(
d
.
filter
.
ID
=
function
(
a
){
var
b
=
a
.
replace
(
_
,
aa
);
return
function
(
a
){
var
c
=
"
undefined
"
!=
typeof
a
.
getAttributeNode
&&
a
.
getAttributeNode
(
"
id
"
);
return
c
&&
c
.
value
===
b
}},
d
.
find
.
ID
=
function
(
a
,
b
){
if
(
"
undefined
"
!=
typeof
b
.
getElementById
&&
p
){
var
c
,
d
,
e
,
f
=
b
.
getElementById
(
a
);
if
(
f
){
if
(
c
=
f
.
getAttributeNode
(
"
id
"
),
c
&&
c
.
value
===
a
)
return
[
f
];
e
=
b
.
getElementsByName
(
a
),
d
=
0
;
while
(
f
=
e
[
d
++
])
if
(
c
=
f
.
getAttributeNode
(
"
id
"
),
c
&&
c
.
value
===
a
)
return
[
f
]}
return
[]}}),
d
.
find
.
TAG
=
c
.
getElementsByTagName
?
function
(
a
,
b
){
return
"
undefined
"
!=
typeof
b
.
getElementsByTagName
?
b
.
getElementsByTagName
(
a
):
c
.
qsa
?
b
.
querySelectorAll
(
a
):
void
0
}:
function
(
a
,
b
){
var
c
,
d
=
[],
e
=
0
,
f
=
b
.
getElementsByTagName
(
a
);
if
(
"
*
"
===
a
){
while
(
c
=
f
[
e
++
])
1
===
c
.
nodeType
&&
d
.
push
(
c
);
return
d
}
return
f
},
d
.
find
.
CLASS
=
c
.
getElementsByClassName
&&
function
(
a
,
b
){
if
(
"
undefined
"
!=
typeof
b
.
getElementsByClassName
&&
p
)
return
b
.
getElementsByClassName
(
a
)},
r
=
[],
q
=
[],(
c
.
qsa
=
Y
.
test
(
n
.
querySelectorAll
))
&&
(
ja
(
function
(
a
){
o
.
appendChild
(
a
).
innerHTML
=
"
<a id='
"
+
u
+
"
'></a><select id='
"
+
u
+
"
-
\r\\
' msallowcapture=''><option selected=''></option></select>
"
,
a
.
querySelectorAll
(
"
[msallowcapture^='']
"
).
length
&&
q
.
push
(
"
[*^$]=
"
+
K
+
"
*(?:''|
\"\"
)
"
),
a
.
querySelectorAll
(
"
[selected]
"
).
length
||
q
.
push
(
"
\\
[
"
+
K
+
"
*(?:value|
"
+
J
+
"
)
"
),
a
.
querySelectorAll
(
"
[id~=
"
+
u
+
"
-]
"
).
length
||
q
.
push
(
"
~=
"
),
a
.
querySelectorAll
(
"
:checked
"
).
length
||
q
.
push
(
"
:checked
"
),
a
.
querySelectorAll
(
"
a#
"
+
u
+
"
+*
"
).
length
||
q
.
push
(
"
.#.+[+~]
"
)}),
ja
(
function
(
a
){
a
.
innerHTML
=
"
<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>
"
;
var
b
=
n
.
createElement
(
"
input
"
);
b
.
setAttribute
(
"
type
"
,
"
hidden
"
),
a
.
appendChild
(
b
).
setAttribute
(
"
name
"
,
"
D
"
),
a
.
querySelectorAll
(
"
[name=d]
"
).
length
&&
q
.
push
(
"
name
"
+
K
+
"
*[*^$|!~]?=
"
),
2
!==
a
.
querySelectorAll
(
"
:enabled
"
).
length
&&
q
.
push
(
"
:enabled
"
,
"
:disabled
"
),
o
.
appendChild
(
a
).
disabled
=!
0
,
2
!==
a
.
querySelectorAll
(
"
:disabled
"
).
length
&&
q
.
push
(
"
:enabled
"
,
"
:disabled
"
),
a
.
querySelectorAll
(
"
*,:x
"
),
q
.
push
(
"
,.*:
"
)})),(
c
.
matchesSelector
=
Y
.
test
(
s
=
o
.
matches
||
o
.
webkitMatchesSelector
||
o
.
mozMatchesSelector
||
o
.
oMatchesSelector
||
o
.
msMatchesSelector
))
&&
ja
(
function
(
a
){
c
.
disconnectedMatch
=
s
.
call
(
a
,
"
*
"
),
s
.
call
(
a
,
"
[s!='']:x
"
),
r
.
push
(
"
!=
"
,
N
)}),
q
=
q
.
length
&&
new
RegExp
(
q
.
join
(
"
|
"
)),
r
=
r
.
length
&&
new
RegExp
(
r
.
join
(
"
|
"
)),
b
=
Y
.
test
(
o
.
compareDocumentPosition
),
t
=
b
||
Y
.
test
(
o
.
contains
)?
function
(
a
,
b
){
var
c
=
9
===
a
.
nodeType
?
a
.
documentElement
:
a
,
d
=
b
&&
b
.
parentNode
;
return
a
===
d
||!
(
!
d
||
1
!==
d
.
nodeType
||!
(
c
.
contains
?
c
.
contains
(
d
):
a
.
compareDocumentPosition
&&
16
&
a
.
compareDocumentPosition
(
d
)))}:
function
(
a
,
b
){
if
(
b
)
while
(
b
=
b
.
parentNode
)
if
(
b
===
a
)
return
!
0
;
return
!
1
},
B
=
b
?
function
(
a
,
b
){
if
(
a
===
b
)
return
l
=!
0
,
0
;
var
d
=!
a
.
compareDocumentPosition
-!
b
.
compareDocumentPosition
;
return
d
?
d
:(
d
=
(
a
.
ownerDocument
||
a
)
===
(
b
.
ownerDocument
||
b
)?
a
.
compareDocumentPosition
(
b
):
1
,
1
&
d
||!
c
.
sortDetached
&&
b
.
compareDocumentPosition
(
a
)
===
d
?
a
===
n
||
a
.
ownerDocument
===
v
&&
t
(
v
,
a
)?
-
1
:
b
===
n
||
b
.
ownerDocument
===
v
&&
t
(
v
,
b
)?
1
:
k
?
I
(
k
,
a
)
-
I
(
k
,
b
):
0
:
4
&
d
?
-
1
:
1
)}:
function
(
a
,
b
){
if
(
a
===
b
)
return
l
=!
0
,
0
;
var
c
,
d
=
0
,
e
=
a
.
parentNode
,
f
=
b
.
parentNode
,
g
=
[
a
],
h
=
[
b
];
if
(
!
e
||!
f
)
return
a
===
n
?
-
1
:
b
===
n
?
1
:
e
?
-
1
:
f
?
1
:
k
?
I
(
k
,
a
)
-
I
(
k
,
b
):
0
;
if
(
e
===
f
)
return
la
(
a
,
b
);
c
=
a
;
while
(
c
=
c
.
parentNode
)
g
.
unshift
(
c
);
c
=
b
;
while
(
c
=
c
.
parentNode
)
h
.
unshift
(
c
);
while
(
g
[
d
]
===
h
[
d
])
d
++
;
return
d
?
la
(
g
[
d
],
h
[
d
]):
g
[
d
]
===
v
?
-
1
:
h
[
d
]
===
v
?
1
:
0
},
n
):
n
},
ga
.
matches
=
function
(
a
,
b
){
return
ga
(
a
,
null
,
null
,
b
)},
ga
.
matchesSelector
=
function
(
a
,
b
){
if
((
a
.
ownerDocument
||
a
)
!==
n
&&
m
(
a
),
b
=
b
.
replace
(
S
,
"
='$1']
"
),
c
.
matchesSelector
&&
p
&&!
A
[
b
+
"
"
]
&&
(
!
r
||!
r
.
test
(
b
))
&&
(
!
q
||!
q
.
test
(
b
)))
try
{
var
d
=
s
.
call
(
a
,
b
);
if
(
d
||
c
.
disconnectedMatch
||
a
.
document
&&
11
!==
a
.
document
.
nodeType
)
return
d
}
catch
(
e
){}
return
ga
(
b
,
n
,
null
,[
a
]).
length
>
0
},
ga
.
contains
=
function
(
a
,
b
){
return
(
a
.
ownerDocument
||
a
)
!==
n
&&
m
(
a
),
t
(
a
,
b
)},
ga
.
attr
=
function
(
a
,
b
){(
a
.
ownerDocument
||
a
)
!==
n
&&
m
(
a
);
var
e
=
d
.
attrHandle
[
b
.
toLowerCase
()],
f
=
e
&&
C
.
call
(
d
.
attrHandle
,
b
.
toLowerCase
())?
e
(
a
,
b
,
!
p
):
void
0
;
return
void
0
!==
f
?
f
:
c
.
attributes
||!
p
?
a
.
getAttribute
(
b
):(
f
=
a
.
getAttributeNode
(
b
))
&&
f
.
specified
?
f
.
value
:
null
},
ga
.
escape
=
function
(
a
){
return
(
a
+
""
).
replace
(
ba
,
ca
)},
ga
.
error
=
function
(
a
){
throw
new
Error
(
"
Syntax error, unrecognized expression:
"
+
a
)},
ga
.
uniqueSort
=
function
(
a
){
var
b
,
d
=
[],
e
=
0
,
f
=
0
;
if
(
l
=!
c
.
detectDuplicates
,
k
=!
c
.
sortStable
&&
a
.
slice
(
0
),
a
.
sort
(
B
),
l
){
while
(
b
=
a
[
f
++
])
b
===
a
[
f
]
&&
(
e
=
d
.
push
(
f
));
while
(
e
--
)
a
.
splice
(
d
[
e
],
1
)}
return
k
=
null
,
a
},
e
=
ga
.
getText
=
function
(
a
){
var
b
,
c
=
""
,
d
=
0
,
f
=
a
.
nodeType
;
if
(
f
){
if
(
1
===
f
||
9
===
f
||
11
===
f
){
if
(
"
string
"
==
typeof
a
.
textContent
)
return
a
.
textContent
;
for
(
a
=
a
.
firstChild
;
a
;
a
=
a
.
nextSibling
)
c
+=
e
(
a
)}
else
if
(
3
===
f
||
4
===
f
)
return
a
.
nodeValue
}
else
while
(
b
=
a
[
d
++
])
c
+=
e
(
b
);
return
c
},
d
=
ga
.
selectors
=
{
cacheLength
:
50
,
createPseudo
:
ia
,
match
:
V
,
attrHandle
:{},
find
:{},
relative
:{
"
>
"
:{
dir
:
"
parentNode
"
,
first
:
!
0
},
"
"
:{
dir
:
"
parentNode
"
},
"
+
"
:{
dir
:
"
previousSibling
"
,
first
:
!
0
},
"
~
"
:{
dir
:
"
previousSibling
"
}},
preFilter
:{
ATTR
:
function
(
a
){
return
a
[
1
]
=
a
[
1
].
replace
(
_
,
aa
),
a
[
3
]
=
(
a
[
3
]
||
a
[
4
]
||
a
[
5
]
||
""
).
replace
(
_
,
aa
),
"
~=
"
===
a
[
2
]
&&
(
a
[
3
]
=
"
"
+
a
[
3
]
+
"
"
),
a
.
slice
(
0
,
4
)},
CHILD
:
function
(
a
){
return
a
[
1
]
=
a
[
1
].
toLowerCase
(),
"
nth
"
===
a
[
1
].
slice
(
0
,
3
)?(
a
[
3
]
||
ga
.
error
(
a
[
0
]),
a
[
4
]
=+
(
a
[
4
]?
a
[
5
]
+
(
a
[
6
]
||
1
):
2
*
(
"
even
"
===
a
[
3
]
||
"
odd
"
===
a
[
3
])),
a
[
5
]
=+
(
a
[
7
]
+
a
[
8
]
||
"
odd
"
===
a
[
3
])):
a
[
3
]
&&
ga
.
error
(
a
[
0
]),
a
},
PSEUDO
:
function
(
a
){
var
b
,
c
=!
a
[
6
]
&&
a
[
2
];
return
V
.
CHILD
.
test
(
a
[
0
])?
null
:(
a
[
3
]?
a
[
2
]
=
a
[
4
]
||
a
[
5
]
||
""
:
c
&&
T
.
test
(
c
)
&&
(
b
=
g
(
c
,
!
0
))
&&
(
b
=
c
.
indexOf
(
"
)
"
,
c
.
length
-
b
)
-
c
.
length
)
&&
(
a
[
0
]
=
a
[
0
].
slice
(
0
,
b
),
a
[
2
]
=
c
.
slice
(
0
,
b
)),
a
.
slice
(
0
,
3
))}},
filter
:{
TAG
:
function
(
a
){
var
b
=
a
.
replace
(
_
,
aa
).
toLowerCase
();
return
"
*
"
===
a
?
function
(){
return
!
0
}:
function
(
a
){
return
a
.
nodeName
&&
a
.
nodeName
.
toLowerCase
()
===
b
}},
CLASS
:
function
(
a
){
var
b
=
y
[
a
+
"
"
];
return
b
||
(
b
=
new
RegExp
(
"
(^|
"
+
K
+
"
)
"
+
a
+
"
(
"
+
K
+
"
|$)
"
))
&&
y
(
a
,
function
(
a
){
return
b
.
test
(
"
string
"
==
typeof
a
.
className
&&
a
.
className
||
"
undefined
"
!=
typeof
a
.
getAttribute
&&
a
.
getAttribute
(
"
class
"
)
||
""
)})},
ATTR
:
function
(
a
,
b
,
c
){
return
function
(
d
){
var
e
=
ga
.
attr
(
d
,
a
);
return
null
==
e
?
"
!=
"
===
b
:
!
b
||
(
e
+=
""
,
"
=
"
===
b
?
e
===
c
:
"
!=
"
===
b
?
e
!==
c
:
"
^=
"
===
b
?
c
&&
0
===
e
.
indexOf
(
c
):
"
*=
"
===
b
?
c
&&
e
.
indexOf
(
c
)
>-
1
:
"
$=
"
===
b
?
c
&&
e
.
slice
(
-
c
.
length
)
===
c
:
"
~=
"
===
b
?(
"
"
+
e
.
replace
(
O
,
"
"
)
+
"
"
).
indexOf
(
c
)
>-
1
:
"
|=
"
===
b
&&
(
e
===
c
||
e
.
slice
(
0
,
c
.
length
+
1
)
===
c
+
"
-
"
))}},
CHILD
:
function
(
a
,
b
,
c
,
d
,
e
){
var
f
=
"
nth
"
!==
a
.
slice
(
0
,
3
),
g
=
"
last
"
!==
a
.
slice
(
-
4
),
h
=
"
of-type
"
===
b
;
return
1
===
d
&&
0
===
e
?
function
(
a
){
return
!!
a
.
parentNode
}:
function
(
b
,
c
,
i
){
var
j
,
k
,
l
,
m
,
n
,
o
,
p
=
f
!==
g
?
"
nextSibling
"
:
"
previousSibling
"
,
q
=
b
.
parentNode
,
r
=
h
&&
b
.
nodeName
.
toLowerCase
(),
s
=!
i
&&!
h
,
t
=!
1
;
if
(
q
){
if
(
f
){
while
(
p
){
m
=
b
;
while
(
m
=
m
[
p
])
if
(
h
?
m
.
nodeName
.
toLowerCase
()
===
r
:
1
===
m
.
nodeType
)
return
!
1
;
o
=
p
=
"
only
"
===
a
&&!
o
&&
"
nextSibling
"
}
return
!
0
}
if
(
o
=
[
g
?
q
.
firstChild
:
q
.
lastChild
],
g
&&
s
){
m
=
q
,
l
=
m
[
u
]
||
(
m
[
u
]
=
{}),
k
=
l
[
m
.
uniqueID
]
||
(
l
[
m
.
uniqueID
]
=
{}),
j
=
k
[
a
]
||
[],
n
=
j
[
0
]
===
w
&&
j
[
1
],
t
=
n
&&
j
[
2
],
m
=
n
&&
q
.
childNodes
[
n
];
while
(
m
=++
n
&&
m
&&
m
[
p
]
||
(
t
=
n
=
0
)
||
o
.
pop
())
if
(
1
===
m
.
nodeType
&&++
t
&&
m
===
b
){
k
[
a
]
=
[
w
,
n
,
t
];
break
}}
else
if
(
s
&&
(
m
=
b
,
l
=
m
[
u
]
||
(
m
[
u
]
=
{}),
k
=
l
[
m
.
uniqueID
]
||
(
l
[
m
.
uniqueID
]
=
{}),
j
=
k
[
a
]
||
[],
n
=
j
[
0
]
===
w
&&
j
[
1
],
t
=
n
),
t
===!
1
)
while
(
m
=++
n
&&
m
&&
m
[
p
]
||
(
t
=
n
=
0
)
||
o
.
pop
())
if
((
h
?
m
.
nodeName
.
toLowerCase
()
===
r
:
1
===
m
.
nodeType
)
&&++
t
&&
(
s
&&
(
l
=
m
[
u
]
||
(
m
[
u
]
=
{}),
k
=
l
[
m
.
uniqueID
]
||
(
l
[
m
.
uniqueID
]
=
{}),
k
[
a
]
=
[
w
,
t
]),
m
===
b
))
break
;
return
t
-=
e
,
t
===
d
||
t
%
d
===
0
&&
t
/
d
>=
0
}}},
PSEUDO
:
function
(
a
,
b
){
var
c
,
e
=
d
.
pseudos
[
a
]
||
d
.
setFilters
[
a
.
toLowerCase
()]
||
ga
.
error
(
"
unsupported pseudo:
"
+
a
);
return
e
[
u
]?
e
(
b
):
e
.
length
>
1
?(
c
=
[
a
,
a
,
""
,
b
],
d
.
setFilters
.
hasOwnProperty
(
a
.
toLowerCase
())?
ia
(
function
(
a
,
c
){
var
d
,
f
=
e
(
a
,
b
),
g
=
f
.
length
;
while
(
g
--
)
d
=
I
(
a
,
f
[
g
]),
a
[
d
]
=!
(
c
[
d
]
=
f
[
g
])}):
function
(
a
){
return
e
(
a
,
0
,
c
)}):
e
}},
pseudos
:{
not
:
ia
(
function
(
a
){
var
b
=
[],
c
=
[],
d
=
h
(
a
.
replace
(
P
,
"
$1
"
));
return
d
[
u
]?
ia
(
function
(
a
,
b
,
c
,
e
){
var
f
,
g
=
d
(
a
,
null
,
e
,[]),
h
=
a
.
length
;
while
(
h
--
)(
f
=
g
[
h
])
&&
(
a
[
h
]
=!
(
b
[
h
]
=
f
))}):
function
(
a
,
e
,
f
){
return
b
[
0
]
=
a
,
d
(
b
,
null
,
f
,
c
),
b
[
0
]
=
null
,
!
c
.
pop
()}}),
has
:
ia
(
function
(
a
){
return
function
(
b
){
return
ga
(
a
,
b
).
length
>
0
}}),
contains
:
ia
(
function
(
a
){
return
a
=
a
.
replace
(
_
,
aa
),
function
(
b
){
return
(
b
.
textContent
||
b
.
innerText
||
e
(
b
)).
indexOf
(
a
)
>-
1
}}),
lang
:
ia
(
function
(
a
){
return
U
.
test
(
a
||
""
)
||
ga
.
error
(
"
unsupported lang:
"
+
a
),
a
=
a
.
replace
(
_
,
aa
).
toLowerCase
(),
function
(
b
){
var
c
;
do
if
(
c
=
p
?
b
.
lang
:
b
.
getAttribute
(
"
xml:lang
"
)
||
b
.
getAttribute
(
"
lang
"
))
return
c
=
c
.
toLowerCase
(),
c
===
a
||
0
===
c
.
indexOf
(
a
+
"
-
"
);
while
((
b
=
b
.
parentNode
)
&&
1
===
b
.
nodeType
);
return
!
1
}}),
target
:
function
(
b
){
var
c
=
a
.
location
&&
a
.
location
.
hash
;
return
c
&&
c
.
slice
(
1
)
===
b
.
id
},
root
:
function
(
a
){
return
a
===
o
},
focus
:
function
(
a
){
return
a
===
n
.
activeElement
&&
(
!
n
.
hasFocus
||
n
.
hasFocus
())
&&!!
(
a
.
type
||
a
.
href
||~
a
.
tabIndex
)},
enabled
:
oa
(
!
1
),
disabled
:
oa
(
!
0
),
checked
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
"
input
"
===
b
&&!!
a
.
checked
||
"
option
"
===
b
&&!!
a
.
selected
},
selected
:
function
(
a
){
return
a
.
parentNode
&&
a
.
parentNode
.
selectedIndex
,
a
.
selected
===!
0
},
empty
:
function
(
a
){
for
(
a
=
a
.
firstChild
;
a
;
a
=
a
.
nextSibling
)
if
(
a
.
nodeType
<
6
)
return
!
1
;
return
!
0
},
parent
:
function
(
a
){
return
!
d
.
pseudos
.
empty
(
a
)},
header
:
function
(
a
){
return
X
.
test
(
a
.
nodeName
)},
input
:
function
(
a
){
return
W
.
test
(
a
.
nodeName
)},
button
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
"
input
"
===
b
&&
"
button
"
===
a
.
type
||
"
button
"
===
b
},
text
:
function
(
a
){
var
b
;
return
"
input
"
===
a
.
nodeName
.
toLowerCase
()
&&
"
text
"
===
a
.
type
&&
(
null
==
(
b
=
a
.
getAttribute
(
"
type
"
))
||
"
text
"
===
b
.
toLowerCase
())},
first
:
pa
(
function
(){
return
[
0
]}),
last
:
pa
(
function
(
a
,
b
){
return
[
b
-
1
]}),
eq
:
pa
(
function
(
a
,
b
,
c
){
return
[
c
<
0
?
c
+
b
:
c
]}),
even
:
pa
(
function
(
a
,
b
){
for
(
var
c
=
0
;
c
<
b
;
c
+=
2
)
a
.
push
(
c
);
return
a
}),
odd
:
pa
(
function
(
a
,
b
){
for
(
var
c
=
1
;
c
<
b
;
c
+=
2
)
a
.
push
(
c
);
return
a
}),
lt
:
pa
(
function
(
a
,
b
,
c
){
for
(
var
d
=
c
<
0
?
c
+
b
:
c
;
--
d
>=
0
;)
a
.
push
(
d
);
return
a
}),
gt
:
pa
(
function
(
a
,
b
,
c
){
for
(
var
d
=
c
<
0
?
c
+
b
:
c
;
++
d
<
b
;)
a
.
push
(
d
);
return
a
})}},
d
.
pseudos
.
nth
=
d
.
pseudos
.
eq
;
for
(
b
in
{
radio
:
!
0
,
checkbox
:
!
0
,
file
:
!
0
,
password
:
!
0
,
image
:
!
0
})
d
.
pseudos
[
b
]
=
ma
(
b
);
for
(
b
in
{
submit
:
!
0
,
reset
:
!
0
})
d
.
pseudos
[
b
]
=
na
(
b
);
function
ra
(){}
ra
.
prototype
=
d
.
filters
=
d
.
pseudos
,
d
.
setFilters
=
new
ra
,
g
=
ga
.
tokenize
=
function
(
a
,
b
){
var
c
,
e
,
f
,
g
,
h
,
i
,
j
,
k
=
z
[
a
+
"
"
];
if
(
k
)
return
b
?
0
:
k
.
slice
(
0
);
h
=
a
,
i
=
[],
j
=
d
.
preFilter
;
while
(
h
){
c
&&!
(
e
=
Q
.
exec
(
h
))
||
(
e
&&
(
h
=
h
.
slice
(
e
[
0
].
length
)
||
h
),
i
.
push
(
f
=
[])),
c
=!
1
,(
e
=
R
.
exec
(
h
))
&&
(
c
=
e
.
shift
(),
f
.
push
({
value
:
c
,
type
:
e
[
0
].
replace
(
P
,
"
"
)}),
h
=
h
.
slice
(
c
.
length
));
for
(
g
in
d
.
filter
)
!
(
e
=
V
[
g
].
exec
(
h
))
||
j
[
g
]
&&!
(
e
=
j
[
g
](
e
))
||
(
c
=
e
.
shift
(),
f
.
push
({
value
:
c
,
type
:
g
,
matches
:
e
}),
h
=
h
.
slice
(
c
.
length
));
if
(
!
c
)
break
}
return
b
?
h
.
length
:
h
?
ga
.
error
(
a
):
z
(
a
,
i
).
slice
(
0
)};
function
sa
(
a
){
for
(
var
b
=
0
,
c
=
a
.
length
,
d
=
""
;
b
<
c
;
b
++
)
d
+=
a
[
b
].
value
;
return
d
}
function
ta
(
a
,
b
,
c
){
var
d
=
b
.
dir
,
e
=
b
.
next
,
f
=
e
||
d
,
g
=
c
&&
"
parentNode
"
===
f
,
h
=
x
++
;
return
b
.
first
?
function
(
b
,
c
,
e
){
while
(
b
=
b
[
d
])
if
(
1
===
b
.
nodeType
||
g
)
return
a
(
b
,
c
,
e
);
return
!
1
}:
function
(
b
,
c
,
i
){
var
j
,
k
,
l
,
m
=
[
w
,
h
];
if
(
i
){
while
(
b
=
b
[
d
])
if
((
1
===
b
.
nodeType
||
g
)
&&
a
(
b
,
c
,
i
))
return
!
0
}
else
while
(
b
=
b
[
d
])
if
(
1
===
b
.
nodeType
||
g
)
if
(
l
=
b
[
u
]
||
(
b
[
u
]
=
{}),
k
=
l
[
b
.
uniqueID
]
||
(
l
[
b
.
uniqueID
]
=
{}),
e
&&
e
===
b
.
nodeName
.
toLowerCase
())
b
=
b
[
d
]
||
b
;
else
{
if
((
j
=
k
[
f
])
&&
j
[
0
]
===
w
&&
j
[
1
]
===
h
)
return
m
[
2
]
=
j
[
2
];
if
(
k
[
f
]
=
m
,
m
[
2
]
=
a
(
b
,
c
,
i
))
return
!
0
}
return
!
1
}}
function
ua
(
a
){
return
a
.
length
>
1
?
function
(
b
,
c
,
d
){
var
e
=
a
.
length
;
while
(
e
--
)
if
(
!
a
[
e
](
b
,
c
,
d
))
return
!
1
;
return
!
0
}:
a
[
0
]}
function
va
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
b
.
length
;
d
<
e
;
d
++
)
ga
(
a
,
b
[
d
],
c
);
return
c
}
function
wa
(
a
,
b
,
c
,
d
,
e
){
for
(
var
f
,
g
=
[],
h
=
0
,
i
=
a
.
length
,
j
=
null
!=
b
;
h
<
i
;
h
++
)(
f
=
a
[
h
])
&&
(
c
&&!
c
(
f
,
d
,
e
)
||
(
g
.
push
(
f
),
j
&&
b
.
push
(
h
)));
return
g
}
function
xa
(
a
,
b
,
c
,
d
,
e
,
f
){
return
d
&&!
d
[
u
]
&&
(
d
=
xa
(
d
)),
e
&&!
e
[
u
]
&&
(
e
=
xa
(
e
,
f
)),
ia
(
function
(
f
,
g
,
h
,
i
){
var
j
,
k
,
l
,
m
=
[],
n
=
[],
o
=
g
.
length
,
p
=
f
||
va
(
b
||
"
*
"
,
h
.
nodeType
?[
h
]:
h
,[]),
q
=!
a
||!
f
&&
b
?
p
:
wa
(
p
,
m
,
a
,
h
,
i
),
r
=
c
?
e
||
(
f
?
a
:
o
||
d
)?[]:
g
:
q
;
if
(
c
&&
c
(
q
,
r
,
h
,
i
),
d
){
j
=
wa
(
r
,
n
),
d
(
j
,[],
h
,
i
),
k
=
j
.
length
;
while
(
k
--
)(
l
=
j
[
k
])
&&
(
r
[
n
[
k
]]
=!
(
q
[
n
[
k
]]
=
l
))}
if
(
f
){
if
(
e
||
a
){
if
(
e
){
j
=
[],
k
=
r
.
length
;
while
(
k
--
)(
l
=
r
[
k
])
&&
j
.
push
(
q
[
k
]
=
l
);
e
(
null
,
r
=
[],
j
,
i
)}
k
=
r
.
length
;
while
(
k
--
)(
l
=
r
[
k
])
&&
(
j
=
e
?
I
(
f
,
l
):
m
[
k
])
>-
1
&&
(
f
[
j
]
=!
(
g
[
j
]
=
l
))}}
else
r
=
wa
(
r
===
g
?
r
.
splice
(
o
,
r
.
length
):
r
),
e
?
e
(
null
,
g
,
r
,
i
):
G
.
apply
(
g
,
r
)})}
function
ya
(
a
){
for
(
var
b
,
c
,
e
,
f
=
a
.
length
,
g
=
d
.
relative
[
a
[
0
].
type
],
h
=
g
||
d
.
relative
[
"
"
],
i
=
g
?
1
:
0
,
k
=
ta
(
function
(
a
){
return
a
===
b
},
h
,
!
0
),
l
=
ta
(
function
(
a
){
return
I
(
b
,
a
)
>-
1
},
h
,
!
0
),
m
=
[
function
(
a
,
c
,
d
){
var
e
=!
g
&&
(
d
||
c
!==
j
)
||
((
b
=
c
).
nodeType
?
k
(
a
,
c
,
d
):
l
(
a
,
c
,
d
));
return
b
=
null
,
e
}];
i
<
f
;
i
++
)
if
(
c
=
d
.
relative
[
a
[
i
].
type
])
m
=
[
ta
(
ua
(
m
),
c
)];
else
{
if
(
c
=
d
.
filter
[
a
[
i
].
type
].
apply
(
null
,
a
[
i
].
matches
),
c
[
u
]){
for
(
e
=++
i
;
e
<
f
;
e
++
)
if
(
d
.
relative
[
a
[
e
].
type
])
break
;
return
xa
(
i
>
1
&&
ua
(
m
),
i
>
1
&&
sa
(
a
.
slice
(
0
,
i
-
1
).
concat
({
value
:
"
"
===
a
[
i
-
2
].
type
?
"
*
"
:
""
})).
replace
(
P
,
"
$1
"
),
c
,
i
<
e
&&
ya
(
a
.
slice
(
i
,
e
)),
e
<
f
&&
ya
(
a
=
a
.
slice
(
e
)),
e
<
f
&&
sa
(
a
))}
m
.
push
(
c
)}
return
ua
(
m
)}
function
za
(
a
,
b
){
var
c
=
b
.
length
>
0
,
e
=
a
.
length
>
0
,
f
=
function
(
f
,
g
,
h
,
i
,
k
){
var
l
,
o
,
q
,
r
=
0
,
s
=
"
0
"
,
t
=
f
&&
[],
u
=
[],
v
=
j
,
x
=
f
||
e
&&
d
.
find
.
TAG
(
"
*
"
,
k
),
y
=
w
+=
null
==
v
?
1
:
Math
.
random
()
||
.
1
,
z
=
x
.
length
;
for
(
k
&&
(
j
=
g
===
n
||
g
||
k
);
s
!==
z
&&
null
!=
(
l
=
x
[
s
]);
s
++
){
if
(
e
&&
l
){
o
=
0
,
g
||
l
.
ownerDocument
===
n
||
(
m
(
l
),
h
=!
p
);
while
(
q
=
a
[
o
++
])
if
(
q
(
l
,
g
||
n
,
h
)){
i
.
push
(
l
);
break
}
k
&&
(
w
=
y
)}
c
&&
((
l
=!
q
&&
l
)
&&
r
--
,
f
&&
t
.
push
(
l
))}
if
(
r
+=
s
,
c
&&
s
!==
r
){
o
=
0
;
while
(
q
=
b
[
o
++
])
q
(
t
,
u
,
g
,
h
);
if
(
f
){
if
(
r
>
0
)
while
(
s
--
)
t
[
s
]
||
u
[
s
]
||
(
u
[
s
]
=
E
.
call
(
i
));
u
=
wa
(
u
)}
G
.
apply
(
i
,
u
),
k
&&!
f
&&
u
.
length
>
0
&&
r
+
b
.
length
>
1
&&
ga
.
uniqueSort
(
i
)}
return
k
&&
(
w
=
y
,
j
=
v
),
t
};
return
c
?
ia
(
f
):
f
}
return
h
=
ga
.
compile
=
function
(
a
,
b
){
var
c
,
d
=
[],
e
=
[],
f
=
A
[
a
+
"
"
];
if
(
!
f
){
b
||
(
b
=
g
(
a
)),
c
=
b
.
length
;
while
(
c
--
)
f
=
ya
(
b
[
c
]),
f
[
u
]?
d
.
push
(
f
):
e
.
push
(
f
);
f
=
A
(
a
,
za
(
e
,
d
)),
f
.
selector
=
a
}
return
f
},
i
=
ga
.
select
=
function
(
a
,
b
,
c
,
e
){
var
f
,
i
,
j
,
k
,
l
,
m
=
"
function
"
==
typeof
a
&&
a
,
n
=!
e
&&
g
(
a
=
m
.
selector
||
a
);
if
(
c
=
c
||
[],
1
===
n
.
length
){
if
(
i
=
n
[
0
]
=
n
[
0
].
slice
(
0
),
i
.
length
>
2
&&
"
ID
"
===
(
j
=
i
[
0
]).
type
&&
9
===
b
.
nodeType
&&
p
&&
d
.
relative
[
i
[
1
].
type
]){
if
(
b
=
(
d
.
find
.
ID
(
j
.
matches
[
0
].
replace
(
_
,
aa
),
b
)
||
[])[
0
],
!
b
)
return
c
;
m
&&
(
b
=
b
.
parentNode
),
a
=
a
.
slice
(
i
.
shift
().
value
.
length
)}
f
=
V
.
needsContext
.
test
(
a
)?
0
:
i
.
length
;
while
(
f
--
){
if
(
j
=
i
[
f
],
d
.
relative
[
k
=
j
.
type
])
break
;
if
((
l
=
d
.
find
[
k
])
&&
(
e
=
l
(
j
.
matches
[
0
].
replace
(
_
,
aa
),
$
.
test
(
i
[
0
].
type
)
&&
qa
(
b
.
parentNode
)
||
b
))){
if
(
i
.
splice
(
f
,
1
),
a
=
e
.
length
&&
sa
(
i
),
!
a
)
return
G
.
apply
(
c
,
e
),
c
;
break
}}}
return
(
m
||
h
(
a
,
n
))(
e
,
b
,
!
p
,
c
,
!
b
||
$
.
test
(
a
)
&&
qa
(
b
.
parentNode
)
||
b
),
c
},
c
.
sortStable
=
u
.
split
(
""
).
sort
(
B
).
join
(
""
)
===
u
,
c
.
detectDuplicates
=!!
l
,
m
(),
c
.
sortDetached
=
ja
(
function
(
a
){
return
1
&
a
.
compareDocumentPosition
(
n
.
createElement
(
"
fieldset
"
))}),
ja
(
function
(
a
){
return
a
.
innerHTML
=
"
<a href='#'></a>
"
,
"
#
"
===
a
.
firstChild
.
getAttribute
(
"
href
"
)})
||
ka
(
"
type|href|height|width
"
,
function
(
a
,
b
,
c
){
if
(
!
c
)
return
a
.
getAttribute
(
b
,
"
type
"
===
b
.
toLowerCase
()?
1
:
2
)}),
c
.
attributes
&&
ja
(
function
(
a
){
return
a
.
innerHTML
=
"
<input/>
"
,
a
.
firstChild
.
setAttribute
(
"
value
"
,
""
),
""
===
a
.
firstChild
.
getAttribute
(
"
value
"
)})
||
ka
(
"
value
"
,
function
(
a
,
b
,
c
){
if
(
!
c
&&
"
input
"
===
a
.
nodeName
.
toLowerCase
())
return
a
.
defaultValue
}),
ja
(
function
(
a
){
return
null
==
a
.
getAttribute
(
"
disabled
"
)})
||
ka
(
J
,
function
(
a
,
b
,
c
){
var
d
;
if
(
!
c
)
return
a
[
b
]
===!
0
?
b
.
toLowerCase
():(
d
=
a
.
getAttributeNode
(
b
))
&&
d
.
specified
?
d
.
value
:
null
}),
ga
}(
a
);
r
.
find
=
x
,
r
.
expr
=
x
.
selectors
,
r
.
expr
[
"
:
"
]
=
r
.
expr
.
pseudos
,
r
.
uniqueSort
=
r
.
unique
=
x
.
uniqueSort
,
r
.
text
=
x
.
getText
,
r
.
isXMLDoc
=
x
.
isXML
,
r
.
contains
=
x
.
contains
,
r
.
escapeSelector
=
x
.
escape
;
var
y
=
function
(
a
,
b
,
c
){
var
d
=
[],
e
=
void
0
!==
c
;
while
((
a
=
a
[
b
])
&&
9
!==
a
.
nodeType
)
if
(
1
===
a
.
nodeType
){
if
(
e
&&
r
(
a
).
is
(
c
))
break
;
d
.
push
(
a
)}
return
d
},
z
=
function
(
a
,
b
){
for
(
var
c
=
[];
a
;
a
=
a
.
nextSibling
)
1
===
a
.
nodeType
&&
a
!==
b
&&
c
.
push
(
a
);
return
c
},
A
=
r
.
expr
.
match
.
needsContext
;
function
B
(
a
,
b
){
return
a
.
nodeName
&&
a
.
nodeName
.
toLowerCase
()
===
b
.
toLowerCase
()}
var
C
=
/^<
([
a-z
][^\/\0
>:
\x
20
\t\r\n\f]
*
)[\x
20
\t\r\n\f]
*
\/?
>
(?:
<
\/\1
>|
)
$/i
,
D
=
/^.
[^
:#
\[\.
,
]
*$/
;
function
E
(
a
,
b
,
c
){
return
r
.
isFunction
(
b
)?
r
.
grep
(
a
,
function
(
a
,
d
){
return
!!
b
.
call
(
a
,
d
,
a
)
!==
c
}):
b
.
nodeType
?
r
.
grep
(
a
,
function
(
a
){
return
a
===
b
!==
c
}):
"
string
"
!=
typeof
b
?
r
.
grep
(
a
,
function
(
a
){
return
i
.
call
(
b
,
a
)
>-
1
!==
c
}):
D
.
test
(
b
)?
r
.
filter
(
b
,
a
,
c
):(
b
=
r
.
filter
(
b
,
a
),
r
.
grep
(
a
,
function
(
a
){
return
i
.
call
(
b
,
a
)
>-
1
!==
c
&&
1
===
a
.
nodeType
}))}
r
.
filter
=
function
(
a
,
b
,
c
){
var
d
=
b
[
0
];
return
c
&&
(
a
=
"
:not(
"
+
a
+
"
)
"
),
1
===
b
.
length
&&
1
===
d
.
nodeType
?
r
.
find
.
matchesSelector
(
d
,
a
)?[
d
]:[]:
r
.
find
.
matches
(
a
,
r
.
grep
(
b
,
function
(
a
){
return
1
===
a
.
nodeType
}))},
r
.
fn
.
extend
({
find
:
function
(
a
){
var
b
,
c
,
d
=
this
.
length
,
e
=
this
;
if
(
"
string
"
!=
typeof
a
)
return
this
.
pushStack
(
r
(
a
).
filter
(
function
(){
for
(
b
=
0
;
b
<
d
;
b
++
)
if
(
r
.
contains
(
e
[
b
],
this
))
return
!
0
}));
for
(
c
=
this
.
pushStack
([]),
b
=
0
;
b
<
d
;
b
++
)
r
.
find
(
a
,
e
[
b
],
c
);
return
d
>
1
?
r
.
uniqueSort
(
c
):
c
},
filter
:
function
(
a
){
return
this
.
pushStack
(
E
(
this
,
a
||
[],
!
1
))},
not
:
function
(
a
){
return
this
.
pushStack
(
E
(
this
,
a
||
[],
!
0
))},
is
:
function
(
a
){
return
!!
E
(
this
,
"
string
"
==
typeof
a
&&
A
.
test
(
a
)?
r
(
a
):
a
||
[],
!
1
).
length
}});
var
F
,
G
=
/^
(?:\s
*
(
<
[\w\W]
+>
)[^
>
]
*|#
([\w
-
]
+
))
$/
,
H
=
r
.
fn
.
init
=
function
(
a
,
b
,
c
){
var
e
,
f
;
if
(
!
a
)
return
this
;
if
(
c
=
c
||
F
,
"
string
"
==
typeof
a
){
if
(
e
=
"
<
"
===
a
[
0
]
&&
"
>
"
===
a
[
a
.
length
-
1
]
&&
a
.
length
>=
3
?[
null
,
a
,
null
]:
G
.
exec
(
a
),
!
e
||!
e
[
1
]
&&
b
)
return
!
b
||
b
.
jquery
?(
b
||
c
).
find
(
a
):
this
.
constructor
(
b
).
find
(
a
);
if
(
e
[
1
]){
if
(
b
=
b
instanceof
r
?
b
[
0
]:
b
,
r
.
merge
(
this
,
r
.
parseHTML
(
e
[
1
],
b
&&
b
.
nodeType
?
b
.
ownerDocument
||
b
:
d
,
!
0
)),
C
.
test
(
e
[
1
])
&&
r
.
isPlainObject
(
b
))
for
(
e
in
b
)
r
.
isFunction
(
this
[
e
])?
this
[
e
](
b
[
e
]):
this
.
attr
(
e
,
b
[
e
]);
return
this
}
return
f
=
d
.
getElementById
(
e
[
2
]),
f
&&
(
this
[
0
]
=
f
,
this
.
length
=
1
),
this
}
return
a
.
nodeType
?(
this
[
0
]
=
a
,
this
.
length
=
1
,
this
):
r
.
isFunction
(
a
)?
void
0
!==
c
.
ready
?
c
.
ready
(
a
):
a
(
r
):
r
.
makeArray
(
a
,
this
)};
H
.
prototype
=
r
.
fn
,
F
=
r
(
d
);
var
I
=
/^
(?:
parents|prev
(?:
Until|All
))
/
,
J
=
{
children
:
!
0
,
contents
:
!
0
,
next
:
!
0
,
prev
:
!
0
};
r
.
fn
.
extend
({
has
:
function
(
a
){
var
b
=
r
(
a
,
this
),
c
=
b
.
length
;
return
this
.
filter
(
function
(){
for
(
var
a
=
0
;
a
<
c
;
a
++
)
if
(
r
.
contains
(
this
,
b
[
a
]))
return
!
0
})},
closest
:
function
(
a
,
b
){
var
c
,
d
=
0
,
e
=
this
.
length
,
f
=
[],
g
=
"
string
"
!=
typeof
a
&&
r
(
a
);
if
(
!
A
.
test
(
a
))
for
(;
d
<
e
;
d
++
)
for
(
c
=
this
[
d
];
c
&&
c
!==
b
;
c
=
c
.
parentNode
)
if
(
c
.
nodeType
<
11
&&
(
g
?
g
.
index
(
c
)
>-
1
:
1
===
c
.
nodeType
&&
r
.
find
.
matchesSelector
(
c
,
a
))){
f
.
push
(
c
);
break
}
return
this
.
pushStack
(
f
.
length
>
1
?
r
.
uniqueSort
(
f
):
f
)},
index
:
function
(
a
){
return
a
?
"
string
"
==
typeof
a
?
i
.
call
(
r
(
a
),
this
[
0
]):
i
.
call
(
this
,
a
.
jquery
?
a
[
0
]:
a
):
this
[
0
]
&&
this
[
0
].
parentNode
?
this
.
first
().
prevAll
().
length
:
-
1
},
add
:
function
(
a
,
b
){
return
this
.
pushStack
(
r
.
uniqueSort
(
r
.
merge
(
this
.
get
(),
r
(
a
,
b
))))},
addBack
:
function
(
a
){
return
this
.
add
(
null
==
a
?
this
.
prevObject
:
this
.
prevObject
.
filter
(
a
))}});
function
K
(
a
,
b
){
while
((
a
=
a
[
b
])
&&
1
!==
a
.
nodeType
);
return
a
}
r
.
each
({
parent
:
function
(
a
){
var
b
=
a
.
parentNode
;
return
b
&&
11
!==
b
.
nodeType
?
b
:
null
},
parents
:
function
(
a
){
return
y
(
a
,
"
parentNode
"
)},
parentsUntil
:
function
(
a
,
b
,
c
){
return
y
(
a
,
"
parentNode
"
,
c
)},
next
:
function
(
a
){
return
K
(
a
,
"
nextSibling
"
)},
prev
:
function
(
a
){
return
K
(
a
,
"
previousSibling
"
)},
nextAll
:
function
(
a
){
return
y
(
a
,
"
nextSibling
"
)},
prevAll
:
function
(
a
){
return
y
(
a
,
"
previousSibling
"
)},
nextUntil
:
function
(
a
,
b
,
c
){
return
y
(
a
,
"
nextSibling
"
,
c
)},
prevUntil
:
function
(
a
,
b
,
c
){
return
y
(
a
,
"
previousSibling
"
,
c
)},
siblings
:
function
(
a
){
return
z
((
a
.
parentNode
||
{}).
firstChild
,
a
)},
children
:
function
(
a
){
return
z
(
a
.
firstChild
)},
contents
:
function
(
a
){
return
B
(
a
,
"
iframe
"
)?
a
.
contentDocument
:(
B
(
a
,
"
template
"
)
&&
(
a
=
a
.
content
||
a
),
r
.
merge
([],
a
.
childNodes
))}},
function
(
a
,
b
){
r
.
fn
[
a
]
=
function
(
c
,
d
){
var
e
=
r
.
map
(
this
,
b
,
c
);
return
"
Until
"
!==
a
.
slice
(
-
5
)
&&
(
d
=
c
),
d
&&
"
string
"
==
typeof
d
&&
(
e
=
r
.
filter
(
d
,
e
)),
this
.
length
>
1
&&
(
J
[
a
]
||
r
.
uniqueSort
(
e
),
I
.
test
(
a
)
&&
e
.
reverse
()),
this
.
pushStack
(
e
)}});
var
L
=
/
[^\x
20
\t\r\n\f]
+/g
;
function
M
(
a
){
var
b
=
{};
return
r
.
each
(
a
.
match
(
L
)
||
[],
function
(
a
,
c
){
b
[
c
]
=!
0
}),
b
}
r
.
Callbacks
=
function
(
a
){
a
=
"
string
"
==
typeof
a
?
M
(
a
):
r
.
extend
({},
a
);
var
b
,
c
,
d
,
e
,
f
=
[],
g
=
[],
h
=-
1
,
i
=
function
(){
for
(
e
=
e
||
a
.
once
,
d
=
b
=!
0
;
g
.
length
;
h
=-
1
){
c
=
g
.
shift
();
while
(
++
h
<
f
.
length
)
f
[
h
].
apply
(
c
[
0
],
c
[
1
])
===!
1
&&
a
.
stopOnFalse
&&
(
h
=
f
.
length
,
c
=!
1
)}
a
.
memory
||
(
c
=!
1
),
b
=!
1
,
e
&&
(
f
=
c
?[]:
""
)},
j
=
{
add
:
function
(){
return
f
&&
(
c
&&!
b
&&
(
h
=
f
.
length
-
1
,
g
.
push
(
c
)),
function
d
(
b
){
r
.
each
(
b
,
function
(
b
,
c
){
r
.
isFunction
(
c
)?
a
.
unique
&&
j
.
has
(
c
)
||
f
.
push
(
c
):
c
&&
c
.
length
&&
"
string
"
!==
r
.
type
(
c
)
&&
d
(
c
)})}(
arguments
),
c
&&!
b
&&
i
()),
this
},
remove
:
function
(){
return
r
.
each
(
arguments
,
function
(
a
,
b
){
var
c
;
while
((
c
=
r
.
inArray
(
b
,
f
,
c
))
>-
1
)
f
.
splice
(
c
,
1
),
c
<=
h
&&
h
--
}),
this
},
has
:
function
(
a
){
return
a
?
r
.
inArray
(
a
,
f
)
>-
1
:
f
.
length
>
0
},
empty
:
function
(){
return
f
&&
(
f
=
[]),
this
},
disable
:
function
(){
return
e
=
g
=
[],
f
=
c
=
""
,
this
},
disabled
:
function
(){
return
!
f
},
lock
:
function
(){
return
e
=
g
=
[],
c
||
b
||
(
f
=
c
=
""
),
this
},
locked
:
function
(){
return
!!
e
},
fireWith
:
function
(
a
,
c
){
return
e
||
(
c
=
c
||
[],
c
=
[
a
,
c
.
slice
?
c
.
slice
():
c
],
g
.
push
(
c
),
b
||
i
()),
this
},
fire
:
function
(){
return
j
.
fireWith
(
this
,
arguments
),
this
},
fired
:
function
(){
return
!!
d
}};
return
j
};
function
N
(
a
){
return
a
}
function
O
(
a
){
throw
a
}
function
P
(
a
,
b
,
c
,
d
){
var
e
;
try
{
a
&&
r
.
isFunction
(
e
=
a
.
promise
)?
e
.
call
(
a
).
done
(
b
).
fail
(
c
):
a
&&
r
.
isFunction
(
e
=
a
.
then
)?
e
.
call
(
a
,
b
,
c
):
b
.
apply
(
void
0
,[
a
].
slice
(
d
))}
catch
(
a
){
c
.
apply
(
void
0
,[
a
])}}
r
.
extend
({
Deferred
:
function
(
b
){
var
c
=
[[
"
notify
"
,
"
progress
"
,
r
.
Callbacks
(
"
memory
"
),
r
.
Callbacks
(
"
memory
"
),
2
],[
"
resolve
"
,
"
done
"
,
r
.
Callbacks
(
"
once memory
"
),
r
.
Callbacks
(
"
once memory
"
),
0
,
"
resolved
"
],[
"
reject
"
,
"
fail
"
,
r
.
Callbacks
(
"
once memory
"
),
r
.
Callbacks
(
"
once memory
"
),
1
,
"
rejected
"
]],
d
=
"
pending
"
,
e
=
{
state
:
function
(){
return
d
},
always
:
function
(){
return
f
.
done
(
arguments
).
fail
(
arguments
),
this
},
"
catch
"
:
function
(
a
){
return
e
.
then
(
null
,
a
)},
pipe
:
function
(){
var
a
=
arguments
;
return
r
.
Deferred
(
function
(
b
){
r
.
each
(
c
,
function
(
c
,
d
){
var
e
=
r
.
isFunction
(
a
[
d
[
4
]])
&&
a
[
d
[
4
]];
f
[
d
[
1
]](
function
(){
var
a
=
e
&&
e
.
apply
(
this
,
arguments
);
a
&&
r
.
isFunction
(
a
.
promise
)?
a
.
promise
().
progress
(
b
.
notify
).
done
(
b
.
resolve
).
fail
(
b
.
reject
):
b
[
d
[
0
]
+
"
With
"
](
this
,
e
?[
a
]:
arguments
)})}),
a
=
null
}).
promise
()},
then
:
function
(
b
,
d
,
e
){
var
f
=
0
;
function
g
(
b
,
c
,
d
,
e
){
return
function
(){
var
h
=
this
,
i
=
arguments
,
j
=
function
(){
var
a
,
j
;
if
(
!
(
b
<
f
)){
if
(
a
=
d
.
apply
(
h
,
i
),
a
===
c
.
promise
())
throw
new
TypeError
(
"
Thenable self-resolution
"
);
j
=
a
&&
(
"
object
"
==
typeof
a
||
"
function
"
==
typeof
a
)
&&
a
.
then
,
r
.
isFunction
(
j
)?
e
?
j
.
call
(
a
,
g
(
f
,
c
,
N
,
e
),
g
(
f
,
c
,
O
,
e
)):(
f
++
,
j
.
call
(
a
,
g
(
f
,
c
,
N
,
e
),
g
(
f
,
c
,
O
,
e
),
g
(
f
,
c
,
N
,
c
.
notifyWith
))):(
d
!==
N
&&
(
h
=
void
0
,
i
=
[
a
]),(
e
||
c
.
resolveWith
)(
h
,
i
))}},
k
=
e
?
j
:
function
(){
try
{
j
()}
catch
(
a
){
r
.
Deferred
.
exceptionHook
&&
r
.
Deferred
.
exceptionHook
(
a
,
k
.
stackTrace
),
b
+
1
>=
f
&&
(
d
!==
O
&&
(
h
=
void
0
,
i
=
[
a
]),
c
.
rejectWith
(
h
,
i
))}};
b
?
k
():(
r
.
Deferred
.
getStackHook
&&
(
k
.
stackTrace
=
r
.
Deferred
.
getStackHook
()),
a
.
setTimeout
(
k
))}}
return
r
.
Deferred
(
function
(
a
){
c
[
0
][
3
].
add
(
g
(
0
,
a
,
r
.
isFunction
(
e
)?
e
:
N
,
a
.
notifyWith
)),
c
[
1
][
3
].
add
(
g
(
0
,
a
,
r
.
isFunction
(
b
)?
b
:
N
)),
c
[
2
][
3
].
add
(
g
(
0
,
a
,
r
.
isFunction
(
d
)?
d
:
O
))}).
promise
()},
promise
:
function
(
a
){
return
null
!=
a
?
r
.
extend
(
a
,
e
):
e
}},
f
=
{};
return
r
.
each
(
c
,
function
(
a
,
b
){
var
g
=
b
[
2
],
h
=
b
[
5
];
e
[
b
[
1
]]
=
g
.
add
,
h
&&
g
.
add
(
function
(){
d
=
h
},
c
[
3
-
a
][
2
].
disable
,
c
[
0
][
2
].
lock
),
g
.
add
(
b
[
3
].
fire
),
f
[
b
[
0
]]
=
function
(){
return
f
[
b
[
0
]
+
"
With
"
](
this
===
f
?
void
0
:
this
,
arguments
),
this
},
f
[
b
[
0
]
+
"
With
"
]
=
g
.
fireWith
}),
e
.
promise
(
f
),
b
&&
b
.
call
(
f
,
f
),
f
},
when
:
function
(
a
){
var
b
=
arguments
.
length
,
c
=
b
,
d
=
Array
(
c
),
e
=
f
.
call
(
arguments
),
g
=
r
.
Deferred
(),
h
=
function
(
a
){
return
function
(
c
){
d
[
a
]
=
this
,
e
[
a
]
=
arguments
.
length
>
1
?
f
.
call
(
arguments
):
c
,
--
b
||
g
.
resolveWith
(
d
,
e
)}};
if
(
b
<=
1
&&
(
P
(
a
,
g
.
done
(
h
(
c
)).
resolve
,
g
.
reject
,
!
b
),
"
pending
"
===
g
.
state
()
||
r
.
isFunction
(
e
[
c
]
&&
e
[
c
].
then
)))
return
g
.
then
();
while
(
c
--
)
P
(
e
[
c
],
h
(
c
),
g
.
reject
);
return
g
.
promise
()}});
var
Q
=
/^
(
Eval|Internal|Range|Reference|Syntax|Type|URI
)
Error$/
;
r
.
Deferred
.
exceptionHook
=
function
(
b
,
c
){
a
.
console
&&
a
.
console
.
warn
&&
b
&&
Q
.
test
(
b
.
name
)
&&
a
.
console
.
warn
(
"
jQuery.Deferred exception:
"
+
b
.
message
,
b
.
stack
,
c
)},
r
.
readyException
=
function
(
b
){
a
.
setTimeout
(
function
(){
throw
b
})};
var
R
=
r
.
Deferred
();
r
.
fn
.
ready
=
function
(
a
){
return
R
.
then
(
a
)[
"
catch
"
](
function
(
a
){
r
.
readyException
(
a
)}),
this
},
r
.
extend
({
isReady
:
!
1
,
readyWait
:
1
,
ready
:
function
(
a
){(
a
===!
0
?
--
r
.
readyWait
:
r
.
isReady
)
||
(
r
.
isReady
=!
0
,
a
!==!
0
&&--
r
.
readyWait
>
0
||
R
.
resolveWith
(
d
,[
r
]))}}),
r
.
ready
.
then
=
R
.
then
;
function
S
(){
d
.
removeEventListener
(
"
DOMContentLoaded
"
,
S
),
a
.
removeEventListener
(
"
load
"
,
S
),
r
.
ready
()}
"
complete
"
===
d
.
readyState
||
"
loading
"
!==
d
.
readyState
&&!
d
.
documentElement
.
doScroll
?
a
.
setTimeout
(
r
.
ready
):(
d
.
addEventListener
(
"
DOMContentLoaded
"
,
S
),
a
.
addEventListener
(
"
load
"
,
S
));
var
T
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
g
){
var
h
=
0
,
i
=
a
.
length
,
j
=
null
==
c
;
if
(
"
object
"
===
r
.
type
(
c
)){
e
=!
0
;
for
(
h
in
c
)
T
(
a
,
b
,
h
,
c
[
h
],
!
0
,
f
,
g
)}
else
if
(
void
0
!==
d
&&
(
e
=!
0
,
r
.
isFunction
(
d
)
||
(
g
=!
0
),
j
&&
(
g
?(
b
.
call
(
a
,
d
),
b
=
null
):(
j
=
b
,
b
=
function
(
a
,
b
,
c
){
return
j
.
call
(
r
(
a
),
c
)})),
b
))
for
(;
h
<
i
;
h
++
)
b
(
a
[
h
],
c
,
g
?
d
:
d
.
call
(
a
[
h
],
h
,
b
(
a
[
h
],
c
)));
return
e
?
a
:
j
?
b
.
call
(
a
):
i
?
b
(
a
[
0
],
c
):
f
},
U
=
function
(
a
){
return
1
===
a
.
nodeType
||
9
===
a
.
nodeType
||!+
a
.
nodeType
};
function
V
(){
this
.
expando
=
r
.
expando
+
V
.
uid
++
}
V
.
uid
=
1
,
V
.
prototype
=
{
cache
:
function
(
a
){
var
b
=
a
[
this
.
expando
];
return
b
||
(
b
=
{},
U
(
a
)
&&
(
a
.
nodeType
?
a
[
this
.
expando
]
=
b
:
Object
.
defineProperty
(
a
,
this
.
expando
,{
value
:
b
,
configurable
:
!
0
}))),
b
},
set
:
function
(
a
,
b
,
c
){
var
d
,
e
=
this
.
cache
(
a
);
if
(
"
string
"
==
typeof
b
)
e
[
r
.
camelCase
(
b
)]
=
c
;
else
for
(
d
in
b
)
e
[
r
.
camelCase
(
d
)]
=
b
[
d
];
return
e
},
get
:
function
(
a
,
b
){
return
void
0
===
b
?
this
.
cache
(
a
):
a
[
this
.
expando
]
&&
a
[
this
.
expando
][
r
.
camelCase
(
b
)]},
access
:
function
(
a
,
b
,
c
){
return
void
0
===
b
||
b
&&
"
string
"
==
typeof
b
&&
void
0
===
c
?
this
.
get
(
a
,
b
):(
this
.
set
(
a
,
b
,
c
),
void
0
!==
c
?
c
:
b
)},
remove
:
function
(
a
,
b
){
var
c
,
d
=
a
[
this
.
expando
];
if
(
void
0
!==
d
){
if
(
void
0
!==
b
){
Array
.
isArray
(
b
)?
b
=
b
.
map
(
r
.
camelCase
):(
b
=
r
.
camelCase
(
b
),
b
=
b
in
d
?[
b
]:
b
.
match
(
L
)
||
[]),
c
=
b
.
length
;
while
(
c
--
)
delete
d
[
b
[
c
]]}(
void
0
===
b
||
r
.
isEmptyObject
(
d
))
&&
(
a
.
nodeType
?
a
[
this
.
expando
]
=
void
0
:
delete
a
[
this
.
expando
])}},
hasData
:
function
(
a
){
var
b
=
a
[
this
.
expando
];
return
void
0
!==
b
&&!
r
.
isEmptyObject
(
b
)}};
var
W
=
new
V
,
X
=
new
V
,
Y
=
/^
(?:\{[\w\W]
*
\}
|
\[[\w\W]
*
\])
$/
,
Z
=
/
[
A-Z
]
/g
;
function
$
(
a
){
return
"
true
"
===
a
||
"
false
"
!==
a
&&
(
"
null
"
===
a
?
null
:
a
===+
a
+
""
?
+
a
:
Y
.
test
(
a
)?
JSON
.
parse
(
a
):
a
)}
function
_
(
a
,
b
,
c
){
var
d
;
if
(
void
0
===
c
&&
1
===
a
.
nodeType
)
if
(
d
=
"
data-
"
+
b
.
replace
(
Z
,
"
-$&
"
).
toLowerCase
(),
c
=
a
.
getAttribute
(
d
),
"
string
"
==
typeof
c
){
try
{
c
=
$
(
c
)}
catch
(
e
){}
X
.
set
(
a
,
b
,
c
)}
else
c
=
void
0
;
return
c
}
r
.
extend
({
hasData
:
function
(
a
){
return
X
.
hasData
(
a
)
||
W
.
hasData
(
a
)},
data
:
function
(
a
,
b
,
c
){
return
X
.
access
(
a
,
b
,
c
)},
removeData
:
function
(
a
,
b
){
X
.
remove
(
a
,
b
)},
_data
:
function
(
a
,
b
,
c
){
return
W
.
access
(
a
,
b
,
c
)},
_removeData
:
function
(
a
,
b
){
W
.
remove
(
a
,
b
)}}),
r
.
fn
.
extend
({
data
:
function
(
a
,
b
){
var
c
,
d
,
e
,
f
=
this
[
0
],
g
=
f
&&
f
.
attributes
;
if
(
void
0
===
a
){
if
(
this
.
length
&&
(
e
=
X
.
get
(
f
),
1
===
f
.
nodeType
&&!
W
.
get
(
f
,
"
hasDataAttrs
"
))){
c
=
g
.
length
;
while
(
c
--
)
g
[
c
]
&&
(
d
=
g
[
c
].
name
,
0
===
d
.
indexOf
(
"
data-
"
)
&&
(
d
=
r
.
camelCase
(
d
.
slice
(
5
)),
_
(
f
,
d
,
e
[
d
])));
W
.
set
(
f
,
"
hasDataAttrs
"
,
!
0
)}
return
e
}
return
"
object
"
==
typeof
a
?
this
.
each
(
function
(){
X
.
set
(
this
,
a
)}):
T
(
this
,
function
(
b
){
var
c
;
if
(
f
&&
void
0
===
b
){
if
(
c
=
X
.
get
(
f
,
a
),
void
0
!==
c
)
return
c
;
if
(
c
=
_
(
f
,
a
),
void
0
!==
c
)
return
c
}
else
this
.
each
(
function
(){
X
.
set
(
this
,
a
,
b
)})},
null
,
b
,
arguments
.
length
>
1
,
null
,
!
0
)},
removeData
:
function
(
a
){
return
this
.
each
(
function
(){
X
.
remove
(
this
,
a
)})}}),
r
.
extend
({
queue
:
function
(
a
,
b
,
c
){
var
d
;
if
(
a
)
return
b
=
(
b
||
"
fx
"
)
+
"
queue
"
,
d
=
W
.
get
(
a
,
b
),
c
&&
(
!
d
||
Array
.
isArray
(
c
)?
d
=
W
.
access
(
a
,
b
,
r
.
makeArray
(
c
)):
d
.
push
(
c
)),
d
||
[]},
dequeue
:
function
(
a
,
b
){
b
=
b
||
"
fx
"
;
var
c
=
r
.
queue
(
a
,
b
),
d
=
c
.
length
,
e
=
c
.
shift
(),
f
=
r
.
_queueHooks
(
a
,
b
),
g
=
function
(){
r
.
dequeue
(
a
,
b
)};
"
inprogress
"
===
e
&&
(
e
=
c
.
shift
(),
d
--
),
e
&&
(
"
fx
"
===
b
&&
c
.
unshift
(
"
inprogress
"
),
delete
f
.
stop
,
e
.
call
(
a
,
g
,
f
)),
!
d
&&
f
&&
f
.
empty
.
fire
()},
_queueHooks
:
function
(
a
,
b
){
var
c
=
b
+
"
queueHooks
"
;
return
W
.
get
(
a
,
c
)
||
W
.
access
(
a
,
c
,{
empty
:
r
.
Callbacks
(
"
once memory
"
).
add
(
function
(){
W
.
remove
(
a
,[
b
+
"
queue
"
,
c
])})})}}),
r
.
fn
.
extend
({
queue
:
function
(
a
,
b
){
var
c
=
2
;
return
"
string
"
!=
typeof
a
&&
(
b
=
a
,
a
=
"
fx
"
,
c
--
),
arguments
.
length
<
c
?
r
.
queue
(
this
[
0
],
a
):
void
0
===
b
?
this
:
this
.
each
(
function
(){
var
c
=
r
.
queue
(
this
,
a
,
b
);
r
.
_queueHooks
(
this
,
a
),
"
fx
"
===
a
&&
"
inprogress
"
!==
c
[
0
]
&&
r
.
dequeue
(
this
,
a
)})},
dequeue
:
function
(
a
){
return
this
.
each
(
function
(){
r
.
dequeue
(
this
,
a
)})},
clearQueue
:
function
(
a
){
return
this
.
queue
(
a
||
"
fx
"
,[])},
promise
:
function
(
a
,
b
){
var
c
,
d
=
1
,
e
=
r
.
Deferred
(),
f
=
this
,
g
=
this
.
length
,
h
=
function
(){
--
d
||
e
.
resolveWith
(
f
,[
f
])};
"
string
"
!=
typeof
a
&&
(
b
=
a
,
a
=
void
0
),
a
=
a
||
"
fx
"
;
while
(
g
--
)
c
=
W
.
get
(
f
[
g
],
a
+
"
queueHooks
"
),
c
&&
c
.
empty
&&
(
d
++
,
c
.
empty
.
add
(
h
));
return
h
(),
e
.
promise
(
b
)}});
var
aa
=
/
[
+-
]?(?:\d
*
\.
|
)\d
+
(?:[
eE
][
+-
]?\d
+|
)
/
.
source
,
ba
=
new
RegExp
(
"
^(?:([+-])=|)(
"
+
aa
+
"
)([a-z%]*)$
"
,
"
i
"
),
ca
=
[
"
Top
"
,
"
Right
"
,
"
Bottom
"
,
"
Left
"
],
da
=
function
(
a
,
b
){
return
a
=
b
||
a
,
"
none
"
===
a
.
style
.
display
||
""
===
a
.
style
.
display
&&
r
.
contains
(
a
.
ownerDocument
,
a
)
&&
"
none
"
===
r
.
css
(
a
,
"
display
"
)},
ea
=
function
(
a
,
b
,
c
,
d
){
var
e
,
f
,
g
=
{};
for
(
f
in
b
)
g
[
f
]
=
a
.
style
[
f
],
a
.
style
[
f
]
=
b
[
f
];
e
=
c
.
apply
(
a
,
d
||
[]);
for
(
f
in
b
)
a
.
style
[
f
]
=
g
[
f
];
return
e
};
function
fa
(
a
,
b
,
c
,
d
){
var
e
,
f
=
1
,
g
=
20
,
h
=
d
?
function
(){
return
d
.
cur
()}:
function
(){
return
r
.
css
(
a
,
b
,
""
)},
i
=
h
(),
j
=
c
&&
c
[
3
]
||
(
r
.
cssNumber
[
b
]?
""
:
"
px
"
),
k
=
(
r
.
cssNumber
[
b
]
||
"
px
"
!==
j
&&+
i
)
&&
ba
.
exec
(
r
.
css
(
a
,
b
));
if
(
k
&&
k
[
3
]
!==
j
){
j
=
j
||
k
[
3
],
c
=
c
||
[],
k
=+
i
||
1
;
do
f
=
f
||
"
.5
"
,
k
/=
f
,
r
.
style
(
a
,
b
,
k
+
j
);
while
(
f
!==
(
f
=
h
()
/
i
)
&&
1
!==
f
&&--
g
)}
return
c
&&
(
k
=+
k
||+
i
||
0
,
e
=
c
[
1
]?
k
+
(
c
[
1
]
+
1
)
*
c
[
2
]:
+
c
[
2
],
d
&&
(
d
.
unit
=
j
,
d
.
start
=
k
,
d
.
end
=
e
)),
e
}
var
ga
=
{};
function
ha
(
a
){
var
b
,
c
=
a
.
ownerDocument
,
d
=
a
.
nodeName
,
e
=
ga
[
d
];
return
e
?
e
:(
b
=
c
.
body
.
appendChild
(
c
.
createElement
(
d
)),
e
=
r
.
css
(
b
,
"
display
"
),
b
.
parentNode
.
removeChild
(
b
),
"
none
"
===
e
&&
(
e
=
"
block
"
),
ga
[
d
]
=
e
,
e
)}
function
ia
(
a
,
b
){
for
(
var
c
,
d
,
e
=
[],
f
=
0
,
g
=
a
.
length
;
f
<
g
;
f
++
)
d
=
a
[
f
],
d
.
style
&&
(
c
=
d
.
style
.
display
,
b
?(
"
none
"
===
c
&&
(
e
[
f
]
=
W
.
get
(
d
,
"
display
"
)
||
null
,
e
[
f
]
||
(
d
.
style
.
display
=
""
)),
""
===
d
.
style
.
display
&&
da
(
d
)
&&
(
e
[
f
]
=
ha
(
d
))):
"
none
"
!==
c
&&
(
e
[
f
]
=
"
none
"
,
W
.
set
(
d
,
"
display
"
,
c
)));
for
(
f
=
0
;
f
<
g
;
f
++
)
null
!=
e
[
f
]
&&
(
a
[
f
].
style
.
display
=
e
[
f
]);
return
a
}
r
.
fn
.
extend
({
show
:
function
(){
return
ia
(
this
,
!
0
)},
hide
:
function
(){
return
ia
(
this
)},
toggle
:
function
(
a
){
return
"
boolean
"
==
typeof
a
?
a
?
this
.
show
():
this
.
hide
():
this
.
each
(
function
(){
da
(
this
)?
r
(
this
).
show
():
r
(
this
).
hide
()})}});
var
ja
=
/^
(?:
checkbox|radio
)
$/i
,
ka
=
/<
([
a-z
][^\/\0
>
\x
20
\t\r\n\f]
+
)
/i
,
la
=
/^$|
\/(?:
java|ecma
)
script/i
,
ma
=
{
option
:[
1
,
"
<select multiple='multiple'>
"
,
"
</select>
"
],
thead
:[
1
,
"
<table>
"
,
"
</table>
"
],
col
:[
2
,
"
<table><colgroup>
"
,
"
</colgroup></table>
"
],
tr
:[
2
,
"
<table><tbody>
"
,
"
</tbody></table>
"
],
td
:[
3
,
"
<table><tbody><tr>
"
,
"
</tr></tbody></table>
"
],
_default
:[
0
,
""
,
""
]};
ma
.
optgroup
=
ma
.
option
,
ma
.
tbody
=
ma
.
tfoot
=
ma
.
colgroup
=
ma
.
caption
=
ma
.
thead
,
ma
.
th
=
ma
.
td
;
function
na
(
a
,
b
){
var
c
;
return
c
=
"
undefined
"
!=
typeof
a
.
getElementsByTagName
?
a
.
getElementsByTagName
(
b
||
"
*
"
):
"
undefined
"
!=
typeof
a
.
querySelectorAll
?
a
.
querySelectorAll
(
b
||
"
*
"
):[],
void
0
===
b
||
b
&&
B
(
a
,
b
)?
r
.
merge
([
a
],
c
):
c
}
function
oa
(
a
,
b
){
for
(
var
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
W
.
set
(
a
[
c
],
"
globalEval
"
,
!
b
||
W
.
get
(
b
[
c
],
"
globalEval
"
))}
var
pa
=
/<|&#
?\w
+;/
;
function
qa
(
a
,
b
,
c
,
d
,
e
){
for
(
var
f
,
g
,
h
,
i
,
j
,
k
,
l
=
b
.
createDocumentFragment
(),
m
=
[],
n
=
0
,
o
=
a
.
length
;
n
<
o
;
n
++
)
if
(
f
=
a
[
n
],
f
||
0
===
f
)
if
(
"
object
"
===
r
.
type
(
f
))
r
.
merge
(
m
,
f
.
nodeType
?[
f
]:
f
);
else
if
(
pa
.
test
(
f
)){
g
=
g
||
l
.
appendChild
(
b
.
createElement
(
"
div
"
)),
h
=
(
ka
.
exec
(
f
)
||
[
""
,
""
])[
1
].
toLowerCase
(),
i
=
ma
[
h
]
||
ma
.
_default
,
g
.
innerHTML
=
i
[
1
]
+
r
.
htmlPrefilter
(
f
)
+
i
[
2
],
k
=
i
[
0
];
while
(
k
--
)
g
=
g
.
lastChild
;
r
.
merge
(
m
,
g
.
childNodes
),
g
=
l
.
firstChild
,
g
.
textContent
=
""
}
else
m
.
push
(
b
.
createTextNode
(
f
));
l
.
textContent
=
""
,
n
=
0
;
while
(
f
=
m
[
n
++
])
if
(
d
&&
r
.
inArray
(
f
,
d
)
>-
1
)
e
&&
e
.
push
(
f
);
else
if
(
j
=
r
.
contains
(
f
.
ownerDocument
,
f
),
g
=
na
(
l
.
appendChild
(
f
),
"
script
"
),
j
&&
oa
(
g
),
c
){
k
=
0
;
while
(
f
=
g
[
k
++
])
la
.
test
(
f
.
type
||
""
)
&&
c
.
push
(
f
)}
return
l
}
!
function
(){
var
a
=
d
.
createDocumentFragment
(),
b
=
a
.
appendChild
(
d
.
createElement
(
"
div
"
)),
c
=
d
.
createElement
(
"
input
"
);
c
.
setAttribute
(
"
type
"
,
"
radio
"
),
c
.
setAttribute
(
"
checked
"
,
"
checked
"
),
c
.
setAttribute
(
"
name
"
,
"
t
"
),
b
.
appendChild
(
c
),
o
.
checkClone
=
b
.
cloneNode
(
!
0
).
cloneNode
(
!
0
).
lastChild
.
checked
,
b
.
innerHTML
=
"
<textarea>x</textarea>
"
,
o
.
noCloneChecked
=!!
b
.
cloneNode
(
!
0
).
lastChild
.
defaultValue
}();
var
ra
=
d
.
documentElement
,
sa
=
/^key/
,
ta
=
/^
(?:
mouse|pointer|contextmenu|drag|drop
)
|click/
,
ua
=
/^
([^
.
]
*
)(?:\.(
.+
)
|
)
/
;
function
va
(){
return
!
0
}
function
wa
(){
return
!
1
}
function
xa
(){
try
{
return
d
.
activeElement
}
catch
(
a
){}}
function
ya
(
a
,
b
,
c
,
d
,
e
,
f
){
var
g
,
h
;
if
(
"
object
"
==
typeof
b
){
"
string
"
!=
typeof
c
&&
(
d
=
d
||
c
,
c
=
void
0
);
for
(
h
in
b
)
ya
(
a
,
h
,
c
,
d
,
b
[
h
],
f
);
return
a
}
if
(
null
==
d
&&
null
==
e
?(
e
=
c
,
d
=
c
=
void
0
):
null
==
e
&&
(
"
string
"
==
typeof
c
?(
e
=
d
,
d
=
void
0
):(
e
=
d
,
d
=
c
,
c
=
void
0
)),
e
===!
1
)
e
=
wa
;
else
if
(
!
e
)
return
a
;
return
1
===
f
&&
(
g
=
e
,
e
=
function
(
a
){
return
r
().
off
(
a
),
g
.
apply
(
this
,
arguments
)},
e
.
guid
=
g
.
guid
||
(
g
.
guid
=
r
.
guid
++
)),
a
.
each
(
function
(){
r
.
event
.
add
(
this
,
b
,
e
,
d
,
c
)})}
r
.
event
=
{
global
:{},
add
:
function
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
=
W
.
get
(
a
);
if
(
q
){
c
.
handler
&&
(
f
=
c
,
c
=
f
.
handler
,
e
=
f
.
selector
),
e
&&
r
.
find
.
matchesSelector
(
ra
,
e
),
c
.
guid
||
(
c
.
guid
=
r
.
guid
++
),(
i
=
q
.
events
)
||
(
i
=
q
.
events
=
{}),(
g
=
q
.
handle
)
||
(
g
=
q
.
handle
=
function
(
b
){
return
"
undefined
"
!=
typeof
r
&&
r
.
event
.
triggered
!==
b
.
type
?
r
.
event
.
dispatch
.
apply
(
a
,
arguments
):
void
0
}),
b
=
(
b
||
""
).
match
(
L
)
||
[
""
],
j
=
b
.
length
;
while
(
j
--
)
h
=
ua
.
exec
(
b
[
j
])
||
[],
n
=
p
=
h
[
1
],
o
=
(
h
[
2
]
||
""
).
split
(
"
.
"
).
sort
(),
n
&&
(
l
=
r
.
event
.
special
[
n
]
||
{},
n
=
(
e
?
l
.
delegateType
:
l
.
bindType
)
||
n
,
l
=
r
.
event
.
special
[
n
]
||
{},
k
=
r
.
extend
({
type
:
n
,
origType
:
p
,
data
:
d
,
handler
:
c
,
guid
:
c
.
guid
,
selector
:
e
,
needsContext
:
e
&&
r
.
expr
.
match
.
needsContext
.
test
(
e
),
namespace
:
o
.
join
(
"
.
"
)},
f
),(
m
=
i
[
n
])
||
(
m
=
i
[
n
]
=
[],
m
.
delegateCount
=
0
,
l
.
setup
&&
l
.
setup
.
call
(
a
,
d
,
o
,
g
)
!==!
1
||
a
.
addEventListener
&&
a
.
addEventListener
(
n
,
g
)),
l
.
add
&&
(
l
.
add
.
call
(
a
,
k
),
k
.
handler
.
guid
||
(
k
.
handler
.
guid
=
c
.
guid
)),
e
?
m
.
splice
(
m
.
delegateCount
++
,
0
,
k
):
m
.
push
(
k
),
r
.
event
.
global
[
n
]
=!
0
)}},
remove
:
function
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
=
W
.
hasData
(
a
)
&&
W
.
get
(
a
);
if
(
q
&&
(
i
=
q
.
events
)){
b
=
(
b
||
""
).
match
(
L
)
||
[
""
],
j
=
b
.
length
;
while
(
j
--
)
if
(
h
=
ua
.
exec
(
b
[
j
])
||
[],
n
=
p
=
h
[
1
],
o
=
(
h
[
2
]
||
""
).
split
(
"
.
"
).
sort
(),
n
){
l
=
r
.
event
.
special
[
n
]
||
{},
n
=
(
d
?
l
.
delegateType
:
l
.
bindType
)
||
n
,
m
=
i
[
n
]
||
[],
h
=
h
[
2
]
&&
new
RegExp
(
"
(^|
\\
.)
"
+
o
.
join
(
"
\\
.(?:.*
\\
.|)
"
)
+
"
(
\\
.|$)
"
),
g
=
f
=
m
.
length
;
while
(
f
--
)
k
=
m
[
f
],
!
e
&&
p
!==
k
.
origType
||
c
&&
c
.
guid
!==
k
.
guid
||
h
&&!
h
.
test
(
k
.
namespace
)
||
d
&&
d
!==
k
.
selector
&&
(
"
**
"
!==
d
||!
k
.
selector
)
||
(
m
.
splice
(
f
,
1
),
k
.
selector
&&
m
.
delegateCount
--
,
l
.
remove
&&
l
.
remove
.
call
(
a
,
k
));
g
&&!
m
.
length
&&
(
l
.
teardown
&&
l
.
teardown
.
call
(
a
,
o
,
q
.
handle
)
!==!
1
||
r
.
removeEvent
(
a
,
n
,
q
.
handle
),
delete
i
[
n
])}
else
for
(
n
in
i
)
r
.
event
.
remove
(
a
,
n
+
b
[
j
],
c
,
d
,
!
0
);
r
.
isEmptyObject
(
i
)
&&
W
.
remove
(
a
,
"
handle events
"
)}},
dispatch
:
function
(
a
){
var
b
=
r
.
event
.
fix
(
a
),
c
,
d
,
e
,
f
,
g
,
h
,
i
=
new
Array
(
arguments
.
length
),
j
=
(
W
.
get
(
this
,
"
events
"
)
||
{})[
b
.
type
]
||
[],
k
=
r
.
event
.
special
[
b
.
type
]
||
{};
for
(
i
[
0
]
=
b
,
c
=
1
;
c
<
arguments
.
length
;
c
++
)
i
[
c
]
=
arguments
[
c
];
if
(
b
.
delegateTarget
=
this
,
!
k
.
preDispatch
||
k
.
preDispatch
.
call
(
this
,
b
)
!==!
1
){
h
=
r
.
event
.
handlers
.
call
(
this
,
b
,
j
),
c
=
0
;
while
((
f
=
h
[
c
++
])
&&!
b
.
isPropagationStopped
()){
b
.
currentTarget
=
f
.
elem
,
d
=
0
;
while
((
g
=
f
.
handlers
[
d
++
])
&&!
b
.
isImmediatePropagationStopped
())
b
.
rnamespace
&&!
b
.
rnamespace
.
test
(
g
.
namespace
)
||
(
b
.
handleObj
=
g
,
b
.
data
=
g
.
data
,
e
=
((
r
.
event
.
special
[
g
.
origType
]
||
{}).
handle
||
g
.
handler
).
apply
(
f
.
elem
,
i
),
void
0
!==
e
&&
(
b
.
result
=
e
)
===!
1
&&
(
b
.
preventDefault
(),
b
.
stopPropagation
()))}
return
k
.
postDispatch
&&
k
.
postDispatch
.
call
(
this
,
b
),
b
.
result
}},
handlers
:
function
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
,
h
=
[],
i
=
b
.
delegateCount
,
j
=
a
.
target
;
if
(
i
&&
j
.
nodeType
&&!
(
"
click
"
===
a
.
type
&&
a
.
button
>=
1
))
for
(;
j
!==
this
;
j
=
j
.
parentNode
||
this
)
if
(
1
===
j
.
nodeType
&&
(
"
click
"
!==
a
.
type
||
j
.
disabled
!==!
0
)){
for
(
f
=
[],
g
=
{},
c
=
0
;
c
<
i
;
c
++
)
d
=
b
[
c
],
e
=
d
.
selector
+
"
"
,
void
0
===
g
[
e
]
&&
(
g
[
e
]
=
d
.
needsContext
?
r
(
e
,
this
).
index
(
j
)
>-
1
:
r
.
find
(
e
,
this
,
null
,[
j
]).
length
),
g
[
e
]
&&
f
.
push
(
d
);
f
.
length
&&
h
.
push
({
elem
:
j
,
handlers
:
f
})}
return
j
=
this
,
i
<
b
.
length
&&
h
.
push
({
elem
:
j
,
handlers
:
b
.
slice
(
i
)}),
h
},
addProp
:
function
(
a
,
b
){
Object
.
defineProperty
(
r
.
Event
.
prototype
,
a
,{
enumerable
:
!
0
,
configurable
:
!
0
,
get
:
r
.
isFunction
(
b
)?
function
(){
if
(
this
.
originalEvent
)
return
b
(
this
.
originalEvent
)}:
function
(){
if
(
this
.
originalEvent
)
return
this
.
originalEvent
[
a
]},
set
:
function
(
b
){
Object
.
defineProperty
(
this
,
a
,{
enumerable
:
!
0
,
configurable
:
!
0
,
writable
:
!
0
,
value
:
b
})}})},
fix
:
function
(
a
){
return
a
[
r
.
expando
]?
a
:
new
r
.
Event
(
a
)},
special
:{
load
:{
noBubble
:
!
0
},
focus
:{
trigger
:
function
(){
if
(
this
!==
xa
()
&&
this
.
focus
)
return
this
.
focus
(),
!
1
},
delegateType
:
"
focusin
"
},
blur
:{
trigger
:
function
(){
if
(
this
===
xa
()
&&
this
.
blur
)
return
this
.
blur
(),
!
1
},
delegateType
:
"
focusout
"
},
click
:{
trigger
:
function
(){
if
(
"
checkbox
"
===
this
.
type
&&
this
.
click
&&
B
(
this
,
"
input
"
))
return
this
.
click
(),
!
1
},
_default
:
function
(
a
){
return
B
(
a
.
target
,
"
a
"
)}},
beforeunload
:{
postDispatch
:
function
(
a
){
void
0
!==
a
.
result
&&
a
.
originalEvent
&&
(
a
.
originalEvent
.
returnValue
=
a
.
result
)}}}},
r
.
removeEvent
=
function
(
a
,
b
,
c
){
a
.
removeEventListener
&&
a
.
removeEventListener
(
b
,
c
)},
r
.
Event
=
function
(
a
,
b
){
return
this
instanceof
r
.
Event
?(
a
&&
a
.
type
?(
this
.
originalEvent
=
a
,
this
.
type
=
a
.
type
,
this
.
isDefaultPrevented
=
a
.
defaultPrevented
||
void
0
===
a
.
defaultPrevented
&&
a
.
returnValue
===!
1
?
va
:
wa
,
this
.
target
=
a
.
target
&&
3
===
a
.
target
.
nodeType
?
a
.
target
.
parentNode
:
a
.
target
,
this
.
currentTarget
=
a
.
currentTarget
,
this
.
relatedTarget
=
a
.
relatedTarget
):
this
.
type
=
a
,
b
&&
r
.
extend
(
this
,
b
),
this
.
timeStamp
=
a
&&
a
.
timeStamp
||
r
.
now
(),
void
(
this
[
r
.
expando
]
=!
0
)):
new
r
.
Event
(
a
,
b
)},
r
.
Event
.
prototype
=
{
constructor
:
r
.
Event
,
isDefaultPrevented
:
wa
,
isPropagationStopped
:
wa
,
isImmediatePropagationStopped
:
wa
,
isSimulated
:
!
1
,
preventDefault
:
function
(){
var
a
=
this
.
originalEvent
;
this
.
isDefaultPrevented
=
va
,
a
&&!
this
.
isSimulated
&&
a
.
preventDefault
()},
stopPropagation
:
function
(){
var
a
=
this
.
originalEvent
;
this
.
isPropagationStopped
=
va
,
a
&&!
this
.
isSimulated
&&
a
.
stopPropagation
()},
stopImmediatePropagation
:
function
(){
var
a
=
this
.
originalEvent
;
this
.
isImmediatePropagationStopped
=
va
,
a
&&!
this
.
isSimulated
&&
a
.
stopImmediatePropagation
(),
this
.
stopPropagation
()}},
r
.
each
({
altKey
:
!
0
,
bubbles
:
!
0
,
cancelable
:
!
0
,
changedTouches
:
!
0
,
ctrlKey
:
!
0
,
detail
:
!
0
,
eventPhase
:
!
0
,
metaKey
:
!
0
,
pageX
:
!
0
,
pageY
:
!
0
,
shiftKey
:
!
0
,
view
:
!
0
,
"
char
"
:
!
0
,
charCode
:
!
0
,
key
:
!
0
,
keyCode
:
!
0
,
button
:
!
0
,
buttons
:
!
0
,
clientX
:
!
0
,
clientY
:
!
0
,
offsetX
:
!
0
,
offsetY
:
!
0
,
pointerId
:
!
0
,
pointerType
:
!
0
,
screenX
:
!
0
,
screenY
:
!
0
,
targetTouches
:
!
0
,
toElement
:
!
0
,
touches
:
!
0
,
which
:
function
(
a
){
var
b
=
a
.
button
;
return
null
==
a
.
which
&&
sa
.
test
(
a
.
type
)?
null
!=
a
.
charCode
?
a
.
charCode
:
a
.
keyCode
:
!
a
.
which
&&
void
0
!==
b
&&
ta
.
test
(
a
.
type
)?
1
&
b
?
1
:
2
&
b
?
3
:
4
&
b
?
2
:
0
:
a
.
which
}},
r
.
event
.
addProp
),
r
.
each
({
mouseenter
:
"
mouseover
"
,
mouseleave
:
"
mouseout
"
,
pointerenter
:
"
pointerover
"
,
pointerleave
:
"
pointerout
"
},
function
(
a
,
b
){
r
.
event
.
special
[
a
]
=
{
delegateType
:
b
,
bindType
:
b
,
handle
:
function
(
a
){
var
c
,
d
=
this
,
e
=
a
.
relatedTarget
,
f
=
a
.
handleObj
;
return
e
&&
(
e
===
d
||
r
.
contains
(
d
,
e
))
||
(
a
.
type
=
f
.
origType
,
c
=
f
.
handler
.
apply
(
this
,
arguments
),
a
.
type
=
b
),
c
}}}),
r
.
fn
.
extend
({
on
:
function
(
a
,
b
,
c
,
d
){
return
ya
(
this
,
a
,
b
,
c
,
d
)},
one
:
function
(
a
,
b
,
c
,
d
){
return
ya
(
this
,
a
,
b
,
c
,
d
,
1
)},
off
:
function
(
a
,
b
,
c
){
var
d
,
e
;
if
(
a
&&
a
.
preventDefault
&&
a
.
handleObj
)
return
d
=
a
.
handleObj
,
r
(
a
.
delegateTarget
).
off
(
d
.
namespace
?
d
.
origType
+
"
.
"
+
d
.
namespace
:
d
.
origType
,
d
.
selector
,
d
.
handler
),
this
;
if
(
"
object
"
==
typeof
a
){
for
(
e
in
a
)
this
.
off
(
e
,
b
,
a
[
e
]);
return
this
}
return
b
!==!
1
&&
"
function
"
!=
typeof
b
||
(
c
=
b
,
b
=
void
0
),
c
===!
1
&&
(
c
=
wa
),
this
.
each
(
function
(){
r
.
event
.
remove
(
this
,
a
,
c
,
b
)})}});
var
za
=
/<
(?!
area|br|col|embed|hr|img|input|link|meta|param
)(([
a-z
][^\/\0
>
\x
20
\t\r\n\f]
*
)[^
>
]
*
)\/
>/gi
,
Aa
=
/<script|<style|<link/i
,
Ba
=
/checked
\s
*
(?:[^
=
]
|=
\s
*.checked.
)
/i
,
Ca
=
/^true
\/(
.*
)
/
,
Da
=
/^
\s
*<!
(?:\[
CDATA
\[
|--
)
|
(?:\]\]
|--
)
>
\s
*$/g
;
function
Ea
(
a
,
b
){
return
B
(
a
,
"
table
"
)
&&
B
(
11
!==
b
.
nodeType
?
b
:
b
.
firstChild
,
"
tr
"
)?
r
(
"
>tbody
"
,
a
)[
0
]
||
a
:
a
}
function
Fa
(
a
){
return
a
.
type
=
(
null
!==
a
.
getAttribute
(
"
type
"
))
+
"
/
"
+
a
.
type
,
a
}
function
Ga
(
a
){
var
b
=
Ca
.
exec
(
a
.
type
);
return
b
?
a
.
type
=
b
[
1
]:
a
.
removeAttribute
(
"
type
"
),
a
}
function
Ha
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
;
if
(
1
===
b
.
nodeType
){
if
(
W
.
hasData
(
a
)
&&
(
f
=
W
.
access
(
a
),
g
=
W
.
set
(
b
,
f
),
j
=
f
.
events
)){
delete
g
.
handle
,
g
.
events
=
{};
for
(
e
in
j
)
for
(
c
=
0
,
d
=
j
[
e
].
length
;
c
<
d
;
c
++
)
r
.
event
.
add
(
b
,
e
,
j
[
e
][
c
])}
X
.
hasData
(
a
)
&&
(
h
=
X
.
access
(
a
),
i
=
r
.
extend
({},
h
),
X
.
set
(
b
,
i
))}}
function
Ia
(
a
,
b
){
var
c
=
b
.
nodeName
.
toLowerCase
();
"
input
"
===
c
&&
ja
.
test
(
a
.
type
)?
b
.
checked
=
a
.
checked
:
"
input
"
!==
c
&&
"
textarea
"
!==
c
||
(
b
.
defaultValue
=
a
.
defaultValue
)}
function
Ja
(
a
,
b
,
c
,
d
){
b
=
g
.
apply
([],
b
);
var
e
,
f
,
h
,
i
,
j
,
k
,
l
=
0
,
m
=
a
.
length
,
n
=
m
-
1
,
q
=
b
[
0
],
s
=
r
.
isFunction
(
q
);
if
(
s
||
m
>
1
&&
"
string
"
==
typeof
q
&&!
o
.
checkClone
&&
Ba
.
test
(
q
))
return
a
.
each
(
function
(
e
){
var
f
=
a
.
eq
(
e
);
s
&&
(
b
[
0
]
=
q
.
call
(
this
,
e
,
f
.
html
())),
Ja
(
f
,
b
,
c
,
d
)});
if
(
m
&&
(
e
=
qa
(
b
,
a
[
0
].
ownerDocument
,
!
1
,
a
,
d
),
f
=
e
.
firstChild
,
1
===
e
.
childNodes
.
length
&&
(
e
=
f
),
f
||
d
)){
for
(
h
=
r
.
map
(
na
(
e
,
"
script
"
),
Fa
),
i
=
h
.
length
;
l
<
m
;
l
++
)
j
=
e
,
l
!==
n
&&
(
j
=
r
.
clone
(
j
,
!
0
,
!
0
),
i
&&
r
.
merge
(
h
,
na
(
j
,
"
script
"
))),
c
.
call
(
a
[
l
],
j
,
l
);
if
(
i
)
for
(
k
=
h
[
h
.
length
-
1
].
ownerDocument
,
r
.
map
(
h
,
Ga
),
l
=
0
;
l
<
i
;
l
++
)
j
=
h
[
l
],
la
.
test
(
j
.
type
||
""
)
&&!
W
.
access
(
j
,
"
globalEval
"
)
&&
r
.
contains
(
k
,
j
)
&&
(
j
.
src
?
r
.
_evalUrl
&&
r
.
_evalUrl
(
j
.
src
):
p
(
j
.
textContent
.
replace
(
Da
,
""
),
k
))}
return
a
}
function
Ka
(
a
,
b
,
c
){
for
(
var
d
,
e
=
b
?
r
.
filter
(
b
,
a
):
a
,
f
=
0
;
null
!=
(
d
=
e
[
f
]);
f
++
)
c
||
1
!==
d
.
nodeType
||
r
.
cleanData
(
na
(
d
)),
d
.
parentNode
&&
(
c
&&
r
.
contains
(
d
.
ownerDocument
,
d
)
&&
oa
(
na
(
d
,
"
script
"
)),
d
.
parentNode
.
removeChild
(
d
));
return
a
}
r
.
extend
({
htmlPrefilter
:
function
(
a
){
return
a
.
replace
(
za
,
"
<$1></$2>
"
)},
clone
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
cloneNode
(
!
0
),
i
=
r
.
contains
(
a
.
ownerDocument
,
a
);
if
(
!
(
o
.
noCloneChecked
||
1
!==
a
.
nodeType
&&
11
!==
a
.
nodeType
||
r
.
isXMLDoc
(
a
)))
for
(
g
=
na
(
h
),
f
=
na
(
a
),
d
=
0
,
e
=
f
.
length
;
d
<
e
;
d
++
)
Ia
(
f
[
d
],
g
[
d
]);
if
(
b
)
if
(
c
)
for
(
f
=
f
||
na
(
a
),
g
=
g
||
na
(
h
),
d
=
0
,
e
=
f
.
length
;
d
<
e
;
d
++
)
Ha
(
f
[
d
],
g
[
d
]);
else
Ha
(
a
,
h
);
return
g
=
na
(
h
,
"
script
"
),
g
.
length
>
0
&&
oa
(
g
,
!
i
&&
na
(
a
,
"
script
"
)),
h
},
cleanData
:
function
(
a
){
for
(
var
b
,
c
,
d
,
e
=
r
.
event
.
special
,
f
=
0
;
void
0
!==
(
c
=
a
[
f
]);
f
++
)
if
(
U
(
c
)){
if
(
b
=
c
[
W
.
expando
]){
if
(
b
.
events
)
for
(
d
in
b
.
events
)
e
[
d
]?
r
.
event
.
remove
(
c
,
d
):
r
.
removeEvent
(
c
,
d
,
b
.
handle
);
c
[
W
.
expando
]
=
void
0
}
c
[
X
.
expando
]
&&
(
c
[
X
.
expando
]
=
void
0
)}}}),
r
.
fn
.
extend
({
detach
:
function
(
a
){
return
Ka
(
this
,
a
,
!
0
)},
remove
:
function
(
a
){
return
Ka
(
this
,
a
)},
text
:
function
(
a
){
return
T
(
this
,
function
(
a
){
return
void
0
===
a
?
r
.
text
(
this
):
this
.
empty
().
each
(
function
(){
1
!==
this
.
nodeType
&&
11
!==
this
.
nodeType
&&
9
!==
this
.
nodeType
||
(
this
.
textContent
=
a
)})},
null
,
a
,
arguments
.
length
)},
append
:
function
(){
return
Ja
(
this
,
arguments
,
function
(
a
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
b
=
Ea
(
this
,
a
);
b
.
appendChild
(
a
)}})},
prepend
:
function
(){
return
Ja
(
this
,
arguments
,
function
(
a
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
b
=
Ea
(
this
,
a
);
b
.
insertBefore
(
a
,
b
.
firstChild
)}})},
before
:
function
(){
return
Ja
(
this
,
arguments
,
function
(
a
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
a
,
this
)})},
after
:
function
(){
return
Ja
(
this
,
arguments
,
function
(
a
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
a
,
this
.
nextSibling
)})},
empty
:
function
(){
for
(
var
a
,
b
=
0
;
null
!=
(
a
=
this
[
b
]);
b
++
)
1
===
a
.
nodeType
&&
(
r
.
cleanData
(
na
(
a
,
!
1
)),
a
.
textContent
=
""
);
return
this
},
clone
:
function
(
a
,
b
){
return
a
=
null
!=
a
&&
a
,
b
=
null
==
b
?
a
:
b
,
this
.
map
(
function
(){
return
r
.
clone
(
this
,
a
,
b
)})},
html
:
function
(
a
){
return
T
(
this
,
function
(
a
){
var
b
=
this
[
0
]
||
{},
c
=
0
,
d
=
this
.
length
;
if
(
void
0
===
a
&&
1
===
b
.
nodeType
)
return
b
.
innerHTML
;
if
(
"
string
"
==
typeof
a
&&!
Aa
.
test
(
a
)
&&!
ma
[(
ka
.
exec
(
a
)
||
[
""
,
""
])[
1
].
toLowerCase
()]){
a
=
r
.
htmlPrefilter
(
a
);
try
{
for
(;
c
<
d
;
c
++
)
b
=
this
[
c
]
||
{},
1
===
b
.
nodeType
&&
(
r
.
cleanData
(
na
(
b
,
!
1
)),
b
.
innerHTML
=
a
);
b
=
0
}
catch
(
e
){}}
b
&&
this
.
empty
().
append
(
a
)},
null
,
a
,
arguments
.
length
)},
replaceWith
:
function
(){
var
a
=
[];
return
Ja
(
this
,
arguments
,
function
(
b
){
var
c
=
this
.
parentNode
;
r
.
inArray
(
this
,
a
)
<
0
&&
(
r
.
cleanData
(
na
(
this
)),
c
&&
c
.
replaceChild
(
b
,
this
))},
a
)}}),
r
.
each
({
appendTo
:
"
append
"
,
prependTo
:
"
prepend
"
,
insertBefore
:
"
before
"
,
insertAfter
:
"
after
"
,
replaceAll
:
"
replaceWith
"
},
function
(
a
,
b
){
r
.
fn
[
a
]
=
function
(
a
){
for
(
var
c
,
d
=
[],
e
=
r
(
a
),
f
=
e
.
length
-
1
,
g
=
0
;
g
<=
f
;
g
++
)
c
=
g
===
f
?
this
:
this
.
clone
(
!
0
),
r
(
e
[
g
])[
b
](
c
),
h
.
apply
(
d
,
c
.
get
());
return
this
.
pushStack
(
d
)}});
var
La
=
/^margin/
,
Ma
=
new
RegExp
(
"
^(
"
+
aa
+
"
)(?!px)[a-z%]+$
"
,
"
i
"
),
Na
=
function
(
b
){
var
c
=
b
.
ownerDocument
.
defaultView
;
return
c
&&
c
.
opener
||
(
c
=
a
),
c
.
getComputedStyle
(
b
)};
!
function
(){
function
b
(){
if
(
i
){
i
.
style
.
cssText
=
"
box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%
"
,
i
.
innerHTML
=
""
,
ra
.
appendChild
(
h
);
var
b
=
a
.
getComputedStyle
(
i
);
c
=
"
1%
"
!==
b
.
top
,
g
=
"
2px
"
===
b
.
marginLeft
,
e
=
"
4px
"
===
b
.
width
,
i
.
style
.
marginRight
=
"
50%
"
,
f
=
"
4px
"
===
b
.
marginRight
,
ra
.
removeChild
(
h
),
i
=
null
}}
var
c
,
e
,
f
,
g
,
h
=
d
.
createElement
(
"
div
"
),
i
=
d
.
createElement
(
"
div
"
);
i
.
style
&&
(
i
.
style
.
backgroundClip
=
"
content-box
"
,
i
.
cloneNode
(
!
0
).
style
.
backgroundClip
=
""
,
o
.
clearCloneStyle
=
"
content-box
"
===
i
.
style
.
backgroundClip
,
h
.
style
.
cssText
=
"
border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute
"
,
h
.
appendChild
(
i
),
r
.
extend
(
o
,{
pixelPosition
:
function
(){
return
b
(),
c
},
boxSizingReliable
:
function
(){
return
b
(),
e
},
pixelMarginRight
:
function
(){
return
b
(),
f
},
reliableMarginLeft
:
function
(){
return
b
(),
g
}}))}();
function
Oa
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
style
;
return
c
=
c
||
Na
(
a
),
c
&&
(
g
=
c
.
getPropertyValue
(
b
)
||
c
[
b
],
""
!==
g
||
r
.
contains
(
a
.
ownerDocument
,
a
)
||
(
g
=
r
.
style
(
a
,
b
)),
!
o
.
pixelMarginRight
()
&&
Ma
.
test
(
g
)
&&
La
.
test
(
b
)
&&
(
d
=
h
.
width
,
e
=
h
.
minWidth
,
f
=
h
.
maxWidth
,
h
.
minWidth
=
h
.
maxWidth
=
h
.
width
=
g
,
g
=
c
.
width
,
h
.
width
=
d
,
h
.
minWidth
=
e
,
h
.
maxWidth
=
f
)),
void
0
!==
g
?
g
+
""
:
g
}
function
Pa
(
a
,
b
){
return
{
get
:
function
(){
return
a
()?
void
delete
this
.
get
:(
this
.
get
=
b
).
apply
(
this
,
arguments
)}}}
var
Qa
=
/^
(
none|table
(?!
-c
[
ea
])
.+
)
/
,
Ra
=
/^--/
,
Sa
=
{
position
:
"
absolute
"
,
visibility
:
"
hidden
"
,
display
:
"
block
"
},
Ta
=
{
letterSpacing
:
"
0
"
,
fontWeight
:
"
400
"
},
Ua
=
[
"
Webkit
"
,
"
Moz
"
,
"
ms
"
],
Va
=
d
.
createElement
(
"
div
"
).
style
;
function
Wa
(
a
){
if
(
a
in
Va
)
return
a
;
var
b
=
a
[
0
].
toUpperCase
()
+
a
.
slice
(
1
),
c
=
Ua
.
length
;
while
(
c
--
)
if
(
a
=
Ua
[
c
]
+
b
,
a
in
Va
)
return
a
}
function
Xa
(
a
){
var
b
=
r
.
cssProps
[
a
];
return
b
||
(
b
=
r
.
cssProps
[
a
]
=
Wa
(
a
)
||
a
),
b
}
function
Ya
(
a
,
b
,
c
){
var
d
=
ba
.
exec
(
b
);
return
d
?
Math
.
max
(
0
,
d
[
2
]
-
(
c
||
0
))
+
(
d
[
3
]
||
"
px
"
):
b
}
function
Za
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
=
0
;
for
(
f
=
c
===
(
d
?
"
border
"
:
"
content
"
)?
4
:
"
width
"
===
b
?
1
:
0
;
f
<
4
;
f
+=
2
)
"
margin
"
===
c
&&
(
g
+=
r
.
css
(
a
,
c
+
ca
[
f
],
!
0
,
e
)),
d
?(
"
content
"
===
c
&&
(
g
-=
r
.
css
(
a
,
"
padding
"
+
ca
[
f
],
!
0
,
e
)),
"
margin
"
!==
c
&&
(
g
-=
r
.
css
(
a
,
"
border
"
+
ca
[
f
]
+
"
Width
"
,
!
0
,
e
))):(
g
+=
r
.
css
(
a
,
"
padding
"
+
ca
[
f
],
!
0
,
e
),
"
padding
"
!==
c
&&
(
g
+=
r
.
css
(
a
,
"
border
"
+
ca
[
f
]
+
"
Width
"
,
!
0
,
e
)));
return
g
}
function
$a
(
a
,
b
,
c
){
var
d
,
e
=
Na
(
a
),
f
=
Oa
(
a
,
b
,
e
),
g
=
"
border-box
"
===
r
.
css
(
a
,
"
boxSizing
"
,
!
1
,
e
);
return
Ma
.
test
(
f
)?
f
:(
d
=
g
&&
(
o
.
boxSizingReliable
()
||
f
===
a
.
style
[
b
]),
"
auto
"
===
f
&&
(
f
=
a
[
"
offset
"
+
b
[
0
].
toUpperCase
()
+
b
.
slice
(
1
)]),
f
=
parseFloat
(
f
)
||
0
,
f
+
Za
(
a
,
b
,
c
||
(
g
?
"
border
"
:
"
content
"
),
d
,
e
)
+
"
px
"
)}
r
.
extend
({
cssHooks
:{
opacity
:{
get
:
function
(
a
,
b
){
if
(
b
){
var
c
=
Oa
(
a
,
"
opacity
"
);
return
""
===
c
?
"
1
"
:
c
}}}},
cssNumber
:{
animationIterationCount
:
!
0
,
columnCount
:
!
0
,
fillOpacity
:
!
0
,
flexGrow
:
!
0
,
flexShrink
:
!
0
,
fontWeight
:
!
0
,
lineHeight
:
!
0
,
opacity
:
!
0
,
order
:
!
0
,
orphans
:
!
0
,
widows
:
!
0
,
zIndex
:
!
0
,
zoom
:
!
0
},
cssProps
:{
"
float
"
:
"
cssFloat
"
},
style
:
function
(
a
,
b
,
c
,
d
){
if
(
a
&&
3
!==
a
.
nodeType
&&
8
!==
a
.
nodeType
&&
a
.
style
){
var
e
,
f
,
g
,
h
=
r
.
camelCase
(
b
),
i
=
Ra
.
test
(
b
),
j
=
a
.
style
;
return
i
||
(
b
=
Xa
(
h
)),
g
=
r
.
cssHooks
[
b
]
||
r
.
cssHooks
[
h
],
void
0
===
c
?
g
&&
"
get
"
in
g
&&
void
0
!==
(
e
=
g
.
get
(
a
,
!
1
,
d
))?
e
:
j
[
b
]:(
f
=
typeof
c
,
"
string
"
===
f
&&
(
e
=
ba
.
exec
(
c
))
&&
e
[
1
]
&&
(
c
=
fa
(
a
,
b
,
e
),
f
=
"
number
"
),
null
!=
c
&&
c
===
c
&&
(
"
number
"
===
f
&&
(
c
+=
e
&&
e
[
3
]
||
(
r
.
cssNumber
[
h
]?
""
:
"
px
"
)),
o
.
clearCloneStyle
||
""
!==
c
||
0
!==
b
.
indexOf
(
"
background
"
)
||
(
j
[
b
]
=
"
inherit
"
),
g
&&
"
set
"
in
g
&&
void
0
===
(
c
=
g
.
set
(
a
,
c
,
d
))
||
(
i
?
j
.
setProperty
(
b
,
c
):
j
[
b
]
=
c
)),
void
0
)}},
css
:
function
(
a
,
b
,
c
,
d
){
var
e
,
f
,
g
,
h
=
r
.
camelCase
(
b
),
i
=
Ra
.
test
(
b
);
return
i
||
(
b
=
Xa
(
h
)),
g
=
r
.
cssHooks
[
b
]
||
r
.
cssHooks
[
h
],
g
&&
"
get
"
in
g
&&
(
e
=
g
.
get
(
a
,
!
0
,
c
)),
void
0
===
e
&&
(
e
=
Oa
(
a
,
b
,
d
)),
"
normal
"
===
e
&&
b
in
Ta
&&
(
e
=
Ta
[
b
]),
""
===
c
||
c
?(
f
=
parseFloat
(
e
),
c
===!
0
||
isFinite
(
f
)?
f
||
0
:
e
):
e
}}),
r
.
each
([
"
height
"
,
"
width
"
],
function
(
a
,
b
){
r
.
cssHooks
[
b
]
=
{
get
:
function
(
a
,
c
,
d
){
if
(
c
)
return
!
Qa
.
test
(
r
.
css
(
a
,
"
display
"
))
||
a
.
getClientRects
().
length
&&
a
.
getBoundingClientRect
().
width
?
$a
(
a
,
b
,
d
):
ea
(
a
,
Sa
,
function
(){
return
$a
(
a
,
b
,
d
)})},
set
:
function
(
a
,
c
,
d
){
var
e
,
f
=
d
&&
Na
(
a
),
g
=
d
&&
Za
(
a
,
b
,
d
,
"
border-box
"
===
r
.
css
(
a
,
"
boxSizing
"
,
!
1
,
f
),
f
);
return
g
&&
(
e
=
ba
.
exec
(
c
))
&&
"
px
"
!==
(
e
[
3
]
||
"
px
"
)
&&
(
a
.
style
[
b
]
=
c
,
c
=
r
.
css
(
a
,
b
)),
Ya
(
a
,
c
,
g
)}}}),
r
.
cssHooks
.
marginLeft
=
Pa
(
o
.
reliableMarginLeft
,
function
(
a
,
b
){
if
(
b
)
return
(
parseFloat
(
Oa
(
a
,
"
marginLeft
"
))
||
a
.
getBoundingClientRect
().
left
-
ea
(
a
,{
marginLeft
:
0
},
function
(){
return
a
.
getBoundingClientRect
().
left
}))
+
"
px
"
}),
r
.
each
({
margin
:
""
,
padding
:
""
,
border
:
"
Width
"
},
function
(
a
,
b
){
r
.
cssHooks
[
a
+
b
]
=
{
expand
:
function
(
c
){
for
(
var
d
=
0
,
e
=
{},
f
=
"
string
"
==
typeof
c
?
c
.
split
(
"
"
):[
c
];
d
<
4
;
d
++
)
e
[
a
+
ca
[
d
]
+
b
]
=
f
[
d
]
||
f
[
d
-
2
]
||
f
[
0
];
return
e
}},
La
.
test
(
a
)
||
(
r
.
cssHooks
[
a
+
b
].
set
=
Ya
)}),
r
.
fn
.
extend
({
css
:
function
(
a
,
b
){
return
T
(
this
,
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
{},
g
=
0
;
if
(
Array
.
isArray
(
b
)){
for
(
d
=
Na
(
a
),
e
=
b
.
length
;
g
<
e
;
g
++
)
f
[
b
[
g
]]
=
r
.
css
(
a
,
b
[
g
],
!
1
,
d
);
return
f
}
return
void
0
!==
c
?
r
.
style
(
a
,
b
,
c
):
r
.
css
(
a
,
b
)},
a
,
b
,
arguments
.
length
>
1
)}});
function
_a
(
a
,
b
,
c
,
d
,
e
){
return
new
_a
.
prototype
.
init
(
a
,
b
,
c
,
d
,
e
)}
r
.
Tween
=
_a
,
_a
.
prototype
=
{
constructor
:
_a
,
init
:
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
elem
=
a
,
this
.
prop
=
c
,
this
.
easing
=
e
||
r
.
easing
.
_default
,
this
.
options
=
b
,
this
.
start
=
this
.
now
=
this
.
cur
(),
this
.
end
=
d
,
this
.
unit
=
f
||
(
r
.
cssNumber
[
c
]?
""
:
"
px
"
)},
cur
:
function
(){
var
a
=
_a
.
propHooks
[
this
.
prop
];
return
a
&&
a
.
get
?
a
.
get
(
this
):
_a
.
propHooks
.
_default
.
get
(
this
)},
run
:
function
(
a
){
var
b
,
c
=
_a
.
propHooks
[
this
.
prop
];
return
this
.
options
.
duration
?
this
.
pos
=
b
=
r
.
easing
[
this
.
easing
](
a
,
this
.
options
.
duration
*
a
,
0
,
1
,
this
.
options
.
duration
):
this
.
pos
=
b
=
a
,
this
.
now
=
(
this
.
end
-
this
.
start
)
*
b
+
this
.
start
,
this
.
options
.
step
&&
this
.
options
.
step
.
call
(
this
.
elem
,
this
.
now
,
this
),
c
&&
c
.
set
?
c
.
set
(
this
):
_a
.
propHooks
.
_default
.
set
(
this
),
this
}},
_a
.
prototype
.
init
.
prototype
=
_a
.
prototype
,
_a
.
propHooks
=
{
_default
:{
get
:
function
(
a
){
var
b
;
return
1
!==
a
.
elem
.
nodeType
||
null
!=
a
.
elem
[
a
.
prop
]
&&
null
==
a
.
elem
.
style
[
a
.
prop
]?
a
.
elem
[
a
.
prop
]:(
b
=
r
.
css
(
a
.
elem
,
a
.
prop
,
""
),
b
&&
"
auto
"
!==
b
?
b
:
0
)},
set
:
function
(
a
){
r
.
fx
.
step
[
a
.
prop
]?
r
.
fx
.
step
[
a
.
prop
](
a
):
1
!==
a
.
elem
.
nodeType
||
null
==
a
.
elem
.
style
[
r
.
cssProps
[
a
.
prop
]]
&&!
r
.
cssHooks
[
a
.
prop
]?
a
.
elem
[
a
.
prop
]
=
a
.
now
:
r
.
style
(
a
.
elem
,
a
.
prop
,
a
.
now
+
a
.
unit
)}}},
_a
.
propHooks
.
scrollTop
=
_a
.
propHooks
.
scrollLeft
=
{
set
:
function
(
a
){
a
.
elem
.
nodeType
&&
a
.
elem
.
parentNode
&&
(
a
.
elem
[
a
.
prop
]
=
a
.
now
)}},
r
.
easing
=
{
linear
:
function
(
a
){
return
a
},
swing
:
function
(
a
){
return
.
5
-
Math
.
cos
(
a
*
Math
.
PI
)
/
2
},
_default
:
"
swing
"
},
r
.
fx
=
_a
.
prototype
.
init
,
r
.
fx
.
step
=
{};
var
ab
,
bb
,
cb
=
/^
(?:
toggle|show|hide
)
$/
,
db
=
/queueHooks$/
;
function
eb
(){
bb
&&
(
d
.
hidden
===!
1
&&
a
.
requestAnimationFrame
?
a
.
requestAnimationFrame
(
eb
):
a
.
setTimeout
(
eb
,
r
.
fx
.
interval
),
r
.
fx
.
tick
())}
function
fb
(){
return
a
.
setTimeout
(
function
(){
ab
=
void
0
}),
ab
=
r
.
now
()}
function
gb
(
a
,
b
){
var
c
,
d
=
0
,
e
=
{
height
:
a
};
for
(
b
=
b
?
1
:
0
;
d
<
4
;
d
+=
2
-
b
)
c
=
ca
[
d
],
e
[
"
margin
"
+
c
]
=
e
[
"
padding
"
+
c
]
=
a
;
return
b
&&
(
e
.
opacity
=
e
.
width
=
a
),
e
}
function
hb
(
a
,
b
,
c
){
for
(
var
d
,
e
=
(
kb
.
tweeners
[
b
]
||
[]).
concat
(
kb
.
tweeners
[
"
*
"
]),
f
=
0
,
g
=
e
.
length
;
f
<
g
;
f
++
)
if
(
d
=
e
[
f
].
call
(
c
,
b
,
a
))
return
d
}
function
ib
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
=
"
width
"
in
b
||
"
height
"
in
b
,
m
=
this
,
n
=
{},
o
=
a
.
style
,
p
=
a
.
nodeType
&&
da
(
a
),
q
=
W
.
get
(
a
,
"
fxshow
"
);
c
.
queue
||
(
g
=
r
.
_queueHooks
(
a
,
"
fx
"
),
null
==
g
.
unqueued
&&
(
g
.
unqueued
=
0
,
h
=
g
.
empty
.
fire
,
g
.
empty
.
fire
=
function
(){
g
.
unqueued
||
h
()}),
g
.
unqueued
++
,
m
.
always
(
function
(){
m
.
always
(
function
(){
g
.
unqueued
--
,
r
.
queue
(
a
,
"
fx
"
).
length
||
g
.
empty
.
fire
()})}));
for
(
d
in
b
)
if
(
e
=
b
[
d
],
cb
.
test
(
e
)){
if
(
delete
b
[
d
],
f
=
f
||
"
toggle
"
===
e
,
e
===
(
p
?
"
hide
"
:
"
show
"
)){
if
(
"
show
"
!==
e
||!
q
||
void
0
===
q
[
d
])
continue
;
p
=!
0
}
n
[
d
]
=
q
&&
q
[
d
]
||
r
.
style
(
a
,
d
)}
if
(
i
=!
r
.
isEmptyObject
(
b
),
i
||!
r
.
isEmptyObject
(
n
)){
l
&&
1
===
a
.
nodeType
&&
(
c
.
overflow
=
[
o
.
overflow
,
o
.
overflowX
,
o
.
overflowY
],
j
=
q
&&
q
.
display
,
null
==
j
&&
(
j
=
W
.
get
(
a
,
"
display
"
)),
k
=
r
.
css
(
a
,
"
display
"
),
"
none
"
===
k
&&
(
j
?
k
=
j
:(
ia
([
a
],
!
0
),
j
=
a
.
style
.
display
||
j
,
k
=
r
.
css
(
a
,
"
display
"
),
ia
([
a
]))),(
"
inline
"
===
k
||
"
inline-block
"
===
k
&&
null
!=
j
)
&&
"
none
"
===
r
.
css
(
a
,
"
float
"
)
&&
(
i
||
(
m
.
done
(
function
(){
o
.
display
=
j
}),
null
==
j
&&
(
k
=
o
.
display
,
j
=
"
none
"
===
k
?
""
:
k
)),
o
.
display
=
"
inline-block
"
)),
c
.
overflow
&&
(
o
.
overflow
=
"
hidden
"
,
m
.
always
(
function
(){
o
.
overflow
=
c
.
overflow
[
0
],
o
.
overflowX
=
c
.
overflow
[
1
],
o
.
overflowY
=
c
.
overflow
[
2
]})),
i
=!
1
;
for
(
d
in
n
)
i
||
(
q
?
"
hidden
"
in
q
&&
(
p
=
q
.
hidden
):
q
=
W
.
access
(
a
,
"
fxshow
"
,{
display
:
j
}),
f
&&
(
q
.
hidden
=!
p
),
p
&&
ia
([
a
],
!
0
),
m
.
done
(
function
(){
p
||
ia
([
a
]),
W
.
remove
(
a
,
"
fxshow
"
);
for
(
d
in
n
)
r
.
style
(
a
,
d
,
n
[
d
])})),
i
=
hb
(
p
?
q
[
d
]:
0
,
d
,
m
),
d
in
q
||
(
q
[
d
]
=
i
.
start
,
p
&&
(
i
.
end
=
i
.
start
,
i
.
start
=
0
))}}
function
jb
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
;
for
(
c
in
a
)
if
(
d
=
r
.
camelCase
(
c
),
e
=
b
[
d
],
f
=
a
[
c
],
Array
.
isArray
(
f
)
&&
(
e
=
f
[
1
],
f
=
a
[
c
]
=
f
[
0
]),
c
!==
d
&&
(
a
[
d
]
=
f
,
delete
a
[
c
]),
g
=
r
.
cssHooks
[
d
],
g
&&
"
expand
"
in
g
){
f
=
g
.
expand
(
f
),
delete
a
[
d
];
for
(
c
in
f
)
c
in
a
||
(
a
[
c
]
=
f
[
c
],
b
[
c
]
=
e
)}
else
b
[
d
]
=
e
}
function
kb
(
a
,
b
,
c
){
var
d
,
e
,
f
=
0
,
g
=
kb
.
prefilters
.
length
,
h
=
r
.
Deferred
().
always
(
function
(){
delete
i
.
elem
}),
i
=
function
(){
if
(
e
)
return
!
1
;
for
(
var
b
=
ab
||
fb
(),
c
=
Math
.
max
(
0
,
j
.
startTime
+
j
.
duration
-
b
),
d
=
c
/
j
.
duration
||
0
,
f
=
1
-
d
,
g
=
0
,
i
=
j
.
tweens
.
length
;
g
<
i
;
g
++
)
j
.
tweens
[
g
].
run
(
f
);
return
h
.
notifyWith
(
a
,[
j
,
f
,
c
]),
f
<
1
&&
i
?
c
:(
i
||
h
.
notifyWith
(
a
,[
j
,
1
,
0
]),
h
.
resolveWith
(
a
,[
j
]),
!
1
)},
j
=
h
.
promise
({
elem
:
a
,
props
:
r
.
extend
({},
b
),
opts
:
r
.
extend
(
!
0
,{
specialEasing
:{},
easing
:
r
.
easing
.
_default
},
c
),
originalProperties
:
b
,
originalOptions
:
c
,
startTime
:
ab
||
fb
(),
duration
:
c
.
duration
,
tweens
:[],
createTween
:
function
(
b
,
c
){
var
d
=
r
.
Tween
(
a
,
j
.
opts
,
b
,
c
,
j
.
opts
.
specialEasing
[
b
]
||
j
.
opts
.
easing
);
return
j
.
tweens
.
push
(
d
),
d
},
stop
:
function
(
b
){
var
c
=
0
,
d
=
b
?
j
.
tweens
.
length
:
0
;
if
(
e
)
return
this
;
for
(
e
=!
0
;
c
<
d
;
c
++
)
j
.
tweens
[
c
].
run
(
1
);
return
b
?(
h
.
notifyWith
(
a
,[
j
,
1
,
0
]),
h
.
resolveWith
(
a
,[
j
,
b
])):
h
.
rejectWith
(
a
,[
j
,
b
]),
this
}}),
k
=
j
.
props
;
for
(
jb
(
k
,
j
.
opts
.
specialEasing
);
f
<
g
;
f
++
)
if
(
d
=
kb
.
prefilters
[
f
].
call
(
j
,
a
,
k
,
j
.
opts
))
return
r
.
isFunction
(
d
.
stop
)
&&
(
r
.
_queueHooks
(
j
.
elem
,
j
.
opts
.
queue
).
stop
=
r
.
proxy
(
d
.
stop
,
d
)),
d
;
return
r
.
map
(
k
,
hb
,
j
),
r
.
isFunction
(
j
.
opts
.
start
)
&&
j
.
opts
.
start
.
call
(
a
,
j
),
j
.
progress
(
j
.
opts
.
progress
).
done
(
j
.
opts
.
done
,
j
.
opts
.
complete
).
fail
(
j
.
opts
.
fail
).
always
(
j
.
opts
.
always
),
r
.
fx
.
timer
(
r
.
extend
(
i
,{
elem
:
a
,
anim
:
j
,
queue
:
j
.
opts
.
queue
})),
j
}
r
.
Animation
=
r
.
extend
(
kb
,{
tweeners
:{
"
*
"
:[
function
(
a
,
b
){
var
c
=
this
.
createTween
(
a
,
b
);
return
fa
(
c
.
elem
,
a
,
ba
.
exec
(
b
),
c
),
c
}]},
tweener
:
function
(
a
,
b
){
r
.
isFunction
(
a
)?(
b
=
a
,
a
=
[
"
*
"
]):
a
=
a
.
match
(
L
);
for
(
var
c
,
d
=
0
,
e
=
a
.
length
;
d
<
e
;
d
++
)
c
=
a
[
d
],
kb
.
tweeners
[
c
]
=
kb
.
tweeners
[
c
]
||
[],
kb
.
tweeners
[
c
].
unshift
(
b
)},
prefilters
:[
ib
],
prefilter
:
function
(
a
,
b
){
b
?
kb
.
prefilters
.
unshift
(
a
):
kb
.
prefilters
.
push
(
a
)}}),
r
.
speed
=
function
(
a
,
b
,
c
){
var
d
=
a
&&
"
object
"
==
typeof
a
?
r
.
extend
({},
a
):{
complete
:
c
||!
c
&&
b
||
r
.
isFunction
(
a
)
&&
a
,
duration
:
a
,
easing
:
c
&&
b
||
b
&&!
r
.
isFunction
(
b
)
&&
b
};
return
r
.
fx
.
off
?
d
.
duration
=
0
:
"
number
"
!=
typeof
d
.
duration
&&
(
d
.
duration
in
r
.
fx
.
speeds
?
d
.
duration
=
r
.
fx
.
speeds
[
d
.
duration
]:
d
.
duration
=
r
.
fx
.
speeds
.
_default
),
null
!=
d
.
queue
&&
d
.
queue
!==!
0
||
(
d
.
queue
=
"
fx
"
),
d
.
old
=
d
.
complete
,
d
.
complete
=
function
(){
r
.
isFunction
(
d
.
old
)
&&
d
.
old
.
call
(
this
),
d
.
queue
&&
r
.
dequeue
(
this
,
d
.
queue
)},
d
},
r
.
fn
.
extend
({
fadeTo
:
function
(
a
,
b
,
c
,
d
){
return
this
.
filter
(
da
).
css
(
"
opacity
"
,
0
).
show
().
end
().
animate
({
opacity
:
b
},
a
,
c
,
d
)},
animate
:
function
(
a
,
b
,
c
,
d
){
var
e
=
r
.
isEmptyObject
(
a
),
f
=
r
.
speed
(
b
,
c
,
d
),
g
=
function
(){
var
b
=
kb
(
this
,
r
.
extend
({},
a
),
f
);(
e
||
W
.
get
(
this
,
"
finish
"
))
&&
b
.
stop
(
!
0
)};
return
g
.
finish
=
g
,
e
||
f
.
queue
===!
1
?
this
.
each
(
g
):
this
.
queue
(
f
.
queue
,
g
)},
stop
:
function
(
a
,
b
,
c
){
var
d
=
function
(
a
){
var
b
=
a
.
stop
;
delete
a
.
stop
,
b
(
c
)};
return
"
string
"
!=
typeof
a
&&
(
c
=
b
,
b
=
a
,
a
=
void
0
),
b
&&
a
!==!
1
&&
this
.
queue
(
a
||
"
fx
"
,[]),
this
.
each
(
function
(){
var
b
=!
0
,
e
=
null
!=
a
&&
a
+
"
queueHooks
"
,
f
=
r
.
timers
,
g
=
W
.
get
(
this
);
if
(
e
)
g
[
e
]
&&
g
[
e
].
stop
&&
d
(
g
[
e
]);
else
for
(
e
in
g
)
g
[
e
]
&&
g
[
e
].
stop
&&
db
.
test
(
e
)
&&
d
(
g
[
e
]);
for
(
e
=
f
.
length
;
e
--
;)
f
[
e
].
elem
!==
this
||
null
!=
a
&&
f
[
e
].
queue
!==
a
||
(
f
[
e
].
anim
.
stop
(
c
),
b
=!
1
,
f
.
splice
(
e
,
1
));
!
b
&&
c
||
r
.
dequeue
(
this
,
a
)})},
finish
:
function
(
a
){
return
a
!==!
1
&&
(
a
=
a
||
"
fx
"
),
this
.
each
(
function
(){
var
b
,
c
=
W
.
get
(
this
),
d
=
c
[
a
+
"
queue
"
],
e
=
c
[
a
+
"
queueHooks
"
],
f
=
r
.
timers
,
g
=
d
?
d
.
length
:
0
;
for
(
c
.
finish
=!
0
,
r
.
queue
(
this
,
a
,[]),
e
&&
e
.
stop
&&
e
.
stop
.
call
(
this
,
!
0
),
b
=
f
.
length
;
b
--
;)
f
[
b
].
elem
===
this
&&
f
[
b
].
queue
===
a
&&
(
f
[
b
].
anim
.
stop
(
!
0
),
f
.
splice
(
b
,
1
));
for
(
b
=
0
;
b
<
g
;
b
++
)
d
[
b
]
&&
d
[
b
].
finish
&&
d
[
b
].
finish
.
call
(
this
);
delete
c
.
finish
})}}),
r
.
each
([
"
toggle
"
,
"
show
"
,
"
hide
"
],
function
(
a
,
b
){
var
c
=
r
.
fn
[
b
];
r
.
fn
[
b
]
=
function
(
a
,
d
,
e
){
return
null
==
a
||
"
boolean
"
==
typeof
a
?
c
.
apply
(
this
,
arguments
):
this
.
animate
(
gb
(
b
,
!
0
),
a
,
d
,
e
)}}),
r
.
each
({
slideDown
:
gb
(
"
show
"
),
slideUp
:
gb
(
"
hide
"
),
slideToggle
:
gb
(
"
toggle
"
),
fadeIn
:{
opacity
:
"
show
"
},
fadeOut
:{
opacity
:
"
hide
"
},
fadeToggle
:{
opacity
:
"
toggle
"
}},
function
(
a
,
b
){
r
.
fn
[
a
]
=
function
(
a
,
c
,
d
){
return
this
.
animate
(
b
,
a
,
c
,
d
)}}),
r
.
timers
=
[],
r
.
fx
.
tick
=
function
(){
var
a
,
b
=
0
,
c
=
r
.
timers
;
for
(
ab
=
r
.
now
();
b
<
c
.
length
;
b
++
)
a
=
c
[
b
],
a
()
||
c
[
b
]
!==
a
||
c
.
splice
(
b
--
,
1
);
c
.
length
||
r
.
fx
.
stop
(),
ab
=
void
0
},
r
.
fx
.
timer
=
function
(
a
){
r
.
timers
.
push
(
a
),
r
.
fx
.
start
()},
r
.
fx
.
interval
=
13
,
r
.
fx
.
start
=
function
(){
bb
||
(
bb
=!
0
,
eb
())},
r
.
fx
.
stop
=
function
(){
bb
=
null
},
r
.
fx
.
speeds
=
{
slow
:
600
,
fast
:
200
,
_default
:
400
},
r
.
fn
.
delay
=
function
(
b
,
c
){
return
b
=
r
.
fx
?
r
.
fx
.
speeds
[
b
]
||
b
:
b
,
c
=
c
||
"
fx
"
,
this
.
queue
(
c
,
function
(
c
,
d
){
var
e
=
a
.
setTimeout
(
c
,
b
);
d
.
stop
=
function
(){
a
.
clearTimeout
(
e
)}})},
function
(){
var
a
=
d
.
createElement
(
"
input
"
),
b
=
d
.
createElement
(
"
select
"
),
c
=
b
.
appendChild
(
d
.
createElement
(
"
option
"
));
a
.
type
=
"
checkbox
"
,
o
.
checkOn
=
""
!==
a
.
value
,
o
.
optSelected
=
c
.
selected
,
a
=
d
.
createElement
(
"
input
"
),
a
.
value
=
"
t
"
,
a
.
type
=
"
radio
"
,
o
.
radioValue
=
"
t
"
===
a
.
value
}();
var
lb
,
mb
=
r
.
expr
.
attrHandle
;
r
.
fn
.
extend
({
attr
:
function
(
a
,
b
){
return
T
(
this
,
r
.
attr
,
a
,
b
,
arguments
.
length
>
1
)},
removeAttr
:
function
(
a
){
return
this
.
each
(
function
(){
r
.
removeAttr
(
this
,
a
)})}}),
r
.
extend
({
attr
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
a
.
nodeType
;
if
(
3
!==
f
&&
8
!==
f
&&
2
!==
f
)
return
"
undefined
"
==
typeof
a
.
getAttribute
?
r
.
prop
(
a
,
b
,
c
):(
1
===
f
&&
r
.
isXMLDoc
(
a
)
||
(
e
=
r
.
attrHooks
[
b
.
toLowerCase
()]
||
(
r
.
expr
.
match
.
bool
.
test
(
b
)?
lb
:
void
0
)),
void
0
!==
c
?
null
===
c
?
void
r
.
removeAttr
(
a
,
b
):
e
&&
"
set
"
in
e
&&
void
0
!==
(
d
=
e
.
set
(
a
,
c
,
b
))?
d
:(
a
.
setAttribute
(
b
,
c
+
""
),
c
):
e
&&
"
get
"
in
e
&&
null
!==
(
d
=
e
.
get
(
a
,
b
))?
d
:(
d
=
r
.
find
.
attr
(
a
,
b
),
null
==
d
?
void
0
:
d
))},
attrHooks
:{
type
:{
set
:
function
(
a
,
b
){
if
(
!
o
.
radioValue
&&
"
radio
"
===
b
&&
B
(
a
,
"
input
"
)){
var
c
=
a
.
value
;
return
a
.
setAttribute
(
"
type
"
,
b
),
c
&&
(
a
.
value
=
c
),
b
}}}},
removeAttr
:
function
(
a
,
b
){
var
c
,
d
=
0
,
e
=
b
&&
b
.
match
(
L
);
if
(
e
&&
1
===
a
.
nodeType
)
while
(
c
=
e
[
d
++
])
a
.
removeAttribute
(
c
)}}),
lb
=
{
set
:
function
(
a
,
b
,
c
){
return
b
===!
1
?
r
.
removeAttr
(
a
,
c
):
a
.
setAttribute
(
c
,
c
),
c
}},
r
.
each
(
r
.
expr
.
match
.
bool
.
source
.
match
(
/
\w
+/g
),
function
(
a
,
b
){
var
c
=
mb
[
b
]
||
r
.
find
.
attr
;
mb
[
b
]
=
function
(
a
,
b
,
d
){
var
e
,
f
,
g
=
b
.
toLowerCase
();
return
d
||
(
f
=
mb
[
g
],
mb
[
g
]
=
e
,
e
=
null
!=
c
(
a
,
b
,
d
)?
g
:
null
,
mb
[
g
]
=
f
),
e
}});
var
nb
=
/^
(?:
input|select|textarea|button
)
$/i
,
ob
=
/^
(?:
a|area
)
$/i
;
r
.
fn
.
extend
({
prop
:
function
(
a
,
b
){
return
T
(
this
,
r
.
prop
,
a
,
b
,
arguments
.
length
>
1
)},
removeProp
:
function
(
a
){
return
this
.
each
(
function
(){
delete
this
[
r
.
propFix
[
a
]
||
a
]})}}),
r
.
extend
({
prop
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
a
.
nodeType
;
if
(
3
!==
f
&&
8
!==
f
&&
2
!==
f
)
return
1
===
f
&&
r
.
isXMLDoc
(
a
)
||
(
b
=
r
.
propFix
[
b
]
||
b
,
e
=
r
.
propHooks
[
b
]),
void
0
!==
c
?
e
&&
"
set
"
in
e
&&
void
0
!==
(
d
=
e
.
set
(
a
,
c
,
b
))?
d
:
a
[
b
]
=
c
:
e
&&
"
get
"
in
e
&&
null
!==
(
d
=
e
.
get
(
a
,
b
))?
d
:
a
[
b
]},
propHooks
:{
tabIndex
:{
get
:
function
(
a
){
var
b
=
r
.
find
.
attr
(
a
,
"
tabindex
"
);
return
b
?
parseInt
(
b
,
10
):
nb
.
test
(
a
.
nodeName
)
||
ob
.
test
(
a
.
nodeName
)
&&
a
.
href
?
0
:
-
1
}}},
propFix
:{
"
for
"
:
"
htmlFor
"
,
"
class
"
:
"
className
"
}}),
o
.
optSelected
||
(
r
.
propHooks
.
selected
=
{
get
:
function
(
a
){
var
b
=
a
.
parentNode
;
return
b
&&
b
.
parentNode
&&
b
.
parentNode
.
selectedIndex
,
null
},
set
:
function
(
a
){
var
b
=
a
.
parentNode
;
b
&&
(
b
.
selectedIndex
,
b
.
parentNode
&&
b
.
parentNode
.
selectedIndex
)}}),
r
.
each
([
"
tabIndex
"
,
"
readOnly
"
,
"
maxLength
"
,
"
cellSpacing
"
,
"
cellPadding
"
,
"
rowSpan
"
,
"
colSpan
"
,
"
useMap
"
,
"
frameBorder
"
,
"
contentEditable
"
],
function
(){
r
.
propFix
[
this
.
toLowerCase
()]
=
this
});
function
pb
(
a
){
var
b
=
a
.
match
(
L
)
||
[];
return
b
.
join
(
"
"
)}
function
qb
(
a
){
return
a
.
getAttribute
&&
a
.
getAttribute
(
"
class
"
)
||
""
}
r
.
fn
.
extend
({
addClass
:
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
=
0
;
if
(
r
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
r
(
this
).
addClass
(
a
.
call
(
this
,
b
,
qb
(
this
)))});
if
(
"
string
"
==
typeof
a
&&
a
){
b
=
a
.
match
(
L
)
||
[];
while
(
c
=
this
[
i
++
])
if
(
e
=
qb
(
c
),
d
=
1
===
c
.
nodeType
&&
"
"
+
pb
(
e
)
+
"
"
){
g
=
0
;
while
(
f
=
b
[
g
++
])
d
.
indexOf
(
"
"
+
f
+
"
"
)
<
0
&&
(
d
+=
f
+
"
"
);
h
=
pb
(
d
),
e
!==
h
&&
c
.
setAttribute
(
"
class
"
,
h
)}}
return
this
},
removeClass
:
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
=
0
;
if
(
r
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
r
(
this
).
removeClass
(
a
.
call
(
this
,
b
,
qb
(
this
)))});
if
(
!
arguments
.
length
)
return
this
.
attr
(
"
class
"
,
""
);
if
(
"
string
"
==
typeof
a
&&
a
){
b
=
a
.
match
(
L
)
||
[];
while
(
c
=
this
[
i
++
])
if
(
e
=
qb
(
c
),
d
=
1
===
c
.
nodeType
&&
"
"
+
pb
(
e
)
+
"
"
){
g
=
0
;
while
(
f
=
b
[
g
++
])
while
(
d
.
indexOf
(
"
"
+
f
+
"
"
)
>-
1
)
d
=
d
.
replace
(
"
"
+
f
+
"
"
,
"
"
);
h
=
pb
(
d
),
e
!==
h
&&
c
.
setAttribute
(
"
class
"
,
h
)}}
return
this
},
toggleClass
:
function
(
a
,
b
){
var
c
=
typeof
a
;
return
"
boolean
"
==
typeof
b
&&
"
string
"
===
c
?
b
?
this
.
addClass
(
a
):
this
.
removeClass
(
a
):
r
.
isFunction
(
a
)?
this
.
each
(
function
(
c
){
r
(
this
).
toggleClass
(
a
.
call
(
this
,
c
,
qb
(
this
),
b
),
b
)}):
this
.
each
(
function
(){
var
b
,
d
,
e
,
f
;
if
(
"
string
"
===
c
){
d
=
0
,
e
=
r
(
this
),
f
=
a
.
match
(
L
)
||
[];
while
(
b
=
f
[
d
++
])
e
.
hasClass
(
b
)?
e
.
removeClass
(
b
):
e
.
addClass
(
b
)}
else
void
0
!==
a
&&
"
boolean
"
!==
c
||
(
b
=
qb
(
this
),
b
&&
W
.
set
(
this
,
"
__className__
"
,
b
),
this
.
setAttribute
&&
this
.
setAttribute
(
"
class
"
,
b
||
a
===!
1
?
""
:
W
.
get
(
this
,
"
__className__
"
)
||
""
))})},
hasClass
:
function
(
a
){
var
b
,
c
,
d
=
0
;
b
=
"
"
+
a
+
"
"
;
while
(
c
=
this
[
d
++
])
if
(
1
===
c
.
nodeType
&&
(
"
"
+
pb
(
qb
(
c
))
+
"
"
).
indexOf
(
b
)
>-
1
)
return
!
0
;
return
!
1
}});
var
rb
=
/
\r
/g
;
r
.
fn
.
extend
({
val
:
function
(
a
){
var
b
,
c
,
d
,
e
=
this
[
0
];{
if
(
arguments
.
length
)
return
d
=
r
.
isFunction
(
a
),
this
.
each
(
function
(
c
){
var
e
;
1
===
this
.
nodeType
&&
(
e
=
d
?
a
.
call
(
this
,
c
,
r
(
this
).
val
()):
a
,
null
==
e
?
e
=
""
:
"
number
"
==
typeof
e
?
e
+=
""
:
Array
.
isArray
(
e
)
&&
(
e
=
r
.
map
(
e
,
function
(
a
){
return
null
==
a
?
""
:
a
+
""
})),
b
=
r
.
valHooks
[
this
.
type
]
||
r
.
valHooks
[
this
.
nodeName
.
toLowerCase
()],
b
&&
"
set
"
in
b
&&
void
0
!==
b
.
set
(
this
,
e
,
"
value
"
)
||
(
this
.
value
=
e
))});
if
(
e
)
return
b
=
r
.
valHooks
[
e
.
type
]
||
r
.
valHooks
[
e
.
nodeName
.
toLowerCase
()],
b
&&
"
get
"
in
b
&&
void
0
!==
(
c
=
b
.
get
(
e
,
"
value
"
))?
c
:(
c
=
e
.
value
,
"
string
"
==
typeof
c
?
c
.
replace
(
rb
,
""
):
null
==
c
?
""
:
c
)}}}),
r
.
extend
({
valHooks
:{
option
:{
get
:
function
(
a
){
var
b
=
r
.
find
.
attr
(
a
,
"
value
"
);
return
null
!=
b
?
b
:
pb
(
r
.
text
(
a
))}},
select
:{
get
:
function
(
a
){
var
b
,
c
,
d
,
e
=
a
.
options
,
f
=
a
.
selectedIndex
,
g
=
"
select-one
"
===
a
.
type
,
h
=
g
?
null
:[],
i
=
g
?
f
+
1
:
e
.
length
;
for
(
d
=
f
<
0
?
i
:
g
?
f
:
0
;
d
<
i
;
d
++
)
if
(
c
=
e
[
d
],(
c
.
selected
||
d
===
f
)
&&!
c
.
disabled
&&
(
!
c
.
parentNode
.
disabled
||!
B
(
c
.
parentNode
,
"
optgroup
"
))){
if
(
b
=
r
(
c
).
val
(),
g
)
return
b
;
h
.
push
(
b
)}
return
h
},
set
:
function
(
a
,
b
){
var
c
,
d
,
e
=
a
.
options
,
f
=
r
.
makeArray
(
b
),
g
=
e
.
length
;
while
(
g
--
)
d
=
e
[
g
],(
d
.
selected
=
r
.
inArray
(
r
.
valHooks
.
option
.
get
(
d
),
f
)
>-
1
)
&&
(
c
=!
0
);
return
c
||
(
a
.
selectedIndex
=-
1
),
f
}}}}),
r
.
each
([
"
radio
"
,
"
checkbox
"
],
function
(){
r
.
valHooks
[
this
]
=
{
set
:
function
(
a
,
b
){
if
(
Array
.
isArray
(
b
))
return
a
.
checked
=
r
.
inArray
(
r
(
a
).
val
(),
b
)
>-
1
}},
o
.
checkOn
||
(
r
.
valHooks
[
this
].
get
=
function
(
a
){
return
null
===
a
.
getAttribute
(
"
value
"
)?
"
on
"
:
a
.
value
})});
var
sb
=
/^
(?:
focusinfocus|focusoutblur
)
$/
;
r
.
extend
(
r
.
event
,{
trigger
:
function
(
b
,
c
,
e
,
f
){
var
g
,
h
,
i
,
j
,
k
,
m
,
n
,
o
=
[
e
||
d
],
p
=
l
.
call
(
b
,
"
type
"
)?
b
.
type
:
b
,
q
=
l
.
call
(
b
,
"
namespace
"
)?
b
.
namespace
.
split
(
"
.
"
):[];
if
(
h
=
i
=
e
=
e
||
d
,
3
!==
e
.
nodeType
&&
8
!==
e
.
nodeType
&&!
sb
.
test
(
p
+
r
.
event
.
triggered
)
&&
(
p
.
indexOf
(
"
.
"
)
>-
1
&&
(
q
=
p
.
split
(
"
.
"
),
p
=
q
.
shift
(),
q
.
sort
()),
k
=
p
.
indexOf
(
"
:
"
)
<
0
&&
"
on
"
+
p
,
b
=
b
[
r
.
expando
]?
b
:
new
r
.
Event
(
p
,
"
object
"
==
typeof
b
&&
b
),
b
.
isTrigger
=
f
?
2
:
3
,
b
.
namespace
=
q
.
join
(
"
.
"
),
b
.
rnamespace
=
b
.
namespace
?
new
RegExp
(
"
(^|
\\
.)
"
+
q
.
join
(
"
\\
.(?:.*
\\
.|)
"
)
+
"
(
\\
.|$)
"
):
null
,
b
.
result
=
void
0
,
b
.
target
||
(
b
.
target
=
e
),
c
=
null
==
c
?[
b
]:
r
.
makeArray
(
c
,[
b
]),
n
=
r
.
event
.
special
[
p
]
||
{},
f
||!
n
.
trigger
||
n
.
trigger
.
apply
(
e
,
c
)
!==!
1
)){
if
(
!
f
&&!
n
.
noBubble
&&!
r
.
isWindow
(
e
)){
for
(
j
=
n
.
delegateType
||
p
,
sb
.
test
(
j
+
p
)
||
(
h
=
h
.
parentNode
);
h
;
h
=
h
.
parentNode
)
o
.
push
(
h
),
i
=
h
;
i
===
(
e
.
ownerDocument
||
d
)
&&
o
.
push
(
i
.
defaultView
||
i
.
parentWindow
||
a
)}
g
=
0
;
while
((
h
=
o
[
g
++
])
&&!
b
.
isPropagationStopped
())
b
.
type
=
g
>
1
?
j
:
n
.
bindType
||
p
,
m
=
(
W
.
get
(
h
,
"
events
"
)
||
{})[
b
.
type
]
&&
W
.
get
(
h
,
"
handle
"
),
m
&&
m
.
apply
(
h
,
c
),
m
=
k
&&
h
[
k
],
m
&&
m
.
apply
&&
U
(
h
)
&&
(
b
.
result
=
m
.
apply
(
h
,
c
),
b
.
result
===!
1
&&
b
.
preventDefault
());
return
b
.
type
=
p
,
f
||
b
.
isDefaultPrevented
()
||
n
.
_default
&&
n
.
_default
.
apply
(
o
.
pop
(),
c
)
!==!
1
||!
U
(
e
)
||
k
&&
r
.
isFunction
(
e
[
p
])
&&!
r
.
isWindow
(
e
)
&&
(
i
=
e
[
k
],
i
&&
(
e
[
k
]
=
null
),
r
.
event
.
triggered
=
p
,
e
[
p
](),
r
.
event
.
triggered
=
void
0
,
i
&&
(
e
[
k
]
=
i
)),
b
.
result
}},
simulate
:
function
(
a
,
b
,
c
){
var
d
=
r
.
extend
(
new
r
.
Event
,
c
,{
type
:
a
,
isSimulated
:
!
0
});
r
.
event
.
trigger
(
d
,
null
,
b
)}}),
r
.
fn
.
extend
({
trigger
:
function
(
a
,
b
){
return
this
.
each
(
function
(){
r
.
event
.
trigger
(
a
,
b
,
this
)})},
triggerHandler
:
function
(
a
,
b
){
var
c
=
this
[
0
];
if
(
c
)
return
r
.
event
.
trigger
(
a
,
b
,
c
,
!
0
)}}),
r
.
each
(
"
blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu
"
.
split
(
"
"
),
function
(
a
,
b
){
r
.
fn
[
b
]
=
function
(
a
,
c
){
return
arguments
.
length
>
0
?
this
.
on
(
b
,
null
,
a
,
c
):
this
.
trigger
(
b
)}}),
r
.
fn
.
extend
({
hover
:
function
(
a
,
b
){
return
this
.
mouseenter
(
a
).
mouseleave
(
b
||
a
)}}),
o
.
focusin
=
"
onfocusin
"
in
a
,
o
.
focusin
||
r
.
each
({
focus
:
"
focusin
"
,
blur
:
"
focusout
"
},
function
(
a
,
b
){
var
c
=
function
(
a
){
r
.
event
.
simulate
(
b
,
a
.
target
,
r
.
event
.
fix
(
a
))};
r
.
event
.
special
[
b
]
=
{
setup
:
function
(){
var
d
=
this
.
ownerDocument
||
this
,
e
=
W
.
access
(
d
,
b
);
e
||
d
.
addEventListener
(
a
,
c
,
!
0
),
W
.
access
(
d
,
b
,(
e
||
0
)
+
1
)},
teardown
:
function
(){
var
d
=
this
.
ownerDocument
||
this
,
e
=
W
.
access
(
d
,
b
)
-
1
;
e
?
W
.
access
(
d
,
b
,
e
):(
d
.
removeEventListener
(
a
,
c
,
!
0
),
W
.
remove
(
d
,
b
))}}});
var
tb
=
a
.
location
,
ub
=
r
.
now
(),
vb
=
/
\?
/
;
r
.
parseXML
=
function
(
b
){
var
c
;
if
(
!
b
||
"
string
"
!=
typeof
b
)
return
null
;
try
{
c
=
(
new
a
.
DOMParser
).
parseFromString
(
b
,
"
text/xml
"
)}
catch
(
d
){
c
=
void
0
}
return
c
&&!
c
.
getElementsByTagName
(
"
parsererror
"
).
length
||
r
.
error
(
"
Invalid XML:
"
+
b
),
c
};
var
wb
=
/
\[\]
$/
,
xb
=
/
\r?\n
/g
,
yb
=
/^
(?:
submit|button|image|reset|file
)
$/i
,
zb
=
/^
(?:
input|select|textarea|keygen
)
/i
;
function
Ab
(
a
,
b
,
c
,
d
){
var
e
;
if
(
Array
.
isArray
(
b
))
r
.
each
(
b
,
function
(
b
,
e
){
c
||
wb
.
test
(
a
)?
d
(
a
,
e
):
Ab
(
a
+
"
[
"
+
(
"
object
"
==
typeof
e
&&
null
!=
e
?
b
:
""
)
+
"
]
"
,
e
,
c
,
d
)});
else
if
(
c
||
"
object
"
!==
r
.
type
(
b
))
d
(
a
,
b
);
else
for
(
e
in
b
)
Ab
(
a
+
"
[
"
+
e
+
"
]
"
,
b
[
e
],
c
,
d
)}
r
.
param
=
function
(
a
,
b
){
var
c
,
d
=
[],
e
=
function
(
a
,
b
){
var
c
=
r
.
isFunction
(
b
)?
b
():
b
;
d
[
d
.
length
]
=
encodeURIComponent
(
a
)
+
"
=
"
+
encodeURIComponent
(
null
==
c
?
""
:
c
)};
if
(
Array
.
isArray
(
a
)
||
a
.
jquery
&&!
r
.
isPlainObject
(
a
))
r
.
each
(
a
,
function
(){
e
(
this
.
name
,
this
.
value
)});
else
for
(
c
in
a
)
Ab
(
c
,
a
[
c
],
b
,
e
);
return
d
.
join
(
"
&
"
)},
r
.
fn
.
extend
({
serialize
:
function
(){
return
r
.
param
(
this
.
serializeArray
())},
serializeArray
:
function
(){
return
this
.
map
(
function
(){
var
a
=
r
.
prop
(
this
,
"
elements
"
);
return
a
?
r
.
makeArray
(
a
):
this
}).
filter
(
function
(){
var
a
=
this
.
type
;
return
this
.
name
&&!
r
(
this
).
is
(
"
:disabled
"
)
&&
zb
.
test
(
this
.
nodeName
)
&&!
yb
.
test
(
a
)
&&
(
this
.
checked
||!
ja
.
test
(
a
))}).
map
(
function
(
a
,
b
){
var
c
=
r
(
this
).
val
();
return
null
==
c
?
null
:
Array
.
isArray
(
c
)?
r
.
map
(
c
,
function
(
a
){
return
{
name
:
b
.
name
,
value
:
a
.
replace
(
xb
,
"
\r\n
"
)}}):{
name
:
b
.
name
,
value
:
c
.
replace
(
xb
,
"
\r\n
"
)}}).
get
()}});
var
Bb
=
/%20/g
,
Cb
=
/#.*$/
,
Db
=
/
([
?&
])
_=
[^
&
]
*/
,
Eb
=
/^
(
.*
?)
:
[
\t]
*
([^\r\n]
*
)
$/gm
,
Fb
=
/^
(?:
about|app|app-storage|.+-extension|file|res|widget
)
:$/
,
Gb
=
/^
(?:
GET|HEAD
)
$/
,
Hb
=
/^
\/\/
/
,
Ib
=
{},
Jb
=
{},
Kb
=
"
*/
"
.
concat
(
"
*
"
),
Lb
=
d
.
createElement
(
"
a
"
);
Lb
.
href
=
tb
.
href
;
function
Mb
(
a
){
return
function
(
b
,
c
){
"
string
"
!=
typeof
b
&&
(
c
=
b
,
b
=
"
*
"
);
var
d
,
e
=
0
,
f
=
b
.
toLowerCase
().
match
(
L
)
||
[];
if
(
r
.
isFunction
(
c
))
while
(
d
=
f
[
e
++
])
"
+
"
===
d
[
0
]?(
d
=
d
.
slice
(
1
)
||
"
*
"
,(
a
[
d
]
=
a
[
d
]
||
[]).
unshift
(
c
)):(
a
[
d
]
=
a
[
d
]
||
[]).
push
(
c
)}}
function
Nb
(
a
,
b
,
c
,
d
){
var
e
=
{},
f
=
a
===
Jb
;
function
g
(
h
){
var
i
;
return
e
[
h
]
=!
0
,
r
.
each
(
a
[
h
]
||
[],
function
(
a
,
h
){
var
j
=
h
(
b
,
c
,
d
);
return
"
string
"
!=
typeof
j
||
f
||
e
[
j
]?
f
?
!
(
i
=
j
):
void
0
:(
b
.
dataTypes
.
unshift
(
j
),
g
(
j
),
!
1
)}),
i
}
return
g
(
b
.
dataTypes
[
0
])
||!
e
[
"
*
"
]
&&
g
(
"
*
"
)}
function
Ob
(
a
,
b
){
var
c
,
d
,
e
=
r
.
ajaxSettings
.
flatOptions
||
{};
for
(
c
in
b
)
void
0
!==
b
[
c
]
&&
((
e
[
c
]?
a
:
d
||
(
d
=
{}))[
c
]
=
b
[
c
]);
return
d
&&
r
.
extend
(
!
0
,
a
,
d
),
a
}
function
Pb
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
contents
,
i
=
a
.
dataTypes
;
while
(
"
*
"
===
i
[
0
])
i
.
shift
(),
void
0
===
d
&&
(
d
=
a
.
mimeType
||
b
.
getResponseHeader
(
"
Content-Type
"
));
if
(
d
)
for
(
e
in
h
)
if
(
h
[
e
]
&&
h
[
e
].
test
(
d
)){
i
.
unshift
(
e
);
break
}
if
(
i
[
0
]
in
c
)
f
=
i
[
0
];
else
{
for
(
e
in
c
){
if
(
!
i
[
0
]
||
a
.
converters
[
e
+
"
"
+
i
[
0
]]){
f
=
e
;
break
}
g
||
(
g
=
e
)}
f
=
f
||
g
}
if
(
f
)
return
f
!==
i
[
0
]
&&
i
.
unshift
(
f
),
c
[
f
]}
function
Qb
(
a
,
b
,
c
,
d
){
var
e
,
f
,
g
,
h
,
i
,
j
=
{},
k
=
a
.
dataTypes
.
slice
();
if
(
k
[
1
])
for
(
g
in
a
.
converters
)
j
[
g
.
toLowerCase
()]
=
a
.
converters
[
g
];
f
=
k
.
shift
();
while
(
f
)
if
(
a
.
responseFields
[
f
]
&&
(
c
[
a
.
responseFields
[
f
]]
=
b
),
!
i
&&
d
&&
a
.
dataFilter
&&
(
b
=
a
.
dataFilter
(
b
,
a
.
dataType
)),
i
=
f
,
f
=
k
.
shift
())
if
(
"
*
"
===
f
)
f
=
i
;
else
if
(
"
*
"
!==
i
&&
i
!==
f
){
if
(
g
=
j
[
i
+
"
"
+
f
]
||
j
[
"
*
"
+
f
],
!
g
)
for
(
e
in
j
)
if
(
h
=
e
.
split
(
"
"
),
h
[
1
]
===
f
&&
(
g
=
j
[
i
+
"
"
+
h
[
0
]]
||
j
[
"
*
"
+
h
[
0
]])){
g
===!
0
?
g
=
j
[
e
]:
j
[
e
]
!==!
0
&&
(
f
=
h
[
0
],
k
.
unshift
(
h
[
1
]));
break
}
if
(
g
!==!
0
)
if
(
g
&&
a
[
"
throws
"
])
b
=
g
(
b
);
else
try
{
b
=
g
(
b
)}
catch
(
l
){
return
{
state
:
"
parsererror
"
,
error
:
g
?
l
:
"
No conversion from
"
+
i
+
"
to
"
+
f
}}}
return
{
state
:
"
success
"
,
data
:
b
}}
r
.
extend
({
active
:
0
,
lastModified
:{},
etag
:{},
ajaxSettings
:{
url
:
tb
.
href
,
type
:
"
GET
"
,
isLocal
:
Fb
.
test
(
tb
.
protocol
),
global
:
!
0
,
processData
:
!
0
,
async
:
!
0
,
contentType
:
"
application/x-www-form-urlencoded; charset=UTF-8
"
,
accepts
:{
"
*
"
:
Kb
,
text
:
"
text/plain
"
,
html
:
"
text/html
"
,
xml
:
"
application/xml, text/xml
"
,
json
:
"
application/json, text/javascript
"
},
contents
:{
xml
:
/
\b
xml
\b
/
,
html
:
/
\b
html/
,
json
:
/
\b
json
\b
/
},
responseFields
:{
xml
:
"
responseXML
"
,
text
:
"
responseText
"
,
json
:
"
responseJSON
"
},
converters
:{
"
* text
"
:
String
,
"
text html
"
:
!
0
,
"
text json
"
:
JSON
.
parse
,
"
text xml
"
:
r
.
parseXML
},
flatOptions
:{
url
:
!
0
,
context
:
!
0
}},
ajaxSetup
:
function
(
a
,
b
){
return
b
?
Ob
(
Ob
(
a
,
r
.
ajaxSettings
),
b
):
Ob
(
r
.
ajaxSettings
,
a
)},
ajaxPrefilter
:
Mb
(
Ib
),
ajaxTransport
:
Mb
(
Jb
),
ajax
:
function
(
b
,
c
){
"
object
"
==
typeof
b
&&
(
c
=
b
,
b
=
void
0
),
c
=
c
||
{};
var
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
=
r
.
ajaxSetup
({},
c
),
p
=
o
.
context
||
o
,
q
=
o
.
context
&&
(
p
.
nodeType
||
p
.
jquery
)?
r
(
p
):
r
.
event
,
s
=
r
.
Deferred
(),
t
=
r
.
Callbacks
(
"
once memory
"
),
u
=
o
.
statusCode
||
{},
v
=
{},
w
=
{},
x
=
"
canceled
"
,
y
=
{
readyState
:
0
,
getResponseHeader
:
function
(
a
){
var
b
;
if
(
k
){
if
(
!
h
){
h
=
{};
while
(
b
=
Eb
.
exec
(
g
))
h
[
b
[
1
].
toLowerCase
()]
=
b
[
2
]}
b
=
h
[
a
.
toLowerCase
()]}
return
null
==
b
?
null
:
b
},
getAllResponseHeaders
:
function
(){
return
k
?
g
:
null
},
setRequestHeader
:
function
(
a
,
b
){
return
null
==
k
&&
(
a
=
w
[
a
.
toLowerCase
()]
=
w
[
a
.
toLowerCase
()]
||
a
,
v
[
a
]
=
b
),
this
},
overrideMimeType
:
function
(
a
){
return
null
==
k
&&
(
o
.
mimeType
=
a
),
this
},
statusCode
:
function
(
a
){
var
b
;
if
(
a
)
if
(
k
)
y
.
always
(
a
[
y
.
status
]);
else
for
(
b
in
a
)
u
[
b
]
=
[
u
[
b
],
a
[
b
]];
return
this
},
abort
:
function
(
a
){
var
b
=
a
||
x
;
return
e
&&
e
.
abort
(
b
),
A
(
0
,
b
),
this
}};
if
(
s
.
promise
(
y
),
o
.
url
=
((
b
||
o
.
url
||
tb
.
href
)
+
""
).
replace
(
Hb
,
tb
.
protocol
+
"
//
"
),
o
.
type
=
c
.
method
||
c
.
type
||
o
.
method
||
o
.
type
,
o
.
dataTypes
=
(
o
.
dataType
||
"
*
"
).
toLowerCase
().
match
(
L
)
||
[
""
],
null
==
o
.
crossDomain
){
j
=
d
.
createElement
(
"
a
"
);
try
{
j
.
href
=
o
.
url
,
j
.
href
=
j
.
href
,
o
.
crossDomain
=
Lb
.
protocol
+
"
//
"
+
Lb
.
host
!=
j
.
protocol
+
"
//
"
+
j
.
host
}
catch
(
z
){
o
.
crossDomain
=!
0
}}
if
(
o
.
data
&&
o
.
processData
&&
"
string
"
!=
typeof
o
.
data
&&
(
o
.
data
=
r
.
param
(
o
.
data
,
o
.
traditional
)),
Nb
(
Ib
,
o
,
c
,
y
),
k
)
return
y
;
l
=
r
.
event
&&
o
.
global
,
l
&&
0
===
r
.
active
++&&
r
.
event
.
trigger
(
"
ajaxStart
"
),
o
.
type
=
o
.
type
.
toUpperCase
(),
o
.
hasContent
=!
Gb
.
test
(
o
.
type
),
f
=
o
.
url
.
replace
(
Cb
,
""
),
o
.
hasContent
?
o
.
data
&&
o
.
processData
&&
0
===
(
o
.
contentType
||
""
).
indexOf
(
"
application/x-www-form-urlencoded
"
)
&&
(
o
.
data
=
o
.
data
.
replace
(
Bb
,
"
+
"
)):(
n
=
o
.
url
.
slice
(
f
.
length
),
o
.
data
&&
(
f
+=
(
vb
.
test
(
f
)?
"
&
"
:
"
?
"
)
+
o
.
data
,
delete
o
.
data
),
o
.
cache
===!
1
&&
(
f
=
f
.
replace
(
Db
,
"
$1
"
),
n
=
(
vb
.
test
(
f
)?
"
&
"
:
"
?
"
)
+
"
_=
"
+
ub
++
+
n
),
o
.
url
=
f
+
n
),
o
.
ifModified
&&
(
r
.
lastModified
[
f
]
&&
y
.
setRequestHeader
(
"
If-Modified-Since
"
,
r
.
lastModified
[
f
]),
r
.
etag
[
f
]
&&
y
.
setRequestHeader
(
"
If-None-Match
"
,
r
.
etag
[
f
])),(
o
.
data
&&
o
.
hasContent
&&
o
.
contentType
!==!
1
||
c
.
contentType
)
&&
y
.
setRequestHeader
(
"
Content-Type
"
,
o
.
contentType
),
y
.
setRequestHeader
(
"
Accept
"
,
o
.
dataTypes
[
0
]
&&
o
.
accepts
[
o
.
dataTypes
[
0
]]?
o
.
accepts
[
o
.
dataTypes
[
0
]]
+
(
"
*
"
!==
o
.
dataTypes
[
0
]?
"
,
"
+
Kb
+
"
; q=0.01
"
:
""
):
o
.
accepts
[
"
*
"
]);
for
(
m
in
o
.
headers
)
y
.
setRequestHeader
(
m
,
o
.
headers
[
m
]);
if
(
o
.
beforeSend
&&
(
o
.
beforeSend
.
call
(
p
,
y
,
o
)
===!
1
||
k
))
return
y
.
abort
();
if
(
x
=
"
abort
"
,
t
.
add
(
o
.
complete
),
y
.
done
(
o
.
success
),
y
.
fail
(
o
.
error
),
e
=
Nb
(
Jb
,
o
,
c
,
y
)){
if
(
y
.
readyState
=
1
,
l
&&
q
.
trigger
(
"
ajaxSend
"
,[
y
,
o
]),
k
)
return
y
;
o
.
async
&&
o
.
timeout
>
0
&&
(
i
=
a
.
setTimeout
(
function
(){
y
.
abort
(
"
timeout
"
)},
o
.
timeout
));
try
{
k
=!
1
,
e
.
send
(
v
,
A
)}
catch
(
z
){
if
(
k
)
throw
z
;
A
(
-
1
,
z
)}}
else
A
(
-
1
,
"
No Transport
"
);
function
A
(
b
,
c
,
d
,
h
){
var
j
,
m
,
n
,
v
,
w
,
x
=
c
;
k
||
(
k
=!
0
,
i
&&
a
.
clearTimeout
(
i
),
e
=
void
0
,
g
=
h
||
""
,
y
.
readyState
=
b
>
0
?
4
:
0
,
j
=
b
>=
200
&&
b
<
300
||
304
===
b
,
d
&&
(
v
=
Pb
(
o
,
y
,
d
)),
v
=
Qb
(
o
,
v
,
y
,
j
),
j
?(
o
.
ifModified
&&
(
w
=
y
.
getResponseHeader
(
"
Last-Modified
"
),
w
&&
(
r
.
lastModified
[
f
]
=
w
),
w
=
y
.
getResponseHeader
(
"
etag
"
),
w
&&
(
r
.
etag
[
f
]
=
w
)),
204
===
b
||
"
HEAD
"
===
o
.
type
?
x
=
"
nocontent
"
:
304
===
b
?
x
=
"
notmodified
"
:(
x
=
v
.
state
,
m
=
v
.
data
,
n
=
v
.
error
,
j
=!
n
)):(
n
=
x
,
!
b
&&
x
||
(
x
=
"
error
"
,
b
<
0
&&
(
b
=
0
))),
y
.
status
=
b
,
y
.
statusText
=
(
c
||
x
)
+
""
,
j
?
s
.
resolveWith
(
p
,[
m
,
x
,
y
]):
s
.
rejectWith
(
p
,[
y
,
x
,
n
]),
y
.
statusCode
(
u
),
u
=
void
0
,
l
&&
q
.
trigger
(
j
?
"
ajaxSuccess
"
:
"
ajaxError
"
,[
y
,
o
,
j
?
m
:
n
]),
t
.
fireWith
(
p
,[
y
,
x
]),
l
&&
(
q
.
trigger
(
"
ajaxComplete
"
,[
y
,
o
]),
--
r
.
active
||
r
.
event
.
trigger
(
"
ajaxStop
"
)))}
return
y
},
getJSON
:
function
(
a
,
b
,
c
){
return
r
.
get
(
a
,
b
,
c
,
"
json
"
)},
getScript
:
function
(
a
,
b
){
return
r
.
get
(
a
,
void
0
,
b
,
"
script
"
)}}),
r
.
each
([
"
get
"
,
"
post
"
],
function
(
a
,
b
){
r
[
b
]
=
function
(
a
,
c
,
d
,
e
){
return
r
.
isFunction
(
c
)
&&
(
e
=
e
||
d
,
d
=
c
,
c
=
void
0
),
r
.
ajax
(
r
.
extend
({
url
:
a
,
type
:
b
,
dataType
:
e
,
data
:
c
,
success
:
d
},
r
.
isPlainObject
(
a
)
&&
a
))}}),
r
.
_evalUrl
=
function
(
a
){
return
r
.
ajax
({
url
:
a
,
type
:
"
GET
"
,
dataType
:
"
script
"
,
cache
:
!
0
,
async
:
!
1
,
global
:
!
1
,
"
throws
"
:
!
0
})},
r
.
fn
.
extend
({
wrapAll
:
function
(
a
){
var
b
;
return
this
[
0
]
&&
(
r
.
isFunction
(
a
)
&&
(
a
=
a
.
call
(
this
[
0
])),
b
=
r
(
a
,
this
[
0
].
ownerDocument
).
eq
(
0
).
clone
(
!
0
),
this
[
0
].
parentNode
&&
b
.
insertBefore
(
this
[
0
]),
b
.
map
(
function
(){
var
a
=
this
;
while
(
a
.
firstElementChild
)
a
=
a
.
firstElementChild
;
return
a
}).
append
(
this
)),
this
},
wrapInner
:
function
(
a
){
return
r
.
isFunction
(
a
)?
this
.
each
(
function
(
b
){
r
(
this
).
wrapInner
(
a
.
call
(
this
,
b
))}):
this
.
each
(
function
(){
var
b
=
r
(
this
),
c
=
b
.
contents
();
c
.
length
?
c
.
wrapAll
(
a
):
b
.
append
(
a
)})},
wrap
:
function
(
a
){
var
b
=
r
.
isFunction
(
a
);
return
this
.
each
(
function
(
c
){
r
(
this
).
wrapAll
(
b
?
a
.
call
(
this
,
c
):
a
)})},
unwrap
:
function
(
a
){
return
this
.
parent
(
a
).
not
(
"
body
"
).
each
(
function
(){
r
(
this
).
replaceWith
(
this
.
childNodes
)}),
this
}}),
r
.
expr
.
pseudos
.
hidden
=
function
(
a
){
return
!
r
.
expr
.
pseudos
.
visible
(
a
)},
r
.
expr
.
pseudos
.
visible
=
function
(
a
){
return
!!
(
a
.
offsetWidth
||
a
.
offsetHeight
||
a
.
getClientRects
().
length
)},
r
.
ajaxSettings
.
xhr
=
function
(){
try
{
return
new
a
.
XMLHttpRequest
}
catch
(
b
){}};
var
Rb
=
{
0
:
200
,
1223
:
204
},
Sb
=
r
.
ajaxSettings
.
xhr
();
o
.
cors
=!!
Sb
&&
"
withCredentials
"
in
Sb
,
o
.
ajax
=
Sb
=!!
Sb
,
r
.
ajaxTransport
(
function
(
b
){
var
c
,
d
;
if
(
o
.
cors
||
Sb
&&!
b
.
crossDomain
)
return
{
send
:
function
(
e
,
f
){
var
g
,
h
=
b
.
xhr
();
if
(
h
.
open
(
b
.
type
,
b
.
url
,
b
.
async
,
b
.
username
,
b
.
password
),
b
.
xhrFields
)
for
(
g
in
b
.
xhrFields
)
h
[
g
]
=
b
.
xhrFields
[
g
];
b
.
mimeType
&&
h
.
overrideMimeType
&&
h
.
overrideMimeType
(
b
.
mimeType
),
b
.
crossDomain
||
e
[
"
X-Requested-With
"
]
||
(
e
[
"
X-Requested-With
"
]
=
"
XMLHttpRequest
"
);
for
(
g
in
e
)
h
.
setRequestHeader
(
g
,
e
[
g
]);
c
=
function
(
a
){
return
function
(){
c
&&
(
c
=
d
=
h
.
onload
=
h
.
onerror
=
h
.
onabort
=
h
.
onreadystatechange
=
null
,
"
abort
"
===
a
?
h
.
abort
():
"
error
"
===
a
?
"
number
"
!=
typeof
h
.
status
?
f
(
0
,
"
error
"
):
f
(
h
.
status
,
h
.
statusText
):
f
(
Rb
[
h
.
status
]
||
h
.
status
,
h
.
statusText
,
"
text
"
!==
(
h
.
responseType
||
"
text
"
)
||
"
string
"
!=
typeof
h
.
responseText
?{
binary
:
h
.
response
}:{
text
:
h
.
responseText
},
h
.
getAllResponseHeaders
()))}},
h
.
onload
=
c
(),
d
=
h
.
onerror
=
c
(
"
error
"
),
void
0
!==
h
.
onabort
?
h
.
onabort
=
d
:
h
.
onreadystatechange
=
function
(){
4
===
h
.
readyState
&&
a
.
setTimeout
(
function
(){
c
&&
d
()})},
c
=
c
(
"
abort
"
);
try
{
h
.
send
(
b
.
hasContent
&&
b
.
data
||
null
)}
catch
(
i
){
if
(
c
)
throw
i
}},
abort
:
function
(){
c
&&
c
()}}}),
r
.
ajaxPrefilter
(
function
(
a
){
a
.
crossDomain
&&
(
a
.
contents
.
script
=!
1
)}),
r
.
ajaxSetup
({
accepts
:{
script
:
"
text/javascript, application/javascript, application/ecmascript, application/x-ecmascript
"
},
contents
:{
script
:
/
\b(?:
java|ecma
)
script
\b
/
},
converters
:{
"
text script
"
:
function
(
a
){
return
r
.
globalEval
(
a
),
a
}}}),
r
.
ajaxPrefilter
(
"
script
"
,
function
(
a
){
void
0
===
a
.
cache
&&
(
a
.
cache
=!
1
),
a
.
crossDomain
&&
(
a
.
type
=
"
GET
"
)}),
r
.
ajaxTransport
(
"
script
"
,
function
(
a
){
if
(
a
.
crossDomain
){
var
b
,
c
;
return
{
send
:
function
(
e
,
f
){
b
=
r
(
"
<script>
"
).
prop
({
charset
:
a
.
scriptCharset
,
src
:
a
.
url
}).
on
(
"
load error
"
,
c
=
function
(
a
){
b
.
remove
(),
c
=
null
,
a
&&
f
(
"
error
"
===
a
.
type
?
404
:
200
,
a
.
type
)}),
d
.
head
.
appendChild
(
b
[
0
])},
abort
:
function
(){
c
&&
c
()}}}});
var
Tb
=
[],
Ub
=
/
(
=
)\?(?=
&|$
)
|
\?\?
/
;
r
.
ajaxSetup
({
jsonp
:
"
callback
"
,
jsonpCallback
:
function
(){
var
a
=
Tb
.
pop
()
||
r
.
expando
+
"
_
"
+
ub
++
;
return
this
[
a
]
=!
0
,
a
}}),
r
.
ajaxPrefilter
(
"
json jsonp
"
,
function
(
b
,
c
,
d
){
var
e
,
f
,
g
,
h
=
b
.
jsonp
!==!
1
&&
(
Ub
.
test
(
b
.
url
)?
"
url
"
:
"
string
"
==
typeof
b
.
data
&&
0
===
(
b
.
contentType
||
""
).
indexOf
(
"
application/x-www-form-urlencoded
"
)
&&
Ub
.
test
(
b
.
data
)
&&
"
data
"
);
if
(
h
||
"
jsonp
"
===
b
.
dataTypes
[
0
])
return
e
=
b
.
jsonpCallback
=
r
.
isFunction
(
b
.
jsonpCallback
)?
b
.
jsonpCallback
():
b
.
jsonpCallback
,
h
?
b
[
h
]
=
b
[
h
].
replace
(
Ub
,
"
$1
"
+
e
):
b
.
jsonp
!==!
1
&&
(
b
.
url
+=
(
vb
.
test
(
b
.
url
)?
"
&
"
:
"
?
"
)
+
b
.
jsonp
+
"
=
"
+
e
),
b
.
converters
[
"
script json
"
]
=
function
(){
return
g
||
r
.
error
(
e
+
"
was not called
"
),
g
[
0
]},
b
.
dataTypes
[
0
]
=
"
json
"
,
f
=
a
[
e
],
a
[
e
]
=
function
(){
g
=
arguments
},
d
.
always
(
function
(){
void
0
===
f
?
r
(
a
).
removeProp
(
e
):
a
[
e
]
=
f
,
b
[
e
]
&&
(
b
.
jsonpCallback
=
c
.
jsonpCallback
,
Tb
.
push
(
e
)),
g
&&
r
.
isFunction
(
f
)
&&
f
(
g
[
0
]),
g
=
f
=
void
0
}),
"
script
"
}),
o
.
createHTMLDocument
=
function
(){
var
a
=
d
.
implementation
.
createHTMLDocument
(
""
).
body
;
return
a
.
innerHTML
=
"
<form></form><form></form>
"
,
2
===
a
.
childNodes
.
length
}(),
r
.
parseHTML
=
function
(
a
,
b
,
c
){
if
(
"
string
"
!=
typeof
a
)
return
[];
"
boolean
"
==
typeof
b
&&
(
c
=
b
,
b
=!
1
);
var
e
,
f
,
g
;
return
b
||
(
o
.
createHTMLDocument
?(
b
=
d
.
implementation
.
createHTMLDocument
(
""
),
e
=
b
.
createElement
(
"
base
"
),
e
.
href
=
d
.
location
.
href
,
b
.
head
.
appendChild
(
e
)):
b
=
d
),
f
=
C
.
exec
(
a
),
g
=!
c
&&
[],
f
?[
b
.
createElement
(
f
[
1
])]:(
f
=
qa
([
a
],
b
,
g
),
g
&&
g
.
length
&&
r
(
g
).
remove
(),
r
.
merge
([],
f
.
childNodes
))},
r
.
fn
.
load
=
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
=
this
,
h
=
a
.
indexOf
(
"
"
);
return
h
>-
1
&&
(
d
=
pb
(
a
.
slice
(
h
)),
a
=
a
.
slice
(
0
,
h
)),
r
.
isFunction
(
b
)?(
c
=
b
,
b
=
void
0
):
b
&&
"
object
"
==
typeof
b
&&
(
e
=
"
POST
"
),
g
.
length
>
0
&&
r
.
ajax
({
url
:
a
,
type
:
e
||
"
GET
"
,
dataType
:
"
html
"
,
data
:
b
}).
done
(
function
(
a
){
f
=
arguments
,
g
.
html
(
d
?
r
(
"
<div>
"
).
append
(
r
.
parseHTML
(
a
)).
find
(
d
):
a
)}).
always
(
c
&&
function
(
a
,
b
){
g
.
each
(
function
(){
c
.
apply
(
this
,
f
||
[
a
.
responseText
,
b
,
a
])})}),
this
},
r
.
each
([
"
ajaxStart
"
,
"
ajaxStop
"
,
"
ajaxComplete
"
,
"
ajaxError
"
,
"
ajaxSuccess
"
,
"
ajaxSend
"
],
function
(
a
,
b
){
r
.
fn
[
b
]
=
function
(
a
){
return
this
.
on
(
b
,
a
)}}),
r
.
expr
.
pseudos
.
animated
=
function
(
a
){
return
r
.
grep
(
r
.
timers
,
function
(
b
){
return
a
===
b
.
elem
}).
length
},
r
.
offset
=
{
setOffset
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
=
r
.
css
(
a
,
"
position
"
),
l
=
r
(
a
),
m
=
{};
"
static
"
===
k
&&
(
a
.
style
.
position
=
"
relative
"
),
h
=
l
.
offset
(),
f
=
r
.
css
(
a
,
"
top
"
),
i
=
r
.
css
(
a
,
"
left
"
),
j
=
(
"
absolute
"
===
k
||
"
fixed
"
===
k
)
&&
(
f
+
i
).
indexOf
(
"
auto
"
)
>-
1
,
j
?(
d
=
l
.
position
(),
g
=
d
.
top
,
e
=
d
.
left
):(
g
=
parseFloat
(
f
)
||
0
,
e
=
parseFloat
(
i
)
||
0
),
r
.
isFunction
(
b
)
&&
(
b
=
b
.
call
(
a
,
c
,
r
.
extend
({},
h
))),
null
!=
b
.
top
&&
(
m
.
top
=
b
.
top
-
h
.
top
+
g
),
null
!=
b
.
left
&&
(
m
.
left
=
b
.
left
-
h
.
left
+
e
),
"
using
"
in
b
?
b
.
using
.
call
(
a
,
m
):
l
.
css
(
m
)}},
r
.
fn
.
extend
({
offset
:
function
(
a
){
if
(
arguments
.
length
)
return
void
0
===
a
?
this
:
this
.
each
(
function
(
b
){
r
.
offset
.
setOffset
(
this
,
a
,
b
)});
var
b
,
c
,
d
,
e
,
f
=
this
[
0
];
if
(
f
)
return
f
.
getClientRects
().
length
?(
d
=
f
.
getBoundingClientRect
(),
b
=
f
.
ownerDocument
,
c
=
b
.
documentElement
,
e
=
b
.
defaultView
,{
top
:
d
.
top
+
e
.
pageYOffset
-
c
.
clientTop
,
left
:
d
.
left
+
e
.
pageXOffset
-
c
.
clientLeft
}):{
top
:
0
,
left
:
0
}},
position
:
function
(){
if
(
this
[
0
]){
var
a
,
b
,
c
=
this
[
0
],
d
=
{
top
:
0
,
left
:
0
};
return
"
fixed
"
===
r
.
css
(
c
,
"
position
"
)?
b
=
c
.
getBoundingClientRect
():(
a
=
this
.
offsetParent
(),
b
=
this
.
offset
(),
B
(
a
[
0
],
"
html
"
)
||
(
d
=
a
.
offset
()),
d
=
{
top
:
d
.
top
+
r
.
css
(
a
[
0
],
"
borderTopWidth
"
,
!
0
),
left
:
d
.
left
+
r
.
css
(
a
[
0
],
"
borderLeftWidth
"
,
!
0
)}),{
top
:
b
.
top
-
d
.
top
-
r
.
css
(
c
,
"
marginTop
"
,
!
0
),
left
:
b
.
left
-
d
.
left
-
r
.
css
(
c
,
"
marginLeft
"
,
!
0
)}}},
offsetParent
:
function
(){
return
this
.
map
(
function
(){
var
a
=
this
.
offsetParent
;
while
(
a
&&
"
static
"
===
r
.
css
(
a
,
"
position
"
))
a
=
a
.
offsetParent
;
return
a
||
ra
})}}),
r
.
each
({
scrollLeft
:
"
pageXOffset
"
,
scrollTop
:
"
pageYOffset
"
},
function
(
a
,
b
){
var
c
=
"
pageYOffset
"
===
b
;
r
.
fn
[
a
]
=
function
(
d
){
return
T
(
this
,
function
(
a
,
d
,
e
){
var
f
;
return
r
.
isWindow
(
a
)?
f
=
a
:
9
===
a
.
nodeType
&&
(
f
=
a
.
defaultView
),
void
0
===
e
?
f
?
f
[
b
]:
a
[
d
]:
void
(
f
?
f
.
scrollTo
(
c
?
f
.
pageXOffset
:
e
,
c
?
e
:
f
.
pageYOffset
):
a
[
d
]
=
e
)},
a
,
d
,
arguments
.
length
)}}),
r
.
each
([
"
top
"
,
"
left
"
],
function
(
a
,
b
){
r
.
cssHooks
[
b
]
=
Pa
(
o
.
pixelPosition
,
function
(
a
,
c
){
if
(
c
)
return
c
=
Oa
(
a
,
b
),
Ma
.
test
(
c
)?
r
(
a
).
position
()[
b
]
+
"
px
"
:
c
})}),
r
.
each
({
Height
:
"
height
"
,
Width
:
"
width
"
},
function
(
a
,
b
){
r
.
each
({
padding
:
"
inner
"
+
a
,
content
:
b
,
""
:
"
outer
"
+
a
},
function
(
c
,
d
){
r
.
fn
[
d
]
=
function
(
e
,
f
){
var
g
=
arguments
.
length
&&
(
c
||
"
boolean
"
!=
typeof
e
),
h
=
c
||
(
e
===!
0
||
f
===!
0
?
"
margin
"
:
"
border
"
);
return
T
(
this
,
function
(
b
,
c
,
e
){
var
f
;
return
r
.
isWindow
(
b
)?
0
===
d
.
indexOf
(
"
outer
"
)?
b
[
"
inner
"
+
a
]:
b
.
document
.
documentElement
[
"
client
"
+
a
]:
9
===
b
.
nodeType
?(
f
=
b
.
documentElement
,
Math
.
max
(
b
.
body
[
"
scroll
"
+
a
],
f
[
"
scroll
"
+
a
],
b
.
body
[
"
offset
"
+
a
],
f
[
"
offset
"
+
a
],
f
[
"
client
"
+
a
])):
void
0
===
e
?
r
.
css
(
b
,
c
,
h
):
r
.
style
(
b
,
c
,
e
,
h
)},
b
,
g
?
e
:
void
0
,
g
)}})}),
r
.
fn
.
extend
({
bind
:
function
(
a
,
b
,
c
){
return
this
.
on
(
a
,
null
,
b
,
c
)},
unbind
:
function
(
a
,
b
){
return
this
.
off
(
a
,
null
,
b
)},
delegate
:
function
(
a
,
b
,
c
,
d
){
return
this
.
on
(
b
,
a
,
c
,
d
)},
undelegate
:
function
(
a
,
b
,
c
){
return
1
===
arguments
.
length
?
this
.
off
(
a
,
"
**
"
):
this
.
off
(
b
,
a
||
"
**
"
,
c
)}}),
r
.
holdReady
=
function
(
a
){
a
?
r
.
readyWait
++
:
r
.
ready
(
!
0
)},
r
.
isArray
=
Array
.
isArray
,
r
.
parseJSON
=
JSON
.
parse
,
r
.
nodeName
=
B
,
"
function
"
==
typeof
define
&&
define
.
amd
&&
define
(
"
jquery
"
,[],
function
(){
return
r
});
var
Vb
=
a
.
jQuery
,
Wb
=
a
.
$
;
return
r
.
noConflict
=
function
(
b
){
return
a
.
$
===
r
&&
(
a
.
$
=
Wb
),
b
&&
a
.
jQuery
===
r
&&
(
a
.
jQuery
=
Vb
),
r
},
b
||
(
a
.
jQuery
=
a
.
$
=
r
),
r
});
paddlespeech/server/tests/asr/online/web/static/js/recorder/engine/mp3.js
0 → 100644
浏览文件 @
1dc02c72
/*
录音
https://github.com/xiangyuecn/Recorder
src: engine/mp3.js,engine/mp3-engine.js
*/
!
function
(){
"
use strict
"
;
var
i
;
Recorder
.
prototype
.
enc_mp3
=
{
stable
:
!
0
,
testmsg
:
"
采样率范围48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000
"
},
Recorder
.
prototype
.
mp3
=
function
(
a
,
s
,
e
){
var
t
=
this
,
n
=
t
.
set
,
r
=
a
.
length
,
i
=
t
.
mp3_start
(
n
);
if
(
i
)
return
t
.
mp3_encode
(
i
,
a
),
void
t
.
mp3_complete
(
i
,
s
,
e
,
1
);
var
_
=
new
Recorder
.
lamejs
.
Mp3Encoder
(
1
,
n
.
sampleRate
,
n
.
bitRate
),
o
=
[],
l
=
0
,
f
=
0
,
c
=
function
(){
if
(
l
<
r
){
0
<
(
e
=
_
.
encodeBuffer
(
a
.
subarray
(
l
,
l
+
57600
))).
length
&&
(
f
+=
e
.
buffer
.
byteLength
,
o
.
push
(
e
.
buffer
)),
l
+=
57600
,
setTimeout
(
c
)}
else
{
var
e
;
0
<
(
e
=
_
.
flush
()).
length
&&
(
f
+=
e
.
buffer
.
byteLength
,
o
.
push
(
e
.
buffer
));
var
t
=
h
.
fn
(
o
,
f
,
r
,
n
.
sampleRate
);
u
(
t
,
n
),
s
(
new
Blob
(
o
,{
type
:
"
audio/mp3
"
}))}};
c
()},
Recorder
.
BindDestroy
(
"
mp3Worker
"
,
function
(){
console
.
log
(
"
mp3Worker Destroy
"
),
i
&&
i
.
terminate
(),
i
=
null
}),
Recorder
.
prototype
.
mp3_envCheck
=
function
(
e
,
t
){
var
a
=
""
;
return
t
.
takeoffEncodeChunk
&&
(
e
.
canProcess
?
s
()
||
(
a
=
"
当前浏览器版本太低,无法实时处理
"
):
a
=
e
.
envName
+
"
环境不支持实时处理
"
),
a
},
Recorder
.
prototype
.
mp3_start
=
function
(
e
){
return
s
(
e
)};
var
_
=
{
id
:
0
},
s
=
function
(
e
){
var
t
=
i
;
try
{
if
(
!
t
){
var
a
=
"
);wk_lame();var wk_ctxs={};self.onmessage=
"
+
function
(
e
){
var
t
=
e
.
data
,
a
=
wk_ctxs
[
t
.
id
];
if
(
"
init
"
==
t
.
action
)
wk_ctxs
[
t
.
id
]
=
{
sampleRate
:
t
.
sampleRate
,
bitRate
:
t
.
bitRate
,
takeoff
:
t
.
takeoff
,
mp3Size
:
0
,
pcmSize
:
0
,
encArr
:[],
encObj
:
new
wk_lame
.
Mp3Encoder
(
1
,
t
.
sampleRate
,
t
.
bitRate
)};
else
if
(
!
a
)
return
;
switch
(
t
.
action
){
case
"
stop
"
:
a
.
encObj
=
null
,
delete
wk_ctxs
[
t
.
id
];
break
;
case
"
encode
"
:
a
.
pcmSize
+=
t
.
pcm
.
length
,
0
<
(
s
=
a
.
encObj
.
encodeBuffer
(
t
.
pcm
)).
length
&&
(
a
.
takeoff
?
self
.
postMessage
({
action
:
"
takeoff
"
,
id
:
t
.
id
,
chunk
:
s
}):(
a
.
mp3Size
+=
s
.
buffer
.
byteLength
,
a
.
encArr
.
push
(
s
.
buffer
)));
break
;
case
"
complete
"
:
var
s
;
0
<
(
s
=
a
.
encObj
.
flush
()).
length
&&
(
a
.
takeoff
?
self
.
postMessage
({
action
:
"
takeoff
"
,
id
:
t
.
id
,
chunk
:
s
}):(
a
.
mp3Size
+=
s
.
buffer
.
byteLength
,
a
.
encArr
.
push
(
s
.
buffer
)));
var
n
=
wk_mp3TrimFix
.
fn
(
a
.
encArr
,
a
.
mp3Size
,
a
.
pcmSize
,
a
.
sampleRate
);
self
.
postMessage
({
action
:
t
.
action
,
id
:
t
.
id
,
blob
:
new
Blob
(
a
.
encArr
,{
type
:
"
audio/mp3
"
}),
meta
:
n
})}};
a
+=
"
;var wk_mp3TrimFix={rm:
"
+
h
.
rm
+
"
,fn:
"
+
h
.
fn
+
"
}
"
;
var
s
=
Recorder
.
lamejs
.
toString
(),
n
=
(
window
.
URL
||
webkitURL
).
createObjectURL
(
new
Blob
([
"
var wk_lame=(
"
,
s
,
a
],{
type
:
"
text/javascript
"
}));
t
=
new
Worker
(
n
),
setTimeout
(
function
(){(
window
.
URL
||
webkitURL
).
revokeObjectURL
(
n
)},
1
e4
),
t
.
onmessage
=
function
(
e
){
var
t
=
e
.
data
,
a
=
_
[
t
.
id
];
a
&&
(
"
takeoff
"
==
t
.
action
?
a
.
set
.
takeoffEncodeChunk
(
new
Uint8Array
(
t
.
chunk
.
buffer
)):(
a
.
call
&&
a
.
call
(
t
),
a
.
call
=
null
))}}
var
r
=
{
worker
:
t
,
set
:
e
,
takeoffQueue
:[]};
return
e
?(
r
.
id
=++
_
.
id
,
_
[
r
.
id
]
=
r
,
t
.
postMessage
({
action
:
"
init
"
,
id
:
r
.
id
,
sampleRate
:
e
.
sampleRate
,
bitRate
:
e
.
bitRate
,
takeoff
:
!!
e
.
takeoffEncodeChunk
,
x
:
new
Int16Array
(
5
)})):
t
.
postMessage
({
x
:
new
Int16Array
(
5
)}),
i
=
t
,
r
}
catch
(
e
){
return
t
&&
t
.
terminate
(),
console
.
error
(
e
),
null
}};
Recorder
.
prototype
.
mp3_stop
=
function
(
e
){
if
(
e
&&
e
.
worker
){
e
.
worker
.
postMessage
({
action
:
"
stop
"
,
id
:
e
.
id
}),
e
.
worker
=
null
,
delete
_
[
e
.
id
];
var
t
=-
1
;
for
(
var
a
in
_
)
t
++
;
t
&&
console
.
warn
(
"
mp3 worker剩
"
+
t
+
"
个在串行等待
"
)}},
Recorder
.
prototype
.
mp3_encode
=
function
(
e
,
t
){
e
&&
e
.
worker
&&
e
.
worker
.
postMessage
({
action
:
"
encode
"
,
id
:
e
.
id
,
pcm
:
t
})},
Recorder
.
prototype
.
mp3_complete
=
function
(
t
,
a
,
e
,
s
){
var
n
=
this
;
t
&&
t
.
worker
?(
t
.
call
=
function
(
e
){
u
(
e
.
meta
,
t
.
set
),
a
(
e
.
blob
),
s
&&
n
.
mp3_stop
(
t
)},
t
.
worker
.
postMessage
({
action
:
"
complete
"
,
id
:
t
.
id
})):
e
(
"
mp3编码器未打开
"
)},
Recorder
.
mp3ReadMeta
=
function
(
e
,
t
){
var
a
=
"
object
"
==
typeof
window
?
window
.
parseInt
:
self
.
parseInt
,
s
=
new
Uint8Array
(
e
[
0
]
||
[]);
if
(
s
.
length
<
4
)
return
null
;
var
n
=
function
(
e
,
t
){
return
(
"
0000000
"
+
((
t
||
s
)[
e
]
||
0
).
toString
(
2
)).
substr
(
-
8
)},
r
=
n
(
0
)
+
n
(
1
),
i
=
n
(
2
)
+
n
(
3
);
if
(
!
/^1
{11}
/
.
test
(
r
))
return
null
;
var
_
=
{
"
00
"
:
2.5
,
10
:
2
,
11
:
1
}[
r
.
substr
(
11
,
2
)],
o
=
{
"
01
"
:
3
}[
r
.
substr
(
13
,
2
)],
l
=
{
1
:[
44100
,
48
e3
,
32
e3
],
2
:[
22050
,
24
e3
,
16
e3
],
2.5
:[
11025
,
12
e3
,
8
e3
]}[
_
];
l
&&
(
l
=
l
[
a
(
i
.
substr
(
4
,
2
),
2
)]);
var
f
=
[[
0
,
8
,
16
,
24
,
32
,
40
,
48
,
56
,
64
,
80
,
96
,
112
,
128
,
144
,
160
],[
0
,
32
,
40
,
48
,
56
,
64
,
80
,
96
,
112
,
128
,
160
,
192
,
224
,
256
,
320
]][
1
==
_
?
1
:
0
][
a
(
i
.
substr
(
0
,
4
),
2
)];
if
(
!
(
_
&&
o
&&
f
&&
l
))
return
null
;
for
(
var
c
=
Math
.
round
(
8
*
t
/
f
),
h
=
1
==
o
?
384
:
2
==
o
?
1152
:
1
==
_
?
1152
:
576
,
u
=
h
/
l
*
1
e3
,
b
=
Math
.
floor
(
h
*
f
/
8
/
l
*
1
e3
),
m
=
0
,
p
=
0
,
v
=
0
;
v
<
e
.
length
;
v
++
){
var
d
=
e
[
v
];
if
(
b
+
3
<=
(
p
+=
d
.
byteLength
)){
var
g
=
new
Uint8Array
(
d
);
m
=
"
1
"
==
n
(
d
.
byteLength
-
(
p
-
(
b
+
3
)
+
1
),
g
).
charAt
(
6
);
break
}}
return
m
&&
b
++
,{
version
:
_
,
layer
:
o
,
sampleRate
:
l
,
bitRate
:
f
,
duration
:
c
,
size
:
t
,
hasPadding
:
m
,
frameSize
:
b
,
frameDurationFloat
:
u
}};
var
h
=
{
rm
:
Recorder
.
mp3ReadMeta
,
fn
:
function
(
e
,
t
,
a
,
s
){
var
n
=
this
.
rm
(
e
,
t
);
if
(
!
n
)
return
{
err
:
"
mp3非预定格式
"
};
var
r
=
Math
.
round
(
a
/
s
*
1
e3
),
i
=
Math
.
floor
((
n
.
duration
-
r
)
/
n
.
frameDurationFloat
);
if
(
0
<
i
){
var
_
=
i
*
n
.
frameSize
-
(
n
.
hasPadding
?
1
:
0
);
t
-=
_
;
for
(
var
o
=
0
,
l
=
[],
f
=
0
;
f
<
e
.
length
;
f
++
){
var
c
=
e
[
f
];
if
(
_
<=
0
)
break
;
_
>=
c
.
byteLength
?(
_
-=
c
.
byteLength
,
l
.
push
(
c
),
e
.
splice
(
f
,
1
),
f
--
):(
e
[
f
]
=
c
.
slice
(
_
),
o
=
c
,
_
=
0
)}
if
(
!
this
.
rm
(
e
,
t
)){
o
&&
(
e
[
0
]
=
o
);
for
(
f
=
0
;
f
<
l
.
length
;
f
++
)
e
.
splice
(
f
,
0
,
l
[
f
]);
n
.
err
=
"
fix后数据错误,已还原,错误原因不明
"
}
var
h
=
n
.
trimFix
=
{};
h
.
remove
=
i
,
h
.
removeDuration
=
Math
.
round
(
i
*
n
.
frameDurationFloat
),
h
.
duration
=
Math
.
round
(
8
*
t
/
n
.
bitRate
)}
return
n
}},
u
=
function
(
e
,
t
){
var
a
=
"
MP3信息
"
;(
e
.
sampleRate
&&
e
.
sampleRate
!=
t
.
sampleRate
||
e
.
bitRate
&&
e
.
bitRate
!=
t
.
bitRate
)
&&
(
console
.
warn
(
a
+
"
和设置的不匹配set:
"
+
t
.
bitRate
+
"
kbps
"
+
t
.
sampleRate
+
"
hz,已更新set:
"
+
e
.
bitRate
+
"
kbps
"
+
e
.
sampleRate
+
"
hz
"
,
t
),
t
.
sampleRate
=
e
.
sampleRate
,
t
.
bitRate
=
e
.
bitRate
);
var
s
=
e
.
trimFix
;
s
?(
a
+=
"
Fix移除
"
+
s
.
remove
+
"
帧
"
+
s
.
removeDuration
+
"
ms ->
"
+
s
.
duration
+
"
ms
"
,
2
<
s
.
remove
&&
(
e
.
err
=
(
e
.
err
?
e
.
err
+
"
,
"
:
""
)
+
"
移除帧数过多
"
)):
a
+=
(
e
.
duration
||
"
-
"
)
+
"
ms
"
,
e
.
err
?
console
.
error
(
a
,
e
.
err
,
e
):
console
.
log
(
a
,
e
)}}(),
function
(){
"
use strict
"
;
function
t
(){
var
A
=
function
(
e
){
return
Math
.
log
(
e
)
/
Math
.
log
(
10
)};
function
B
(
e
){
return
new
Int8Array
(
e
)}
function
n
(
e
){
return
new
Int16Array
(
e
)}
function
Be
(
e
){
return
new
Int32Array
(
e
)}
function
Ae
(
e
){
return
new
Float32Array
(
e
)}
function
s
(
e
){
return
new
Float64Array
(
e
)}
function
ke
(
e
){
if
(
1
==
e
.
length
)
return
Ae
(
e
[
0
]);
var
t
=
e
[
0
];
e
=
e
.
slice
(
1
);
for
(
var
a
=
[],
s
=
0
;
s
<
t
;
s
++
)
a
.
push
(
ke
(
e
));
return
a
}
function
X
(
e
){
if
(
1
==
e
.
length
)
return
Be
(
e
[
0
]);
var
t
=
e
[
0
];
e
=
e
.
slice
(
1
);
for
(
var
a
=
[],
s
=
0
;
s
<
t
;
s
++
)
a
.
push
(
X
(
e
));
return
a
}
function
m
(
e
){
if
(
1
==
e
.
length
)
return
n
(
e
[
0
]);
var
t
=
e
[
0
];
e
=
e
.
slice
(
1
);
for
(
var
a
=
[],
s
=
0
;
s
<
t
;
s
++
)
a
.
push
(
m
(
e
));
return
a
}
function
O
(
e
){
if
(
1
==
e
.
length
)
return
new
Array
(
e
[
0
]);
var
t
=
e
[
0
];
e
=
e
.
slice
(
1
);
for
(
var
a
=
[],
s
=
0
;
s
<
t
;
s
++
)
a
.
push
(
O
(
e
));
return
a
}
var
Te
=
{
fill
:
function
(
e
,
t
,
a
,
s
){
if
(
2
==
arguments
.
length
)
for
(
var
n
=
0
;
n
<
e
.
length
;
n
++
)
e
[
n
]
=
t
;
else
for
(
n
=
t
;
n
<
a
;
n
++
)
e
[
n
]
=
s
}},
$
=
{
arraycopy
:
function
(
e
,
t
,
a
,
s
,
n
){
for
(
var
r
=
t
+
n
;
t
<
r
;)
a
[
s
++
]
=
e
[
t
++
]}},
ee
=
{};
function
xe
(
e
){
this
.
ordinal
=
e
}
ee
.
SQRT2
=
1.4142135623730951
,
ee
.
FAST_LOG10
=
function
(
e
){
return
A
(
e
)},
ee
.
FAST_LOG10_X
=
function
(
e
,
t
){
return
A
(
e
)
*
t
},
xe
.
short_block_allowed
=
new
xe
(
0
),
xe
.
short_block_coupled
=
new
xe
(
1
),
xe
.
short_block_dispensed
=
new
xe
(
2
),
xe
.
short_block_forced
=
new
xe
(
3
);
var
K
=
{};
function
ye
(
e
){
this
.
ordinal
=
e
}
K
.
MAX_VALUE
=
3.4028235e38
,
ye
.
vbr_off
=
new
ye
(
0
),
ye
.
vbr_mt
=
new
ye
(
1
),
ye
.
vbr_rh
=
new
ye
(
2
),
ye
.
vbr_abr
=
new
ye
(
3
),
ye
.
vbr_mtrh
=
new
ye
(
4
),
ye
.
vbr_default
=
ye
.
vbr_mtrh
;
function
Ee
(
e
){
var
t
=
e
;
this
.
ordinal
=
function
(){
return
t
}}
function
k
(){
var
M
=
null
;
function
v
(
e
){
this
.
bits
=
0
|
e
}
this
.
qupvt
=
null
,
this
.
setModules
=
function
(
e
){
this
.
qupvt
=
e
,
M
=
e
};
var
n
=
[[
0
,
0
],[
0
,
0
],[
0
,
0
],[
0
,
0
],[
0
,
0
],[
0
,
1
],[
1
,
1
],[
1
,
1
],[
1
,
2
],[
2
,
2
],[
2
,
3
],[
2
,
3
],[
3
,
4
],[
3
,
4
],[
3
,
4
],[
4
,
5
],[
4
,
5
],[
4
,
6
],[
5
,
6
],[
5
,
6
],[
5
,
7
],[
6
,
7
],[
6
,
7
]];
function
w
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
=
.
5946
/
t
;
for
(
e
>>=
1
;
0
!=
e
--
;)
n
[
r
++
]
=
i
>
a
[
s
++
]?
0
:
1
,
n
[
r
++
]
=
i
>
a
[
s
++
]?
0
:
1
}
function
R
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
=
(
e
>>=
1
)
%
2
;
for
(
e
>>=
1
;
0
!=
e
--
;){
var
_
,
o
,
l
,
f
,
c
,
h
,
u
,
b
;
_
=
a
[
s
++
]
*
t
,
o
=
a
[
s
++
]
*
t
,
c
=
0
|
_
,
l
=
a
[
s
++
]
*
t
,
h
=
0
|
o
,
f
=
a
[
s
++
]
*
t
,
u
=
0
|
l
,
_
+=
M
.
adj43
[
c
],
b
=
0
|
f
,
o
+=
M
.
adj43
[
h
],
n
[
r
++
]
=
0
|
_
,
l
+=
M
.
adj43
[
u
],
n
[
r
++
]
=
0
|
o
,
f
+=
M
.
adj43
[
b
],
n
[
r
++
]
=
0
|
l
,
n
[
r
++
]
=
0
|
f
}
0
!=
i
&&
(
c
=
0
|
(
_
=
a
[
s
++
]
*
t
),
h
=
0
|
(
o
=
a
[
s
++
]
*
t
),
_
+=
M
.
adj43
[
c
],
o
+=
M
.
adj43
[
h
],
n
[
r
++
]
=
0
|
_
,
n
[
r
++
]
=
0
|
o
)}
var
_
=
[
1
,
2
,
5
,
7
,
7
,
10
,
10
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
];
function
d
(
e
,
t
,
a
,
s
){
var
n
=
function
(
e
,
t
,
a
){
var
s
=
0
,
n
=
0
;
do
{
var
r
=
e
[
t
++
],
i
=
e
[
t
++
];
s
<
r
&&
(
s
=
r
),
n
<
i
&&
(
n
=
i
)}
while
(
t
<
a
);
return
s
<
n
&&
(
s
=
n
),
s
}(
e
,
t
,
a
);
switch
(
n
){
case
0
:
return
n
;
case
1
:
return
function
(
e
,
t
,
a
,
s
){
var
n
=
0
,
r
=
C
.
ht
[
1
].
hlen
;
do
{
var
i
=
2
*
e
[
t
+
0
]
+
e
[
t
+
1
];
t
+=
2
,
n
+=
r
[
i
]}
while
(
t
<
a
);
return
s
.
bits
+=
n
,
1
}(
e
,
t
,
a
,
s
);
case
2
:
case
3
:
return
function
(
e
,
t
,
a
,
s
,
n
){
var
r
,
i
,
_
=
0
,
o
=
C
.
ht
[
s
].
xlen
;
i
=
2
==
s
?
C
.
table23
:
C
.
table56
;
do
{
var
l
=
e
[
t
+
0
]
*
o
+
e
[
t
+
1
];
t
+=
2
,
_
+=
i
[
l
]}
while
(
t
<
a
);
return
(
r
=
65535
&
_
)
<
(
_
>>=
16
)
&&
(
_
=
r
,
s
++
),
n
.
bits
+=
_
,
s
}(
e
,
t
,
a
,
_
[
n
-
1
],
s
);
case
4
:
case
5
:
case
6
:
case
7
:
case
8
:
case
9
:
case
10
:
case
11
:
case
12
:
case
13
:
case
14
:
case
15
:
return
function
(
e
,
t
,
a
,
s
,
n
){
var
r
=
0
,
i
=
0
,
_
=
0
,
o
=
C
.
ht
[
s
].
xlen
,
l
=
C
.
ht
[
s
].
hlen
,
f
=
C
.
ht
[
s
+
1
].
hlen
,
c
=
C
.
ht
[
s
+
2
].
hlen
;
do
{
var
h
=
e
[
t
+
0
]
*
o
+
e
[
t
+
1
];
t
+=
2
,
r
+=
l
[
h
],
i
+=
f
[
h
],
_
+=
c
[
h
]}
while
(
t
<
a
);
var
u
=
s
;
return
i
<
r
&&
(
r
=
i
,
u
++
),
_
<
r
&&
(
r
=
_
,
u
=
s
+
2
),
n
.
bits
+=
r
,
u
}(
e
,
t
,
a
,
_
[
n
-
1
],
s
);
default
:
if
(
y
.
IXMAX_VAL
<
n
)
return
s
.
bits
=
y
.
LARGE_BITS
,
-
1
;
var
r
,
i
;
for
(
n
-=
15
,
r
=
24
;
r
<
32
&&!
(
C
.
ht
[
r
].
linmax
>=
n
);
r
++
);
for
(
i
=
r
-
8
;
i
<
24
&&!
(
C
.
ht
[
i
].
linmax
>=
n
);
i
++
);
return
function
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
,
_
=
65536
*
C
.
ht
[
s
].
xlen
+
C
.
ht
[
n
].
xlen
,
o
=
0
;
do
{
var
l
=
e
[
t
++
],
f
=
e
[
t
++
];
0
!=
l
&&
(
14
<
l
&&
(
l
=
15
,
o
+=
_
),
l
*=
16
),
0
!=
f
&&
(
14
<
f
&&
(
f
=
15
,
o
+=
_
),
l
+=
f
),
o
+=
C
.
largetbl
[
l
]}
while
(
t
<
a
);
return
(
i
=
65535
&
o
)
<
(
o
>>=
16
)
&&
(
o
=
i
,
s
=
n
),
r
.
bits
+=
o
,
s
}(
e
,
t
,
a
,
i
,
r
,
s
)}}
function
u
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
){
for
(
var
o
=
t
.
big_values
,
l
=
2
;
l
<
Pe
.
SBMAX_l
+
1
;
l
++
){
var
f
=
e
.
scalefac_band
.
l
[
l
];
if
(
o
<=
f
)
break
;
var
c
=
n
[
l
-
2
]
+
t
.
count1bits
;
if
(
a
.
part2_3_length
<=
c
)
break
;
var
h
=
new
v
(
c
),
u
=
d
(
s
,
f
,
o
,
h
);
c
=
h
.
bits
,
a
.
part2_3_length
<=
c
||
(
a
.
assign
(
t
),
a
.
part2_3_length
=
c
,
a
.
region0_count
=
r
[
l
-
2
],
a
.
region1_count
=
l
-
2
-
r
[
l
-
2
],
a
.
table_select
[
0
]
=
i
[
l
-
2
],
a
.
table_select
[
1
]
=
_
[
l
-
2
],
a
.
table_select
[
2
]
=
u
)}}
this
.
noquant_count_bits
=
function
(
e
,
t
,
a
){
var
s
=
t
.
l3_enc
,
n
=
Math
.
min
(
576
,
t
.
max_nonzero_coeff
+
2
>>
1
<<
1
);
for
(
null
!=
a
&&
(
a
.
sfb_count1
=
0
);
1
<
n
&&
0
==
(
s
[
n
-
1
]
|
s
[
n
-
2
]);
n
-=
2
);
t
.
count1
=
n
;
for
(
var
r
=
0
,
i
=
0
;
3
<
n
;
n
-=
4
){
var
_
;
if
(
1
<
(
2147483647
&
(
s
[
n
-
1
]
|
s
[
n
-
2
]
|
s
[
n
-
3
]
|
s
[
n
-
4
])))
break
;
_
=
2
*
(
2
*
(
2
*
s
[
n
-
4
]
+
s
[
n
-
3
])
+
s
[
n
-
2
])
+
s
[
n
-
1
],
r
+=
C
.
t32l
[
_
],
i
+=
C
.
t33l
[
_
]}
var
o
=
r
;
if
(
t
.
count1table_select
=
0
,
i
<
r
&&
(
o
=
i
,
t
.
count1table_select
=
1
),
t
.
count1bits
=
o
,
0
==
(
t
.
big_values
=
n
))
return
o
;
if
(
t
.
block_type
==
Pe
.
SHORT_TYPE
)(
r
=
3
*
e
.
scalefac_band
.
s
[
3
])
>
t
.
big_values
&&
(
r
=
t
.
big_values
),
i
=
t
.
big_values
;
else
if
(
t
.
block_type
==
Pe
.
NORM_TYPE
){
if
(
r
=
t
.
region0_count
=
e
.
bv_scf
[
n
-
2
],
i
=
t
.
region1_count
=
e
.
bv_scf
[
n
-
1
],
i
=
e
.
scalefac_band
.
l
[
r
+
i
+
2
],
r
=
e
.
scalefac_band
.
l
[
r
+
1
],
i
<
n
){
var
l
=
new
v
(
o
);
t
.
table_select
[
2
]
=
d
(
s
,
i
,
n
,
l
),
o
=
l
.
bits
}}
else
t
.
region0_count
=
7
,
t
.
region1_count
=
Pe
.
SBMAX_l
-
1
-
7
-
1
,(
i
=
n
)
<
(
r
=
e
.
scalefac_band
.
l
[
8
])
&&
(
r
=
i
);
if
(
r
=
Math
.
min
(
r
,
n
),
i
=
Math
.
min
(
i
,
n
),
0
<
r
){
l
=
new
v
(
o
);
t
.
table_select
[
0
]
=
d
(
s
,
0
,
r
,
l
),
o
=
l
.
bits
}
if
(
r
<
i
){
l
=
new
v
(
o
);
t
.
table_select
[
1
]
=
d
(
s
,
r
,
i
,
l
),
o
=
l
.
bits
}
if
(
2
==
e
.
use_best_huffman
&&
(
t
.
part2_3_length
=
o
,
best_huffman_divide
(
e
,
t
),
o
=
t
.
part2_3_length
),
null
!=
a
&&
t
.
block_type
==
Pe
.
NORM_TYPE
){
for
(
var
f
=
0
;
e
.
scalefac_band
.
l
[
f
]
<
t
.
big_values
;)
f
++
;
a
.
sfb_count1
=
f
}
return
o
},
this
.
count_bits
=
function
(
e
,
t
,
a
,
s
){
var
n
=
a
.
l3_enc
,
r
=
y
.
IXMAX_VAL
/
M
.
IPOW20
(
a
.
global_gain
);
if
(
a
.
xrpow_max
>
r
)
return
y
.
LARGE_BITS
;
if
(
function
(
e
,
t
,
a
,
s
,
n
){
var
r
,
i
,
_
,
o
=
0
,
l
=
0
,
f
=
0
,
c
=
0
,
h
=
t
,
u
=
0
,
b
=
h
,
m
=
0
,
p
=
e
,
v
=
0
;
for
(
_
=
null
!=
n
&&
s
.
global_gain
==
n
.
global_gain
,
i
=
s
.
block_type
==
Pe
.
SHORT_TYPE
?
38
:
21
,
r
=
0
;
r
<=
i
;
r
++
){
var
d
=-
1
;
if
((
_
||
s
.
block_type
==
Pe
.
NORM_TYPE
)
&&
(
d
=
s
.
global_gain
-
(
s
.
scalefac
[
r
]
+
(
0
!=
s
.
preflag
?
M
.
pretab
[
r
]:
0
)
<<
s
.
scalefac_scale
+
1
)
-
8
*
s
.
subblock_gain
[
s
.
window
[
r
]]),
_
&&
n
.
step
[
r
]
==
d
)
0
!=
l
&&
(
R
(
l
,
a
,
p
,
v
,
b
,
m
),
l
=
0
),
0
!=
f
&&
(
w
(
f
,
a
,
p
,
v
,
b
,
m
),
f
=
0
);
else
{
var
g
,
S
=
s
.
width
[
r
];
if
(
o
+
s
.
width
[
r
]
>
s
.
max_nonzero_coeff
&&
(
g
=
s
.
max_nonzero_coeff
-
o
+
1
,
Te
.
fill
(
t
,
s
.
max_nonzero_coeff
,
576
,
0
),(
S
=
g
)
<
0
&&
(
S
=
0
),
r
=
i
+
1
),
0
==
l
&&
0
==
f
&&
(
b
=
h
,
m
=
u
,
p
=
e
,
v
=
c
),
null
!=
n
&&
0
<
n
.
sfb_count1
&&
r
>=
n
.
sfb_count1
&&
0
<
n
.
step
[
r
]
&&
d
>=
n
.
step
[
r
]?(
0
!=
l
&&
(
R
(
l
,
a
,
p
,
v
,
b
,
m
),
l
=
0
,
b
=
h
,
m
=
u
,
p
=
e
,
v
=
c
),
f
+=
S
):(
0
!=
f
&&
(
w
(
f
,
a
,
p
,
v
,
b
,
m
),
f
=
0
,
b
=
h
,
m
=
u
,
p
=
e
,
v
=
c
),
l
+=
S
),
S
<=
0
){
0
!=
f
&&
(
w
(
f
,
a
,
p
,
v
,
b
,
m
),
f
=
0
),
0
!=
l
&&
(
R
(
l
,
a
,
p
,
v
,
b
,
m
),
l
=
0
);
break
}}
r
<=
i
&&
(
u
+=
s
.
width
[
r
],
c
+=
s
.
width
[
r
],
o
+=
s
.
width
[
r
])}
0
!=
l
&&
(
R
(
l
,
a
,
p
,
v
,
b
,
m
),
l
=
0
),
0
!=
f
&&
(
w
(
f
,
a
,
p
,
v
,
b
,
m
),
f
=
0
)}(
t
,
n
,
M
.
IPOW20
(
a
.
global_gain
),
a
,
s
),
0
!=
(
2
&
e
.
substep_shaping
))
for
(
var
i
=
0
,
_
=
a
.
global_gain
+
a
.
scalefac_scale
,
o
=
.
634521682242439
/
M
.
IPOW20
(
_
),
l
=
0
;
l
<
a
.
sfbmax
;
l
++
){
var
f
,
c
=
a
.
width
[
l
];
if
(
0
==
e
.
pseudohalf
[
l
])
i
+=
c
;
else
for
(
f
=
i
,
i
+=
c
;
f
<
i
;
++
f
)
n
[
f
]
=
t
[
f
]
>=
o
?
n
[
f
]:
0
}
return
this
.
noquant_count_bits
(
e
,
a
,
s
)},
this
.
best_huffman_divide
=
function
(
e
,
t
){
var
a
=
new
x
,
s
=
t
.
l3_enc
,
n
=
Be
(
23
),
r
=
Be
(
23
),
i
=
Be
(
23
),
_
=
Be
(
23
);
if
(
t
.
block_type
!=
Pe
.
SHORT_TYPE
||
1
!=
e
.
mode_gr
){
a
.
assign
(
t
),
t
.
block_type
==
Pe
.
NORM_TYPE
&&
(
!
function
(
e
,
t
,
a
,
s
,
n
,
r
,
i
){
for
(
var
_
=
t
.
big_values
,
o
=
0
;
o
<=
22
;
o
++
)
s
[
o
]
=
y
.
LARGE_BITS
;
for
(
o
=
0
;
o
<
16
;
o
++
){
var
l
=
e
.
scalefac_band
.
l
[
o
+
1
];
if
(
_
<=
l
)
break
;
var
f
=
0
,
c
=
new
v
(
f
),
h
=
d
(
a
,
0
,
l
,
c
);
f
=
c
.
bits
;
for
(
var
u
=
0
;
u
<
8
;
u
++
){
var
b
=
e
.
scalefac_band
.
l
[
o
+
u
+
2
];
if
(
_
<=
b
)
break
;
var
m
=
f
,
p
=
d
(
a
,
l
,
b
,
c
=
new
v
(
m
));
m
=
c
.
bits
,
s
[
o
+
u
]
>
m
&&
(
s
[
o
+
u
]
=
m
,
r
[(
n
[
o
+
u
]
=
o
)
+
u
]
=
h
,
i
[
o
+
u
]
=
p
)}}}(
e
,
t
,
s
,
n
,
r
,
i
,
_
),
u
(
e
,
a
,
t
,
s
,
n
,
r
,
i
,
_
));
var
o
=
a
.
big_values
;
if
(
!
(
0
==
o
||
1
<
(
s
[
o
-
2
]
|
s
[
o
-
1
])
||
576
<
(
o
=
t
.
count1
+
2
))){
a
.
assign
(
t
),
a
.
count1
=
o
;
for
(
var
l
=
0
,
f
=
0
;
o
>
a
.
big_values
;
o
-=
4
){
var
c
=
2
*
(
2
*
(
2
*
s
[
o
-
4
]
+
s
[
o
-
3
])
+
s
[
o
-
2
])
+
s
[
o
-
1
];
l
+=
C
.
t32l
[
c
],
f
+=
C
.
t33l
[
c
]}
if
(
a
.
big_values
=
o
,
a
.
count1table_select
=
0
,
f
<
l
&&
(
l
=
f
,
a
.
count1table_select
=
1
),
a
.
count1bits
=
l
,
a
.
block_type
==
Pe
.
NORM_TYPE
)
u
(
e
,
a
,
t
,
s
,
n
,
r
,
i
,
_
);
else
{
if
(
a
.
part2_3_length
=
l
,
o
<
(
l
=
e
.
scalefac_band
.
l
[
8
])
&&
(
l
=
o
),
0
<
l
){
var
h
=
new
v
(
a
.
part2_3_length
);
a
.
table_select
[
0
]
=
d
(
s
,
0
,
l
,
h
),
a
.
part2_3_length
=
h
.
bits
}
if
(
l
<
o
){
h
=
new
v
(
a
.
part2_3_length
);
a
.
table_select
[
1
]
=
d
(
s
,
l
,
o
,
h
),
a
.
part2_3_length
=
h
.
bits
}
t
.
part2_3_length
>
a
.
part2_3_length
&&
t
.
assign
(
a
)}}}};
var
h
=
[
1
,
1
,
1
,
1
,
8
,
2
,
2
,
2
,
4
,
4
,
4
,
8
,
8
,
8
,
16
,
16
],
b
=
[
1
,
2
,
4
,
8
,
1
,
2
,
4
,
8
,
2
,
4
,
8
,
2
,
4
,
8
,
4
,
8
],
m
=
[
0
,
0
,
0
,
0
,
3
,
1
,
1
,
1
,
2
,
2
,
2
,
3
,
3
,
3
,
4
,
4
],
p
=
[
0
,
1
,
2
,
3
,
0
,
1
,
2
,
3
,
1
,
2
,
3
,
1
,
2
,
3
,
2
,
3
];
k
.
slen1_tab
=
m
,
k
.
slen2_tab
=
p
,
this
.
best_scalefac_store
=
function
(
e
,
t
,
a
,
s
){
var
n
,
r
,
i
,
_
,
o
=
s
.
tt
[
t
][
a
],
l
=
0
;
for
(
n
=
i
=
0
;
n
<
o
.
sfbmax
;
n
++
){
var
f
=
o
.
width
[
n
];
for
(
i
+=
f
,
_
=-
f
;
_
<
0
&&
0
==
o
.
l3_enc
[
_
+
i
];
_
++
);
0
==
_
&&
(
o
.
scalefac
[
n
]
=
l
=-
2
)}
if
(
0
==
o
.
scalefac_scale
&&
0
==
o
.
preflag
){
var
c
=
0
;
for
(
n
=
0
;
n
<
o
.
sfbmax
;
n
++
)
0
<
o
.
scalefac
[
n
]
&&
(
c
|=
o
.
scalefac
[
n
]);
if
(
0
==
(
1
&
c
)
&&
0
!=
c
){
for
(
n
=
0
;
n
<
o
.
sfbmax
;
n
++
)
0
<
o
.
scalefac
[
n
]
&&
(
o
.
scalefac
[
n
]
>>=
1
);
o
.
scalefac_scale
=
l
=
1
}}
if
(
0
==
o
.
preflag
&&
o
.
block_type
!=
Pe
.
SHORT_TYPE
&&
2
==
e
.
mode_gr
){
for
(
n
=
11
;
n
<
Pe
.
SBPSY_l
&&!
(
o
.
scalefac
[
n
]
<
M
.
pretab
[
n
]
&&-
2
!=
o
.
scalefac
[
n
]);
n
++
);
if
(
n
==
Pe
.
SBPSY_l
){
for
(
n
=
11
;
n
<
Pe
.
SBPSY_l
;
n
++
)
0
<
o
.
scalefac
[
n
]
&&
(
o
.
scalefac
[
n
]
-=
M
.
pretab
[
n
]);
o
.
preflag
=
l
=
1
}}
for
(
r
=
0
;
r
<
4
;
r
++
)
s
.
scfsi
[
a
][
r
]
=
0
;
for
(
2
==
e
.
mode_gr
&&
1
==
t
&&
s
.
tt
[
0
][
a
].
block_type
!=
Pe
.
SHORT_TYPE
&&
s
.
tt
[
1
][
a
].
block_type
!=
Pe
.
SHORT_TYPE
&&
(
!
function
(
e
,
t
){
for
(
var
a
,
s
=
t
.
tt
[
1
][
e
],
n
=
t
.
tt
[
0
][
e
],
r
=
0
;
r
<
C
.
scfsi_band
.
length
-
1
;
r
++
){
for
(
a
=
C
.
scfsi_band
[
r
];
a
<
C
.
scfsi_band
[
r
+
1
]
&&!
(
n
.
scalefac
[
a
]
!=
s
.
scalefac
[
a
]
&&
0
<=
s
.
scalefac
[
a
]);
a
++
);
if
(
a
==
C
.
scfsi_band
[
r
+
1
]){
for
(
a
=
C
.
scfsi_band
[
r
];
a
<
C
.
scfsi_band
[
r
+
1
];
a
++
)
s
.
scalefac
[
a
]
=-
1
;
t
.
scfsi
[
e
][
r
]
=
1
}}
var
i
=
0
,
_
=
0
;
for
(
a
=
0
;
a
<
11
;
a
++
)
-
1
!=
s
.
scalefac
[
a
]
&&
(
_
++
,
i
<
s
.
scalefac
[
a
]
&&
(
i
=
s
.
scalefac
[
a
]));
for
(
var
o
=
0
,
l
=
0
;
a
<
Pe
.
SBPSY_l
;
a
++
)
-
1
!=
s
.
scalefac
[
a
]
&&
(
l
++
,
o
<
s
.
scalefac
[
a
]
&&
(
o
=
s
.
scalefac
[
a
]));
for
(
r
=
0
;
r
<
16
;
r
++
)
if
(
i
<
h
[
r
]
&&
o
<
b
[
r
]){
var
f
=
m
[
r
]
*
_
+
p
[
r
]
*
l
;
s
.
part2_length
>
f
&&
(
s
.
part2_length
=
f
,
s
.
scalefac_compress
=
r
)}}(
a
,
s
),
l
=
0
),
n
=
0
;
n
<
o
.
sfbmax
;
n
++
)
-
2
==
o
.
scalefac
[
n
]
&&
(
o
.
scalefac
[
n
]
=
0
);
0
!=
l
&&
(
2
==
e
.
mode_gr
?
this
.
scale_bitcount
(
o
):
this
.
scale_bitcount_lsf
(
e
,
o
))};
var
o
=
[
0
,
18
,
36
,
54
,
54
,
36
,
54
,
72
,
54
,
72
,
90
,
72
,
90
,
108
,
108
,
126
],
l
=
[
0
,
18
,
36
,
54
,
51
,
35
,
53
,
71
,
52
,
70
,
88
,
69
,
87
,
105
,
104
,
122
],
f
=
[
0
,
10
,
20
,
30
,
33
,
21
,
31
,
41
,
32
,
42
,
52
,
43
,
53
,
63
,
64
,
74
];
this
.
scale_bitcount
=
function
(
e
){
var
t
,
a
,
s
,
n
=
0
,
r
=
0
,
i
=
e
.
scalefac
;
if
(
e
.
block_type
==
Pe
.
SHORT_TYPE
)
s
=
o
,
0
!=
e
.
mixed_block_flag
&&
(
s
=
l
);
else
if
(
s
=
f
,
0
==
e
.
preflag
){
for
(
a
=
11
;
a
<
Pe
.
SBPSY_l
&&!
(
i
[
a
]
<
M
.
pretab
[
a
]);
a
++
);
if
(
a
==
Pe
.
SBPSY_l
)
for
(
e
.
preflag
=
1
,
a
=
11
;
a
<
Pe
.
SBPSY_l
;
a
++
)
i
[
a
]
-=
M
.
pretab
[
a
]}
for
(
a
=
0
;
a
<
e
.
sfbdivide
;
a
++
)
n
<
i
[
a
]
&&
(
n
=
i
[
a
]);
for
(;
a
<
e
.
sfbmax
;
a
++
)
r
<
i
[
a
]
&&
(
r
=
i
[
a
]);
for
(
e
.
part2_length
=
y
.
LARGE_BITS
,
t
=
0
;
t
<
16
;
t
++
)
n
<
h
[
t
]
&&
r
<
b
[
t
]
&&
e
.
part2_length
>
s
[
t
]
&&
(
e
.
part2_length
=
s
[
t
],
e
.
scalefac_compress
=
t
);
return
e
.
part2_length
==
y
.
LARGE_BITS
};
var
g
=
[[
15
,
15
,
7
,
7
],[
15
,
15
,
7
,
0
],[
7
,
3
,
0
,
0
],[
15
,
31
,
31
,
0
],[
7
,
7
,
7
,
0
],[
3
,
3
,
0
,
0
]];
this
.
scale_bitcount_lsf
=
function
(
e
,
t
){
var
a
,
s
,
n
,
r
,
i
,
_
,
o
,
l
,
f
=
Be
(
4
),
c
=
t
.
scalefac
;
for
(
a
=
0
!=
t
.
preflag
?
2
:
0
,
o
=
0
;
o
<
4
;
o
++
)
f
[
o
]
=
0
;
if
(
t
.
block_type
==
Pe
.
SHORT_TYPE
){
s
=
1
;
var
h
=
M
.
nr_of_sfb_block
[
a
][
s
];
for
(
n
=
l
=
0
;
n
<
4
;
n
++
)
for
(
r
=
h
[
n
]
/
3
,
o
=
0
;
o
<
r
;
o
++
,
l
++
)
for
(
i
=
0
;
i
<
3
;
i
++
)
c
[
3
*
l
+
i
]
>
f
[
n
]
&&
(
f
[
n
]
=
c
[
3
*
l
+
i
])}
else
{
s
=
0
;
h
=
M
.
nr_of_sfb_block
[
a
][
s
];
for
(
n
=
l
=
0
;
n
<
4
;
n
++
)
for
(
r
=
h
[
n
],
o
=
0
;
o
<
r
;
o
++
,
l
++
)
c
[
l
]
>
f
[
n
]
&&
(
f
[
n
]
=
c
[
l
])}
for
(
_
=!
1
,
n
=
0
;
n
<
4
;
n
++
)
f
[
n
]
>
g
[
a
][
n
]
&&
(
_
=!
0
);
if
(
!
_
){
var
u
,
b
,
m
,
p
;
for
(
t
.
sfb_partition_table
=
M
.
nr_of_sfb_block
[
a
][
s
],
n
=
0
;
n
<
4
;
n
++
)
t
.
slen
[
n
]
=
S
[
f
[
n
]];
switch
(
u
=
t
.
slen
[
0
],
b
=
t
.
slen
[
1
],
m
=
t
.
slen
[
2
],
p
=
t
.
slen
[
3
],
a
){
case
0
:
t
.
scalefac_compress
=
(
5
*
u
+
b
<<
4
)
+
(
m
<<
2
)
+
p
;
break
;
case
1
:
t
.
scalefac_compress
=
400
+
(
5
*
u
+
b
<<
2
)
+
m
;
break
;
case
2
:
t
.
scalefac_compress
=
500
+
3
*
u
+
b
;
break
;
default
:
$
.
err
.
printf
(
"
intensity stereo not implemented yet
\n
"
)}}
if
(
!
_
)
for
(
n
=
t
.
part2_length
=
0
;
n
<
4
;
n
++
)
t
.
part2_length
+=
t
.
slen
[
n
]
*
t
.
sfb_partition_table
[
n
];
return
_
};
var
S
=
[
0
,
1
,
2
,
2
,
3
,
3
,
3
,
3
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
];
this
.
huffman_init
=
function
(
e
){
for
(
var
t
=
2
;
t
<=
576
;
t
+=
2
){
for
(
var
a
,
s
=
0
;
e
.
scalefac_band
.
l
[
++
s
]
<
t
;);
for
(
a
=
n
[
s
][
0
];
e
.
scalefac_band
.
l
[
a
+
1
]
>
t
;)
a
--
;
for
(
a
<
0
&&
(
a
=
n
[
s
][
0
]),
e
.
bv_scf
[
t
-
2
]
=
a
,
a
=
n
[
s
][
1
];
e
.
scalefac_band
.
l
[
a
+
e
.
bv_scf
[
t
-
2
]
+
2
]
>
t
;)
a
--
;
a
<
0
&&
(
a
=
n
[
s
][
1
]),
e
.
bv_scf
[
t
-
1
]
=
a
}}}
function
q
(){}
function
M
(){
this
.
setModules
=
function
(
e
,
t
,
a
){
e
,
t
,
a
};
var
_
=
[
0
,
49345
,
49537
,
320
,
49921
,
960
,
640
,
49729
,
50689
,
1728
,
1920
,
51009
,
1280
,
50625
,
50305
,
1088
,
52225
,
3264
,
3456
,
52545
,
3840
,
53185
,
52865
,
3648
,
2560
,
51905
,
52097
,
2880
,
51457
,
2496
,
2176
,
51265
,
55297
,
6336
,
6528
,
55617
,
6912
,
56257
,
55937
,
6720
,
7680
,
57025
,
57217
,
8
e3
,
56577
,
7616
,
7296
,
56385
,
5120
,
54465
,
54657
,
5440
,
55041
,
6080
,
5760
,
54849
,
53761
,
4800
,
4992
,
54081
,
4352
,
53697
,
53377
,
4160
,
61441
,
12480
,
12672
,
61761
,
13056
,
62401
,
62081
,
12864
,
13824
,
63169
,
63361
,
14144
,
62721
,
13760
,
13440
,
62529
,
15360
,
64705
,
64897
,
15680
,
65281
,
16320
,
16
e3
,
65089
,
64001
,
15040
,
15232
,
64321
,
14592
,
63937
,
63617
,
14400
,
10240
,
59585
,
59777
,
10560
,
60161
,
11200
,
10880
,
59969
,
60929
,
11968
,
12160
,
61249
,
11520
,
60865
,
60545
,
11328
,
58369
,
9408
,
9600
,
58689
,
9984
,
59329
,
59009
,
9792
,
8704
,
58049
,
58241
,
9024
,
57601
,
8640
,
8320
,
57409
,
40961
,
24768
,
24960
,
41281
,
25344
,
41921
,
41601
,
25152
,
26112
,
42689
,
42881
,
26432
,
42241
,
26048
,
25728
,
42049
,
27648
,
44225
,
44417
,
27968
,
44801
,
28608
,
28288
,
44609
,
43521
,
27328
,
27520
,
43841
,
26880
,
43457
,
43137
,
26688
,
30720
,
47297
,
47489
,
31040
,
47873
,
31680
,
31360
,
47681
,
48641
,
32448
,
32640
,
48961
,
32
e3
,
48577
,
48257
,
31808
,
46081
,
29888
,
30080
,
46401
,
30464
,
47041
,
46721
,
30272
,
29184
,
45761
,
45953
,
29504
,
45313
,
29120
,
28800
,
45121
,
20480
,
37057
,
37249
,
20800
,
37633
,
21440
,
21120
,
37441
,
38401
,
22208
,
22400
,
38721
,
21760
,
38337
,
38017
,
21568
,
39937
,
23744
,
23936
,
40257
,
24320
,
40897
,
40577
,
24128
,
23040
,
39617
,
39809
,
23360
,
39169
,
22976
,
22656
,
38977
,
34817
,
18624
,
18816
,
35137
,
19200
,
35777
,
35457
,
19008
,
19968
,
36545
,
36737
,
20288
,
36097
,
19904
,
19584
,
35905
,
17408
,
33985
,
34177
,
17728
,
34561
,
18368
,
18048
,
34369
,
33281
,
17088
,
17280
,
33601
,
16640
,
33217
,
32897
,
16448
];
this
.
updateMusicCRC
=
function
(
e
,
t
,
a
,
s
){
for
(
var
n
=
0
;
n
<
s
;
++
n
)
e
[
0
]
=
(
r
=
t
[
a
+
n
],
i
=
(
i
=
e
[
0
])
>>
8
^
_
[
255
&
(
i
^
r
)]);
var
r
,
i
}}
function
j
(){
var
o
=
this
,
s
=
32773
,
c
=
null
,
h
=
null
,
r
=
null
,
u
=
null
;
this
.
setModules
=
function
(
e
,
t
,
a
,
s
){
c
=
e
,
h
=
t
,
r
=
a
,
u
=
s
};
var
b
=
null
,
l
=
0
,
m
=
0
,
p
=
0
;
function
v
(
e
,
t
,
a
){
for
(;
0
<
a
;){
var
s
;
0
==
p
&&
(
p
=
8
,
m
++
,
e
.
header
[
e
.
w_ptr
].
write_timing
==
l
&&
(
n
=
e
,
$
.
arraycopy
(
n
.
header
[
n
.
w_ptr
].
buf
,
0
,
b
,
m
,
n
.
sideinfo_len
),
m
+=
n
.
sideinfo_len
,
l
+=
8
*
n
.
sideinfo_len
,
n
.
w_ptr
=
n
.
w_ptr
+
1
&
Z
.
MAX_HEADER_BUF
-
1
),
b
[
m
]
=
0
),
a
-=
s
=
Math
.
min
(
a
,
p
),
p
-=
s
,
b
[
m
]
|=
t
>>
a
<<
p
,
l
+=
s
}
var
n
}
function
i
(
e
,
t
,
a
){
for
(;
0
<
a
;){
var
s
;
0
==
p
&&
(
p
=
8
,
b
[
++
m
]
=
0
),
a
-=
s
=
Math
.
min
(
a
,
p
),
p
-=
s
,
b
[
m
]
|=
t
>>
a
<<
p
,
l
+=
s
}}
function
_
(
e
,
t
){
var
a
,
s
=
e
.
internal_flags
;
if
(
8
<=
t
&&
(
v
(
s
,
76
,
8
),
t
-=
8
),
8
<=
t
&&
(
v
(
s
,
65
,
8
),
t
-=
8
),
8
<=
t
&&
(
v
(
s
,
77
,
8
),
t
-=
8
),
8
<=
t
&&
(
v
(
s
,
69
,
8
),
t
-=
8
),
32
<=
t
){
var
n
=
r
.
getLameShortVersion
();
if
(
32
<=
t
)
for
(
a
=
0
;
a
<
n
.
length
&&
8
<=
t
;
++
a
)
t
-=
8
,
v
(
s
,
n
.
charCodeAt
(
a
),
8
)}
for
(;
1
<=
t
;
t
-=
1
)
v
(
s
,
s
.
ancillary_flag
,
1
),
s
.
ancillary_flag
^=
e
.
disable_reservoir
?
0
:
1
}
function
f
(
e
,
t
,
a
){
for
(
var
s
=
e
.
header
[
e
.
h_ptr
].
ptr
;
0
<
a
;){
var
n
=
Math
.
min
(
a
,
8
-
(
7
&
s
));
a
-=
n
,
e
.
header
[
e
.
h_ptr
].
buf
[
s
>>
3
]
|=
t
>>
a
<<
8
-
(
7
&
s
)
-
n
,
s
+=
n
}
e
.
header
[
e
.
h_ptr
].
ptr
=
s
}
function
n
(
e
,
t
){
e
<<=
8
;
for
(
var
a
=
0
;
a
<
8
;
a
++
)
0
!=
(
65536
&
((
t
<<=
1
)
^
(
e
<<=
1
)))
&&
(
t
^=
s
);
return
t
}
function
d
(
e
,
t
){
var
a
,
s
=
C
.
ht
[
t
.
count1table_select
+
32
],
n
=
0
,
r
=
t
.
big_values
,
i
=
t
.
big_values
;
for
(
a
=
(
t
.
count1
-
t
.
big_values
)
/
4
;
0
<
a
;
--
a
){
var
_
=
0
,
o
=
0
;
0
!=
t
.
l3_enc
[
r
+
0
]
&&
(
o
+=
8
,
t
.
xr
[
i
+
0
]
<
0
&&
_
++
),
0
!=
t
.
l3_enc
[
r
+
1
]
&&
(
o
+=
4
,
_
*=
2
,
t
.
xr
[
i
+
1
]
<
0
&&
_
++
),
0
!=
t
.
l3_enc
[
r
+
2
]
&&
(
o
+=
2
,
_
*=
2
,
t
.
xr
[
i
+
2
]
<
0
&&
_
++
),
0
!=
t
.
l3_enc
[
r
+
3
]
&&
(
o
++
,
_
*=
2
,
t
.
xr
[
i
+
3
]
<
0
&&
_
++
),
r
+=
4
,
i
+=
4
,
v
(
e
,
_
+
s
.
table
[
o
],
s
.
hlen
[
o
]),
n
+=
s
.
hlen
[
o
]}
return
n
}
function
g
(
e
,
t
,
a
,
s
,
n
){
var
r
=
C
.
ht
[
t
],
i
=
0
;
if
(
0
==
t
)
return
i
;
for
(
var
_
=
a
;
_
<
s
;
_
+=
2
){
var
o
=
0
,
l
=
0
,
f
=
r
.
xlen
,
c
=
r
.
xlen
,
h
=
0
,
u
=
n
.
l3_enc
[
_
],
b
=
n
.
l3_enc
[
_
+
1
];
if
(
0
!=
u
&&
(
n
.
xr
[
_
]
<
0
&&
h
++
,
o
--
),
15
<
t
){
if
(
14
<
u
)
h
|=
u
-
15
<<
1
,
l
=
f
,
u
=
15
;
if
(
14
<
b
)
h
<<=
f
,
h
|=
b
-
15
,
l
+=
f
,
b
=
15
;
c
=
16
}
0
!=
b
&&
(
h
<<=
1
,
n
.
xr
[
_
+
1
]
<
0
&&
h
++
,
o
--
),
u
=
u
*
c
+
b
,
l
-=
o
,
o
+=
r
.
hlen
[
u
],
v
(
e
,
r
.
table
[
u
],
o
),
v
(
e
,
h
,
l
),
i
+=
o
+
l
}
return
i
}
function
S
(
e
,
t
){
var
a
=
3
*
e
.
scalefac_band
.
s
[
3
];
a
>
t
.
big_values
&&
(
a
=
t
.
big_values
);
var
s
=
g
(
e
,
t
.
table_select
[
0
],
0
,
a
,
t
);
return
s
+=
g
(
e
,
t
.
table_select
[
1
],
a
,
t
.
big_values
,
t
)}
function
M
(
e
,
t
){
var
a
,
s
,
n
,
r
;
a
=
t
.
big_values
;
var
i
=
t
.
region0_count
+
1
;
return
n
=
e
.
scalefac_band
.
l
[
i
],
i
+=
t
.
region1_count
+
1
,
a
<
n
&&
(
n
=
a
),
a
<
(
r
=
e
.
scalefac_band
.
l
[
i
])
&&
(
r
=
a
),
s
=
g
(
e
,
t
.
table_select
[
0
],
0
,
n
,
t
),
s
+=
g
(
e
,
t
.
table_select
[
1
],
n
,
r
,
t
),
s
+=
g
(
e
,
t
.
table_select
[
2
],
r
,
a
,
t
)}
function
w
(){
this
.
total
=
0
}
function
R
(
e
,
t
){
var
a
,
s
,
n
,
r
,
i
,
_
=
e
.
internal_flags
;
return
i
=
_
.
w_ptr
,
-
1
==
(
r
=
_
.
h_ptr
-
1
)
&&
(
r
=
Z
.
MAX_HEADER_BUF
-
1
),
a
=
_
.
header
[
r
].
write_timing
-
l
,
0
<=
(
t
.
total
=
a
)
&&
(
s
=
1
+
r
-
i
,
r
<
i
&&
(
s
=
1
+
r
-
i
+
Z
.
MAX_HEADER_BUF
),
a
-=
8
*
s
*
_
.
sideinfo_len
),
a
+=
n
=
o
.
getframebits
(
e
),
t
.
total
+=
n
,
t
.
total
%
8
!=
0
?
t
.
total
=
1
+
t
.
total
/
8
:
t
.
total
=
t
.
total
/
8
,
t
.
total
+=
m
+
1
,
a
<
0
&&
$
.
err
.
println
(
"
strange error flushing buffer ...
\n
"
),
a
}
this
.
getframebits
=
function
(
e
){
var
t
,
a
=
e
.
internal_flags
;
return
t
=
0
!=
a
.
bitrate_index
?
C
.
bitrate_table
[
e
.
version
][
a
.
bitrate_index
]:
e
.
brate
,
8
*
(
0
|
72
e3
*
(
e
.
version
+
1
)
*
t
/
e
.
out_samplerate
+
a
.
padding
)},
this
.
CRC_writeheader
=
function
(
e
,
t
){
var
a
=
65535
;
a
=
n
(
255
&
t
[
2
],
a
),
a
=
n
(
255
&
t
[
3
],
a
);
for
(
var
s
=
6
;
s
<
e
.
sideinfo_len
;
s
++
)
a
=
n
(
255
&
t
[
s
],
a
);
t
[
4
]
=
byte
(
a
>>
8
),
t
[
5
]
=
byte
(
255
&
a
)},
this
.
flush_bitstream
=
function
(
e
){
var
t
,
a
,
s
=
e
.
internal_flags
,
n
=
s
.
h_ptr
-
1
;
if
(
-
1
==
n
&&
(
n
=
Z
.
MAX_HEADER_BUF
-
1
),
t
=
s
.
l3_side
,
!
((
a
=
R
(
e
,
new
w
))
<
0
)){
if
(
_
(
e
,
a
),
s
.
ResvSize
=
0
,
t
.
main_data_begin
=
0
,
s
.
findReplayGain
){
var
r
=
c
.
GetTitleGain
(
s
.
rgdata
);
s
.
RadioGain
=
0
|
Math
.
floor
(
10
*
r
+
.
5
)}
s
.
findPeakSample
&&
(
s
.
noclipGainChange
=
0
|
Math
.
ceil
(
20
*
A
(
s
.
PeakSample
/
32767
)
*
10
),
0
<
s
.
noclipGainChange
&&
(
EQ
(
e
.
scale
,
1
)
||
EQ
(
e
.
scale
,
0
))?
s
.
noclipScale
=
Math
.
floor
(
32767
/
s
.
PeakSample
*
100
)
/
100
:
s
.
noclipScale
=-
1
)}},
this
.
add_dummy_byte
=
function
(
e
,
t
,
a
){
for
(
var
s
,
n
=
e
.
internal_flags
;
0
<
a
--
;)
for
(
i
(
0
,
t
,
8
),
s
=
0
;
s
<
Z
.
MAX_HEADER_BUF
;
++
s
)
n
.
header
[
s
].
write_timing
+=
8
},
this
.
format_bitstream
=
function
(
e
){
var
t
,
a
=
e
.
internal_flags
;
t
=
a
.
l3_side
;
var
s
=
this
.
getframebits
(
e
);
_
(
e
,
t
.
resvDrain_pre
),
function
(
e
,
t
){
var
a
,
s
,
n
,
r
=
e
.
internal_flags
;
if
(
a
=
r
.
l3_side
,
r
.
header
[
r
.
h_ptr
].
ptr
=
0
,
Te
.
fill
(
r
.
header
[
r
.
h_ptr
].
buf
,
0
,
r
.
sideinfo_len
,
0
),
e
.
out_samplerate
<
16
e3
?
f
(
r
,
4094
,
12
):
f
(
r
,
4095
,
12
),
f
(
r
,
e
.
version
,
1
),
f
(
r
,
1
,
2
),
f
(
r
,
e
.
error_protection
?
0
:
1
,
1
),
f
(
r
,
r
.
bitrate_index
,
4
),
f
(
r
,
r
.
samplerate_index
,
2
),
f
(
r
,
r
.
padding
,
1
),
f
(
r
,
e
.
extension
,
1
),
f
(
r
,
e
.
mode
.
ordinal
(),
2
),
f
(
r
,
r
.
mode_ext
,
2
),
f
(
r
,
e
.
copyright
,
1
),
f
(
r
,
e
.
original
,
1
),
f
(
r
,
e
.
emphasis
,
2
),
e
.
error_protection
&&
f
(
r
,
0
,
16
),
1
==
e
.
version
){
for
(
f
(
r
,
a
.
main_data_begin
,
9
),
2
==
r
.
channels_out
?
f
(
r
,
a
.
private_bits
,
3
):
f
(
r
,
a
.
private_bits
,
5
),
n
=
0
;
n
<
r
.
channels_out
;
n
++
){
var
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
f
(
r
,
a
.
scfsi
[
n
][
i
],
1
)}
for
(
s
=
0
;
s
<
2
;
s
++
)
for
(
n
=
0
;
n
<
r
.
channels_out
;
n
++
)
f
(
r
,(
_
=
a
.
tt
[
s
][
n
]).
part2_3_length
+
_
.
part2_length
,
12
),
f
(
r
,
_
.
big_values
/
2
,
9
),
f
(
r
,
_
.
global_gain
,
8
),
f
(
r
,
_
.
scalefac_compress
,
4
),
_
.
block_type
!=
Pe
.
NORM_TYPE
?(
f
(
r
,
1
,
1
),
f
(
r
,
_
.
block_type
,
2
),
f
(
r
,
_
.
mixed_block_flag
,
1
),
14
==
_
.
table_select
[
0
]
&&
(
_
.
table_select
[
0
]
=
16
),
f
(
r
,
_
.
table_select
[
0
],
5
),
14
==
_
.
table_select
[
1
]
&&
(
_
.
table_select
[
1
]
=
16
),
f
(
r
,
_
.
table_select
[
1
],
5
),
f
(
r
,
_
.
subblock_gain
[
0
],
3
),
f
(
r
,
_
.
subblock_gain
[
1
],
3
),
f
(
r
,
_
.
subblock_gain
[
2
],
3
)):(
f
(
r
,
0
,
1
),
14
==
_
.
table_select
[
0
]
&&
(
_
.
table_select
[
0
]
=
16
),
f
(
r
,
_
.
table_select
[
0
],
5
),
14
==
_
.
table_select
[
1
]
&&
(
_
.
table_select
[
1
]
=
16
),
f
(
r
,
_
.
table_select
[
1
],
5
),
14
==
_
.
table_select
[
2
]
&&
(
_
.
table_select
[
2
]
=
16
),
f
(
r
,
_
.
table_select
[
2
],
5
),
f
(
r
,
_
.
region0_count
,
4
),
f
(
r
,
_
.
region1_count
,
3
)),
f
(
r
,
_
.
preflag
,
1
),
f
(
r
,
_
.
scalefac_scale
,
1
),
f
(
r
,
_
.
count1table_select
,
1
)}
else
for
(
f
(
r
,
a
.
main_data_begin
,
8
),
f
(
r
,
a
.
private_bits
,
r
.
channels_out
),
n
=
s
=
0
;
n
<
r
.
channels_out
;
n
++
){
var
_
;
f
(
r
,(
_
=
a
.
tt
[
s
][
n
]).
part2_3_length
+
_
.
part2_length
,
12
),
f
(
r
,
_
.
big_values
/
2
,
9
),
f
(
r
,
_
.
global_gain
,
8
),
f
(
r
,
_
.
scalefac_compress
,
9
),
_
.
block_type
!=
Pe
.
NORM_TYPE
?(
f
(
r
,
1
,
1
),
f
(
r
,
_
.
block_type
,
2
),
f
(
r
,
_
.
mixed_block_flag
,
1
),
14
==
_
.
table_select
[
0
]
&&
(
_
.
table_select
[
0
]
=
16
),
f
(
r
,
_
.
table_select
[
0
],
5
),
14
==
_
.
table_select
[
1
]
&&
(
_
.
table_select
[
1
]
=
16
),
f
(
r
,
_
.
table_select
[
1
],
5
),
f
(
r
,
_
.
subblock_gain
[
0
],
3
),
f
(
r
,
_
.
subblock_gain
[
1
],
3
),
f
(
r
,
_
.
subblock_gain
[
2
],
3
)):(
f
(
r
,
0
,
1
),
14
==
_
.
table_select
[
0
]
&&
(
_
.
table_select
[
0
]
=
16
),
f
(
r
,
_
.
table_select
[
0
],
5
),
14
==
_
.
table_select
[
1
]
&&
(
_
.
table_select
[
1
]
=
16
),
f
(
r
,
_
.
table_select
[
1
],
5
),
14
==
_
.
table_select
[
2
]
&&
(
_
.
table_select
[
2
]
=
16
),
f
(
r
,
_
.
table_select
[
2
],
5
),
f
(
r
,
_
.
region0_count
,
4
),
f
(
r
,
_
.
region1_count
,
3
)),
f
(
r
,
_
.
scalefac_scale
,
1
),
f
(
r
,
_
.
count1table_select
,
1
)}
e
.
error_protection
&&
CRC_writeheader
(
r
,
r
.
header
[
r
.
h_ptr
].
buf
);
var
o
=
r
.
h_ptr
;
r
.
h_ptr
=
o
+
1
&
Z
.
MAX_HEADER_BUF
-
1
,
r
.
header
[
r
.
h_ptr
].
write_timing
=
r
.
header
[
o
].
write_timing
+
t
,
r
.
h_ptr
==
r
.
w_ptr
&&
$
.
err
.
println
(
"
Error: MAX_HEADER_BUF too small in bitstream.c
\n
"
)}(
e
,
s
);
var
n
=
8
*
a
.
sideinfo_len
;
if
(
n
+=
function
(
e
){
var
t
,
a
,
s
,
n
,
r
=
0
,
i
=
e
.
internal_flags
,
_
=
i
.
l3_side
;
if
(
1
==
e
.
version
)
for
(
t
=
0
;
t
<
2
;
t
++
)
for
(
a
=
0
;
a
<
i
.
channels_out
;
a
++
){
var
o
=
_
.
tt
[
t
][
a
],
l
=
k
.
slen1_tab
[
o
.
scalefac_compress
],
f
=
k
.
slen2_tab
[
o
.
scalefac_compress
];
for
(
s
=
n
=
0
;
s
<
o
.
sfbdivide
;
s
++
)
-
1
!=
o
.
scalefac
[
s
]
&&
(
v
(
i
,
o
.
scalefac
[
s
],
l
),
n
+=
l
);
for
(;
s
<
o
.
sfbmax
;
s
++
)
-
1
!=
o
.
scalefac
[
s
]
&&
(
v
(
i
,
o
.
scalefac
[
s
],
f
),
n
+=
f
);
o
.
block_type
==
Pe
.
SHORT_TYPE
?
n
+=
S
(
i
,
o
):
n
+=
M
(
i
,
o
),
r
+=
n
+=
d
(
i
,
o
)}
else
for
(
a
=
t
=
0
;
a
<
i
.
channels_out
;
a
++
){
var
c
,
h
,
u
=
0
;
if
(
h
=
s
=
n
=
0
,(
o
=
_
.
tt
[
t
][
a
]).
block_type
==
Pe
.
SHORT_TYPE
){
for
(;
h
<
4
;
h
++
){
var
b
=
o
.
sfb_partition_table
[
h
]
/
3
,
m
=
o
.
slen
[
h
];
for
(
c
=
0
;
c
<
b
;
c
++
,
s
++
)
v
(
i
,
Math
.
max
(
o
.
scalefac
[
3
*
s
+
0
],
0
),
m
),
v
(
i
,
Math
.
max
(
o
.
scalefac
[
3
*
s
+
1
],
0
),
m
),
v
(
i
,
Math
.
max
(
o
.
scalefac
[
3
*
s
+
2
],
0
),
m
),
u
+=
3
*
m
}
n
+=
S
(
i
,
o
)}
else
{
for
(;
h
<
4
;
h
++
)
for
(
b
=
o
.
sfb_partition_table
[
h
],
m
=
o
.
slen
[
h
],
c
=
0
;
c
<
b
;
c
++
,
s
++
)
v
(
i
,
Math
.
max
(
o
.
scalefac
[
s
],
0
),
m
),
u
+=
m
;
n
+=
M
(
i
,
o
)}
r
+=
u
+
(
n
+=
d
(
i
,
o
))}
return
r
}(
e
),
_
(
e
,
t
.
resvDrain_post
),
n
+=
t
.
resvDrain_post
,
t
.
main_data_begin
+=
(
s
-
n
)
/
8
,
R
(
e
,
new
w
)
!=
a
.
ResvSize
&&
$
.
err
.
println
(
"
Internal buffer inconsistency. flushbits <> ResvSize
"
),
8
*
t
.
main_data_begin
!=
a
.
ResvSize
&&
(
$
.
err
.
printf
(
"
bit reservoir error:
\n
l3_side.main_data_begin: %d
\n
Resvoir size: %d
\n
resv drain (post) %d
\n
resv drain (pre) %d
\n
header and sideinfo: %d
\n
data bits: %d
\n
total bits: %d (remainder: %d)
\n
bitsperframe: %d
\n
"
,
8
*
t
.
main_data_begin
,
a
.
ResvSize
,
t
.
resvDrain_post
,
t
.
resvDrain_pre
,
8
*
a
.
sideinfo_len
,
n
-
t
.
resvDrain_post
-
8
*
a
.
sideinfo_len
,
n
,
n
%
8
,
s
),
$
.
err
.
println
(
"
This is a fatal error. It has several possible causes:
"
),
$
.
err
.
println
(
"
90%% LAME compiled with buggy version of gcc using advanced optimizations
"
),
$
.
err
.
println
(
"
9%% Your system is overclocked
"
),
$
.
err
.
println
(
"
1%% bug in LAME encoding library
"
),
a
.
ResvSize
=
8
*
t
.
main_data_begin
),
1
e9
<
l
){
var
r
;
for
(
r
=
0
;
r
<
Z
.
MAX_HEADER_BUF
;
++
r
)
a
.
header
[
r
].
write_timing
-=
l
;
l
=
0
}
return
0
},
this
.
copy_buffer
=
function
(
e
,
t
,
a
,
s
,
n
){
var
r
=
m
+
1
;
if
(
r
<=
0
)
return
0
;
if
(
0
!=
s
&&
s
<
r
)
return
-
1
;
if
(
$
.
arraycopy
(
b
,
0
,
t
,
a
,
r
),
m
=-
1
,(
p
=
0
)
!=
n
){
var
i
=
Be
(
1
);
if
(
i
[
0
]
=
e
.
nMusicCRC
,
u
.
updateMusicCRC
(
i
,
t
,
a
,
r
),
e
.
nMusicCRC
=
i
[
0
],
0
<
r
&&
(
e
.
VBR_seek_table
.
nBytesWritten
+=
r
),
e
.
decode_on_the_fly
)
for
(
var
_
,
o
=
ke
([
2
,
1152
]),
l
=
r
,
f
=-
1
;
0
!=
f
;)
if
(
f
=
h
.
hip_decode1_unclipped
(
e
.
hip
,
t
,
a
,
l
,
o
[
0
],
o
[
1
]),
l
=
0
,
-
1
==
f
&&
(
f
=
0
),
0
<
f
){
if
(
e
.
findPeakSample
){
for
(
_
=
0
;
_
<
f
;
_
++
)
o
[
0
][
_
]
>
e
.
PeakSample
?
e
.
PeakSample
=
o
[
0
][
_
]:
-
o
[
0
][
_
]
>
e
.
PeakSample
&&
(
e
.
PeakSample
=-
o
[
0
][
_
]);
if
(
1
<
e
.
channels_out
)
for
(
_
=
0
;
_
<
f
;
_
++
)
o
[
1
][
_
]
>
e
.
PeakSample
?
e
.
PeakSample
=
o
[
1
][
_
]:
-
o
[
1
][
_
]
>
e
.
PeakSample
&&
(
e
.
PeakSample
=-
o
[
1
][
_
])}
if
(
e
.
findReplayGain
&&
c
.
AnalyzeSamples
(
e
.
rgdata
,
o
[
0
],
0
,
o
[
1
],
0
,
f
,
e
.
channels_out
)
==
q
.
GAIN_ANALYSIS_ERROR
)
return
-
6
}}
return
r
},
this
.
init_bit_stream_w
=
function
(
e
){
b
=
B
(
Q
.
LAME_MAXMP3BUFFER
),
e
.
h_ptr
=
e
.
w_ptr
=
0
,
e
.
header
[
e
.
h_ptr
].
write_timing
=
0
,
m
=-
1
,
l
=
p
=
0
}}
function
e
(
e
,
t
,
a
,
s
){
this
.
xlen
=
e
,
this
.
linmax
=
t
,
this
.
table
=
a
,
this
.
hlen
=
s
}
Ee
.
STEREO
=
new
Ee
(
0
),
Ee
.
JOINT_STEREO
=
new
Ee
(
1
),
Ee
.
DUAL_CHANNEL
=
new
Ee
(
2
),
Ee
.
MONO
=
new
Ee
(
3
),
Ee
.
NOT_SET
=
new
Ee
(
4
),
q
.
STEPS_per_dB
=
100
,
q
.
MAX_dB
=
120
,
q
.
GAIN_NOT_ENOUGH_SAMPLES
=-
24601
,
q
.
GAIN_ANALYSIS_ERROR
=
0
,
q
.
GAIN_ANALYSIS_OK
=
1
,
q
.
INIT_GAIN_ANALYSIS_ERROR
=
0
,
q
.
INIT_GAIN_ANALYSIS_OK
=
1
,
q
.
MAX_ORDER
=
q
.
YULE_ORDER
=
10
,
q
.
MAX_SAMPLES_PER_WINDOW
=
(
q
.
MAX_SAMP_FREQ
=
48
e3
)
*
(
q
.
RMS_WINDOW_TIME_NUMERATOR
=
1
)
/
(
q
.
RMS_WINDOW_TIME_DENOMINATOR
=
20
)
+
1
,
M
.
NUMTOCENTRIES
=
100
,
M
.
MAXFRAMESIZE
=
2880
,
j
.
EQ
=
function
(
e
,
t
){
return
Math
.
abs
(
e
)
>
Math
.
abs
(
t
)?
Math
.
abs
(
e
-
t
)
<=
1
e
-
6
*
Math
.
abs
(
e
):
Math
.
abs
(
e
-
t
)
<=
1
e
-
6
*
Math
.
abs
(
t
)},
j
.
NEQ
=
function
(
e
,
t
){
return
!
j
.
EQ
(
e
,
t
)};
var
C
=
{};
function
F
(
e
){
this
.
bits
=
e
}
function
T
(){
this
.
over_noise
=
0
,
this
.
tot_noise
=
0
,
this
.
max_noise
=
0
,
this
.
over_count
=
0
,
this
.
over_SSD
=
0
,
this
.
bits
=
0
}
function
r
(
e
,
t
,
a
,
s
){
this
.
l
=
Be
(
1
+
Pe
.
SBMAX_l
),
this
.
s
=
Be
(
1
+
Pe
.
SBMAX_s
),
this
.
psfb21
=
Be
(
1
+
Pe
.
PSFB21
),
this
.
psfb12
=
Be
(
1
+
Pe
.
PSFB12
);
var
n
=
this
.
l
,
r
=
this
.
s
;
4
==
arguments
.
length
&&
(
this
.
arrL
=
e
,
this
.
arrS
=
t
,
this
.
arr21
=
a
,
this
.
arr12
=
s
,
$
.
arraycopy
(
this
.
arrL
,
0
,
n
,
0
,
Math
.
min
(
this
.
arrL
.
length
,
this
.
l
.
length
)),
$
.
arraycopy
(
this
.
arrS
,
0
,
r
,
0
,
Math
.
min
(
this
.
arrS
.
length
,
this
.
s
.
length
)),
$
.
arraycopy
(
this
.
arr21
,
0
,
this
.
psfb21
,
0
,
Math
.
min
(
this
.
arr21
.
length
,
this
.
psfb21
.
length
)),
$
.
arraycopy
(
this
.
arr12
,
0
,
this
.
psfb12
,
0
,
Math
.
min
(
this
.
arr12
.
length
,
this
.
psfb12
.
length
)))}
function
y
(){
var
l
=
null
,
b
=
null
,
s
=
null
;
this
.
setModules
=
function
(
e
,
t
,
a
){
l
=
e
,
b
=
t
,
s
=
a
},
this
.
IPOW20
=
function
(
e
){
return
u
[
e
]};
var
x
=
2.220446049250313
e
-
16
,
f
=
y
.
IXMAX_VAL
+
2
,
c
=
y
.
Q_MAX
,
h
=
y
.
Q_MAX2
,
n
=
100
;
this
.
nr_of_sfb_block
=
[[[
6
,
5
,
5
,
5
],[
9
,
9
,
9
,
9
],[
6
,
9
,
9
,
9
]],[[
6
,
5
,
7
,
3
],[
9
,
9
,
12
,
6
],[
6
,
9
,
12
,
6
]],[[
11
,
10
,
0
,
0
],[
18
,
18
,
0
,
0
],[
15
,
18
,
0
,
0
]],[[
7
,
7
,
7
,
0
],[
12
,
12
,
12
,
0
],[
6
,
15
,
12
,
0
]],[[
6
,
6
,
6
,
3
],[
12
,
9
,
9
,
6
],[
6
,
12
,
9
,
6
]],[[
8
,
8
,
5
,
0
],[
15
,
12
,
9
,
0
],[
6
,
18
,
9
,
0
]]];
var
w
=
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
2
,
2
,
3
,
3
,
3
,
2
,
0
];
this
.
pretab
=
w
,
this
.
sfBandIndex
=
[
new
r
([
0
,
6
,
12
,
18
,
24
,
30
,
36
,
44
,
54
,
66
,
80
,
96
,
116
,
140
,
168
,
200
,
238
,
284
,
336
,
396
,
464
,
522
,
576
],[
0
,
4
,
8
,
12
,
18
,
24
,
32
,
42
,
56
,
74
,
100
,
132
,
174
,
192
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
]),
new
r
([
0
,
6
,
12
,
18
,
24
,
30
,
36
,
44
,
54
,
66
,
80
,
96
,
114
,
136
,
162
,
194
,
232
,
278
,
332
,
394
,
464
,
540
,
576
],[
0
,
4
,
8
,
12
,
18
,
26
,
36
,
48
,
62
,
80
,
104
,
136
,
180
,
192
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
]),
new
r
([
0
,
6
,
12
,
18
,
24
,
30
,
36
,
44
,
54
,
66
,
80
,
96
,
116
,
140
,
168
,
200
,
238
,
284
,
336
,
396
,
464
,
522
,
576
],[
0
,
4
,
8
,
12
,
18
,
26
,
36
,
48
,
62
,
80
,
104
,
134
,
174
,
192
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
]),
new
r
([
0
,
4
,
8
,
12
,
16
,
20
,
24
,
30
,
36
,
44
,
52
,
62
,
74
,
90
,
110
,
134
,
162
,
196
,
238
,
288
,
342
,
418
,
576
],[
0
,
4
,
8
,
12
,
16
,
22
,
30
,
40
,
52
,
66
,
84
,
106
,
136
,
192
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
]),
new
r
([
0
,
4
,
8
,
12
,
16
,
20
,
24
,
30
,
36
,
42
,
50
,
60
,
72
,
88
,
106
,
128
,
156
,
190
,
230
,
276
,
330
,
384
,
576
],[
0
,
4
,
8
,
12
,
16
,
22
,
28
,
38
,
50
,
64
,
80
,
100
,
126
,
192
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
]),
new
r
([
0
,
4
,
8
,
12
,
16
,
20
,
24
,
30
,
36
,
44
,
54
,
66
,
82
,
102
,
126
,
156
,
194
,
240
,
296
,
364
,
448
,
550
,
576
],[
0
,
4
,
8
,
12
,
16
,
22
,
30
,
42
,
58
,
78
,
104
,
138
,
180
,
192
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
]),
new
r
([
0
,
6
,
12
,
18
,
24
,
30
,
36
,
44
,
54
,
66
,
80
,
96
,
116
,
140
,
168
,
200
,
238
,
284
,
336
,
396
,
464
,
522
,
576
],[
0
,
4
,
8
,
12
,
18
,
26
,
36
,
48
,
62
,
80
,
104
,
134
,
174
,
192
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
]),
new
r
([
0
,
6
,
12
,
18
,
24
,
30
,
36
,
44
,
54
,
66
,
80
,
96
,
116
,
140
,
168
,
200
,
238
,
284
,
336
,
396
,
464
,
522
,
576
],[
0
,
4
,
8
,
12
,
18
,
26
,
36
,
48
,
62
,
80
,
104
,
134
,
174
,
192
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
]),
new
r
([
0
,
12
,
24
,
36
,
48
,
60
,
72
,
88
,
108
,
132
,
160
,
192
,
232
,
280
,
336
,
400
,
476
,
566
,
568
,
570
,
572
,
574
,
576
],[
0
,
8
,
16
,
24
,
36
,
52
,
72
,
96
,
124
,
160
,
162
,
164
,
166
,
192
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
,
0
,
0
,
0
])];
var
R
=
Ae
(
c
+
h
+
1
),
u
=
Ae
(
c
),
m
=
Ae
(
f
),
p
=
Ae
(
f
);
function
v
(
e
,
t
){
var
a
=
s
.
ATHformula
(
t
,
e
);
return
a
-=
n
,
a
=
Math
.
pow
(
10
,
a
/
10
+
e
.
ATHlower
)}
function
B
(
e
){
this
.
s
=
e
}
this
.
adj43
=
p
,
this
.
iteration_init
=
function
(
e
){
var
t
,
a
=
e
.
internal_flags
,
s
=
a
.
l3_side
;
if
(
0
==
a
.
iteration_init_init
){
for
(
a
.
iteration_init_init
=
1
,
s
.
main_data_begin
=
0
,
function
(
e
){
for
(
var
t
=
e
.
internal_flags
.
ATH
.
l
,
a
=
e
.
internal_flags
.
ATH
.
psfb21
,
s
=
e
.
internal_flags
.
ATH
.
s
,
n
=
e
.
internal_flags
.
ATH
.
psfb12
,
r
=
e
.
internal_flags
,
i
=
e
.
out_samplerate
,
_
=
0
;
_
<
Pe
.
SBMAX_l
;
_
++
){
var
o
=
r
.
scalefac_band
.
l
[
_
],
l
=
r
.
scalefac_band
.
l
[
_
+
1
];
t
[
_
]
=
K
.
MAX_VALUE
;
for
(
var
f
=
o
;
f
<
l
;
f
++
){
var
c
=
v
(
e
,
f
*
i
/
1152
);
t
[
_
]
=
Math
.
min
(
t
[
_
],
c
)}}
for
(
_
=
0
;
_
<
Pe
.
PSFB21
;
_
++
)
for
(
o
=
r
.
scalefac_band
.
psfb21
[
_
],
l
=
r
.
scalefac_band
.
psfb21
[
_
+
1
],
a
[
_
]
=
K
.
MAX_VALUE
,
f
=
o
;
f
<
l
;
f
++
)
c
=
v
(
e
,
f
*
i
/
1152
),
a
[
_
]
=
Math
.
min
(
a
[
_
],
c
);
for
(
_
=
0
;
_
<
Pe
.
SBMAX_s
;
_
++
){
for
(
o
=
r
.
scalefac_band
.
s
[
_
],
l
=
r
.
scalefac_band
.
s
[
_
+
1
],
s
[
_
]
=
K
.
MAX_VALUE
,
f
=
o
;
f
<
l
;
f
++
)
c
=
v
(
e
,
f
*
i
/
384
),
s
[
_
]
=
Math
.
min
(
s
[
_
],
c
);
s
[
_
]
*=
r
.
scalefac_band
.
s
[
_
+
1
]
-
r
.
scalefac_band
.
s
[
_
]}
for
(
_
=
0
;
_
<
Pe
.
PSFB12
;
_
++
){
for
(
o
=
r
.
scalefac_band
.
psfb12
[
_
],
l
=
r
.
scalefac_band
.
psfb12
[
_
+
1
],
n
[
_
]
=
K
.
MAX_VALUE
,
f
=
o
;
f
<
l
;
f
++
)
c
=
v
(
e
,
f
*
i
/
384
),
n
[
_
]
=
Math
.
min
(
n
[
_
],
c
);
n
[
_
]
*=
r
.
scalefac_band
.
s
[
13
]
-
r
.
scalefac_band
.
s
[
12
]}
if
(
e
.
noATH
){
for
(
_
=
0
;
_
<
Pe
.
SBMAX_l
;
_
++
)
t
[
_
]
=
1
e
-
20
;
for
(
_
=
0
;
_
<
Pe
.
PSFB21
;
_
++
)
a
[
_
]
=
1
e
-
20
;
for
(
_
=
0
;
_
<
Pe
.
SBMAX_s
;
_
++
)
s
[
_
]
=
1
e
-
20
;
for
(
_
=
0
;
_
<
Pe
.
PSFB12
;
_
++
)
n
[
_
]
=
1
e
-
20
}
r
.
ATH
.
floor
=
10
*
A
(
v
(
e
,
-
1
))}(
e
),
m
[
0
]
=
0
,
t
=
1
;
t
<
f
;
t
++
)
m
[
t
]
=
Math
.
pow
(
t
,
4
/
3
);
for
(
t
=
0
;
t
<
f
-
1
;
t
++
)
p
[
t
]
=
t
+
1
-
Math
.
pow
(.
5
*
(
m
[
t
]
+
m
[
t
+
1
]),.
75
);
for
(
p
[
t
]
=
.
5
,
t
=
0
;
t
<
c
;
t
++
)
u
[
t
]
=
Math
.
pow
(
2
,
-
.
1875
*
(
t
-
210
));
for
(
t
=
0
;
t
<=
c
+
h
;
t
++
)
R
[
t
]
=
Math
.
pow
(
2
,.
25
*
(
t
-
210
-
h
));
var
n
,
r
,
i
,
_
;
for
(
l
.
huffman_init
(
a
),
32
<=
(
t
=
e
.
exp_nspsytune
>>
2
&
63
)
&&
(
t
-=
64
),
n
=
Math
.
pow
(
10
,
t
/
4
/
10
),
32
<=
(
t
=
e
.
exp_nspsytune
>>
8
&
63
)
&&
(
t
-=
64
),
r
=
Math
.
pow
(
10
,
t
/
4
/
10
),
32
<=
(
t
=
e
.
exp_nspsytune
>>
14
&
63
)
&&
(
t
-=
64
),
i
=
Math
.
pow
(
10
,
t
/
4
/
10
),
32
<=
(
t
=
e
.
exp_nspsytune
>>
20
&
63
)
&&
(
t
-=
64
),
_
=
i
*
Math
.
pow
(
10
,
t
/
4
/
10
),
t
=
0
;
t
<
Pe
.
SBMAX_l
;
t
++
){
o
=
t
<=
6
?
n
:
t
<=
13
?
r
:
t
<=
20
?
i
:
_
,
a
.
nsPsy
.
longfact
[
t
]
=
o
}
for
(
t
=
0
;
t
<
Pe
.
SBMAX_s
;
t
++
){
var
o
;
o
=
t
<=
5
?
n
:
t
<=
10
?
r
:
t
<=
11
?
i
:
_
,
a
.
nsPsy
.
shortfact
[
t
]
=
o
}}},
this
.
on_pe
=
function
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
,
_
,
o
=
e
.
internal_flags
,
l
=
0
,
f
=
Be
(
2
),
c
=
new
F
(
l
),
h
=
b
.
ResvMaxBits
(
e
,
s
,
c
,
r
),
u
=
(
l
=
c
.
bits
)
+
h
;
for
(
Z
.
MAX_BITS_PER_GRANULE
<
u
&&
(
u
=
Z
.
MAX_BITS_PER_GRANULE
),
_
=
i
=
0
;
_
<
o
.
channels_out
;
++
_
)
a
[
_
]
=
Math
.
min
(
Z
.
MAX_BITS_PER_CHANNEL
,
l
/
o
.
channels_out
),
f
[
_
]
=
0
|
a
[
_
]
*
t
[
n
][
_
]
/
700
-
a
[
_
],
f
[
_
]
>
3
*
s
/
4
&&
(
f
[
_
]
=
3
*
s
/
4
),
f
[
_
]
<
0
&&
(
f
[
_
]
=
0
),
f
[
_
]
+
a
[
_
]
>
Z
.
MAX_BITS_PER_CHANNEL
&&
(
f
[
_
]
=
Math
.
max
(
0
,
Z
.
MAX_BITS_PER_CHANNEL
-
a
[
_
])),
i
+=
f
[
_
];
if
(
h
<
i
)
for
(
_
=
0
;
_
<
o
.
channels_out
;
++
_
)
f
[
_
]
=
h
*
f
[
_
]
/
i
;
for
(
_
=
0
;
_
<
o
.
channels_out
;
++
_
)
a
[
_
]
+=
f
[
_
],
h
-=
f
[
_
];
for
(
_
=
i
=
0
;
_
<
o
.
channels_out
;
++
_
)
i
+=
a
[
_
];
if
(
Z
.
MAX_BITS_PER_GRANULE
<
i
){
for
(
_
=
0
;
_
<
o
.
channels_out
;
++
_
)
a
[
_
]
*=
Z
.
MAX_BITS_PER_GRANULE
,
a
[
_
]
/=
i
,
a
[
_
]}
return
u
},
this
.
reduce_side
=
function
(
e
,
t
,
a
,
s
){
var
n
=
.
33
*
(.
5
-
t
)
/
.
5
;
n
<
0
&&
(
n
=
0
),.
5
<
n
&&
(
n
=
.
5
);
var
r
=
0
|
.
5
*
n
*
(
e
[
0
]
+
e
[
1
]);
r
>
Z
.
MAX_BITS_PER_CHANNEL
-
e
[
0
]
&&
(
r
=
Z
.
MAX_BITS_PER_CHANNEL
-
e
[
0
]),
r
<
0
&&
(
r
=
0
),
125
<=
e
[
1
]
&&
(
125
<
e
[
1
]
-
r
?(
e
[
0
]
<
a
&&
(
e
[
0
]
+=
r
),
e
[
1
]
-=
r
):(
e
[
0
]
+=
e
[
1
]
-
125
,
e
[
1
]
=
125
)),
s
<
(
r
=
e
[
0
]
+
e
[
1
])
&&
(
e
[
0
]
=
s
*
e
[
0
]
/
r
,
e
[
1
]
=
s
*
e
[
1
]
/
r
)},
this
.
athAdjust
=
function
(
e
,
t
,
a
){
var
s
=
90.30873362
,
n
=
ee
.
FAST_LOG10_X
(
t
,
10
),
r
=
e
*
e
,
i
=
0
;
return
n
-=
a
,
1
e
-
20
<
r
&&
(
i
=
1
+
ee
.
FAST_LOG10_X
(
r
,
10
/
s
)),
i
<
0
&&
(
i
=
0
),
n
*=
i
,
n
+=
a
+
s
-
94.82444863
,
Math
.
pow
(
10
,.
1
*
n
)},
this
.
calc_xmin
=
function
(
e
,
t
,
a
,
s
){
var
n
,
r
=
0
,
i
=
e
.
internal_flags
,
_
=
0
,
o
=
0
,
l
=
i
.
ATH
,
f
=
a
.
xr
,
c
=
e
.
VBR
==
ye
.
vbr_mtrh
?
1
:
0
,
h
=
i
.
masking_lower
;
for
(
e
.
VBR
!=
ye
.
vbr_mtrh
&&
e
.
VBR
!=
ye
.
vbr_mt
||
(
h
=
1
),
n
=
0
;
n
<
a
.
psy_lmax
;
n
++
){
S
=
(
g
=
e
.
VBR
==
ye
.
vbr_rh
||
e
.
VBR
==
ye
.
vbr_mtrh
?
athAdjust
(
l
.
adjust
,
l
.
l
[
n
],
l
.
floor
):
l
.
adjust
*
l
.
l
[
n
])
/
(
p
=
a
.
width
[
n
]),
M
=
x
,
A
=
p
>>
1
,
B
=
0
;
do
{
B
+=
k
=
f
[
_
]
*
f
[
_
],
M
+=
k
<
S
?
k
:
S
,
B
+=
T
=
f
[
++
_
]
*
f
[
_
],
M
+=
T
<
S
?
T
:
S
,
_
++
}
while
(
0
<--
A
);
if
(
g
<
B
&&
o
++
,
n
==
Pe
.
SBPSY_l
)
M
<
(
R
=
g
*
i
.
nsPsy
.
longfact
[
n
])
&&
(
M
=
R
);
if
(
0
!=
c
&&
(
g
=
M
),
!
e
.
ATHonly
)
if
(
0
<
(
w
=
t
.
en
.
l
[
n
]))
R
=
B
*
t
.
thm
.
l
[
n
]
*
h
/
w
,
0
!=
c
&&
(
R
*=
i
.
nsPsy
.
longfact
[
n
]),
g
<
R
&&
(
g
=
R
);
s
[
r
++
]
=
0
!=
c
?
g
:
g
*
i
.
nsPsy
.
longfact
[
n
]}
var
u
=
575
;
if
(
a
.
block_type
!=
Pe
.
SHORT_TYPE
)
for
(
var
b
=
576
;
0
!=
b
--&&
j
.
EQ
(
f
[
b
],
0
);)
u
=
b
;
a
.
max_nonzero_coeff
=
u
;
for
(
var
m
=
a
.
sfb_smin
;
n
<
a
.
psymax
;
m
++
,
n
+=
3
){
var
p
,
v
,
d
;
for
(
d
=
e
.
VBR
==
ye
.
vbr_rh
||
e
.
VBR
==
ye
.
vbr_mtrh
?
athAdjust
(
l
.
adjust
,
l
.
s
[
m
],
l
.
floor
):
l
.
adjust
*
l
.
s
[
m
],
p
=
a
.
width
[
n
],
v
=
0
;
v
<
3
;
v
++
){
var
g
,
S
,
M
,
w
,
R
,
B
=
0
,
A
=
p
>>
1
;
S
=
d
/
p
,
M
=
x
;
do
{
var
k
,
T
;
B
+=
k
=
f
[
_
]
*
f
[
_
],
M
+=
k
<
S
?
k
:
S
,
B
+=
T
=
f
[
++
_
]
*
f
[
_
],
M
+=
T
<
S
?
T
:
S
,
_
++
}
while
(
0
<--
A
);
if
(
d
<
B
&&
o
++
,
m
==
Pe
.
SBPSY_s
)
M
<
(
R
=
d
*
i
.
nsPsy
.
shortfact
[
m
])
&&
(
M
=
R
);
if
(
g
=
0
!=
c
?
M
:
d
,
!
e
.
ATHonly
&&!
e
.
ATHshort
)
if
(
0
<
(
w
=
t
.
en
.
s
[
m
][
v
]))
R
=
B
*
t
.
thm
.
s
[
m
][
v
]
*
h
/
w
,
0
!=
c
&&
(
R
*=
i
.
nsPsy
.
shortfact
[
m
]),
g
<
R
&&
(
g
=
R
);
s
[
r
++
]
=
0
!=
c
?
g
:
g
*
i
.
nsPsy
.
shortfact
[
m
]}
e
.
useTemporal
&&
(
s
[
r
-
3
]
>
s
[
r
-
3
+
1
]
&&
(
s
[
r
-
3
+
1
]
+=
(
s
[
r
-
3
]
-
s
[
r
-
3
+
1
])
*
i
.
decay
),
s
[
r
-
3
+
1
]
>
s
[
r
-
3
+
2
]
&&
(
s
[
r
-
3
+
2
]
+=
(
s
[
r
-
3
+
1
]
-
s
[
r
-
3
+
2
])
*
i
.
decay
))}
return
o
},
this
.
calc_noise_core
=
function
(
e
,
t
,
a
,
s
){
var
n
=
0
,
r
=
t
.
s
,
i
=
e
.
l3_enc
;
if
(
r
>
e
.
count1
)
for
(;
0
!=
a
--
;){
o
=
e
.
xr
[
r
],
r
++
,
n
+=
o
*
o
,
o
=
e
.
xr
[
r
],
r
++
,
n
+=
o
*
o
}
else
if
(
r
>
e
.
big_values
){
var
_
=
Ae
(
2
);
for
(
_
[
0
]
=
0
,
_
[
1
]
=
s
;
0
!=
a
--
;){
o
=
Math
.
abs
(
e
.
xr
[
r
])
-
_
[
i
[
r
]],
r
++
,
n
+=
o
*
o
,
o
=
Math
.
abs
(
e
.
xr
[
r
])
-
_
[
i
[
r
]],
r
++
,
n
+=
o
*
o
}}
else
for
(;
0
!=
a
--
;){
var
o
;
o
=
Math
.
abs
(
e
.
xr
[
r
])
-
m
[
i
[
r
]]
*
s
,
r
++
,
n
+=
o
*
o
,
o
=
Math
.
abs
(
e
.
xr
[
r
])
-
m
[
i
[
r
]]
*
s
,
r
++
,
n
+=
o
*
o
}
return
t
.
s
=
r
,
n
},
this
.
calc_noise
=
function
(
e
,
t
,
a
,
s
,
n
){
var
r
,
i
,
_
=
0
,
o
=
0
,
l
=
0
,
f
=
0
,
c
=
0
,
h
=-
20
,
u
=
0
,
b
=
e
.
scalefac
,
m
=
0
;
for
(
r
=
s
.
over_SSD
=
0
;
r
<
e
.
psymax
;
r
++
){
var
p
,
v
=
e
.
global_gain
-
(
b
[
m
++
]
+
(
0
!=
e
.
preflag
?
w
[
r
]:
0
)
<<
e
.
scalefac_scale
+
1
)
-
8
*
e
.
subblock_gain
[
e
.
window
[
r
]],
d
=
0
;
if
(
null
!=
n
&&
n
.
step
[
r
]
==
v
)
d
=
n
.
noise
[
r
],
u
+=
e
.
width
[
r
],
a
[
_
++
]
=
d
/
t
[
o
++
],
d
=
n
.
noise_log
[
r
];
else
{
var
g
,
S
=
R
[
v
+
y
.
Q_MAX2
];
if
(
i
=
e
.
width
[
r
]
>>
1
,
u
+
e
.
width
[
r
]
>
e
.
max_nonzero_coeff
)
i
=
0
<
(
g
=
e
.
max_nonzero_coeff
-
u
+
1
)?
g
>>
1
:
0
;
var
M
=
new
B
(
u
);
d
=
this
.
calc_noise_core
(
e
,
M
,
i
,
S
),
u
=
M
.
s
,
null
!=
n
&&
(
n
.
step
[
r
]
=
v
,
n
.
noise
[
r
]
=
d
),
d
=
a
[
_
++
]
=
d
/
t
[
o
++
],
d
=
ee
.
FAST_LOG10
(
Math
.
max
(
d
,
1
e
-
20
)),
null
!=
n
&&
(
n
.
noise_log
[
r
]
=
d
)}
if
(
null
!=
n
&&
(
n
.
global_gain
=
e
.
global_gain
),
c
+=
d
,
0
<
d
)
p
=
Math
.
max
(
0
|
10
*
d
+
.
5
,
1
),
s
.
over_SSD
+=
p
*
p
,
l
++
,
f
+=
d
;
h
=
Math
.
max
(
h
,
d
)}
return
s
.
over_count
=
l
,
s
.
tot_noise
=
c
,
s
.
over_noise
=
f
,
s
.
max_noise
=
h
,
l
},
this
.
set_pinfo
=
function
(
e
,
t
,
a
,
s
,
n
){
var
r
,
i
,
_
,
o
,
l
,
f
=
e
.
internal_flags
,
c
=
0
==
t
.
scalefac_scale
?.
5
:
1
,
h
=
t
.
scalefac
,
u
=
Ae
(
z
.
SFBMAX
),
b
=
Ae
(
z
.
SFBMAX
),
m
=
new
T
;
calc_xmin
(
e
,
a
,
t
,
u
),
calc_noise
(
t
,
u
,
b
,
m
,
null
);
var
p
=
0
;
for
(
i
=
t
.
sfb_lmax
,
t
.
block_type
!=
Pe
.
SHORT_TYPE
&&
0
==
t
.
mixed_block_flag
&&
(
i
=
22
),
r
=
0
;
r
<
i
;
r
++
){
var
v
=
f
.
scalefac_band
.
l
[
r
],
d
=
(
g
=
f
.
scalefac_band
.
l
[
r
+
1
])
-
v
;
for
(
o
=
0
;
p
<
g
;
p
++
)
o
+=
t
.
xr
[
p
]
*
t
.
xr
[
p
];
o
/=
d
,
l
=
1
e15
,
f
.
pinfo
.
en
[
s
][
n
][
r
]
=
l
*
o
,
f
.
pinfo
.
xfsf
[
s
][
n
][
r
]
=
l
*
u
[
r
]
*
b
[
r
]
/
d
,
0
<
a
.
en
.
l
[
r
]
&&!
e
.
ATHonly
?
o
/=
a
.
en
.
l
[
r
]:
o
=
0
,
f
.
pinfo
.
thr
[
s
][
n
][
r
]
=
l
*
Math
.
max
(
o
*
a
.
thm
.
l
[
r
],
f
.
ATH
.
l
[
r
]),(
f
.
pinfo
.
LAMEsfb
[
s
][
n
][
r
]
=
0
)
!=
t
.
preflag
&&
11
<=
r
&&
(
f
.
pinfo
.
LAMEsfb
[
s
][
n
][
r
]
=-
c
*
w
[
r
]),
r
<
Pe
.
SBPSY_l
&&
(
f
.
pinfo
.
LAMEsfb
[
s
][
n
][
r
]
-=
c
*
h
[
r
])}
if
(
t
.
block_type
==
Pe
.
SHORT_TYPE
)
for
(
i
=
r
,
r
=
t
.
sfb_smin
;
r
<
Pe
.
SBMAX_s
;
r
++
){
v
=
f
.
scalefac_band
.
s
[
r
],
d
=
(
g
=
f
.
scalefac_band
.
s
[
r
+
1
])
-
v
;
for
(
var
g
,
S
=
0
;
S
<
3
;
S
++
){
for
(
o
=
0
,
_
=
v
;
_
<
g
;
_
++
)
o
+=
t
.
xr
[
p
]
*
t
.
xr
[
p
],
p
++
;
o
=
Math
.
max
(
o
/
d
,
1
e
-
20
),
l
=
1
e15
,
f
.
pinfo
.
en_s
[
s
][
n
][
3
*
r
+
S
]
=
l
*
o
,
f
.
pinfo
.
xfsf_s
[
s
][
n
][
3
*
r
+
S
]
=
l
*
u
[
i
]
*
b
[
i
]
/
d
,
0
<
a
.
en
.
s
[
r
][
S
]?
o
/=
a
.
en
.
s
[
r
][
S
]:
o
=
0
,(
e
.
ATHonly
||
e
.
ATHshort
)
&&
(
o
=
0
),
f
.
pinfo
.
thr_s
[
s
][
n
][
3
*
r
+
S
]
=
l
*
Math
.
max
(
o
*
a
.
thm
.
s
[
r
][
S
],
f
.
ATH
.
s
[
r
]),
f
.
pinfo
.
LAMEsfb_s
[
s
][
n
][
3
*
r
+
S
]
=-
2
*
t
.
subblock_gain
[
S
],
r
<
Pe
.
SBPSY_s
&&
(
f
.
pinfo
.
LAMEsfb_s
[
s
][
n
][
3
*
r
+
S
]
-=
c
*
h
[
i
]),
i
++
}}
f
.
pinfo
.
LAMEqss
[
s
][
n
]
=
t
.
global_gain
,
f
.
pinfo
.
LAMEmainbits
[
s
][
n
]
=
t
.
part2_3_length
+
t
.
part2_length
,
f
.
pinfo
.
LAMEsfbits
[
s
][
n
]
=
t
.
part2_length
,
f
.
pinfo
.
over
[
s
][
n
]
=
m
.
over_count
,
f
.
pinfo
.
max_noise
[
s
][
n
]
=
10
*
m
.
max_noise
,
f
.
pinfo
.
over_noise
[
s
][
n
]
=
10
*
m
.
over_noise
,
f
.
pinfo
.
tot_noise
[
s
][
n
]
=
10
*
m
.
tot_noise
,
f
.
pinfo
.
over_SSD
[
s
][
n
]
=
m
.
over_SSD
}}
function
x
(){
this
.
xr
=
Ae
(
576
),
this
.
l3_enc
=
Be
(
576
),
this
.
scalefac
=
Be
(
z
.
SFBMAX
),
this
.
xrpow_max
=
0
,
this
.
part2_3_length
=
0
,
this
.
big_values
=
0
,
this
.
count1
=
0
,
this
.
global_gain
=
0
,
this
.
scalefac_compress
=
0
,
this
.
block_type
=
0
,
this
.
mixed_block_flag
=
0
,
this
.
table_select
=
Be
(
3
),
this
.
subblock_gain
=
Be
(
4
),
this
.
region0_count
=
0
,
this
.
region1_count
=
0
,
this
.
preflag
=
0
,
this
.
scalefac_scale
=
0
,
this
.
count1table_select
=
0
,
this
.
part2_length
=
0
,
this
.
sfb_lmax
=
0
,
this
.
sfb_smin
=
0
,
this
.
psy_lmax
=
0
,
this
.
sfbmax
=
0
,
this
.
psymax
=
0
,
this
.
sfbdivide
=
0
,
this
.
width
=
Be
(
z
.
SFBMAX
),
this
.
window
=
Be
(
z
.
SFBMAX
),
this
.
count1bits
=
0
,
this
.
sfb_partition_table
=
null
,
this
.
slen
=
Be
(
4
),
this
.
max_nonzero_coeff
=
0
;
var
a
=
this
;
function
s
(
e
){
return
new
Int32Array
(
e
)}
this
.
assign
=
function
(
e
){
var
t
;
a
.
xr
=
(
t
=
e
.
xr
,
new
Float32Array
(
t
)),
a
.
l3_enc
=
s
(
e
.
l3_enc
),
a
.
scalefac
=
s
(
e
.
scalefac
),
a
.
xrpow_max
=
e
.
xrpow_max
,
a
.
part2_3_length
=
e
.
part2_3_length
,
a
.
big_values
=
e
.
big_values
,
a
.
count1
=
e
.
count1
,
a
.
global_gain
=
e
.
global_gain
,
a
.
scalefac_compress
=
e
.
scalefac_compress
,
a
.
block_type
=
e
.
block_type
,
a
.
mixed_block_flag
=
e
.
mixed_block_flag
,
a
.
table_select
=
s
(
e
.
table_select
),
a
.
subblock_gain
=
s
(
e
.
subblock_gain
),
a
.
region0_count
=
e
.
region0_count
,
a
.
region1_count
=
e
.
region1_count
,
a
.
preflag
=
e
.
preflag
,
a
.
scalefac_scale
=
e
.
scalefac_scale
,
a
.
count1table_select
=
e
.
count1table_select
,
a
.
part2_length
=
e
.
part2_length
,
a
.
sfb_lmax
=
e
.
sfb_lmax
,
a
.
sfb_smin
=
e
.
sfb_smin
,
a
.
psy_lmax
=
e
.
psy_lmax
,
a
.
sfbmax
=
e
.
sfbmax
,
a
.
psymax
=
e
.
psymax
,
a
.
sfbdivide
=
e
.
sfbdivide
,
a
.
width
=
s
(
e
.
width
),
a
.
window
=
s
(
e
.
window
),
a
.
count1bits
=
e
.
count1bits
,
a
.
sfb_partition_table
=
e
.
sfb_partition_table
.
slice
(
0
),
a
.
slen
=
s
(
e
.
slen
),
a
.
max_nonzero_coeff
=
e
.
max_nonzero_coeff
}}
C
.
t1HB
=
[
1
,
1
,
1
,
0
],
C
.
t2HB
=
[
1
,
2
,
1
,
3
,
1
,
1
,
3
,
2
,
0
],
C
.
t3HB
=
[
3
,
2
,
1
,
1
,
1
,
1
,
3
,
2
,
0
],
C
.
t5HB
=
[
1
,
2
,
6
,
5
,
3
,
1
,
4
,
4
,
7
,
5
,
7
,
1
,
6
,
1
,
1
,
0
],
C
.
t6HB
=
[
7
,
3
,
5
,
1
,
6
,
2
,
3
,
2
,
5
,
4
,
4
,
1
,
3
,
3
,
2
,
0
],
C
.
t7HB
=
[
1
,
2
,
10
,
19
,
16
,
10
,
3
,
3
,
7
,
10
,
5
,
3
,
11
,
4
,
13
,
17
,
8
,
4
,
12
,
11
,
18
,
15
,
11
,
2
,
7
,
6
,
9
,
14
,
3
,
1
,
6
,
4
,
5
,
3
,
2
,
0
],
C
.
t8HB
=
[
3
,
4
,
6
,
18
,
12
,
5
,
5
,
1
,
2
,
16
,
9
,
3
,
7
,
3
,
5
,
14
,
7
,
3
,
19
,
17
,
15
,
13
,
10
,
4
,
13
,
5
,
8
,
11
,
5
,
1
,
12
,
4
,
4
,
1
,
1
,
0
],
C
.
t9HB
=
[
7
,
5
,
9
,
14
,
15
,
7
,
6
,
4
,
5
,
5
,
6
,
7
,
7
,
6
,
8
,
8
,
8
,
5
,
15
,
6
,
9
,
10
,
5
,
1
,
11
,
7
,
9
,
6
,
4
,
1
,
14
,
4
,
6
,
2
,
6
,
0
],
C
.
t10HB
=
[
1
,
2
,
10
,
23
,
35
,
30
,
12
,
17
,
3
,
3
,
8
,
12
,
18
,
21
,
12
,
7
,
11
,
9
,
15
,
21
,
32
,
40
,
19
,
6
,
14
,
13
,
22
,
34
,
46
,
23
,
18
,
7
,
20
,
19
,
33
,
47
,
27
,
22
,
9
,
3
,
31
,
22
,
41
,
26
,
21
,
20
,
5
,
3
,
14
,
13
,
10
,
11
,
16
,
6
,
5
,
1
,
9
,
8
,
7
,
8
,
4
,
4
,
2
,
0
],
C
.
t11HB
=
[
3
,
4
,
10
,
24
,
34
,
33
,
21
,
15
,
5
,
3
,
4
,
10
,
32
,
17
,
11
,
10
,
11
,
7
,
13
,
18
,
30
,
31
,
20
,
5
,
25
,
11
,
19
,
59
,
27
,
18
,
12
,
5
,
35
,
33
,
31
,
58
,
30
,
16
,
7
,
5
,
28
,
26
,
32
,
19
,
17
,
15
,
8
,
14
,
14
,
12
,
9
,
13
,
14
,
9
,
4
,
1
,
11
,
4
,
6
,
6
,
6
,
3
,
2
,
0
],
C
.
t12HB
=
[
9
,
6
,
16
,
33
,
41
,
39
,
38
,
26
,
7
,
5
,
6
,
9
,
23
,
16
,
26
,
11
,
17
,
7
,
11
,
14
,
21
,
30
,
10
,
7
,
17
,
10
,
15
,
12
,
18
,
28
,
14
,
5
,
32
,
13
,
22
,
19
,
18
,
16
,
9
,
5
,
40
,
17
,
31
,
29
,
17
,
13
,
4
,
2
,
27
,
12
,
11
,
15
,
10
,
7
,
4
,
1
,
27
,
12
,
8
,
12
,
6
,
3
,
1
,
0
],
C
.
t13HB
=
[
1
,
5
,
14
,
21
,
34
,
51
,
46
,
71
,
42
,
52
,
68
,
52
,
67
,
44
,
43
,
19
,
3
,
4
,
12
,
19
,
31
,
26
,
44
,
33
,
31
,
24
,
32
,
24
,
31
,
35
,
22
,
14
,
15
,
13
,
23
,
36
,
59
,
49
,
77
,
65
,
29
,
40
,
30
,
40
,
27
,
33
,
42
,
16
,
22
,
20
,
37
,
61
,
56
,
79
,
73
,
64
,
43
,
76
,
56
,
37
,
26
,
31
,
25
,
14
,
35
,
16
,
60
,
57
,
97
,
75
,
114
,
91
,
54
,
73
,
55
,
41
,
48
,
53
,
23
,
24
,
58
,
27
,
50
,
96
,
76
,
70
,
93
,
84
,
77
,
58
,
79
,
29
,
74
,
49
,
41
,
17
,
47
,
45
,
78
,
74
,
115
,
94
,
90
,
79
,
69
,
83
,
71
,
50
,
59
,
38
,
36
,
15
,
72
,
34
,
56
,
95
,
92
,
85
,
91
,
90
,
86
,
73
,
77
,
65
,
51
,
44
,
43
,
42
,
43
,
20
,
30
,
44
,
55
,
78
,
72
,
87
,
78
,
61
,
46
,
54
,
37
,
30
,
20
,
16
,
53
,
25
,
41
,
37
,
44
,
59
,
54
,
81
,
66
,
76
,
57
,
54
,
37
,
18
,
39
,
11
,
35
,
33
,
31
,
57
,
42
,
82
,
72
,
80
,
47
,
58
,
55
,
21
,
22
,
26
,
38
,
22
,
53
,
25
,
23
,
38
,
70
,
60
,
51
,
36
,
55
,
26
,
34
,
23
,
27
,
14
,
9
,
7
,
34
,
32
,
28
,
39
,
49
,
75
,
30
,
52
,
48
,
40
,
52
,
28
,
18
,
17
,
9
,
5
,
45
,
21
,
34
,
64
,
56
,
50
,
49
,
45
,
31
,
19
,
12
,
15
,
10
,
7
,
6
,
3
,
48
,
23
,
20
,
39
,
36
,
35
,
53
,
21
,
16
,
23
,
13
,
10
,
6
,
1
,
4
,
2
,
16
,
15
,
17
,
27
,
25
,
20
,
29
,
11
,
17
,
12
,
16
,
8
,
1
,
1
,
0
,
1
],
C
.
t15HB
=
[
7
,
12
,
18
,
53
,
47
,
76
,
124
,
108
,
89
,
123
,
108
,
119
,
107
,
81
,
122
,
63
,
13
,
5
,
16
,
27
,
46
,
36
,
61
,
51
,
42
,
70
,
52
,
83
,
65
,
41
,
59
,
36
,
19
,
17
,
15
,
24
,
41
,
34
,
59
,
48
,
40
,
64
,
50
,
78
,
62
,
80
,
56
,
33
,
29
,
28
,
25
,
43
,
39
,
63
,
55
,
93
,
76
,
59
,
93
,
72
,
54
,
75
,
50
,
29
,
52
,
22
,
42
,
40
,
67
,
57
,
95
,
79
,
72
,
57
,
89
,
69
,
49
,
66
,
46
,
27
,
77
,
37
,
35
,
66
,
58
,
52
,
91
,
74
,
62
,
48
,
79
,
63
,
90
,
62
,
40
,
38
,
125
,
32
,
60
,
56
,
50
,
92
,
78
,
65
,
55
,
87
,
71
,
51
,
73
,
51
,
70
,
30
,
109
,
53
,
49
,
94
,
88
,
75
,
66
,
122
,
91
,
73
,
56
,
42
,
64
,
44
,
21
,
25
,
90
,
43
,
41
,
77
,
73
,
63
,
56
,
92
,
77
,
66
,
47
,
67
,
48
,
53
,
36
,
20
,
71
,
34
,
67
,
60
,
58
,
49
,
88
,
76
,
67
,
106
,
71
,
54
,
38
,
39
,
23
,
15
,
109
,
53
,
51
,
47
,
90
,
82
,
58
,
57
,
48
,
72
,
57
,
41
,
23
,
27
,
62
,
9
,
86
,
42
,
40
,
37
,
70
,
64
,
52
,
43
,
70
,
55
,
42
,
25
,
29
,
18
,
11
,
11
,
118
,
68
,
30
,
55
,
50
,
46
,
74
,
65
,
49
,
39
,
24
,
16
,
22
,
13
,
14
,
7
,
91
,
44
,
39
,
38
,
34
,
63
,
52
,
45
,
31
,
52
,
28
,
19
,
14
,
8
,
9
,
3
,
123
,
60
,
58
,
53
,
47
,
43
,
32
,
22
,
37
,
24
,
17
,
12
,
15
,
10
,
2
,
1
,
71
,
37
,
34
,
30
,
28
,
20
,
17
,
26
,
21
,
16
,
10
,
6
,
8
,
6
,
2
,
0
],
C
.
t16HB
=
[
1
,
5
,
14
,
44
,
74
,
63
,
110
,
93
,
172
,
149
,
138
,
242
,
225
,
195
,
376
,
17
,
3
,
4
,
12
,
20
,
35
,
62
,
53
,
47
,
83
,
75
,
68
,
119
,
201
,
107
,
207
,
9
,
15
,
13
,
23
,
38
,
67
,
58
,
103
,
90
,
161
,
72
,
127
,
117
,
110
,
209
,
206
,
16
,
45
,
21
,
39
,
69
,
64
,
114
,
99
,
87
,
158
,
140
,
252
,
212
,
199
,
387
,
365
,
26
,
75
,
36
,
68
,
65
,
115
,
101
,
179
,
164
,
155
,
264
,
246
,
226
,
395
,
382
,
362
,
9
,
66
,
30
,
59
,
56
,
102
,
185
,
173
,
265
,
142
,
253
,
232
,
400
,
388
,
378
,
445
,
16
,
111
,
54
,
52
,
100
,
184
,
178
,
160
,
133
,
257
,
244
,
228
,
217
,
385
,
366
,
715
,
10
,
98
,
48
,
91
,
88
,
165
,
157
,
148
,
261
,
248
,
407
,
397
,
372
,
380
,
889
,
884
,
8
,
85
,
84
,
81
,
159
,
156
,
143
,
260
,
249
,
427
,
401
,
392
,
383
,
727
,
713
,
708
,
7
,
154
,
76
,
73
,
141
,
131
,
256
,
245
,
426
,
406
,
394
,
384
,
735
,
359
,
710
,
352
,
11
,
139
,
129
,
67
,
125
,
247
,
233
,
229
,
219
,
393
,
743
,
737
,
720
,
885
,
882
,
439
,
4
,
243
,
120
,
118
,
115
,
227
,
223
,
396
,
746
,
742
,
736
,
721
,
712
,
706
,
223
,
436
,
6
,
202
,
224
,
222
,
218
,
216
,
389
,
386
,
381
,
364
,
888
,
443
,
707
,
440
,
437
,
1728
,
4
,
747
,
211
,
210
,
208
,
370
,
379
,
734
,
723
,
714
,
1735
,
883
,
877
,
876
,
3459
,
865
,
2
,
377
,
369
,
102
,
187
,
726
,
722
,
358
,
711
,
709
,
866
,
1734
,
871
,
3458
,
870
,
434
,
0
,
12
,
10
,
7
,
11
,
10
,
17
,
11
,
9
,
13
,
12
,
10
,
7
,
5
,
3
,
1
,
3
],
C
.
t24HB
=
[
15
,
13
,
46
,
80
,
146
,
262
,
248
,
434
,
426
,
669
,
653
,
649
,
621
,
517
,
1032
,
88
,
14
,
12
,
21
,
38
,
71
,
130
,
122
,
216
,
209
,
198
,
327
,
345
,
319
,
297
,
279
,
42
,
47
,
22
,
41
,
74
,
68
,
128
,
120
,
221
,
207
,
194
,
182
,
340
,
315
,
295
,
541
,
18
,
81
,
39
,
75
,
70
,
134
,
125
,
116
,
220
,
204
,
190
,
178
,
325
,
311
,
293
,
271
,
16
,
147
,
72
,
69
,
135
,
127
,
118
,
112
,
210
,
200
,
188
,
352
,
323
,
306
,
285
,
540
,
14
,
263
,
66
,
129
,
126
,
119
,
114
,
214
,
202
,
192
,
180
,
341
,
317
,
301
,
281
,
262
,
12
,
249
,
123
,
121
,
117
,
113
,
215
,
206
,
195
,
185
,
347
,
330
,
308
,
291
,
272
,
520
,
10
,
435
,
115
,
111
,
109
,
211
,
203
,
196
,
187
,
353
,
332
,
313
,
298
,
283
,
531
,
381
,
17
,
427
,
212
,
208
,
205
,
201
,
193
,
186
,
177
,
169
,
320
,
303
,
286
,
268
,
514
,
377
,
16
,
335
,
199
,
197
,
191
,
189
,
181
,
174
,
333
,
321
,
305
,
289
,
275
,
521
,
379
,
371
,
11
,
668
,
184
,
183
,
179
,
175
,
344
,
331
,
314
,
304
,
290
,
277
,
530
,
383
,
373
,
366
,
10
,
652
,
346
,
171
,
168
,
164
,
318
,
309
,
299
,
287
,
276
,
263
,
513
,
375
,
368
,
362
,
6
,
648
,
322
,
316
,
312
,
307
,
302
,
292
,
284
,
269
,
261
,
512
,
376
,
370
,
364
,
359
,
4
,
620
,
300
,
296
,
294
,
288
,
282
,
273
,
266
,
515
,
380
,
374
,
369
,
365
,
361
,
357
,
2
,
1033
,
280
,
278
,
274
,
267
,
264
,
259
,
382
,
378
,
372
,
367
,
363
,
360
,
358
,
356
,
0
,
43
,
20
,
19
,
17
,
15
,
13
,
11
,
9
,
7
,
6
,
4
,
7
,
5
,
3
,
1
,
3
],
C
.
t32HB
=
[
1
,
10
,
8
,
20
,
12
,
20
,
16
,
32
,
14
,
12
,
24
,
0
,
28
,
16
,
24
,
16
],
C
.
t33HB
=
[
15
,
28
,
26
,
48
,
22
,
40
,
36
,
64
,
14
,
24
,
20
,
32
,
12
,
16
,
8
,
0
],
C
.
t1l
=
[
1
,
4
,
3
,
5
],
C
.
t2l
=
[
1
,
4
,
7
,
4
,
5
,
7
,
6
,
7
,
8
],
C
.
t3l
=
[
2
,
3
,
7
,
4
,
4
,
7
,
6
,
7
,
8
],
C
.
t5l
=
[
1
,
4
,
7
,
8
,
4
,
5
,
8
,
9
,
7
,
8
,
9
,
10
,
8
,
8
,
9
,
10
],
C
.
t6l
=
[
3
,
4
,
6
,
8
,
4
,
4
,
6
,
7
,
5
,
6
,
7
,
8
,
7
,
7
,
8
,
9
],
C
.
t7l
=
[
1
,
4
,
7
,
9
,
9
,
10
,
4
,
6
,
8
,
9
,
9
,
10
,
7
,
7
,
9
,
10
,
10
,
11
,
8
,
9
,
10
,
11
,
11
,
11
,
8
,
9
,
10
,
11
,
11
,
12
,
9
,
10
,
11
,
12
,
12
,
12
],
C
.
t8l
=
[
2
,
4
,
7
,
9
,
9
,
10
,
4
,
4
,
6
,
10
,
10
,
10
,
7
,
6
,
8
,
10
,
10
,
11
,
9
,
10
,
10
,
11
,
11
,
12
,
9
,
9
,
10
,
11
,
12
,
12
,
10
,
10
,
11
,
11
,
13
,
13
],
C
.
t9l
=
[
3
,
4
,
6
,
7
,
9
,
10
,
4
,
5
,
6
,
7
,
8
,
10
,
5
,
6
,
7
,
8
,
9
,
10
,
7
,
7
,
8
,
9
,
9
,
10
,
8
,
8
,
9
,
9
,
10
,
11
,
9
,
9
,
10
,
10
,
11
,
11
],
C
.
t10l
=
[
1
,
4
,
7
,
9
,
10
,
10
,
10
,
11
,
4
,
6
,
8
,
9
,
10
,
11
,
10
,
10
,
7
,
8
,
9
,
10
,
11
,
12
,
11
,
11
,
8
,
9
,
10
,
11
,
12
,
12
,
11
,
12
,
9
,
10
,
11
,
12
,
12
,
12
,
12
,
12
,
10
,
11
,
12
,
12
,
13
,
13
,
12
,
13
,
9
,
10
,
11
,
12
,
12
,
12
,
13
,
13
,
10
,
10
,
11
,
12
,
12
,
13
,
13
,
13
],
C
.
t11l
=
[
2
,
4
,
6
,
8
,
9
,
10
,
9
,
10
,
4
,
5
,
6
,
8
,
10
,
10
,
9
,
10
,
6
,
7
,
8
,
9
,
10
,
11
,
10
,
10
,
8
,
8
,
9
,
11
,
10
,
12
,
10
,
11
,
9
,
10
,
10
,
11
,
11
,
12
,
11
,
12
,
9
,
10
,
11
,
12
,
12
,
13
,
12
,
13
,
9
,
9
,
9
,
10
,
11
,
12
,
12
,
12
,
9
,
9
,
10
,
11
,
12
,
12
,
12
,
12
],
C
.
t12l
=
[
4
,
4
,
6
,
8
,
9
,
10
,
10
,
10
,
4
,
5
,
6
,
7
,
9
,
9
,
10
,
10
,
6
,
6
,
7
,
8
,
9
,
10
,
9
,
10
,
7
,
7
,
8
,
8
,
9
,
10
,
10
,
10
,
8
,
8
,
9
,
9
,
10
,
10
,
10
,
11
,
9
,
9
,
10
,
10
,
10
,
11
,
10
,
11
,
9
,
9
,
9
,
10
,
10
,
11
,
11
,
12
,
10
,
10
,
10
,
11
,
11
,
11
,
11
,
12
],
C
.
t13l
=
[
1
,
5
,
7
,
8
,
9
,
10
,
10
,
11
,
10
,
11
,
12
,
12
,
13
,
13
,
14
,
14
,
4
,
6
,
8
,
9
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
13
,
14
,
14
,
14
,
7
,
8
,
9
,
10
,
11
,
11
,
12
,
12
,
11
,
12
,
12
,
13
,
13
,
14
,
15
,
15
,
8
,
9
,
10
,
11
,
11
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
14
,
15
,
15
,
9
,
9
,
11
,
11
,
12
,
12
,
13
,
13
,
12
,
13
,
13
,
14
,
14
,
15
,
15
,
16
,
10
,
10
,
11
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
14
,
13
,
15
,
15
,
16
,
16
,
10
,
11
,
12
,
12
,
13
,
13
,
13
,
13
,
13
,
14
,
14
,
14
,
15
,
15
,
16
,
16
,
11
,
11
,
12
,
13
,
13
,
13
,
14
,
14
,
14
,
14
,
15
,
15
,
15
,
16
,
18
,
18
,
10
,
10
,
11
,
12
,
12
,
13
,
13
,
14
,
14
,
14
,
14
,
15
,
15
,
16
,
17
,
17
,
11
,
11
,
12
,
12
,
13
,
13
,
13
,
15
,
14
,
15
,
15
,
16
,
16
,
16
,
18
,
17
,
11
,
12
,
12
,
13
,
13
,
14
,
14
,
15
,
14
,
15
,
16
,
15
,
16
,
17
,
18
,
19
,
12
,
12
,
12
,
13
,
14
,
14
,
14
,
14
,
15
,
15
,
15
,
16
,
17
,
17
,
17
,
18
,
12
,
13
,
13
,
14
,
14
,
15
,
14
,
15
,
16
,
16
,
17
,
17
,
17
,
18
,
18
,
18
,
13
,
13
,
14
,
15
,
15
,
15
,
16
,
16
,
16
,
16
,
16
,
17
,
18
,
17
,
18
,
18
,
14
,
14
,
14
,
15
,
15
,
15
,
17
,
16
,
16
,
19
,
17
,
17
,
17
,
19
,
18
,
18
,
13
,
14
,
15
,
16
,
16
,
16
,
17
,
16
,
17
,
17
,
18
,
18
,
21
,
20
,
21
,
18
],
C
.
t15l
=
[
3
,
5
,
6
,
8
,
8
,
9
,
10
,
10
,
10
,
11
,
11
,
12
,
12
,
12
,
13
,
14
,
5
,
5
,
7
,
8
,
9
,
9
,
10
,
10
,
10
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
6
,
7
,
7
,
8
,
9
,
9
,
10
,
10
,
10
,
11
,
11
,
12
,
12
,
13
,
13
,
13
,
7
,
8
,
8
,
9
,
9
,
10
,
10
,
11
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
13
,
8
,
8
,
9
,
9
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
13
,
9
,
9
,
9
,
10
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
13
,
13
,
13
,
14
,
10
,
9
,
10
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
14
,
14
,
10
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
14
,
10
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
13
,
13
,
14
,
14
,
14
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
14
,
14
,
14
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
14
,
15
,
14
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
14
,
14
,
14
,
15
,
12
,
12
,
11
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
13
,
13
,
14
,
14
,
15
,
15
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
14
,
14
,
14
,
14
,
14
,
15
,
15
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
14
,
14
,
14
,
14
,
15
,
15
,
14
,
15
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
14
,
14
,
14
,
14
,
14
,
15
,
15
,
15
,
15
],
C
.
t16_5l
=
[
1
,
5
,
7
,
9
,
10
,
10
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
13
,
14
,
11
,
4
,
6
,
8
,
9
,
10
,
11
,
11
,
11
,
12
,
12
,
12
,
13
,
14
,
13
,
14
,
11
,
7
,
8
,
9
,
10
,
11
,
11
,
12
,
12
,
13
,
12
,
13
,
13
,
13
,
14
,
14
,
12
,
9
,
9
,
10
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
14
,
14
,
14
,
15
,
15
,
13
,
10
,
10
,
11
,
11
,
12
,
12
,
13
,
13
,
13
,
14
,
14
,
14
,
15
,
15
,
15
,
12
,
10
,
10
,
11
,
11
,
12
,
13
,
13
,
14
,
13
,
14
,
14
,
15
,
15
,
15
,
16
,
13
,
11
,
11
,
11
,
12
,
13
,
13
,
13
,
13
,
14
,
14
,
14
,
14
,
15
,
15
,
16
,
13
,
11
,
11
,
12
,
12
,
13
,
13
,
13
,
14
,
14
,
15
,
15
,
15
,
15
,
17
,
17
,
13
,
11
,
12
,
12
,
13
,
13
,
13
,
14
,
14
,
15
,
15
,
15
,
15
,
16
,
16
,
16
,
13
,
12
,
12
,
12
,
13
,
13
,
14
,
14
,
15
,
15
,
15
,
15
,
16
,
15
,
16
,
15
,
14
,
12
,
13
,
12
,
13
,
14
,
14
,
14
,
14
,
15
,
16
,
16
,
16
,
17
,
17
,
16
,
13
,
13
,
13
,
13
,
13
,
14
,
14
,
15
,
16
,
16
,
16
,
16
,
16
,
16
,
15
,
16
,
14
,
13
,
14
,
14
,
14
,
14
,
15
,
15
,
15
,
15
,
17
,
16
,
16
,
16
,
16
,
18
,
14
,
15
,
14
,
14
,
14
,
15
,
15
,
16
,
16
,
16
,
18
,
17
,
17
,
17
,
19
,
17
,
14
,
14
,
15
,
13
,
14
,
16
,
16
,
15
,
16
,
16
,
17
,
18
,
17
,
19
,
17
,
16
,
14
,
11
,
11
,
11
,
12
,
12
,
13
,
13
,
13
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
12
],
C
.
t16l
=
[
1
,
5
,
7
,
9
,
10
,
10
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
13
,
14
,
10
,
4
,
6
,
8
,
9
,
10
,
11
,
11
,
11
,
12
,
12
,
12
,
13
,
14
,
13
,
14
,
10
,
7
,
8
,
9
,
10
,
11
,
11
,
12
,
12
,
13
,
12
,
13
,
13
,
13
,
14
,
14
,
11
,
9
,
9
,
10
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
14
,
14
,
14
,
15
,
15
,
12
,
10
,
10
,
11
,
11
,
12
,
12
,
13
,
13
,
13
,
14
,
14
,
14
,
15
,
15
,
15
,
11
,
10
,
10
,
11
,
11
,
12
,
13
,
13
,
14
,
13
,
14
,
14
,
15
,
15
,
15
,
16
,
12
,
11
,
11
,
11
,
12
,
13
,
13
,
13
,
13
,
14
,
14
,
14
,
14
,
15
,
15
,
16
,
12
,
11
,
11
,
12
,
12
,
13
,
13
,
13
,
14
,
14
,
15
,
15
,
15
,
15
,
17
,
17
,
12
,
11
,
12
,
12
,
13
,
13
,
13
,
14
,
14
,
15
,
15
,
15
,
15
,
16
,
16
,
16
,
12
,
12
,
12
,
12
,
13
,
13
,
14
,
14
,
15
,
15
,
15
,
15
,
16
,
15
,
16
,
15
,
13
,
12
,
13
,
12
,
13
,
14
,
14
,
14
,
14
,
15
,
16
,
16
,
16
,
17
,
17
,
16
,
12
,
13
,
13
,
13
,
13
,
14
,
14
,
15
,
16
,
16
,
16
,
16
,
16
,
16
,
15
,
16
,
13
,
13
,
14
,
14
,
14
,
14
,
15
,
15
,
15
,
15
,
17
,
16
,
16
,
16
,
16
,
18
,
13
,
15
,
14
,
14
,
14
,
15
,
15
,
16
,
16
,
16
,
18
,
17
,
17
,
17
,
19
,
17
,
13
,
14
,
15
,
13
,
14
,
16
,
16
,
15
,
16
,
16
,
17
,
18
,
17
,
19
,
17
,
16
,
13
,
10
,
10
,
10
,
11
,
11
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
10
],
C
.
t24l
=
[
4
,
5
,
7
,
8
,
9
,
10
,
10
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
13
,
10
,
5
,
6
,
7
,
8
,
9
,
10
,
10
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
10
,
7
,
7
,
8
,
9
,
9
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
13
,
9
,
8
,
8
,
9
,
9
,
10
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
9
,
9
,
9
,
9
,
10
,
10
,
10
,
10
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
13
,
9
,
10
,
9
,
10
,
10
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
9
,
10
,
10
,
10
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
13
,
9
,
11
,
10
,
10
,
10
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
10
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
13
,
13
,
10
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
10
,
12
,
11
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
10
,
12
,
12
,
11
,
11
,
11
,
12
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
10
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
13
,
10
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
10
,
13
,
12
,
12
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
10
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
10
,
10
,
10
,
10
,
6
],
C
.
t32l
=
[
1
,
5
,
5
,
7
,
5
,
8
,
7
,
9
,
5
,
7
,
7
,
9
,
7
,
9
,
9
,
10
],
C
.
t33l
=
[
4
,
5
,
5
,
6
,
5
,
6
,
6
,
7
,
5
,
6
,
6
,
7
,
6
,
7
,
7
,
8
],
C
.
ht
=
[
new
e
(
0
,
0
,
null
,
null
),
new
e
(
2
,
0
,
C
.
t1HB
,
C
.
t1l
),
new
e
(
3
,
0
,
C
.
t2HB
,
C
.
t2l
),
new
e
(
3
,
0
,
C
.
t3HB
,
C
.
t3l
),
new
e
(
0
,
0
,
null
,
null
),
new
e
(
4
,
0
,
C
.
t5HB
,
C
.
t5l
),
new
e
(
4
,
0
,
C
.
t6HB
,
C
.
t6l
),
new
e
(
6
,
0
,
C
.
t7HB
,
C
.
t7l
),
new
e
(
6
,
0
,
C
.
t8HB
,
C
.
t8l
),
new
e
(
6
,
0
,
C
.
t9HB
,
C
.
t9l
),
new
e
(
8
,
0
,
C
.
t10HB
,
C
.
t10l
),
new
e
(
8
,
0
,
C
.
t11HB
,
C
.
t11l
),
new
e
(
8
,
0
,
C
.
t12HB
,
C
.
t12l
),
new
e
(
16
,
0
,
C
.
t13HB
,
C
.
t13l
),
new
e
(
0
,
0
,
null
,
C
.
t16_5l
),
new
e
(
16
,
0
,
C
.
t15HB
,
C
.
t15l
),
new
e
(
1
,
1
,
C
.
t16HB
,
C
.
t16l
),
new
e
(
2
,
3
,
C
.
t16HB
,
C
.
t16l
),
new
e
(
3
,
7
,
C
.
t16HB
,
C
.
t16l
),
new
e
(
4
,
15
,
C
.
t16HB
,
C
.
t16l
),
new
e
(
6
,
63
,
C
.
t16HB
,
C
.
t16l
),
new
e
(
8
,
255
,
C
.
t16HB
,
C
.
t16l
),
new
e
(
10
,
1023
,
C
.
t16HB
,
C
.
t16l
),
new
e
(
13
,
8191
,
C
.
t16HB
,
C
.
t16l
),
new
e
(
4
,
15
,
C
.
t24HB
,
C
.
t24l
),
new
e
(
5
,
31
,
C
.
t24HB
,
C
.
t24l
),
new
e
(
6
,
63
,
C
.
t24HB
,
C
.
t24l
),
new
e
(
7
,
127
,
C
.
t24HB
,
C
.
t24l
),
new
e
(
8
,
255
,
C
.
t24HB
,
C
.
t24l
),
new
e
(
9
,
511
,
C
.
t24HB
,
C
.
t24l
),
new
e
(
11
,
2047
,
C
.
t24HB
,
C
.
t24l
),
new
e
(
13
,
8191
,
C
.
t24HB
,
C
.
t24l
),
new
e
(
0
,
0
,
C
.
t32HB
,
C
.
t32l
),
new
e
(
0
,
0
,
C
.
t33HB
,
C
.
t33l
)],
C
.
largetbl
=
[
65540
,
327685
,
458759
,
589832
,
655369
,
655370
,
720906
,
720907
,
786443
,
786444
,
786444
,
851980
,
851980
,
851980
,
917517
,
655370
,
262149
,
393222
,
524295
,
589832
,
655369
,
720906
,
720906
,
720907
,
786443
,
786443
,
786444
,
851980
,
917516
,
851980
,
917516
,
655370
,
458759
,
524295
,
589832
,
655369
,
720905
,
720906
,
786442
,
786443
,
851979
,
786443
,
851979
,
851980
,
851980
,
917516
,
917517
,
720905
,
589832
,
589832
,
655369
,
720905
,
720906
,
786442
,
786442
,
786443
,
851979
,
851979
,
917515
,
917516
,
917516
,
983052
,
983052
,
786441
,
655369
,
655369
,
720905
,
720906
,
786442
,
786442
,
851978
,
851979
,
851979
,
917515
,
917516
,
917516
,
983052
,
983052
,
983053
,
720905
,
655370
,
655369
,
720906
,
720906
,
786442
,
851978
,
851979
,
917515
,
851979
,
917515
,
917516
,
983052
,
983052
,
983052
,
1048588
,
786441
,
720906
,
720906
,
720906
,
786442
,
851978
,
851979
,
851979
,
851979
,
917515
,
917516
,
917516
,
917516
,
983052
,
983052
,
1048589
,
786441
,
720907
,
720906
,
786442
,
786442
,
851979
,
851979
,
851979
,
917515
,
917516
,
983052
,
983052
,
983052
,
983052
,
1114125
,
1114125
,
786442
,
720907
,
786443
,
786443
,
851979
,
851979
,
851979
,
917515
,
917515
,
983051
,
983052
,
983052
,
983052
,
1048588
,
1048589
,
1048589
,
786442
,
786443
,
786443
,
786443
,
851979
,
851979
,
917515
,
917515
,
983052
,
983052
,
983052
,
983052
,
1048588
,
983053
,
1048589
,
983053
,
851978
,
786444
,
851979
,
786443
,
851979
,
917515
,
917516
,
917516
,
917516
,
983052
,
1048588
,
1048588
,
1048589
,
1114125
,
1114125
,
1048589
,
786442
,
851980
,
851980
,
851979
,
851979
,
917515
,
917516
,
983052
,
1048588
,
1048588
,
1048588
,
1048588
,
1048589
,
1048589
,
983053
,
1048589
,
851978
,
851980
,
917516
,
917516
,
917516
,
917516
,
983052
,
983052
,
983052
,
983052
,
1114124
,
1048589
,
1048589
,
1048589
,
1048589
,
1179661
,
851978
,
983052
,
917516
,
917516
,
917516
,
983052
,
983052
,
1048588
,
1048588
,
1048589
,
1179661
,
1114125
,
1114125
,
1114125
,
1245197
,
1114125
,
851978
,
917517
,
983052
,
851980
,
917516
,
1048588
,
1048588
,
983052
,
1048589
,
1048589
,
1114125
,
1179661
,
1114125
,
1245197
,
1114125
,
1048589
,
851978
,
655369
,
655369
,
655369
,
720905
,
720905
,
786441
,
786441
,
786441
,
851977
,
851977
,
851977
,
851978
,
851978
,
851978
,
851978
,
655366
],
C
.
table23
=
[
65538
,
262147
,
458759
,
262148
,
327684
,
458759
,
393222
,
458759
,
524296
],
C
.
table56
=
[
65539
,
262148
,
458758
,
524296
,
262148
,
327684
,
524294
,
589831
,
458757
,
524294
,
589831
,
655368
,
524295
,
524295
,
589832
,
655369
],
C
.
bitrate_table
=
[[
0
,
8
,
16
,
24
,
32
,
40
,
48
,
56
,
64
,
80
,
96
,
112
,
128
,
144
,
160
,
-
1
],[
0
,
32
,
40
,
48
,
56
,
64
,
80
,
96
,
112
,
128
,
160
,
192
,
224
,
256
,
320
,
-
1
],[
0
,
8
,
16
,
24
,
32
,
40
,
48
,
56
,
64
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
]],
C
.
samplerate_table
=
[[
22050
,
24
e3
,
16
e3
,
-
1
],[
44100
,
48
e3
,
32
e3
,
-
1
],[
11025
,
12
e3
,
8
e3
,
-
1
]],
C
.
scfsi_band
=
[
0
,
6
,
11
,
16
,
21
],
y
.
Q_MAX
=
257
,
y
.
Q_MAX2
=
116
,
y
.
LARGE_BITS
=
1
e5
,
y
.
IXMAX_VAL
=
8206
;
var
z
=
{};
function
w
(){
var
v
,
g
,
M
;
this
.
rv
=
null
,
this
.
qupvt
=
null
;
var
w
,
n
=
new
function
(){
this
.
setModules
=
function
(
e
,
t
){}};
function
R
(
e
){
this
.
ordinal
=
e
}
function
_
(
e
){
for
(
var
t
=
0
;
t
<
e
.
sfbmax
;
t
++
)
if
(
e
.
scalefac
[
t
]
+
e
.
subblock_gain
[
e
.
window
[
t
]]
==
0
)
return
!
1
;
return
!
0
}
function
B
(
e
,
t
,
a
,
s
,
n
){
var
r
;
switch
(
e
){
default
:
case
9
:
0
<
t
.
over_count
?(
r
=
a
.
over_SSD
<=
t
.
over_SSD
,
a
.
over_SSD
==
t
.
over_SSD
&&
(
r
=
a
.
bits
<
t
.
bits
)):
r
=
a
.
max_noise
<
0
&&
10
*
a
.
max_noise
+
a
.
bits
<=
10
*
t
.
max_noise
+
t
.
bits
;
break
;
case
0
:
r
=
a
.
over_count
<
t
.
over_count
||
a
.
over_count
==
t
.
over_count
&&
a
.
over_noise
<
t
.
over_noise
||
a
.
over_count
==
t
.
over_count
&&
j
.
EQ
(
a
.
over_noise
,
t
.
over_noise
)
&&
a
.
tot_noise
<
t
.
tot_noise
;
break
;
case
8
:
a
.
max_noise
=
function
(
e
,
t
){
for
(
var
a
,
s
=
1
e
-
37
,
n
=
0
;
n
<
t
.
psymax
;
n
++
)
s
+=
(
a
=
e
[
n
],
ee
.
FAST_LOG10
(.
368
+
.
632
*
a
*
a
*
a
));
return
Math
.
max
(
1
e
-
20
,
s
)}(
n
,
s
);
case
1
:
r
=
a
.
max_noise
<
t
.
max_noise
;
break
;
case
2
:
r
=
a
.
tot_noise
<
t
.
tot_noise
;
break
;
case
3
:
r
=
a
.
tot_noise
<
t
.
tot_noise
&&
a
.
max_noise
<
t
.
max_noise
;
break
;
case
4
:
r
=
a
.
max_noise
<=
0
&&
.
2
<
t
.
max_noise
||
a
.
max_noise
<=
0
&&
t
.
max_noise
<
0
&&
t
.
max_noise
>
a
.
max_noise
-
.
2
&&
a
.
tot_noise
<
t
.
tot_noise
||
a
.
max_noise
<=
0
&&
0
<
t
.
max_noise
&&
t
.
max_noise
>
a
.
max_noise
-
.
2
&&
a
.
tot_noise
<
t
.
tot_noise
+
t
.
over_noise
||
0
<
a
.
max_noise
&&-
.
05
<
t
.
max_noise
&&
t
.
max_noise
>
a
.
max_noise
-
.
1
&&
a
.
tot_noise
+
a
.
over_noise
<
t
.
tot_noise
+
t
.
over_noise
||
0
<
a
.
max_noise
&&-
.
1
<
t
.
max_noise
&&
t
.
max_noise
>
a
.
max_noise
-
.
15
&&
a
.
tot_noise
+
a
.
over_noise
+
a
.
over_noise
<
t
.
tot_noise
+
t
.
over_noise
+
t
.
over_noise
;
break
;
case
5
:
r
=
a
.
over_noise
<
t
.
over_noise
||
j
.
EQ
(
a
.
over_noise
,
t
.
over_noise
)
&&
a
.
tot_noise
<
t
.
tot_noise
;
break
;
case
6
:
r
=
a
.
over_noise
<
t
.
over_noise
||
j
.
EQ
(
a
.
over_noise
,
t
.
over_noise
)
&&
(
a
.
max_noise
<
t
.
max_noise
||
j
.
EQ
(
a
.
max_noise
,
t
.
max_noise
)
&&
a
.
tot_noise
<=
t
.
tot_noise
);
break
;
case
7
:
r
=
a
.
over_count
<
t
.
over_count
||
a
.
over_noise
<
t
.
over_noise
}
return
0
==
t
.
over_count
&&
(
r
=
r
&&
a
.
bits
<
t
.
bits
),
r
}
function
A
(
e
,
t
,
a
,
s
,
n
){
var
r
=
e
.
internal_flags
;
!
function
(
e
,
t
,
a
,
s
,
n
){
var
r
,
i
=
e
.
internal_flags
;
r
=
0
==
t
.
scalefac_scale
?
1.2968395546510096
:
1.6817928305074292
;
for
(
var
_
=
0
,
o
=
0
;
o
<
t
.
sfbmax
;
o
++
)
_
<
a
[
o
]
&&
(
_
=
a
[
o
]);
var
l
=
i
.
noise_shaping_amp
;
switch
(
3
==
l
&&
(
l
=
n
?
2
:
1
),
l
){
case
2
:
break
;
case
1
:
1
<
_
?
_
=
Math
.
pow
(
_
,.
5
):
_
*=
.
95
;
break
;
case
0
:
default
:
1
<
_
?
_
=
1
:
_
*=
.
95
}
var
f
=
0
;
for
(
o
=
0
;
o
<
t
.
sfbmax
;
o
++
){
var
c
,
h
=
t
.
width
[
o
];
if
(
f
+=
h
,
!
(
a
[
o
]
<
_
)){
if
(
0
!=
(
2
&
i
.
substep_shaping
)
&&
(
i
.
pseudohalf
[
o
]
=
0
==
i
.
pseudohalf
[
o
]?
1
:
0
,
0
==
i
.
pseudohalf
[
o
]
&&
2
==
i
.
noise_shaping_amp
))
return
;
for
(
t
.
scalefac
[
o
]
++
,
c
=-
h
;
c
<
0
;
c
++
)
s
[
f
+
c
]
*=
r
,
s
[
f
+
c
]
>
t
.
xrpow_max
&&
(
t
.
xrpow_max
=
s
[
f
+
c
]);
if
(
2
==
i
.
noise_shaping_amp
)
return
}}}(
e
,
t
,
a
,
s
,
n
);
var
i
=
_
(
t
);
return
!
i
&&
(
!
(
i
=
2
==
r
.
mode_gr
?
w
.
scale_bitcount
(
t
):
w
.
scale_bitcount_lsf
(
r
,
t
))
||
(
1
<
r
.
noise_shaping
&&
(
Te
.
fill
(
r
.
pseudohalf
,
0
),
0
==
t
.
scalefac_scale
?(
!
function
(
e
,
t
){
for
(
var
a
=
0
,
s
=
0
;
s
<
e
.
sfbmax
;
s
++
){
var
n
=
e
.
width
[
s
],
r
=
e
.
scalefac
[
s
];
if
(
0
!=
e
.
preflag
&&
(
r
+=
M
.
pretab
[
s
]),
a
+=
n
,
0
!=
(
1
&
r
)){
r
++
;
for
(
var
i
=-
n
;
i
<
0
;
i
++
)
t
[
a
+
i
]
*=
1.2968395546510096
,
t
[
a
+
i
]
>
e
.
xrpow_max
&&
(
e
.
xrpow_max
=
t
[
a
+
i
])}
e
.
scalefac
[
s
]
=
r
>>
1
}
e
.
preflag
=
0
,
e
.
scalefac_scale
=
1
}(
t
,
s
),
i
=!
1
):
t
.
block_type
==
Pe
.
SHORT_TYPE
&&
0
<
r
.
subblock_gain
&&
(
i
=
function
(
e
,
t
,
a
){
var
s
,
n
=
t
.
scalefac
;
for
(
s
=
0
;
s
<
t
.
sfb_lmax
;
s
++
)
if
(
16
<=
n
[
s
])
return
!
0
;
for
(
var
r
=
0
;
r
<
3
;
r
++
){
var
i
=
0
,
_
=
0
;
for
(
s
=
t
.
sfb_lmax
+
r
;
s
<
t
.
sfbdivide
;
s
+=
3
)
i
<
n
[
s
]
&&
(
i
=
n
[
s
]);
for
(;
s
<
t
.
sfbmax
;
s
+=
3
)
_
<
n
[
s
]
&&
(
_
=
n
[
s
]);
if
(
!
(
i
<
16
&&
_
<
8
)){
if
(
7
<=
t
.
subblock_gain
[
r
])
return
!
0
;
t
.
subblock_gain
[
r
]
++
;
var
o
=
e
.
scalefac_band
.
l
[
t
.
sfb_lmax
];
for
(
s
=
t
.
sfb_lmax
+
r
;
s
<
t
.
sfbmax
;
s
+=
3
){
var
l
=
t
.
width
[
s
],
f
=
n
[
s
];
if
(
0
<=
(
f
-=
4
>>
t
.
scalefac_scale
))
n
[
s
]
=
f
,
o
+=
3
*
l
;
else
{
n
[
s
]
=
0
;
var
c
=
210
+
(
f
<<
t
.
scalefac_scale
+
1
);
u
=
M
.
IPOW20
(
c
),
o
+=
l
*
(
r
+
1
);
for
(
var
h
=-
l
;
h
<
0
;
h
++
)
a
[
o
+
h
]
*=
u
,
a
[
o
+
h
]
>
t
.
xrpow_max
&&
(
t
.
xrpow_max
=
a
[
o
+
h
]);
o
+=
l
*
(
3
-
r
-
1
)}}
var
u
=
M
.
IPOW20
(
202
);
for
(
o
+=
t
.
width
[
s
]
*
(
r
+
1
),
h
=-
t
.
width
[
s
];
h
<
0
;
h
++
)
a
[
o
+
h
]
*=
u
,
a
[
o
+
h
]
>
t
.
xrpow_max
&&
(
t
.
xrpow_max
=
a
[
o
+
h
])}}
return
!
1
}(
r
,
t
,
s
)
||
_
(
t
))),
i
||
(
i
=
2
==
r
.
mode_gr
?
w
.
scale_bitcount
(
t
):
w
.
scale_bitcount_lsf
(
r
,
t
)),
!
i
))}
this
.
setModules
=
function
(
e
,
t
,
a
,
s
){
v
=
e
,
g
=
t
,
this
.
rv
=
t
,
M
=
a
,
this
.
qupvt
=
a
,
w
=
s
,
n
.
setModules
(
M
,
w
)},
this
.
ms_convert
=
function
(
e
,
t
){
for
(
var
a
=
0
;
a
<
576
;
++
a
){
var
s
=
e
.
tt
[
t
][
0
].
xr
[
a
],
n
=
e
.
tt
[
t
][
1
].
xr
[
a
];
e
.
tt
[
t
][
0
].
xr
[
a
]
=
(
s
+
n
)
*
(.
5
*
ee
.
SQRT2
),
e
.
tt
[
t
][
1
].
xr
[
a
]
=
(
s
-
n
)
*
(.
5
*
ee
.
SQRT2
)}},
this
.
init_xrpow
=
function
(
e
,
t
,
a
){
var
s
=
0
,
n
=
0
|
t
.
max_nonzero_coeff
;
if
(
t
.
xrpow_max
=
0
,
Te
.
fill
(
a
,
n
,
576
,
0
),
1
e
-
20
<
(
s
=
function
(
e
,
t
,
a
,
s
){
for
(
var
n
=
s
=
0
;
n
<=
a
;
++
n
){
var
r
=
Math
.
abs
(
e
.
xr
[
n
]);
s
+=
r
,
t
[
n
]
=
Math
.
sqrt
(
r
*
Math
.
sqrt
(
r
)),
t
[
n
]
>
e
.
xrpow_max
&&
(
e
.
xrpow_max
=
t
[
n
])}
return
s
}(
t
,
a
,
n
,
s
))){
var
r
=
0
;
0
!=
(
2
&
e
.
substep_shaping
)
&&
(
r
=
1
);
for
(
var
i
=
0
;
i
<
t
.
psymax
;
i
++
)
e
.
pseudohalf
[
i
]
=
r
;
return
!
0
}
return
Te
.
fill
(
t
.
l3_enc
,
0
,
576
,
0
),
!
1
},
this
.
init_outer_loop
=
function
(
e
,
t
){
t
.
part2_3_length
=
0
,
t
.
big_values
=
0
,
t
.
count1
=
0
,
t
.
global_gain
=
210
,
t
.
scalefac_compress
=
0
,
t
.
table_select
[
0
]
=
0
,
t
.
table_select
[
1
]
=
0
,
t
.
table_select
[
2
]
=
0
,
t
.
subblock_gain
[
0
]
=
0
,
t
.
subblock_gain
[
1
]
=
0
,
t
.
subblock_gain
[
2
]
=
0
,
t
.
subblock_gain
[
3
]
=
0
,
t
.
region0_count
=
0
,
t
.
region1_count
=
0
,
t
.
preflag
=
0
,
t
.
scalefac_scale
=
0
,
t
.
count1table_select
=
0
,
t
.
part2_length
=
0
,
t
.
sfb_lmax
=
Pe
.
SBPSY_l
,
t
.
sfb_smin
=
Pe
.
SBPSY_s
,
t
.
psy_lmax
=
e
.
sfb21_extra
?
Pe
.
SBMAX_l
:
Pe
.
SBPSY_l
,
t
.
psymax
=
t
.
psy_lmax
,
t
.
sfbmax
=
t
.
sfb_lmax
,
t
.
sfbdivide
=
11
;
for
(
var
a
=
0
;
a
<
Pe
.
SBMAX_l
;
a
++
)
t
.
width
[
a
]
=
e
.
scalefac_band
.
l
[
a
+
1
]
-
e
.
scalefac_band
.
l
[
a
],
t
.
window
[
a
]
=
3
;
if
(
t
.
block_type
==
Pe
.
SHORT_TYPE
){
var
s
=
Ae
(
576
);
t
.
sfb_smin
=
0
,(
t
.
sfb_lmax
=
0
)
!=
t
.
mixed_block_flag
&&
(
t
.
sfb_smin
=
3
,
t
.
sfb_lmax
=
2
*
e
.
mode_gr
+
4
),
t
.
psymax
=
t
.
sfb_lmax
+
3
*
((
e
.
sfb21_extra
?
Pe
.
SBMAX_s
:
Pe
.
SBPSY_s
)
-
t
.
sfb_smin
),
t
.
sfbmax
=
t
.
sfb_lmax
+
3
*
(
Pe
.
SBPSY_s
-
t
.
sfb_smin
),
t
.
sfbdivide
=
t
.
sfbmax
-
18
,
t
.
psy_lmax
=
t
.
sfb_lmax
;
var
n
=
e
.
scalefac_band
.
l
[
t
.
sfb_lmax
];
$
.
arraycopy
(
t
.
xr
,
0
,
s
,
0
,
576
);
for
(
a
=
t
.
sfb_smin
;
a
<
Pe
.
SBMAX_s
;
a
++
)
for
(
var
r
=
e
.
scalefac_band
.
s
[
a
],
i
=
e
.
scalefac_band
.
s
[
a
+
1
],
_
=
0
;
_
<
3
;
_
++
)
for
(
var
o
=
r
;
o
<
i
;
o
++
)
t
.
xr
[
n
++
]
=
s
[
3
*
o
+
_
];
var
l
=
t
.
sfb_lmax
;
for
(
a
=
t
.
sfb_smin
;
a
<
Pe
.
SBMAX_s
;
a
++
)
t
.
width
[
l
]
=
t
.
width
[
l
+
1
]
=
t
.
width
[
l
+
2
]
=
e
.
scalefac_band
.
s
[
a
+
1
]
-
e
.
scalefac_band
.
s
[
a
],
t
.
window
[
l
]
=
0
,
t
.
window
[
l
+
1
]
=
1
,
t
.
window
[
l
+
2
]
=
2
,
l
+=
3
}
t
.
count1bits
=
0
,
t
.
sfb_partition_table
=
M
.
nr_of_sfb_block
[
0
][
0
],
t
.
slen
[
0
]
=
0
,
t
.
slen
[
1
]
=
0
,
t
.
slen
[
2
]
=
0
,
t
.
slen
[
3
]
=
0
,
t
.
max_nonzero_coeff
=
575
,
Te
.
fill
(
t
.
scalefac
,
0
),
function
(
e
,
t
){
var
a
=
e
.
ATH
,
s
=
t
.
xr
;
if
(
t
.
block_type
!=
Pe
.
SHORT_TYPE
)
for
(
var
n
=!
1
,
r
=
Pe
.
PSFB21
-
1
;
0
<=
r
&&!
n
;
r
--
){
var
i
=
e
.
scalefac_band
.
psfb21
[
r
],
_
=
e
.
scalefac_band
.
psfb21
[
r
+
1
],
o
=
M
.
athAdjust
(
a
.
adjust
,
a
.
psfb21
[
r
],
a
.
floor
);
1
e
-
12
<
e
.
nsPsy
.
longfact
[
21
]
&&
(
o
*=
e
.
nsPsy
.
longfact
[
21
]);
for
(
var
l
=
_
-
1
;
i
<=
l
;
l
--
){
if
(
!
(
Math
.
abs
(
s
[
l
])
<
o
)){
n
=!
0
;
break
}
s
[
l
]
=
0
}}
else
for
(
var
f
=
0
;
f
<
3
;
f
++
)
for
(
n
=!
1
,
r
=
Pe
.
PSFB12
-
1
;
0
<=
r
&&!
n
;
r
--
){
_
=
(
i
=
3
*
e
.
scalefac_band
.
s
[
12
]
+
(
e
.
scalefac_band
.
s
[
13
]
-
e
.
scalefac_band
.
s
[
12
])
*
f
+
(
e
.
scalefac_band
.
psfb12
[
r
]
-
e
.
scalefac_band
.
psfb12
[
0
]))
+
(
e
.
scalefac_band
.
psfb12
[
r
+
1
]
-
e
.
scalefac_band
.
psfb12
[
r
]);
var
c
=
M
.
athAdjust
(
a
.
adjust
,
a
.
psfb12
[
r
],
a
.
floor
);
for
(
1
e
-
12
<
e
.
nsPsy
.
shortfact
[
12
]
&&
(
c
*=
e
.
nsPsy
.
shortfact
[
12
]),
l
=
_
-
1
;
i
<=
l
;
l
--
){
if
(
!
(
Math
.
abs
(
s
[
l
])
<
c
)){
n
=!
0
;
break
}
s
[
l
]
=
0
}}}(
e
,
t
)},
R
.
BINSEARCH_NONE
=
new
R
(
0
),
R
.
BINSEARCH_UP
=
new
R
(
1
),
R
.
BINSEARCH_DOWN
=
new
R
(
2
),
this
.
trancate_smallspectrums
=
function
(
e
,
t
,
a
,
s
){
var
n
=
Ae
(
z
.
SFBMAX
);
if
((
0
!=
(
4
&
e
.
substep_shaping
)
||
t
.
block_type
!=
Pe
.
SHORT_TYPE
)
&&
0
==
(
128
&
e
.
substep_shaping
)){
M
.
calc_noise
(
t
,
a
,
n
,
new
T
,
null
);
for
(
var
r
=
0
;
r
<
576
;
r
++
){
var
i
=
0
;
0
!=
t
.
l3_enc
[
r
]
&&
(
i
=
Math
.
abs
(
t
.
xr
[
r
])),
s
[
r
]
=
i
}
r
=
0
;
var
_
=
8
;
t
.
block_type
==
Pe
.
SHORT_TYPE
&&
(
_
=
6
);
do
{
var
o
,
l
,
f
,
c
,
h
=
t
.
width
[
_
];
if
(
r
+=
h
,
!
(
1
<=
n
[
_
]
||
(
Te
.
sort
(
s
,
r
-
h
,
h
),
j
.
EQ
(
s
[
r
-
1
],
0
)))){
o
=
(
1
-
n
[
_
])
*
a
[
_
],
c
=
l
=
0
;
do
{
var
u
;
for
(
f
=
1
;
c
+
f
<
h
&&!
j
.
NEQ
(
s
[
c
+
r
-
h
],
s
[
c
+
r
+
f
-
h
]);
f
++
);
if
(
o
<
(
u
=
s
[
c
+
r
-
h
]
*
s
[
c
+
r
-
h
]
*
f
)){
0
!=
c
&&
(
l
=
s
[
c
+
r
-
h
-
1
]);
break
}
o
-=
u
,
c
+=
f
}
while
(
c
<
h
);
if
(
!
j
.
EQ
(
l
,
0
))
for
(;
Math
.
abs
(
t
.
xr
[
r
-
h
])
<=
l
&&
(
t
.
l3_enc
[
r
-
h
]
=
0
),
0
<--
h
;);}}
while
(
++
_
<
t
.
psymax
);
t
.
part2_3_length
=
w
.
noquant_count_bits
(
e
,
t
,
null
)}},
this
.
outer_loop
=
function
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
=
e
.
internal_flags
,
_
=
new
x
,
o
=
Ae
(
576
),
l
=
Ae
(
z
.
SFBMAX
),
f
=
new
T
,
c
=
new
function
(){
this
.
global_gain
=
0
,
this
.
sfb_count1
=
0
,
this
.
step
=
Be
(
39
),
this
.
noise
=
Ae
(
39
),
this
.
noise_log
=
Ae
(
39
)},
h
=
9999999
,
u
=!
1
,
b
=!
1
,
m
=
0
;
if
(
function
(
e
,
t
,
a
,
s
,
n
){
var
r
,
i
=
e
.
CurrentStep
[
s
],
_
=!
1
,
o
=
e
.
OldValue
[
s
],
l
=
R
.
BINSEARCH_NONE
;
for
(
t
.
global_gain
=
o
,
a
-=
t
.
part2_length
;;){
var
f
;
if
(
r
=
w
.
count_bits
(
e
,
n
,
t
,
null
),
1
==
i
||
r
==
a
)
break
;
a
<
r
?(
l
==
R
.
BINSEARCH_DOWN
&&
(
_
=!
0
),
_
&&
(
i
/=
2
),
l
=
R
.
BINSEARCH_UP
,
f
=
i
):(
l
==
R
.
BINSEARCH_UP
&&
(
_
=!
0
),
_
&&
(
i
/=
2
),
l
=
R
.
BINSEARCH_DOWN
,
f
=-
i
),
t
.
global_gain
+=
f
,
t
.
global_gain
<
0
&&
(
_
=!
(
t
.
global_gain
=
0
)),
255
<
t
.
global_gain
&&
(
t
.
global_gain
=
255
,
_
=!
0
)}
for
(;
a
<
r
&&
t
.
global_gain
<
255
;)
t
.
global_gain
++
,
r
=
w
.
count_bits
(
e
,
n
,
t
,
null
);
e
.
CurrentStep
[
s
]
=
4
<=
o
-
t
.
global_gain
?
4
:
2
,
e
.
OldValue
[
s
]
=
t
.
global_gain
,
t
.
part2_3_length
=
r
}(
i
,
t
,
r
,
n
,
s
),
0
==
i
.
noise_shaping
)
return
100
;
M
.
calc_noise
(
t
,
a
,
l
,
f
,
c
),
f
.
bits
=
t
.
part2_3_length
,
_
.
assign
(
t
);
var
p
=
0
;
for
(
$
.
arraycopy
(
s
,
0
,
o
,
0
,
576
);
!
u
;){
do
{
var
v
,
d
=
new
T
,
g
=
255
;
if
(
v
=
0
!=
(
2
&
i
.
substep_shaping
)?
20
:
3
,
i
.
sfb21_extra
){
if
(
1
<
l
[
_
.
sfbmax
])
break
;
if
(
_
.
block_type
==
Pe
.
SHORT_TYPE
&&
(
1
<
l
[
_
.
sfbmax
+
1
]
||
1
<
l
[
_
.
sfbmax
+
2
]))
break
}
if
(
!
A
(
e
,
_
,
l
,
s
,
b
))
break
;
0
!=
_
.
scalefac_scale
&&
(
g
=
254
);
var
S
=
r
-
_
.
part2_length
;
if
(
S
<=
0
)
break
;
for
(;(
_
.
part2_3_length
=
w
.
count_bits
(
i
,
s
,
_
,
c
))
>
S
&&
_
.
global_gain
<=
g
;)
_
.
global_gain
++
;
if
(
_
.
global_gain
>
g
)
break
;
if
(
0
==
f
.
over_count
){
for
(;(
_
.
part2_3_length
=
w
.
count_bits
(
i
,
s
,
_
,
c
))
>
h
&&
_
.
global_gain
<=
g
;)
_
.
global_gain
++
;
if
(
_
.
global_gain
>
g
)
break
}
if
(
M
.
calc_noise
(
_
,
a
,
l
,
d
,
c
),
d
.
bits
=
_
.
part2_3_length
,
0
!=
(
B
(
t
.
block_type
!=
Pe
.
SHORT_TYPE
?
e
.
quant_comp
:
e
.
quant_comp_short
,
f
,
d
,
_
,
l
)?
1
:
0
))
h
=
t
.
part2_3_length
,
f
=
d
,
t
.
assign
(
_
),
p
=
0
,
$
.
arraycopy
(
s
,
0
,
o
,
0
,
576
);
else
if
(
0
==
i
.
full_outer_loop
){
if
(
++
p
>
v
&&
0
==
f
.
over_count
)
break
;
if
(
3
==
i
.
noise_shaping_amp
&&
b
&&
30
<
p
)
break
;
if
(
3
==
i
.
noise_shaping_amp
&&
b
&&
15
<
_
.
global_gain
-
m
)
break
}}
while
(
_
.
global_gain
+
_
.
scalefac_scale
<
255
);
3
==
i
.
noise_shaping_amp
?
b
?
u
=!
0
:(
_
.
assign
(
t
),
$
.
arraycopy
(
o
,
0
,
s
,
0
,
576
),
p
=
0
,
m
=
_
.
global_gain
,
b
=!
0
):
u
=!
0
}
return
e
.
VBR
==
ye
.
vbr_rh
||
e
.
VBR
==
ye
.
vbr_mtrh
?
$
.
arraycopy
(
o
,
0
,
s
,
0
,
576
):
0
!=
(
1
&
i
.
substep_shaping
)
&&
trancate_smallspectrums
(
i
,
t
,
a
,
s
),
f
.
over_count
},
this
.
iteration_finish_one
=
function
(
e
,
t
,
a
){
var
s
=
e
.
l3_side
,
n
=
s
.
tt
[
t
][
a
];
w
.
best_scalefac_store
(
e
,
t
,
a
,
s
),
1
==
e
.
use_best_huffman
&&
w
.
best_huffman_divide
(
e
,
n
),
g
.
ResvAdjust
(
e
,
n
)},
this
.
VBR_encode_granule
=
function
(
e
,
t
,
a
,
s
,
n
,
r
,
i
){
var
_
,
o
=
e
.
internal_flags
,
l
=
new
x
,
f
=
Ae
(
576
),
c
=
i
,
h
=
i
+
1
,
u
=
(
i
+
r
)
/
2
,
b
=
0
,
m
=
o
.
sfb21_extra
;
for
(
Te
.
fill
(
l
.
l3_enc
,
0
);
o
.
sfb21_extra
=!
(
c
-
42
<
u
)
&&
m
,
outer_loop
(
e
,
t
,
a
,
s
,
n
,
u
)
<=
0
?(
b
=
1
,
h
=
t
.
part2_3_length
,
l
.
assign
(
t
),
$
.
arraycopy
(
s
,
0
,
f
,
0
,
576
),
_
=
(
i
=
h
-
32
)
-
r
,
u
=
(
i
+
r
)
/
2
):(
_
=
i
-
(
r
=
u
+
32
),
u
=
(
i
+
r
)
/
2
,
0
!=
b
&&
(
b
=
2
,
t
.
assign
(
l
),
$
.
arraycopy
(
f
,
0
,
s
,
0
,
576
))),
12
<
_
;);
o
.
sfb21_extra
=
m
,
2
==
b
&&
$
.
arraycopy
(
l
.
l3_enc
,
0
,
t
.
l3_enc
,
0
,
576
)},
this
.
get_framebits
=
function
(
e
,
t
){
var
a
=
e
.
internal_flags
;
a
.
bitrate_index
=
a
.
VBR_min_bitrate
;
var
s
=
v
.
getframebits
(
e
);
a
.
bitrate_index
=
1
,
s
=
v
.
getframebits
(
e
);
for
(
var
n
=
1
;
n
<=
a
.
VBR_max_bitrate
;
n
++
){
a
.
bitrate_index
=
n
;
var
r
=
new
F
(
s
);
t
[
n
]
=
g
.
ResvFrameBegin
(
e
,
r
),
s
=
r
.
bits
}},
this
.
VBR_old_prepare
=
function
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
){
var
l
,
f
=
e
.
internal_flags
,
c
=
0
,
h
=
1
,
u
=
0
;
f
.
bitrate_index
=
f
.
VBR_max_bitrate
;
var
b
=
g
.
ResvFrameBegin
(
e
,
new
F
(
0
))
/
f
.
mode_gr
;
get_framebits
(
e
,
r
);
for
(
var
m
=
0
;
m
<
f
.
mode_gr
;
m
++
){
var
p
=
M
.
on_pe
(
e
,
t
,
_
[
m
],
b
,
m
,
0
);
f
.
mode_ext
==
Pe
.
MPG_MD_MS_LR
&&
(
ms_convert
(
f
.
l3_side
,
m
),
M
.
reduce_side
(
_
[
m
],
a
[
m
],
b
,
p
));
for
(
var
v
=
0
;
v
<
f
.
channels_out
;
++
v
){
var
d
=
f
.
l3_side
.
tt
[
m
][
v
];
d
.
block_type
!=
Pe
.
SHORT_TYPE
?(
c
=
1.28
/
(
1
+
Math
.
exp
(
3.5
-
t
[
m
][
v
]
/
300
))
-
.
05
,
l
=
f
.
PSY
.
mask_adjust
-
c
):(
c
=
2.56
/
(
1
+
Math
.
exp
(
3.5
-
t
[
m
][
v
]
/
300
))
-
.
14
,
l
=
f
.
PSY
.
mask_adjust_short
-
c
),
f
.
masking_lower
=
Math
.
pow
(
10
,.
1
*
l
),
init_outer_loop
(
f
,
d
),
o
[
m
][
v
]
=
M
.
calc_xmin
(
e
,
s
[
m
][
v
],
d
,
n
[
m
][
v
]),
0
!=
o
[
m
][
v
]
&&
(
h
=
0
),
i
[
m
][
v
]
=
126
,
u
+=
_
[
m
][
v
]}}
for
(
m
=
0
;
m
<
f
.
mode_gr
;
m
++
)
for
(
v
=
0
;
v
<
f
.
channels_out
;
v
++
)
u
>
r
[
f
.
VBR_max_bitrate
]
&&
(
_
[
m
][
v
]
*=
r
[
f
.
VBR_max_bitrate
],
_
[
m
][
v
]
/=
u
),
i
[
m
][
v
]
>
_
[
m
][
v
]
&&
(
i
[
m
][
v
]
=
_
[
m
][
v
]);
return
h
},
this
.
bitpressure_strategy
=
function
(
e
,
t
,
a
,
s
){
for
(
var
n
=
0
;
n
<
e
.
mode_gr
;
n
++
)
for
(
var
r
=
0
;
r
<
e
.
channels_out
;
r
++
){
for
(
var
i
=
e
.
l3_side
.
tt
[
n
][
r
],
_
=
t
[
n
][
r
],
o
=
0
,
l
=
0
;
l
<
i
.
psy_lmax
;
l
++
)
_
[
o
++
]
*=
1
+
.
029
*
l
*
l
/
Pe
.
SBMAX_l
/
Pe
.
SBMAX_l
;
if
(
i
.
block_type
==
Pe
.
SHORT_TYPE
)
for
(
l
=
i
.
sfb_smin
;
l
<
Pe
.
SBMAX_s
;
l
++
)
_
[
o
++
]
*=
1
+
.
029
*
l
*
l
/
Pe
.
SBMAX_s
/
Pe
.
SBMAX_s
,
_
[
o
++
]
*=
1
+
.
029
*
l
*
l
/
Pe
.
SBMAX_s
/
Pe
.
SBMAX_s
,
_
[
o
++
]
*=
1
+
.
029
*
l
*
l
/
Pe
.
SBMAX_s
/
Pe
.
SBMAX_s
;
s
[
n
][
r
]
=
0
|
Math
.
max
(
a
[
n
][
r
],.
9
*
s
[
n
][
r
])}},
this
.
VBR_new_prepare
=
function
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
,
_
=
e
.
internal_flags
,
o
=
1
,
l
=
0
,
f
=
0
;
if
(
e
.
free_format
){
_
.
bitrate_index
=
0
;
c
=
new
F
(
l
);
i
=
g
.
ResvFrameBegin
(
e
,
c
),
l
=
c
.
bits
,
n
[
0
]
=
i
}
else
{
_
.
bitrate_index
=
_
.
VBR_max_bitrate
;
var
c
=
new
F
(
l
);
g
.
ResvFrameBegin
(
e
,
c
),
l
=
c
.
bits
,
get_framebits
(
e
,
n
),
i
=
n
[
_
.
VBR_max_bitrate
]}
for
(
var
h
=
0
;
h
<
_
.
mode_gr
;
h
++
){
M
.
on_pe
(
e
,
t
,
r
[
h
],
l
,
h
,
0
),
_
.
mode_ext
==
Pe
.
MPG_MD_MS_LR
&&
ms_convert
(
_
.
l3_side
,
h
);
for
(
var
u
=
0
;
u
<
_
.
channels_out
;
++
u
){
var
b
=
_
.
l3_side
.
tt
[
h
][
u
];
_
.
masking_lower
=
Math
.
pow
(
10
,.
1
*
_
.
PSY
.
mask_adjust
),
init_outer_loop
(
_
,
b
),
0
!=
M
.
calc_xmin
(
e
,
a
[
h
][
u
],
b
,
s
[
h
][
u
])
&&
(
o
=
0
),
f
+=
r
[
h
][
u
]}}
for
(
h
=
0
;
h
<
_
.
mode_gr
;
h
++
)
for
(
u
=
0
;
u
<
_
.
channels_out
;
u
++
)
i
<
f
&&
(
r
[
h
][
u
]
*=
i
,
r
[
h
][
u
]
/=
f
);
return
o
},
this
.
calc_target_bits
=
function
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
,
_
,
o
,
l
,
f
=
e
.
internal_flags
,
c
=
f
.
l3_side
,
h
=
0
;
f
.
bitrate_index
=
f
.
VBR_max_bitrate
;
var
u
=
new
F
(
h
);
for
(
r
[
0
]
=
g
.
ResvFrameBegin
(
e
,
u
),
h
=
u
.
bits
,
f
.
bitrate_index
=
1
,
h
=
v
.
getframebits
(
e
)
-
8
*
f
.
sideinfo_len
,
n
[
0
]
=
h
/
(
f
.
mode_gr
*
f
.
channels_out
),
h
=
e
.
VBR_mean_bitrate_kbps
*
e
.
framesize
*
1
e3
,
0
!=
(
1
&
f
.
substep_shaping
)
&&
(
h
*=
1.09
),
h
/=
e
.
out_samplerate
,
h
-=
8
*
f
.
sideinfo_len
,
h
/=
f
.
mode_gr
*
f
.
channels_out
,(
i
=
.
93
+
.
07
*
(
11
-
e
.
compression_ratio
)
/
5.5
)
<
.
9
&&
(
i
=
.
9
),
1
<
i
&&
(
i
=
1
),
_
=
0
;
_
<
f
.
mode_gr
;
_
++
){
var
b
=
0
;
for
(
o
=
0
;
o
<
f
.
channels_out
;
o
++
){
if
(
s
[
_
][
o
]
=
int
(
i
*
h
),
700
<
t
[
_
][
o
]){
var
m
=
int
((
t
[
_
][
o
]
-
700
)
/
1.4
),
p
=
c
.
tt
[
_
][
o
];
s
[
_
][
o
]
=
int
(
i
*
h
),
p
.
block_type
==
Pe
.
SHORT_TYPE
&&
m
<
h
/
2
&&
(
m
=
h
/
2
),
3
*
h
/
2
<
m
?
m
=
3
*
h
/
2
:
m
<
0
&&
(
m
=
0
),
s
[
_
][
o
]
+=
m
}
s
[
_
][
o
]
>
Z
.
MAX_BITS_PER_CHANNEL
&&
(
s
[
_
][
o
]
=
Z
.
MAX_BITS_PER_CHANNEL
),
b
+=
s
[
_
][
o
]}
if
(
Z
.
MAX_BITS_PER_GRANULE
<
b
)
for
(
o
=
0
;
o
<
f
.
channels_out
;
++
o
)
s
[
_
][
o
]
*=
Z
.
MAX_BITS_PER_GRANULE
,
s
[
_
][
o
]
/=
b
}
if
(
f
.
mode_ext
==
Pe
.
MPG_MD_MS_LR
)
for
(
_
=
0
;
_
<
f
.
mode_gr
;
_
++
)
M
.
reduce_side
(
s
[
_
],
a
[
_
],
h
*
f
.
channels_out
,
Z
.
MAX_BITS_PER_GRANULE
);
for
(
_
=
l
=
0
;
_
<
f
.
mode_gr
;
_
++
)
for
(
o
=
0
;
o
<
f
.
channels_out
;
o
++
)
s
[
_
][
o
]
>
Z
.
MAX_BITS_PER_CHANNEL
&&
(
s
[
_
][
o
]
=
Z
.
MAX_BITS_PER_CHANNEL
),
l
+=
s
[
_
][
o
];
if
(
l
>
r
[
0
])
for
(
_
=
0
;
_
<
f
.
mode_gr
;
_
++
)
for
(
o
=
0
;
o
<
f
.
channels_out
;
o
++
)
s
[
_
][
o
]
*=
r
[
0
],
s
[
_
][
o
]
/=
l
}}
function
Y
(){
this
.
thm
=
new
i
,
this
.
en
=
new
i
}
function
Pe
(){
var
E
=
Pe
.
FFTOFFSET
,
P
=
Pe
.
MPG_MD_MS_LR
,
H
=
null
,
L
=
this
.
psy
=
null
,
I
=
null
,
V
=
null
;
this
.
setModules
=
function
(
e
,
t
,
a
,
s
){
H
=
e
,
this
.
psy
=
t
,
L
=
t
,
I
=
s
,
V
=
a
};
var
N
=
new
function
(){
var
h
=
[
-
.
1482523854003001
,
32.308141959636465
,
296.40344946382766
,
883.1344870032432
,
11113.947376231741
,
1057.2713659324597
,
305.7402417275812
,
30.825928907280012
,
3.8533188138216365
,
59.42900443849514
,
709.5899960123345
,
5281.91112291017
,
-
5829.66483675846
,
-
817.6293103748613
,
-
76.91656988279972
,
-
4.594269939176596
,.
9063471690191471
,.
1960342806591213
,
-
.
15466694054279598
,
34.324387823855965
,
301.8067566458425
,
817.599602898885
,
11573.795901679885
,
1181.2520595540152
,
321.59731579894424
,
31.232021761053772
,
3.7107095756221318
,
53.650946155329365
,
684.167428119626
,
5224.56624370173
,
-
6366.391851890084
,
-
908.9766368219582
,
-
89.83068876699639
,
-
5.411397422890401
,.
8206787908286602
,.
3901806440322567
,
-
.
16070888947830023
,
36.147034243915876
,
304.11815768187864
,
732.7429163887613
,
11989.60988270091
,
1300.012278487897
,
335.28490093152146
,
31.48816102859945
,
3.373875931311736
,
47.232241542899175
,
652.7371796173471
,
5132.414255594984
,
-
6909.087078780055
,
-
1001.9990371107289
,
-
103.62185754286375
,
-
6.104916304710272
,.
7416505462720353
,.
5805693545089249
,
-
.
16636367662261495
,
37.751650073343995
,
303.01103387567713
,
627.9747488785183
,
12358.763425278165
,
1412.2779918482834
,
346.7496836825721
,
31.598286663170416
,
3.1598635433980946
,
40.57878626349686
,
616.1671130880391
,
5007.833007176154
,
-
7454.040671756168
,
-
1095.7960341867115
,
-
118.24411666465777
,
-
6.818469345853504
,.
6681786379192989
,.
7653668647301797
,
-
.
1716176790982088
,
39.11551877123304
,
298.3413246578966
,
503.5259106886539
,
12679.589408408976
,
1516.5821921214542
,
355.9850766329023
,
31.395241710249053
,
2.9164211881972335
,
33.79716964664243
,
574.8943997801362
,
4853.234992253242
,
-
7997.57021486075
,
-
1189.7624067269965
,
-
133.6444792601766
,
-
7.7202770609839915
,.
5993769336819237
,.
9427934736519954
,
-
.
17645823955292173
,
40.21879108166477
,
289.9982036694474
,
359.3226160751053
,
12950.259102786438
,
1612.1013903507662
,
362.85067106591504
,
31.045922092242872
,
2.822222032597987
,
26.988862316190684
,
529.8996541764288
,
4671.371946949588
,
-
8535.899136645805
,
-
1282.5898586244496
,
-
149.58553632943463
,
-
8.643494270763135
,.
5345111359507916
,
1.111140466039205
,
-
.
36174739330527045
,
41.04429910497807
,
277.5463268268618
,
195.6386023135583
,
13169.43812144731
,
1697.6433561479398
,
367.40983966190305
,
30.557037410382826
,
2.531473372857427
,
20.070154905927314
,
481.50208566532336
,
4464.970341588308
,
-
9065.36882077239
,
-
1373.62841526722
,
-
166.1660487028118
,
-
9.58289321133207
,.
4729647758913199
,
1.268786568327291
,
-
.
36970682634889585
,
41.393213350082036
,
261.2935935556502
,
12.935476055240873
,
13336.131683328815
,
1772.508612059496
,
369.76534388639965
,
29.751323653701338
,
2.4023193045459172
,
13.304795348228817
,
430.5615775526625
,
4237.0568611071185
,
-
9581.931701634761
,
-
1461.6913552409758
,
-
183.12733958476446
,
-
10.718010163869403
,.
41421356237309503
,
1.414213562373095
,
-
.
37677560326535325
,
41.619486213528496
,
241.05423794991074
,
-
187.94665032361226
,
13450.063605744153
,
1836.153896465782
,
369.4908799925761
,
29.001847876923147
,
2.0714759319987186
,
6.779591200894186
,
377.7767837205709
,
3990.386575512536
,
-
10081.709459700915
,
-
1545.947424837898
,
-
200.3762958015653
,
-
11.864482073055006
,.
3578057213145241
,
1.546020906725474
,
-
.
3829366947518991
,
41.1516456456653
,
216.47684307105183
,
-
406.1569483347166
,
13511.136535077321
,
1887.8076599260432
,
367.3025214564151
,
28.136213436723654
,
1.913880671464418
,.
3829366947518991
,
323.85365704338597
,
3728.1472257487526
,
-
10561.233882199509
,
-
1625.2025997821418
,
-
217.62525175416
,
-
13.015432208941645
,.
3033466836073424
,
1.66293922460509
,
-
.
5822628872992417
,
40.35639251440489
,
188.20071124269245
,
-
640.2706748618148
,
13519.21490106562
,
1927.6022433578062
,
362.8197642637487
,
26.968821921868447
,
1.7463817695935329
,
-
5.62650678237171
,
269.3016715297017
,
3453.386536448852
,
-
11016.145278780888
,
-
1698.6569643425091
,
-
234.7658734267683
,
-
14.16351421663124
,.
2504869601913055
,
1.76384252869671
,
-
.
5887180101749253
,
39.23429103868072
,
155.76096234403798
,
-
889.2492977967378
,
13475.470561874661
,
1955.0535223723712
,
356.4450994756727
,
25.894952980042156
,
1.5695032905781554
,
-
11.181939564328772
,
214.80884394039484
,
3169.1640829158237
,
-
11443.321309975563
,
-
1765.1588461316153
,
-
251.68908574481912
,
-
15.49755935939164
,.
198912367379658
,
1.847759065022573
,
-
.
7912582233652842
,
37.39369355329111
,
119.699486012458
,
-
1151.0956593239027
,
13380.446257078214
,
1970.3952110853447
,
348.01959814116185
,
24.731487364283044
,
1.3850130831637748
,
-
16.421408865300393
,
161.05030052864092
,
2878.3322807850063
,
-
11838.991423510031
,
-
1823.985884688674
,
-
268.2854986386903
,
-
16.81724543849939
,.
1483359875383474
,
1.913880671464418
,
-
.
7960642926861912
,
35.2322109610459
,
80.01928065061526
,
-
1424.0212633405113
,
13235.794061869668
,
1973.804052543835
,
337.9908651258184
,
23.289159354463873
,
1.3934255946442087
,
-
21.099669467133474
,
108.48348407242611
,
2583.700758091299
,
-
12199.726194855148
,
-
1874.2780658979746
,
-
284.2467154529415
,
-
18.11369784385905
,.
09849140335716425
,
1.961570560806461
,
-
.
998795456205172
,
32.56307803611191
,
36.958364584370486
,
-
1706.075448829146
,
13043.287458812016
,
1965.3831106103316
,
326.43182772364605
,
22.175018750622293
,
1.198638339011324
,
-
25.371248002043963
,
57.53505923036915
,
2288.41886619975
,
-
12522.674544337233
,
-
1914.8400385312243
,
-
299.26241273417224
,
-
19.37805630698734
,.
04912684976946725
,
1.990369453344394
,.
035780907
*
ee
.
SQRT2
*
.
5
/
2384
e
-
9
,.
017876148
*
ee
.
SQRT2
*
.
5
/
2384
e
-
9
,.
003134727
*
ee
.
SQRT2
*
.
5
/
2384
e
-
9
,.
002457142
*
ee
.
SQRT2
*
.
5
/
2384
e
-
9
,
971317
e
-
9
*
ee
.
SQRT2
*
.
5
/
2384
e
-
9
,
218868
e
-
9
*
ee
.
SQRT2
*
.
5
/
2384
e
-
9
,
101566
e
-
9
*
ee
.
SQRT2
*
.
5
/
2384
e
-
9
,
13828
e
-
9
*
ee
.
SQRT2
*
.
5
/
2384
e
-
9
,
12804.797818791945
,
1945.5515939597317
,
313.4244966442953
,
49591
e
-
9
/
2384
e
-
9
,
1995.1556208053692
,
21458
e
-
9
/
2384
e
-
9
,
-
69618
e
-
9
/
2384
e
-
9
],
z
=
[[
2.382191739347913
e
-
13
,
6.423305872147834
e
-
13
,
9.400849094049688
e
-
13
,
1.122435026096556
e
-
12
,
1.183840321267481
e
-
12
,
1.122435026096556
e
-
12
,
9.40084909404969
e
-
13
,
6.423305872147839
e
-
13
,
2.382191739347918
e
-
13
,
5.456116108943412
e
-
12
,
4.878985199565852
e
-
12
,
4.240448995017367
e
-
12
,
3.559909094758252
e
-
12
,
2.858043359288075
e
-
12
,
2.156177623817898
e
-
12
,
1.475637723558783
e
-
12
,
8.371015190102974
e
-
13
,
2.599706096327376
e
-
13
,
-
5.456116108943412
e
-
12
,
-
4.878985199565852
e
-
12
,
-
4.240448995017367
e
-
12
,
-
3.559909094758252
e
-
12
,
-
2.858043359288076
e
-
12
,
-
2.156177623817898
e
-
12
,
-
1.475637723558783
e
-
12
,
-
8.371015190102975
e
-
13
,
-
2.599706096327376
e
-
13
,
-
2.382191739347923
e
-
13
,
-
6.423305872147843
e
-
13
,
-
9.400849094049696
e
-
13
,
-
1.122435026096556
e
-
12
,
-
1.183840321267481
e
-
12
,
-
1.122435026096556
e
-
12
,
-
9.400849094049694
e
-
13
,
-
6.42330587214784
e
-
13
,
-
2.382191739347918
e
-
13
],[
2.382191739347913
e
-
13
,
6.423305872147834
e
-
13
,
9.400849094049688
e
-
13
,
1.122435026096556
e
-
12
,
1.183840321267481
e
-
12
,
1.122435026096556
e
-
12
,
9.400849094049688
e
-
13
,
6.423305872147841
e
-
13
,
2.382191739347918
e
-
13
,
5.456116108943413
e
-
12
,
4.878985199565852
e
-
12
,
4.240448995017367
e
-
12
,
3.559909094758253
e
-
12
,
2.858043359288075
e
-
12
,
2.156177623817898
e
-
12
,
1.475637723558782
e
-
12
,
8.371015190102975
e
-
13
,
2.599706096327376
e
-
13
,
-
5.461314069809755
e
-
12
,
-
4.921085770524055
e
-
12
,
-
4.343405037091838
e
-
12
,
-
3.732668368707687
e
-
12
,
-
3.093523840190885
e
-
12
,
-
2.430835727329465
e
-
12
,
-
1.734679010007751
e
-
12
,
-
9.74825365660928
e
-
13
,
-
2.797435120168326
e
-
13
,
0
,
0
,
0
,
0
,
0
,
0
,
-
2.283748241799531
e
-
13
,
-
4.037858874020686
e
-
13
,
-
2.146547464825323
e
-
13
],[.
1316524975873958
,.
414213562373095
,.
7673269879789602
,
1.091308501069271
,
1.303225372841206
,
1.56968557711749
,
1.920982126971166
,
2.414213562373094
,
3.171594802363212
,
4.510708503662055
,
7.595754112725146
,
22.90376554843115
,.
984807753012208
,.
6427876096865394
,.
3420201433256688
,.
9396926207859084
,
-
.
1736481776669303
,
-
.
7660444431189779
,.
8660254037844387
,.
5
,
-
.
5144957554275265
,
-
.
4717319685649723
,
-
.
3133774542039019
,
-
.
1819131996109812
,
-
.
09457419252642064
,
-
.
04096558288530405
,
-
.
01419856857247115
,
-
.
003699974673760037
,.
8574929257125442
,.
8817419973177052
,.
9496286491027329
,.
9833145924917901
,.
9955178160675857
,.
9991605581781475
,.
999899195244447
,.
9999931550702802
],[
0
,
0
,
0
,
0
,
0
,
0
,
2.283748241799531
e
-
13
,
4.037858874020686
e
-
13
,
2.146547464825323
e
-
13
,
5.461314069809755
e
-
12
,
4.921085770524055
e
-
12
,
4.343405037091838
e
-
12
,
3.732668368707687
e
-
12
,
3.093523840190885
e
-
12
,
2.430835727329466
e
-
12
,
1.734679010007751
e
-
12
,
9.74825365660928
e
-
13
,
2.797435120168326
e
-
13
,
-
5.456116108943413
e
-
12
,
-
4.878985199565852
e
-
12
,
-
4.240448995017367
e
-
12
,
-
3.559909094758253
e
-
12
,
-
2.858043359288075
e
-
12
,
-
2.156177623817898
e
-
12
,
-
1.475637723558782
e
-
12
,
-
8.371015190102975
e
-
13
,
-
2.599706096327376
e
-
13
,
-
2.382191739347913
e
-
13
,
-
6.423305872147834
e
-
13
,
-
9.400849094049688
e
-
13
,
-
1.122435026096556
e
-
12
,
-
1.183840321267481
e
-
12
,
-
1.122435026096556
e
-
12
,
-
9.400849094049688
e
-
13
,
-
6.423305872147841
e
-
13
,
-
2.382191739347918
e
-
13
]],
Z
=
z
[
Pe
.
SHORT_TYPE
],
K
=
z
[
Pe
.
SHORT_TYPE
],
G
=
z
[
Pe
.
SHORT_TYPE
],
Q
=
z
[
Pe
.
SHORT_TYPE
],
U
=
[
0
,
1
,
16
,
17
,
8
,
9
,
24
,
25
,
4
,
5
,
20
,
21
,
12
,
13
,
28
,
29
,
2
,
3
,
18
,
19
,
10
,
11
,
26
,
27
,
6
,
7
,
22
,
23
,
14
,
15
,
30
,
31
];
function
W
(
e
,
t
,
a
){
for
(
var
s
,
n
,
r
,
i
=
10
,
_
=
t
+
238
-
14
-
286
,
o
=-
15
;
o
<
0
;
o
++
){
var
l
,
f
,
c
;
l
=
h
[
i
+-
10
],
f
=
e
[
_
+-
224
]
*
l
,
c
=
e
[
t
+
224
]
*
l
,
l
=
h
[
i
+-
9
],
f
+=
e
[
_
+-
160
]
*
l
,
c
+=
e
[
t
+
160
]
*
l
,
l
=
h
[
i
+-
8
],
f
+=
e
[
_
+-
96
]
*
l
,
c
+=
e
[
t
+
96
]
*
l
,
l
=
h
[
i
+-
7
],
f
+=
e
[
_
+-
32
]
*
l
,
c
+=
e
[
t
+
32
]
*
l
,
l
=
h
[
i
+-
6
],
f
+=
e
[
_
+
32
]
*
l
,
c
+=
e
[
t
+-
32
]
*
l
,
l
=
h
[
i
+-
5
],
f
+=
e
[
_
+
96
]
*
l
,
c
+=
e
[
t
+-
96
]
*
l
,
l
=
h
[
i
+-
4
],
f
+=
e
[
_
+
160
]
*
l
,
c
+=
e
[
t
+-
160
]
*
l
,
l
=
h
[
i
+-
3
],
f
+=
e
[
_
+
224
]
*
l
,
c
+=
e
[
t
+-
224
]
*
l
,
l
=
h
[
i
+-
2
],
f
+=
e
[
t
+-
256
]
*
l
,
c
-=
e
[
_
+
256
]
*
l
,
l
=
h
[
i
+-
1
],
f
+=
e
[
t
+-
192
]
*
l
,
c
-=
e
[
_
+
192
]
*
l
,
l
=
h
[
i
+
0
],
f
+=
e
[
t
+-
128
]
*
l
,
c
-=
e
[
_
+
128
]
*
l
,
l
=
h
[
i
+
1
],
f
+=
e
[
t
+-
64
]
*
l
,
c
-=
e
[
_
+
64
]
*
l
,
l
=
h
[
i
+
2
],
f
+=
e
[
t
+
0
]
*
l
,
c
-=
e
[
_
+
0
]
*
l
,
l
=
h
[
i
+
3
],
f
+=
e
[
t
+
64
]
*
l
,
c
-=
e
[
_
+-
64
]
*
l
,
l
=
h
[
i
+
4
],
f
+=
e
[
t
+
128
]
*
l
,
c
-=
e
[
_
+-
128
]
*
l
,
l
=
h
[
i
+
5
],
f
+=
e
[
t
+
192
]
*
l
,
l
=
(
c
-=
e
[
_
+-
192
]
*
l
)
-
(
f
*=
h
[
i
+
6
]),
a
[
30
+
2
*
o
]
=
c
+
f
,
a
[
31
+
2
*
o
]
=
h
[
i
+
7
]
*
l
,
i
+=
18
,
t
--
,
_
++
}
c
=
e
[
t
+-
16
]
*
h
[
i
+-
10
],
f
=
e
[
t
+-
32
]
*
h
[
i
+-
2
],
c
+=
(
e
[
t
+-
48
]
-
e
[
t
+
16
])
*
h
[
i
+-
9
],
f
+=
e
[
t
+-
96
]
*
h
[
i
+-
1
],
c
+=
(
e
[
t
+-
80
]
+
e
[
t
+
48
])
*
h
[
i
+-
8
],
f
+=
e
[
t
+-
160
]
*
h
[
i
+
0
],
c
+=
(
e
[
t
+-
112
]
-
e
[
t
+
80
])
*
h
[
i
+-
7
],
f
+=
e
[
t
+-
224
]
*
h
[
i
+
1
],
c
+=
(
e
[
t
+-
144
]
+
e
[
t
+
112
])
*
h
[
i
+-
6
],
f
-=
e
[
t
+
32
]
*
h
[
i
+
2
],
c
+=
(
e
[
t
+-
176
]
-
e
[
t
+
144
])
*
h
[
i
+-
5
],
f
-=
e
[
t
+
96
]
*
h
[
i
+
3
],
c
+=
(
e
[
t
+-
208
]
+
e
[
t
+
176
])
*
h
[
i
+-
4
],
f
-=
e
[
t
+
160
]
*
h
[
i
+
4
],
c
+=
(
e
[
t
+-
240
]
-
e
[
t
+
208
])
*
h
[
i
+-
3
],
s
=
(
f
-=
e
[
t
+
224
])
-
c
,
n
=
f
+
c
,
c
=
a
[
14
],
f
=
a
[
15
]
-
c
,
a
[
31
]
=
n
+
c
,
a
[
30
]
=
s
+
f
,
a
[
15
]
=
s
-
f
,
a
[
14
]
=
n
-
c
,
r
=
a
[
28
]
-
a
[
0
],
a
[
0
]
+=
a
[
28
],
a
[
28
]
=
r
*
h
[
i
+-
36
+
7
],
r
=
a
[
29
]
-
a
[
1
],
a
[
1
]
+=
a
[
29
],
a
[
29
]
=
r
*
h
[
i
+-
36
+
7
],
r
=
a
[
26
]
-
a
[
2
],
a
[
2
]
+=
a
[
26
],
a
[
26
]
=
r
*
h
[
i
+-
72
+
7
],
r
=
a
[
27
]
-
a
[
3
],
a
[
3
]
+=
a
[
27
],
a
[
27
]
=
r
*
h
[
i
+-
72
+
7
],
r
=
a
[
24
]
-
a
[
4
],
a
[
4
]
+=
a
[
24
],
a
[
24
]
=
r
*
h
[
i
+-
108
+
7
],
r
=
a
[
25
]
-
a
[
5
],
a
[
5
]
+=
a
[
25
],
a
[
25
]
=
r
*
h
[
i
+-
108
+
7
],
r
=
a
[
22
]
-
a
[
6
],
a
[
6
]
+=
a
[
22
],
a
[
22
]
=
r
*
ee
.
SQRT2
,
r
=
a
[
23
]
-
a
[
7
],
a
[
7
]
+=
a
[
23
],
a
[
23
]
=
r
*
ee
.
SQRT2
-
a
[
7
],
a
[
7
]
-=
a
[
6
],
a
[
22
]
-=
a
[
7
],
a
[
23
]
-=
a
[
22
],
r
=
a
[
6
],
a
[
6
]
=
a
[
31
]
-
r
,
a
[
31
]
=
a
[
31
]
+
r
,
r
=
a
[
7
],
a
[
7
]
=
a
[
30
]
-
r
,
a
[
30
]
=
a
[
30
]
+
r
,
r
=
a
[
22
],
a
[
22
]
=
a
[
15
]
-
r
,
a
[
15
]
=
a
[
15
]
+
r
,
r
=
a
[
23
],
a
[
23
]
=
a
[
14
]
-
r
,
a
[
14
]
=
a
[
14
]
+
r
,
r
=
a
[
20
]
-
a
[
8
],
a
[
8
]
+=
a
[
20
],
a
[
20
]
=
r
*
h
[
i
+-
180
+
7
],
r
=
a
[
21
]
-
a
[
9
],
a
[
9
]
+=
a
[
21
],
a
[
21
]
=
r
*
h
[
i
+-
180
+
7
],
r
=
a
[
18
]
-
a
[
10
],
a
[
10
]
+=
a
[
18
],
a
[
18
]
=
r
*
h
[
i
+-
216
+
7
],
r
=
a
[
19
]
-
a
[
11
],
a
[
11
]
+=
a
[
19
],
a
[
19
]
=
r
*
h
[
i
+-
216
+
7
],
r
=
a
[
16
]
-
a
[
12
],
a
[
12
]
+=
a
[
16
],
a
[
16
]
=
r
*
h
[
i
+-
252
+
7
],
r
=
a
[
17
]
-
a
[
13
],
a
[
13
]
+=
a
[
17
],
a
[
17
]
=
r
*
h
[
i
+-
252
+
7
],
r
=-
a
[
20
]
+
a
[
24
],
a
[
20
]
+=
a
[
24
],
a
[
24
]
=
r
*
h
[
i
+-
216
+
7
],
r
=-
a
[
21
]
+
a
[
25
],
a
[
21
]
+=
a
[
25
],
a
[
25
]
=
r
*
h
[
i
+-
216
+
7
],
r
=
a
[
4
]
-
a
[
8
],
a
[
4
]
+=
a
[
8
],
a
[
8
]
=
r
*
h
[
i
+-
216
+
7
],
r
=
a
[
5
]
-
a
[
9
],
a
[
5
]
+=
a
[
9
],
a
[
9
]
=
r
*
h
[
i
+-
216
+
7
],
r
=
a
[
0
]
-
a
[
12
],
a
[
0
]
+=
a
[
12
],
a
[
12
]
=
r
*
h
[
i
+-
72
+
7
],
r
=
a
[
1
]
-
a
[
13
],
a
[
1
]
+=
a
[
13
],
a
[
13
]
=
r
*
h
[
i
+-
72
+
7
],
r
=
a
[
16
]
-
a
[
28
],
a
[
16
]
+=
a
[
28
],
a
[
28
]
=
r
*
h
[
i
+-
72
+
7
],
r
=-
a
[
17
]
+
a
[
29
],
a
[
17
]
+=
a
[
29
],
a
[
29
]
=
r
*
h
[
i
+-
72
+
7
],
r
=
ee
.
SQRT2
*
(
a
[
2
]
-
a
[
10
]),
a
[
2
]
+=
a
[
10
],
a
[
10
]
=
r
,
r
=
ee
.
SQRT2
*
(
a
[
3
]
-
a
[
11
]),
a
[
3
]
+=
a
[
11
],
a
[
11
]
=
r
,
r
=
ee
.
SQRT2
*
(
-
a
[
18
]
+
a
[
26
]),
a
[
18
]
+=
a
[
26
],
a
[
26
]
=
r
-
a
[
18
],
r
=
ee
.
SQRT2
*
(
-
a
[
19
]
+
a
[
27
]),
a
[
19
]
+=
a
[
27
],
a
[
27
]
=
r
-
a
[
19
],
r
=
a
[
2
],
a
[
19
]
-=
a
[
3
],
a
[
3
]
-=
r
,
a
[
2
]
=
a
[
31
]
-
r
,
a
[
31
]
+=
r
,
r
=
a
[
3
],
a
[
11
]
-=
a
[
19
],
a
[
18
]
-=
r
,
a
[
3
]
=
a
[
30
]
-
r
,
a
[
30
]
+=
r
,
r
=
a
[
18
],
a
[
27
]
-=
a
[
11
],
a
[
19
]
-=
r
,
a
[
18
]
=
a
[
15
]
-
r
,
a
[
15
]
+=
r
,
r
=
a
[
19
],
a
[
10
]
-=
r
,
a
[
19
]
=
a
[
14
]
-
r
,
a
[
14
]
+=
r
,
r
=
a
[
10
],
a
[
11
]
-=
r
,
a
[
10
]
=
a
[
23
]
-
r
,
a
[
23
]
+=
r
,
r
=
a
[
11
],
a
[
26
]
-=
r
,
a
[
11
]
=
a
[
22
]
-
r
,
a
[
22
]
+=
r
,
r
=
a
[
26
],
a
[
27
]
-=
r
,
a
[
26
]
=
a
[
7
]
-
r
,
a
[
7
]
+=
r
,
r
=
a
[
27
],
a
[
27
]
=
a
[
6
]
-
r
,
a
[
6
]
+=
r
,
r
=
ee
.
SQRT2
*
(
a
[
0
]
-
a
[
4
]),
a
[
0
]
+=
a
[
4
],
a
[
4
]
=
r
,
r
=
ee
.
SQRT2
*
(
a
[
1
]
-
a
[
5
]),
a
[
1
]
+=
a
[
5
],
a
[
5
]
=
r
,
r
=
ee
.
SQRT2
*
(
a
[
16
]
-
a
[
20
]),
a
[
16
]
+=
a
[
20
],
a
[
20
]
=
r
,
r
=
ee
.
SQRT2
*
(
a
[
17
]
-
a
[
21
]),
a
[
17
]
+=
a
[
21
],
a
[
21
]
=
r
,
r
=-
ee
.
SQRT2
*
(
a
[
8
]
-
a
[
12
]),
a
[
8
]
+=
a
[
12
],
a
[
12
]
=
r
-
a
[
8
],
r
=-
ee
.
SQRT2
*
(
a
[
9
]
-
a
[
13
]),
a
[
9
]
+=
a
[
13
],
a
[
13
]
=
r
-
a
[
9
],
r
=-
ee
.
SQRT2
*
(
a
[
25
]
-
a
[
29
]),
a
[
25
]
+=
a
[
29
],
a
[
29
]
=
r
-
a
[
25
],
r
=-
ee
.
SQRT2
*
(
a
[
24
]
+
a
[
28
]),
a
[
24
]
-=
a
[
28
],
a
[
28
]
=
r
-
a
[
24
],
r
=
a
[
24
]
-
a
[
16
],
a
[
24
]
=
r
,
r
=
a
[
20
]
-
r
,
a
[
20
]
=
r
,
r
=
a
[
28
]
-
r
,
a
[
28
]
=
r
,
r
=
a
[
25
]
-
a
[
17
],
a
[
25
]
=
r
,
r
=
a
[
21
]
-
r
,
a
[
21
]
=
r
,
r
=
a
[
29
]
-
r
,
a
[
29
]
=
r
,
r
=
a
[
17
]
-
a
[
1
],
a
[
17
]
=
r
,
r
=
a
[
9
]
-
r
,
a
[
9
]
=
r
,
r
=
a
[
25
]
-
r
,
a
[
25
]
=
r
,
r
=
a
[
5
]
-
r
,
a
[
5
]
=
r
,
r
=
a
[
21
]
-
r
,
a
[
21
]
=
r
,
r
=
a
[
13
]
-
r
,
a
[
13
]
=
r
,
r
=
a
[
29
]
-
r
,
a
[
29
]
=
r
,
r
=
a
[
1
]
-
a
[
0
],
a
[
1
]
=
r
,
r
=
a
[
16
]
-
r
,
a
[
16
]
=
r
,
r
=
a
[
17
]
-
r
,
a
[
17
]
=
r
,
r
=
a
[
8
]
-
r
,
a
[
8
]
=
r
,
r
=
a
[
9
]
-
r
,
a
[
9
]
=
r
,
r
=
a
[
24
]
-
r
,
a
[
24
]
=
r
,
r
=
a
[
25
]
-
r
,
a
[
25
]
=
r
,
r
=
a
[
4
]
-
r
,
a
[
4
]
=
r
,
r
=
a
[
5
]
-
r
,
a
[
5
]
=
r
,
r
=
a
[
20
]
-
r
,
a
[
20
]
=
r
,
r
=
a
[
21
]
-
r
,
a
[
21
]
=
r
,
r
=
a
[
12
]
-
r
,
a
[
12
]
=
r
,
r
=
a
[
13
]
-
r
,
a
[
13
]
=
r
,
r
=
a
[
28
]
-
r
,
a
[
28
]
=
r
,
r
=
a
[
29
]
-
r
,
a
[
29
]
=
r
,
r
=
a
[
0
],
a
[
0
]
+=
a
[
31
],
a
[
31
]
-=
r
,
r
=
a
[
1
],
a
[
1
]
+=
a
[
30
],
a
[
30
]
-=
r
,
r
=
a
[
16
],
a
[
16
]
+=
a
[
15
],
a
[
15
]
-=
r
,
r
=
a
[
17
],
a
[
17
]
+=
a
[
14
],
a
[
14
]
-=
r
,
r
=
a
[
8
],
a
[
8
]
+=
a
[
23
],
a
[
23
]
-=
r
,
r
=
a
[
9
],
a
[
9
]
+=
a
[
22
],
a
[
22
]
-=
r
,
r
=
a
[
24
],
a
[
24
]
+=
a
[
7
],
a
[
7
]
-=
r
,
r
=
a
[
25
],
a
[
25
]
+=
a
[
6
],
a
[
6
]
-=
r
,
r
=
a
[
4
],
a
[
4
]
+=
a
[
27
],
a
[
27
]
-=
r
,
r
=
a
[
5
],
a
[
5
]
+=
a
[
26
],
a
[
26
]
-=
r
,
r
=
a
[
20
],
a
[
20
]
+=
a
[
11
],
a
[
11
]
-=
r
,
r
=
a
[
21
],
a
[
21
]
+=
a
[
10
],
a
[
10
]
-=
r
,
r
=
a
[
12
],
a
[
12
]
+=
a
[
19
],
a
[
19
]
-=
r
,
r
=
a
[
13
],
a
[
13
]
+=
a
[
18
],
a
[
18
]
-=
r
,
r
=
a
[
28
],
a
[
28
]
+=
a
[
3
],
a
[
3
]
-=
r
,
r
=
a
[
29
],
a
[
29
]
+=
a
[
2
],
a
[
2
]
-=
r
}
function
J
(
e
,
t
){
for
(
var
a
=
0
;
a
<
3
;
a
++
){
var
s
,
n
,
r
,
i
,
_
,
o
;
n
=
(
i
=
e
[
t
+
6
]
*
z
[
Pe
.
SHORT_TYPE
][
0
]
-
e
[
t
+
15
])
+
(
s
=
e
[
t
+
0
]
*
z
[
Pe
.
SHORT_TYPE
][
2
]
-
e
[
t
+
9
]),
r
=
i
-
s
,
_
=
(
i
=
e
[
t
+
15
]
*
z
[
Pe
.
SHORT_TYPE
][
0
]
+
e
[
t
+
6
])
+
(
s
=
e
[
t
+
9
]
*
z
[
Pe
.
SHORT_TYPE
][
2
]
+
e
[
t
+
0
]),
o
=-
i
+
s
,
s
=
2.069978111953089
e
-
11
*
(
e
[
t
+
3
]
*
z
[
Pe
.
SHORT_TYPE
][
1
]
-
e
[
t
+
12
]),
i
=
2.069978111953089
e
-
11
*
(
e
[
t
+
12
]
*
z
[
Pe
.
SHORT_TYPE
][
1
]
+
e
[
t
+
3
]),
e
[
t
+
0
]
=
1.90752519173728
e
-
11
*
n
+
s
,
e
[
t
+
15
]
=
1.90752519173728
e
-
11
*-
_
+
i
,
r
=
.
8660254037844387
*
r
*
1.907525191737281
e
-
11
,
_
=
.
5
*
_
*
1.907525191737281
e
-
11
+
i
,
e
[
t
+
3
]
=
r
-
_
,
e
[
t
+
6
]
=
r
+
_
,
n
=
.
5
*
n
*
1.907525191737281
e
-
11
-
s
,
o
=
.
8660254037844387
*
o
*
1.907525191737281
e
-
11
,
e
[
t
+
9
]
=
n
+
o
,
e
[
t
+
12
]
=
n
-
o
,
t
++
}}
this
.
mdct_sub48
=
function
(
e
,
t
,
a
){
for
(
var
s
,
n
,
r
,
i
,
_
,
o
,
l
,
f
,
c
,
h
,
u
,
b
,
m
,
p
,
v
,
d
,
g
,
S
,
M
,
w
,
R
,
B
=
t
,
A
=
286
,
k
=
0
;
k
<
e
.
channels_out
;
k
++
){
for
(
var
T
=
0
;
T
<
e
.
mode_gr
;
T
++
){
for
(
var
x
,
y
=
e
.
l3_side
.
tt
[
T
][
k
],
E
=
y
.
xr
,
P
=
0
,
H
=
e
.
sb_sample
[
k
][
1
-
T
],
L
=
0
,
I
=
0
;
I
<
9
;
I
++
)
for
(
W
(
B
,
A
,
H
[
L
]),
W
(
B
,
A
+
32
,
H
[
L
+
1
]),
L
+=
2
,
A
+=
64
,
x
=
1
;
x
<
32
;
x
+=
2
)
H
[
L
-
1
][
x
]
*=-
1
;
for
(
x
=
0
;
x
<
32
;
x
++
,
P
+=
18
){
var
V
=
y
.
block_type
,
N
=
e
.
sb_sample
[
k
][
T
],
O
=
e
.
sb_sample
[
k
][
1
-
T
];
if
(
0
!=
y
.
mixed_block_flag
&&
x
<
2
&&
(
V
=
0
),
e
.
amp_filter
[
x
]
<
1
e
-
12
)
Te
.
fill
(
E
,
P
+
0
,
P
+
18
,
0
);
else
{
if
(
e
.
amp_filter
[
x
]
<
1
)
for
(
I
=
0
;
I
<
18
;
I
++
)
O
[
I
][
U
[
x
]]
*=
e
.
amp_filter
[
x
];
if
(
V
==
Pe
.
SHORT_TYPE
){
for
(
I
=-
3
;
I
<
0
;
I
++
){
var
Y
=
z
[
Pe
.
SHORT_TYPE
][
I
+
3
];
E
[
P
+
3
*
I
+
9
]
=
N
[
9
+
I
][
U
[
x
]]
*
Y
-
N
[
8
-
I
][
U
[
x
]],
E
[
P
+
3
*
I
+
18
]
=
N
[
14
-
I
][
U
[
x
]]
*
Y
+
N
[
15
+
I
][
U
[
x
]],
E
[
P
+
3
*
I
+
10
]
=
N
[
15
+
I
][
U
[
x
]]
*
Y
-
N
[
14
-
I
][
U
[
x
]],
E
[
P
+
3
*
I
+
19
]
=
O
[
2
-
I
][
U
[
x
]]
*
Y
+
O
[
3
+
I
][
U
[
x
]],
E
[
P
+
3
*
I
+
11
]
=
O
[
3
+
I
][
U
[
x
]]
*
Y
-
O
[
2
-
I
][
U
[
x
]],
E
[
P
+
3
*
I
+
20
]
=
O
[
8
-
I
][
U
[
x
]]
*
Y
+
O
[
9
+
I
][
U
[
x
]]}
J
(
E
,
P
)}
else
{
var
D
=
Ae
(
18
);
for
(
I
=-
9
;
I
<
0
;
I
++
){
var
X
,
q
;
X
=
z
[
V
][
I
+
27
]
*
O
[
I
+
9
][
U
[
x
]]
+
z
[
V
][
I
+
36
]
*
O
[
8
-
I
][
U
[
x
]],
q
=
z
[
V
][
I
+
9
]
*
N
[
I
+
9
][
U
[
x
]]
-
z
[
V
][
I
+
18
]
*
N
[
8
-
I
][
U
[
x
]],
D
[
I
+
9
]
=
X
-
q
*
Z
[
3
+
I
+
9
],
D
[
I
+
18
]
=
X
*
Z
[
3
+
I
+
9
]
+
q
}
s
=
E
,
n
=
P
,
R
=
w
=
M
=
S
=
g
=
d
=
v
=
p
=
m
=
b
=
u
=
h
=
c
=
f
=
l
=
o
=
_
=
i
=
void
0
,
o
=
(
r
=
D
)[
17
]
-
r
[
9
],
f
=
r
[
15
]
-
r
[
11
],
c
=
r
[
14
]
-
r
[
12
],
h
=
r
[
0
]
+
r
[
8
],
u
=
r
[
1
]
+
r
[
7
],
b
=
r
[
2
]
+
r
[
6
],
m
=
r
[
3
]
+
r
[
5
],
s
[
n
+
17
]
=
h
+
b
-
m
-
(
u
-
r
[
4
]),
_
=
(
h
+
b
-
m
)
*
K
[
19
]
+
(
u
-
r
[
4
]),
i
=
(
o
-
f
-
c
)
*
K
[
18
],
s
[
n
+
5
]
=
i
+
_
,
s
[
n
+
6
]
=
i
-
_
,
l
=
(
r
[
16
]
-
r
[
10
])
*
K
[
18
],
u
=
u
*
K
[
19
]
+
r
[
4
],
i
=
o
*
K
[
12
]
+
l
+
f
*
K
[
13
]
+
c
*
K
[
14
],
_
=-
h
*
K
[
16
]
+
u
-
b
*
K
[
17
]
+
m
*
K
[
15
],
s
[
n
+
1
]
=
i
+
_
,
s
[
n
+
2
]
=
i
-
_
,
i
=
o
*
K
[
13
]
-
l
-
f
*
K
[
14
]
+
c
*
K
[
12
],
_
=-
h
*
K
[
17
]
+
u
-
b
*
K
[
15
]
+
m
*
K
[
16
],
s
[
n
+
9
]
=
i
+
_
,
s
[
n
+
10
]
=
i
-
_
,
i
=
o
*
K
[
14
]
-
l
+
f
*
K
[
12
]
-
c
*
K
[
13
],
_
=
h
*
K
[
15
]
-
u
+
b
*
K
[
16
]
-
m
*
K
[
17
],
s
[
n
+
13
]
=
i
+
_
,
s
[
n
+
14
]
=
i
-
_
,
p
=
r
[
8
]
-
r
[
0
],
d
=
r
[
6
]
-
r
[
2
],
g
=
r
[
5
]
-
r
[
3
],
S
=
r
[
17
]
+
r
[
9
],
M
=
r
[
16
]
+
r
[
10
],
w
=
r
[
15
]
+
r
[
11
],
R
=
r
[
14
]
+
r
[
12
],
s
[
n
+
0
]
=
S
+
w
+
R
+
(
M
+
r
[
13
]),
i
=
(
S
+
w
+
R
)
*
K
[
19
]
-
(
M
+
r
[
13
]),
_
=
(
p
-
d
+
g
)
*
K
[
18
],
s
[
n
+
11
]
=
i
+
_
,
s
[
n
+
12
]
=
i
-
_
,
v
=
(
r
[
7
]
-
r
[
1
])
*
K
[
18
],
M
=
r
[
13
]
-
M
*
K
[
19
],
i
=
S
*
K
[
15
]
-
M
+
w
*
K
[
16
]
+
R
*
K
[
17
],
_
=
p
*
K
[
14
]
+
v
+
d
*
K
[
12
]
+
g
*
K
[
13
],
s
[
n
+
3
]
=
i
+
_
,
s
[
n
+
4
]
=
i
-
_
,
i
=-
S
*
K
[
17
]
+
M
-
w
*
K
[
15
]
-
R
*
K
[
16
],
_
=
p
*
K
[
13
]
+
v
-
d
*
K
[
14
]
-
g
*
K
[
12
],
s
[
n
+
7
]
=
i
+
_
,
s
[
n
+
8
]
=
i
-
_
,
i
=-
S
*
K
[
16
]
+
M
-
w
*
K
[
17
]
-
R
*
K
[
15
],
_
=
p
*
K
[
12
]
-
v
+
d
*
K
[
13
]
-
g
*
K
[
14
],
s
[
n
+
15
]
=
i
+
_
,
s
[
n
+
16
]
=
i
-
_
}}
if
(
V
!=
Pe
.
SHORT_TYPE
&&
0
!=
x
)
for
(
I
=
7
;
0
<=
I
;
--
I
){
var
j
,
C
;
j
=
E
[
P
+
I
]
*
G
[
20
+
I
]
+
E
[
P
+-
1
-
I
]
*
Q
[
28
+
I
],
C
=
E
[
P
+
I
]
*
Q
[
28
+
I
]
-
E
[
P
+-
1
-
I
]
*
G
[
20
+
I
],
E
[
P
+-
1
-
I
]
=
j
,
E
[
P
+
I
]
=
C
}}}
if
(
B
=
a
,
A
=
286
,
1
==
e
.
mode_gr
)
for
(
var
F
=
0
;
F
<
18
;
F
++
)
$
.
arraycopy
(
e
.
sb_sample
[
k
][
1
][
F
],
0
,
e
.
sb_sample
[
k
][
0
][
F
],
0
,
32
)}}};
this
.
lame_encode_mp3_frame
=
function
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
,
_
=
O
([
2
,
2
]);
_
[
0
][
0
]
=
new
Y
,
_
[
0
][
1
]
=
new
Y
,
_
[
1
][
0
]
=
new
Y
,
_
[
1
][
1
]
=
new
Y
;
var
o
,
l
=
O
([
2
,
2
]);
l
[
0
][
0
]
=
new
Y
,
l
[
0
][
1
]
=
new
Y
,
l
[
1
][
0
]
=
new
Y
,
l
[
1
][
1
]
=
new
Y
;
var
f
,
c
,
h
,
u
=
[
null
,
null
],
b
=
e
.
internal_flags
,
m
=
ke
([
2
,
4
]),
p
=
[.
5
,.
5
],
v
=
[[
0
,
0
],[
0
,
0
]],
d
=
[[
0
,
0
],[
0
,
0
]];
if
(
u
[
0
]
=
t
,
u
[
1
]
=
a
,
0
==
b
.
lame_encode_frame_init
&&
function
(
e
,
t
){
var
a
,
s
,
n
=
e
.
internal_flags
;
if
(
0
==
n
.
lame_encode_frame_init
){
var
r
,
i
,
_
=
Ae
(
2014
),
o
=
Ae
(
2014
);
for
(
n
.
lame_encode_frame_init
=
1
,
i
=
r
=
0
;
r
<
286
+
576
*
(
1
+
n
.
mode_gr
);
++
r
)
r
<
576
*
n
.
mode_gr
?(
_
[
r
]
=
0
,
2
==
n
.
channels_out
&&
(
o
[
r
]
=
0
)):(
_
[
r
]
=
t
[
0
][
i
],
2
==
n
.
channels_out
&&
(
o
[
r
]
=
t
[
1
][
i
]),
++
i
);
for
(
s
=
0
;
s
<
n
.
mode_gr
;
s
++
)
for
(
a
=
0
;
a
<
n
.
channels_out
;
a
++
)
n
.
l3_side
.
tt
[
s
][
a
].
block_type
=
Pe
.
SHORT_TYPE
;
N
.
mdct_sub48
(
n
,
_
,
o
)}}(
e
,
u
),
b
.
padding
=
0
,(
b
.
slot_lag
-=
b
.
frac_SpF
)
<
0
&&
(
b
.
slot_lag
+=
e
.
out_samplerate
,
b
.
padding
=
1
),
0
!=
b
.
psymodel
){
var
g
=
[
null
,
null
],
S
=
0
,
M
=
Be
(
2
);
for
(
h
=
0
;
h
<
b
.
mode_gr
;
h
++
){
for
(
c
=
0
;
c
<
b
.
channels_out
;
c
++
)
g
[
c
]
=
u
[
c
],
S
=
576
+
576
*
h
-
Pe
.
FFTOFFSET
;
if
(
0
!=
(
e
.
VBR
==
ye
.
vbr_mtrh
||
e
.
VBR
==
ye
.
vbr_mt
?
L
.
L3psycho_anal_vbr
(
e
,
g
,
S
,
h
,
_
,
l
,
v
[
h
],
d
[
h
],
m
[
h
],
M
):
L
.
L3psycho_anal_ns
(
e
,
g
,
S
,
h
,
_
,
l
,
v
[
h
],
d
[
h
],
m
[
h
],
M
)))
return
-
4
;
for
(
e
.
mode
==
Ee
.
JOINT_STEREO
&&
(
p
[
h
]
=
m
[
h
][
2
]
+
m
[
h
][
3
],
0
<
p
[
h
]
&&
(
p
[
h
]
=
m
[
h
][
3
]
/
p
[
h
])),
c
=
0
;
c
<
b
.
channels_out
;
c
++
){
var
w
=
b
.
l3_side
.
tt
[
h
][
c
];
w
.
block_type
=
M
[
c
],
w
.
mixed_block_flag
=
0
}}}
else
for
(
h
=
0
;
h
<
b
.
mode_gr
;
h
++
)
for
(
c
=
0
;
c
<
b
.
channels_out
;
c
++
)
b
.
l3_side
.
tt
[
h
][
c
].
block_type
=
Pe
.
NORM_TYPE
,
b
.
l3_side
.
tt
[
h
][
c
].
mixed_block_flag
=
0
,
d
[
h
][
c
]
=
v
[
h
][
c
]
=
700
;
if
(
function
(
e
){
var
t
,
a
;
if
(
0
!=
e
.
ATH
.
useAdjust
)
if
(
a
=
e
.
loudness_sq
[
0
][
0
],
t
=
e
.
loudness_sq
[
1
][
0
],
2
==
e
.
channels_out
?(
a
+=
e
.
loudness_sq
[
0
][
1
],
t
+=
e
.
loudness_sq
[
1
][
1
]):(
a
+=
a
,
t
+=
t
),
2
==
e
.
mode_gr
&&
(
a
=
Math
.
max
(
a
,
t
)),
a
*=
.
5
,.
03125
<
(
a
*=
e
.
ATH
.
aaSensitivityP
))
1
<=
e
.
ATH
.
adjust
?
e
.
ATH
.
adjust
=
1
:
e
.
ATH
.
adjust
<
e
.
ATH
.
adjustLimit
&&
(
e
.
ATH
.
adjust
=
e
.
ATH
.
adjustLimit
),
e
.
ATH
.
adjustLimit
=
1
;
else
{
var
s
=
31.98
*
a
+
625
e
-
6
;
e
.
ATH
.
adjust
>=
s
?(
e
.
ATH
.
adjust
*=
.
075
*
s
+
.
925
,
e
.
ATH
.
adjust
<
s
&&
(
e
.
ATH
.
adjust
=
s
)):
e
.
ATH
.
adjustLimit
>=
s
?
e
.
ATH
.
adjust
=
s
:
e
.
ATH
.
adjust
<
e
.
ATH
.
adjustLimit
&&
(
e
.
ATH
.
adjust
=
e
.
ATH
.
adjustLimit
),
e
.
ATH
.
adjustLimit
=
s
}
else
e
.
ATH
.
adjust
=
1
}(
b
),
N
.
mdct_sub48
(
b
,
u
[
0
],
u
[
1
]),
b
.
mode_ext
=
Pe
.
MPG_MD_LR_LR
,
e
.
force_ms
)
b
.
mode_ext
=
Pe
.
MPG_MD_MS_LR
;
else
if
(
e
.
mode
==
Ee
.
JOINT_STEREO
){
var
R
=
0
,
B
=
0
;
for
(
h
=
0
;
h
<
b
.
mode_gr
;
h
++
)
for
(
c
=
0
;
c
<
b
.
channels_out
;
c
++
)
R
+=
d
[
h
][
c
],
B
+=
v
[
h
][
c
];
if
(
R
<=
1
*
B
){
var
A
=
b
.
l3_side
.
tt
[
0
],
k
=
b
.
l3_side
.
tt
[
b
.
mode_gr
-
1
];
A
[
0
].
block_type
==
A
[
1
].
block_type
&&
k
[
0
].
block_type
==
k
[
1
].
block_type
&&
(
b
.
mode_ext
=
Pe
.
MPG_MD_MS_LR
)}}
if
(
b
.
mode_ext
==
P
?(
o
=
l
,
f
=
d
):(
o
=
_
,
f
=
v
),
e
.
analysis
&&
null
!=
b
.
pinfo
)
for
(
h
=
0
;
h
<
b
.
mode_gr
;
h
++
)
for
(
c
=
0
;
c
<
b
.
channels_out
;
c
++
)
b
.
pinfo
.
ms_ratio
[
h
]
=
b
.
ms_ratio
[
h
],
b
.
pinfo
.
ms_ener_ratio
[
h
]
=
p
[
h
],
b
.
pinfo
.
blocktype
[
h
][
c
]
=
b
.
l3_side
.
tt
[
h
][
c
].
block_type
,
b
.
pinfo
.
pe
[
h
][
c
]
=
f
[
h
][
c
],
$
.
arraycopy
(
b
.
l3_side
.
tt
[
h
][
c
].
xr
,
0
,
b
.
pinfo
.
xr
[
h
][
c
],
0
,
576
),
b
.
mode_ext
==
P
&&
(
b
.
pinfo
.
ers
[
h
][
c
]
=
b
.
pinfo
.
ers
[
h
][
c
+
2
],
$
.
arraycopy
(
b
.
pinfo
.
energy
[
h
][
c
+
2
],
0
,
b
.
pinfo
.
energy
[
h
][
c
],
0
,
b
.
pinfo
.
energy
[
h
][
c
].
length
));
if
(
e
.
VBR
==
ye
.
vbr_off
||
e
.
VBR
==
ye
.
vbr_abr
){
var
T
,
x
;
for
(
T
=
0
;
T
<
18
;
T
++
)
b
.
nsPsy
.
pefirbuf
[
T
]
=
b
.
nsPsy
.
pefirbuf
[
T
+
1
];
for
(
h
=
x
=
0
;
h
<
b
.
mode_gr
;
h
++
)
for
(
c
=
0
;
c
<
b
.
channels_out
;
c
++
)
x
+=
f
[
h
][
c
];
for
(
b
.
nsPsy
.
pefirbuf
[
18
]
=
x
,
x
=
b
.
nsPsy
.
pefirbuf
[
9
],
T
=
0
;
T
<
9
;
T
++
)
x
+=
(
b
.
nsPsy
.
pefirbuf
[
T
]
+
b
.
nsPsy
.
pefirbuf
[
18
-
T
])
*
Pe
.
fircoef
[
T
];
for
(
x
=
3350
*
b
.
mode_gr
*
b
.
channels_out
/
x
,
h
=
0
;
h
<
b
.
mode_gr
;
h
++
)
for
(
c
=
0
;
c
<
b
.
channels_out
;
c
++
)
f
[
h
][
c
]
*=
x
}
if
(
b
.
iteration_loop
.
iteration_loop
(
e
,
f
,
p
,
o
),
H
.
format_bitstream
(
e
),
i
=
H
.
copy_buffer
(
b
,
s
,
n
,
r
,
1
),
e
.
bWriteVbrTag
&&
I
.
addVbrFrame
(
e
),
e
.
analysis
&&
null
!=
b
.
pinfo
){
for
(
c
=
0
;
c
<
b
.
channels_out
;
c
++
){
var
y
;
for
(
y
=
0
;
y
<
E
;
y
++
)
b
.
pinfo
.
pcmdata
[
c
][
y
]
=
b
.
pinfo
.
pcmdata
[
c
][
y
+
e
.
framesize
];
for
(
y
=
E
;
y
<
1600
;
y
++
)
b
.
pinfo
.
pcmdata
[
c
][
y
]
=
u
[
c
][
y
-
E
]}
V
.
set_frame_pinfo
(
e
,
o
)}
return
function
(
e
){
var
t
,
a
;
for
(
e
.
bitrate_stereoMode_Hist
[
e
.
bitrate_index
][
4
]
++
,
e
.
bitrate_stereoMode_Hist
[
15
][
4
]
++
,
2
==
e
.
channels_out
&&
(
e
.
bitrate_stereoMode_Hist
[
e
.
bitrate_index
][
e
.
mode_ext
]
++
,
e
.
bitrate_stereoMode_Hist
[
15
][
e
.
mode_ext
]
++
),
t
=
0
;
t
<
e
.
mode_gr
;
++
t
)
for
(
a
=
0
;
a
<
e
.
channels_out
;
++
a
){
var
s
=
0
|
e
.
l3_side
.
tt
[
t
][
a
].
block_type
;
0
!=
e
.
l3_side
.
tt
[
t
][
a
].
mixed_block_flag
&&
(
s
=
4
),
e
.
bitrate_blockType_Hist
[
e
.
bitrate_index
][
s
]
++
,
e
.
bitrate_blockType_Hist
[
e
.
bitrate_index
][
5
]
++
,
e
.
bitrate_blockType_Hist
[
15
][
s
]
++
,
e
.
bitrate_blockType_Hist
[
15
][
5
]
++
}}(
b
),
i
}}
function
i
(){
this
.
l
=
Ae
(
Pe
.
SBMAX_l
),
this
.
s
=
ke
([
Pe
.
SBMAX_s
,
3
]);
var
s
=
this
;
this
.
assign
=
function
(
e
){
$
.
arraycopy
(
e
.
l
,
0
,
s
.
l
,
0
,
Pe
.
SBMAX_l
);
for
(
var
t
=
0
;
t
<
Pe
.
SBMAX_s
;
t
++
)
for
(
var
a
=
0
;
a
<
3
;
a
++
)
s
.
s
[
t
][
a
]
=
e
.
s
[
t
][
a
]}}
function
Z
(){
var
e
=
40
;
function
t
(){
this
.
write_timing
=
0
,
this
.
ptr
=
0
,
this
.
buf
=
B
(
e
)}
this
.
Class_ID
=
0
,
this
.
lame_encode_frame_init
=
0
,
this
.
iteration_init_init
=
0
,
this
.
fill_buffer_resample_init
=
0
,
this
.
mfbuf
=
ke
([
2
,
Z
.
MFSIZE
]),
this
.
mode_gr
=
0
,
this
.
channels_in
=
0
,
this
.
channels_out
=
0
,
this
.
resample_ratio
=
0
,
this
.
mf_samples_to_encode
=
0
,
this
.
mf_size
=
0
,
this
.
VBR_min_bitrate
=
0
,
this
.
VBR_max_bitrate
=
0
,
this
.
bitrate_index
=
0
,
this
.
samplerate_index
=
0
,
this
.
mode_ext
=
0
,
this
.
lowpass1
=
0
,
this
.
lowpass2
=
0
,
this
.
highpass1
=
0
,
this
.
highpass2
=
0
,
this
.
noise_shaping
=
0
,
this
.
noise_shaping_amp
=
0
,
this
.
substep_shaping
=
0
,
this
.
psymodel
=
0
,
this
.
noise_shaping_stop
=
0
,
this
.
subblock_gain
=
0
,
this
.
use_best_huffman
=
0
,
this
.
full_outer_loop
=
0
,
this
.
l3_side
=
new
function
(){
this
.
tt
=
[[
null
,
null
],[
null
,
null
]],
this
.
main_data_begin
=
0
,
this
.
private_bits
=
0
,
this
.
resvDrain_pre
=
0
,
this
.
resvDrain_post
=
0
,
this
.
scfsi
=
[
Be
(
4
),
Be
(
4
)];
for
(
var
e
=
0
;
e
<
2
;
e
++
)
for
(
var
t
=
0
;
t
<
2
;
t
++
)
this
.
tt
[
e
][
t
]
=
new
x
},
this
.
ms_ratio
=
Ae
(
2
),
this
.
padding
=
0
,
this
.
frac_SpF
=
0
,
this
.
slot_lag
=
0
,
this
.
tag_spec
=
null
,
this
.
nMusicCRC
=
0
,
this
.
OldValue
=
Be
(
2
),
this
.
CurrentStep
=
Be
(
2
),
this
.
masking_lower
=
0
,
this
.
bv_scf
=
Be
(
576
),
this
.
pseudohalf
=
Be
(
z
.
SFBMAX
),
this
.
sfb21_extra
=!
1
,
this
.
inbuf_old
=
new
Array
(
2
),
this
.
blackfilt
=
new
Array
(
2
*
Z
.
BPC
+
1
),
this
.
itime
=
s
(
2
),
this
.
sideinfo_len
=
0
,
this
.
sb_sample
=
ke
([
2
,
2
,
18
,
Pe
.
SBLIMIT
]),
this
.
amp_filter
=
Ae
(
32
),
this
.
header
=
new
Array
(
Z
.
MAX_HEADER_BUF
),
this
.
h_ptr
=
0
,
this
.
w_ptr
=
0
,
this
.
ancillary_flag
=
0
,
this
.
ResvSize
=
0
,
this
.
ResvMax
=
0
,
this
.
scalefac_band
=
new
r
,
this
.
minval_l
=
Ae
(
Pe
.
CBANDS
),
this
.
minval_s
=
Ae
(
Pe
.
CBANDS
),
this
.
nb_1
=
ke
([
4
,
Pe
.
CBANDS
]),
this
.
nb_2
=
ke
([
4
,
Pe
.
CBANDS
]),
this
.
nb_s1
=
ke
([
4
,
Pe
.
CBANDS
]),
this
.
nb_s2
=
ke
([
4
,
Pe
.
CBANDS
]),
this
.
s3_ss
=
null
,
this
.
s3_ll
=
null
,
this
.
decay
=
0
,
this
.
thm
=
new
Array
(
4
),
this
.
en
=
new
Array
(
4
),
this
.
tot_ener
=
Ae
(
4
),
this
.
loudness_sq
=
ke
([
2
,
2
]),
this
.
loudness_sq_save
=
Ae
(
2
),
this
.
mld_l
=
Ae
(
Pe
.
SBMAX_l
),
this
.
mld_s
=
Ae
(
Pe
.
SBMAX_s
),
this
.
bm_l
=
Be
(
Pe
.
SBMAX_l
),
this
.
bo_l
=
Be
(
Pe
.
SBMAX_l
),
this
.
bm_s
=
Be
(
Pe
.
SBMAX_s
),
this
.
bo_s
=
Be
(
Pe
.
SBMAX_s
),
this
.
npart_l
=
0
,
this
.
npart_s
=
0
,
this
.
s3ind
=
X
([
Pe
.
CBANDS
,
2
]),
this
.
s3ind_s
=
X
([
Pe
.
CBANDS
,
2
]),
this
.
numlines_s
=
Be
(
Pe
.
CBANDS
),
this
.
numlines_l
=
Be
(
Pe
.
CBANDS
),
this
.
rnumlines_l
=
Ae
(
Pe
.
CBANDS
),
this
.
mld_cb_l
=
Ae
(
Pe
.
CBANDS
),
this
.
mld_cb_s
=
Ae
(
Pe
.
CBANDS
),
this
.
numlines_s_num1
=
0
,
this
.
numlines_l_num1
=
0
,
this
.
pe
=
Ae
(
4
),
this
.
ms_ratio_s_old
=
0
,
this
.
ms_ratio_l_old
=
0
,
this
.
ms_ener_ratio_old
=
0
,
this
.
blocktype_old
=
Be
(
2
),
this
.
nsPsy
=
new
function
(){
this
.
last_en_subshort
=
ke
([
4
,
9
]),
this
.
lastAttacks
=
Be
(
4
),
this
.
pefirbuf
=
Ae
(
19
),
this
.
longfact
=
Ae
(
Pe
.
SBMAX_l
),
this
.
shortfact
=
Ae
(
Pe
.
SBMAX_s
),
this
.
attackthre
=
0
,
this
.
attackthre_s
=
0
},
this
.
VBR_seek_table
=
new
function
(){
this
.
sum
=
0
,
this
.
seen
=
0
,
this
.
want
=
0
,
this
.
pos
=
0
,
this
.
size
=
0
,
this
.
bag
=
null
,
this
.
nVbrNumFrames
=
0
,
this
.
nBytesWritten
=
0
,
this
.
TotalFrameSize
=
0
},
this
.
ATH
=
null
,
this
.
PSY
=
null
,
this
.
nogap_total
=
0
,
this
.
nogap_current
=
0
,
this
.
decode_on_the_fly
=!
0
,
this
.
findReplayGain
=!
0
,
this
.
findPeakSample
=!
0
,
this
.
PeakSample
=
0
,
this
.
RadioGain
=
0
,
this
.
AudiophileGain
=
0
,
this
.
rgdata
=
null
,
this
.
noclipGainChange
=
0
,
this
.
noclipScale
=
0
,
this
.
bitrate_stereoMode_Hist
=
X
([
16
,
5
]),
this
.
bitrate_blockType_Hist
=
X
([
16
,
6
]),
this
.
pinfo
=
null
,
this
.
hip
=
null
,
this
.
in_buffer_nsamples
=
0
,
this
.
in_buffer_0
=
null
,
this
.
in_buffer_1
=
null
,
this
.
iteration_loop
=
null
;
for
(
var
a
=
0
;
a
<
this
.
en
.
length
;
a
++
)
this
.
en
[
a
]
=
new
i
;
for
(
a
=
0
;
a
<
this
.
thm
.
length
;
a
++
)
this
.
thm
[
a
]
=
new
i
;
for
(
a
=
0
;
a
<
this
.
header
.
length
;
a
++
)
this
.
header
[
a
]
=
new
t
}
function
G
(){
var
A
=
new
function
(){
var
u
=
Ae
(
Pe
.
BLKSIZE
),
m
=
Ae
(
Pe
.
BLKSIZE_s
/
2
),
T
=
[.
9238795325112867
,.
3826834323650898
,.
9951847266721969
,.
0980171403295606
,.
9996988186962042
,.
02454122852291229
,.
9999811752826011
,.
006135884649154475
];
function
p
(
e
,
t
,
a
){
var
s
,
n
,
r
,
i
=
0
,
_
=
t
+
(
a
<<=
1
);
s
=
4
;
do
{
var
o
,
l
,
f
,
c
,
h
,
u
,
b
;
for
(
b
=
s
>>
1
,
u
=
(
h
=
(
c
=
s
)
<<
1
)
+
c
,
s
=
h
<<
1
,
r
=
(
n
=
t
)
+
b
;
M
=
e
[
n
+
0
]
-
e
[
n
+
c
],
S
=
e
[
n
+
0
]
+
e
[
n
+
c
],
A
=
e
[
n
+
h
]
-
e
[
n
+
u
],
R
=
e
[
n
+
h
]
+
e
[
n
+
u
],
e
[
n
+
h
]
=
S
-
R
,
e
[
n
+
0
]
=
S
+
R
,
e
[
n
+
u
]
=
M
-
A
,
e
[
n
+
c
]
=
M
+
A
,
M
=
e
[
r
+
0
]
-
e
[
r
+
c
],
S
=
e
[
r
+
0
]
+
e
[
r
+
c
],
A
=
ee
.
SQRT2
*
e
[
r
+
u
],
R
=
ee
.
SQRT2
*
e
[
r
+
h
],
e
[
r
+
h
]
=
S
-
R
,
e
[
r
+
0
]
=
S
+
R
,
e
[
r
+
u
]
=
M
-
A
,
e
[
r
+
c
]
=
M
+
A
,
r
+=
s
,(
n
+=
s
)
<
_
;);
for
(
l
=
T
[
i
+
0
],
o
=
T
[
i
+
1
],
f
=
1
;
f
<
b
;
f
++
){
var
m
,
p
;
m
=
1
-
2
*
o
*
o
,
p
=
2
*
o
*
l
,
n
=
t
+
f
,
r
=
t
+
c
-
f
;
do
{
var
v
,
d
,
g
,
S
,
M
,
w
,
R
,
B
,
A
,
k
;
d
=
p
*
e
[
n
+
c
]
-
m
*
e
[
r
+
c
],
v
=
m
*
e
[
n
+
c
]
+
p
*
e
[
r
+
c
],
M
=
e
[
n
+
0
]
-
v
,
S
=
e
[
n
+
0
]
+
v
,
w
=
e
[
r
+
0
]
-
d
,
g
=
e
[
r
+
0
]
+
d
,
d
=
p
*
e
[
n
+
u
]
-
m
*
e
[
r
+
u
],
v
=
m
*
e
[
n
+
u
]
+
p
*
e
[
r
+
u
],
A
=
e
[
n
+
h
]
-
v
,
R
=
e
[
n
+
h
]
+
v
,
k
=
e
[
r
+
h
]
-
d
,
B
=
e
[
r
+
h
]
+
d
,
d
=
o
*
R
-
l
*
k
,
v
=
l
*
R
+
o
*
k
,
e
[
n
+
h
]
=
S
-
v
,
e
[
n
+
0
]
=
S
+
v
,
e
[
r
+
u
]
=
w
-
d
,
e
[
r
+
c
]
=
w
+
d
,
d
=
l
*
B
-
o
*
A
,
v
=
o
*
B
+
l
*
A
,
e
[
r
+
h
]
=
g
-
v
,
e
[
r
+
0
]
=
g
+
v
,
e
[
n
+
u
]
=
M
-
d
,
e
[
n
+
c
]
=
M
+
d
,
r
+=
s
,
n
+=
s
}
while
(
n
<
_
);
l
=
(
m
=
l
)
*
T
[
i
+
0
]
-
o
*
T
[
i
+
1
],
o
=
m
*
T
[
i
+
1
]
+
o
*
T
[
i
+
0
]}
i
+=
2
}
while
(
s
<
a
)}
var
v
=
[
0
,
128
,
64
,
192
,
32
,
160
,
96
,
224
,
16
,
144
,
80
,
208
,
48
,
176
,
112
,
240
,
8
,
136
,
72
,
200
,
40
,
168
,
104
,
232
,
24
,
152
,
88
,
216
,
56
,
184
,
120
,
248
,
4
,
132
,
68
,
196
,
36
,
164
,
100
,
228
,
20
,
148
,
84
,
212
,
52
,
180
,
116
,
244
,
12
,
140
,
76
,
204
,
44
,
172
,
108
,
236
,
28
,
156
,
92
,
220
,
60
,
188
,
124
,
252
,
2
,
130
,
66
,
194
,
34
,
162
,
98
,
226
,
18
,
146
,
82
,
210
,
50
,
178
,
114
,
242
,
10
,
138
,
74
,
202
,
42
,
170
,
106
,
234
,
26
,
154
,
90
,
218
,
58
,
186
,
122
,
250
,
6
,
134
,
70
,
198
,
38
,
166
,
102
,
230
,
22
,
150
,
86
,
214
,
54
,
182
,
118
,
246
,
14
,
142
,
78
,
206
,
46
,
174
,
110
,
238
,
30
,
158
,
94
,
222
,
62
,
190
,
126
,
254
];
this
.
fft_short
=
function
(
e
,
t
,
a
,
s
,
n
){
for
(
var
r
=
0
;
r
<
3
;
r
++
){
var
i
=
Pe
.
BLKSIZE_s
/
2
,
_
=
65535
&
192
*
(
r
+
1
),
o
=
Pe
.
BLKSIZE_s
/
8
-
1
;
do
{
var
l
,
f
,
c
,
h
,
u
,
b
=
255
&
v
[
o
<<
2
];
f
=
(
l
=
m
[
b
]
*
s
[
a
][
n
+
b
+
_
])
-
(
u
=
m
[
127
-
b
]
*
s
[
a
][
n
+
b
+
_
+
128
]),
l
+=
u
,
h
=
(
c
=
m
[
b
+
64
]
*
s
[
a
][
n
+
b
+
_
+
64
])
-
(
u
=
m
[
63
-
b
]
*
s
[
a
][
n
+
b
+
_
+
192
]),
c
+=
u
,
i
-=
4
,
t
[
r
][
i
+
0
]
=
l
+
c
,
t
[
r
][
i
+
2
]
=
l
-
c
,
t
[
r
][
i
+
1
]
=
f
+
h
,
t
[
r
][
i
+
3
]
=
f
-
h
,
f
=
(
l
=
m
[
b
+
1
]
*
s
[
a
][
n
+
b
+
_
+
1
])
-
(
u
=
m
[
126
-
b
]
*
s
[
a
][
n
+
b
+
_
+
129
]),
l
+=
u
,
h
=
(
c
=
m
[
b
+
65
]
*
s
[
a
][
n
+
b
+
_
+
65
])
-
(
u
=
m
[
62
-
b
]
*
s
[
a
][
n
+
b
+
_
+
193
]),
c
+=
u
,
t
[
r
][
i
+
Pe
.
BLKSIZE_s
/
2
+
0
]
=
l
+
c
,
t
[
r
][
i
+
Pe
.
BLKSIZE_s
/
2
+
2
]
=
l
-
c
,
t
[
r
][
i
+
Pe
.
BLKSIZE_s
/
2
+
1
]
=
f
+
h
,
t
[
r
][
i
+
Pe
.
BLKSIZE_s
/
2
+
3
]
=
f
-
h
}
while
(
0
<=--
o
);
p
(
t
[
r
],
i
,
Pe
.
BLKSIZE_s
/
2
)}},
this
.
fft_long
=
function
(
e
,
t
,
a
,
s
,
n
){
var
r
=
Pe
.
BLKSIZE
/
8
-
1
,
i
=
Pe
.
BLKSIZE
/
2
;
do
{
var
_
,
o
,
l
,
f
,
c
,
h
=
255
&
v
[
r
];
o
=
(
_
=
u
[
h
]
*
s
[
a
][
n
+
h
])
-
(
c
=
u
[
h
+
512
]
*
s
[
a
][
n
+
h
+
512
]),
_
+=
c
,
f
=
(
l
=
u
[
h
+
256
]
*
s
[
a
][
n
+
h
+
256
])
-
(
c
=
u
[
h
+
768
]
*
s
[
a
][
n
+
h
+
768
]),
l
+=
c
,
t
[
0
+
(
i
-=
4
)]
=
_
+
l
,
t
[
i
+
2
]
=
_
-
l
,
t
[
i
+
1
]
=
o
+
f
,
t
[
i
+
3
]
=
o
-
f
,
o
=
(
_
=
u
[
h
+
1
]
*
s
[
a
][
n
+
h
+
1
])
-
(
c
=
u
[
h
+
513
]
*
s
[
a
][
n
+
h
+
513
]),
_
+=
c
,
f
=
(
l
=
u
[
h
+
257
]
*
s
[
a
][
n
+
h
+
257
])
-
(
c
=
u
[
h
+
769
]
*
s
[
a
][
n
+
h
+
769
]),
l
+=
c
,
t
[
i
+
Pe
.
BLKSIZE
/
2
+
0
]
=
_
+
l
,
t
[
i
+
Pe
.
BLKSIZE
/
2
+
2
]
=
_
-
l
,
t
[
i
+
Pe
.
BLKSIZE
/
2
+
1
]
=
o
+
f
,
t
[
i
+
Pe
.
BLKSIZE
/
2
+
3
]
=
o
-
f
}
while
(
0
<=--
r
);
p
(
t
,
i
,
Pe
.
BLKSIZE
/
2
)},
this
.
init_fft
=
function
(
e
){
for
(
var
t
=
0
;
t
<
Pe
.
BLKSIZE
;
t
++
)
u
[
t
]
=
.
42
-
.
5
*
Math
.
cos
(
2
*
Math
.
PI
*
(
t
+
.
5
)
/
Pe
.
BLKSIZE
)
+
.
08
*
Math
.
cos
(
4
*
Math
.
PI
*
(
t
+
.
5
)
/
Pe
.
BLKSIZE
);
for
(
t
=
0
;
t
<
Pe
.
BLKSIZE_s
/
2
;
t
++
)
m
[
t
]
=
.
5
*
(
1
-
Math
.
cos
(
2
*
Math
.
PI
*
(
t
+
.
5
)
/
Pe
.
BLKSIZE_s
))}},
k
=
2.302585092994046
,
oe
=
2
,
le
=
16
,
d
=
2
,
g
=
16
,
E
=
.
34
,
n
=
1
/
217621504
/
(
Pe
.
BLKSIZE
/
2
),
fe
=
.
3
,
ce
=
21
,
S
=
.
2302585093
;
function
M
(
e
){
return
e
}
function
Y
(
e
,
t
){
for
(
var
a
=
0
,
s
=
0
;
s
<
Pe
.
BLKSIZE
/
2
;
++
s
)
a
+=
e
[
s
]
*
t
.
ATH
.
eql_w
[
s
];
return
a
*=
n
}
function
he
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
,
l
,
f
){
var
c
=
e
.
internal_flags
;
if
(
o
<
2
)
A
.
fft_long
(
c
,
s
[
n
],
o
,
l
,
f
),
A
.
fft_short
(
c
,
r
[
i
],
o
,
l
,
f
);
else
if
(
2
==
o
){
for
(
var
h
=
Pe
.
BLKSIZE
-
1
;
0
<=
h
;
--
h
){
var
u
=
s
[
n
+
0
][
h
],
b
=
s
[
n
+
1
][
h
];
s
[
n
+
0
][
h
]
=
(
u
+
b
)
*
ee
.
SQRT2
*
.
5
,
s
[
n
+
1
][
h
]
=
(
u
-
b
)
*
ee
.
SQRT2
*
.
5
}
for
(
var
m
=
2
;
0
<=
m
;
--
m
)
for
(
h
=
Pe
.
BLKSIZE_s
-
1
;
0
<=
h
;
--
h
){
u
=
r
[
i
+
0
][
m
][
h
],
b
=
r
[
i
+
1
][
m
][
h
];
r
[
i
+
0
][
m
][
h
]
=
(
u
+
b
)
*
ee
.
SQRT2
*
.
5
,
r
[
i
+
1
][
m
][
h
]
=
(
u
-
b
)
*
ee
.
SQRT2
*
.
5
}}
t
[
0
]
=
M
(
s
[
n
+
0
][
0
]),
t
[
0
]
*=
t
[
0
];
for
(
h
=
Pe
.
BLKSIZE
/
2
-
1
;
0
<=
h
;
--
h
){
var
p
=
s
[
n
+
0
][
Pe
.
BLKSIZE
/
2
-
h
],
v
=
s
[
n
+
0
][
Pe
.
BLKSIZE
/
2
+
h
];
t
[
Pe
.
BLKSIZE
/
2
-
h
]
=
M
(.
5
*
(
p
*
p
+
v
*
v
))}
for
(
m
=
2
;
0
<=
m
;
--
m
){
a
[
m
][
0
]
=
r
[
i
+
0
][
m
][
0
],
a
[
m
][
0
]
*=
a
[
m
][
0
];
for
(
h
=
Pe
.
BLKSIZE_s
/
2
-
1
;
0
<=
h
;
--
h
){
p
=
r
[
i
+
0
][
m
][
Pe
.
BLKSIZE_s
/
2
-
h
],
v
=
r
[
i
+
0
][
m
][
Pe
.
BLKSIZE_s
/
2
+
h
];
a
[
m
][
Pe
.
BLKSIZE_s
/
2
-
h
]
=
M
(.
5
*
(
p
*
p
+
v
*
v
))}}
var
d
=
0
;
for
(
h
=
11
;
h
<
Pe
.
HBLKSIZE
;
h
++
)
d
+=
t
[
h
];
if
(
c
.
tot_ener
[
o
]
=
d
,
e
.
analysis
){
for
(
h
=
0
;
h
<
Pe
.
HBLKSIZE
;
h
++
)
c
.
pinfo
.
energy
[
_
][
o
][
h
]
=
c
.
pinfo
.
energy_save
[
o
][
h
],
c
.
pinfo
.
energy_save
[
o
][
h
]
=
t
[
h
];
c
.
pinfo
.
pe
[
_
][
o
]
=
c
.
pe
[
o
]}
2
==
e
.
athaa_loudapprox
&&
o
<
2
&&
(
c
.
loudness_sq
[
_
][
o
]
=
c
.
loudness_sq_save
[
o
],
c
.
loudness_sq_save
[
o
]
=
Y
(
t
,
c
))}
var
T
,
x
,
y
,
P
=
8
,
H
=
23
,
L
=
15
,
ue
=
[
1
,.
79433
,.
63096
,.
63096
,.
63096
,.
63096
,.
63096
,.
25119
,.
11749
];
var
f
=
[
3.3246
*
3.3246
,
3.23837
*
3.23837
,
9.9500500969
,
9.0247369744
,
8.1854926609
,
7.0440875649
,
2.46209
*
2.46209
,
2.284
*
2.284
,
4.4892710641
,
1.96552
*
1.96552
,
1.82335
*
1.82335
,
1.69146
*
1.69146
,
2.4621061921
,
2.1508568964
,
1.37074
*
1.37074
,
1.31036
*
1.31036
,
1.5691069696
,
1.4555939904
,
1.16203
*
1.16203
,
1.2715945225
,
1.09428
*
1.09428
,
1.0659
*
1.0659
,
1.0779838276
,
1.0382591025
,
1
],
c
=
[
1.7782755904
,
1.35879
*
1.35879
,
1.38454
*
1.38454
,
1.39497
*
1.39497
,
1.40548
*
1.40548
,
1.3537
*
1.3537
,
1.6999465924
,
1.22321
*
1.22321
,
1.3169398564
,
1
],
h
=
[
5.5396212496
,
2.29259
*
2.29259
,
4.9868695969
,
2.12675
*
2.12675
,
2.02545
*
2.02545
,
1.87894
*
1.87894
,
1.74303
*
1.74303
,
1.61695
*
1.61695
,
2.2499700001
,
1.39148
*
1.39148
,
1.29083
*
1.29083
,
1.19746
*
1.19746
,
1.2339655056
,
1.0779838276
];
function
be
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
;
if
(
e
<
t
){
if
(
!
(
t
<
e
*
x
))
return
e
+
t
;
i
=
t
/
e
}
else
{
if
(
t
*
x
<=
e
)
return
e
+
t
;
i
=
e
/
t
}
if
(
e
+=
t
,
s
+
3
<=
6
){
if
(
T
<=
i
)
return
e
;
var
_
=
0
|
ee
.
FAST_LOG10_X
(
i
,
16
);
return
e
*
c
[
_
]}
var
o
,
l
;
_
=
0
|
ee
.
FAST_LOG10_X
(
i
,
16
);
return
t
=
0
!=
r
?
n
.
ATH
.
cb_s
[
a
]
*
n
.
ATH
.
adjust
:
n
.
ATH
.
cb_l
[
a
]
*
n
.
ATH
.
adjust
,
e
<
y
*
t
?
t
<
e
?(
o
=
1
,
_
<=
13
&&
(
o
=
h
[
_
]),
l
=
ee
.
FAST_LOG10_X
(
e
/
t
,
10
/
15
),
e
*
((
f
[
_
]
-
o
)
*
l
+
o
)):
13
<
_
?
e
:
e
*
h
[
_
]:
e
*
f
[
_
]}
var
r
=
[
1.7782755904
,
1.35879
*
1.35879
,
1.38454
*
1.38454
,
1.39497
*
1.39497
,
1.40548
*
1.40548
,
1.3537
*
1.3537
,
1.6999465924
,
1.22321
*
1.22321
,
1.3169398564
,
1
];
function
B
(
e
,
t
,
a
){
var
s
;
if
(
e
<
0
&&
(
e
=
0
),
t
<
0
&&
(
t
=
0
),
e
<=
0
)
return
t
;
if
(
t
<=
0
)
return
e
;
if
(
s
=
e
<
t
?
t
/
e
:
e
/
t
,
-
2
<=
a
&&
a
<=
2
){
if
(
T
<=
s
)
return
e
+
t
;
var
n
=
0
|
ee
.
FAST_LOG10_X
(
s
,
16
);
return
(
e
+
t
)
*
r
[
n
]}
return
s
<
x
?
e
+
t
:(
e
<
t
&&
(
e
=
t
),
e
)}
function
me
(
e
,
t
,
a
,
s
,
n
){
var
r
,
i
,
_
=
0
,
o
=
0
;
for
(
r
=
i
=
0
;
r
<
Pe
.
SBMAX_s
;
++
i
,
++
r
){
for
(
var
l
=
e
.
bo_s
[
r
],
f
=
e
.
npart_s
,
c
=
l
<
f
?
l
:
f
;
i
<
c
;)
_
+=
t
[
i
],
o
+=
a
[
i
],
i
++
;
if
(
e
.
en
[
s
].
s
[
r
][
n
]
=
_
,
e
.
thm
[
s
].
s
[
r
][
n
]
=
o
,
f
<=
i
){
++
r
;
break
}
var
h
=
e
.
PSY
.
bo_s_weight
[
r
],
u
=
1
-
h
;
_
=
h
*
t
[
i
],
o
=
h
*
a
[
i
],
e
.
en
[
s
].
s
[
r
][
n
]
+=
_
,
e
.
thm
[
s
].
s
[
r
][
n
]
+=
o
,
_
=
u
*
t
[
i
],
o
=
u
*
a
[
i
]}
for
(;
r
<
Pe
.
SBMAX_s
;
++
r
)
e
.
en
[
s
].
s
[
r
][
n
]
=
0
,
e
.
thm
[
s
].
s
[
r
][
n
]
=
0
}
function
pe
(
e
,
t
,
a
,
s
){
var
n
,
r
,
i
=
0
,
_
=
0
;
for
(
n
=
r
=
0
;
n
<
Pe
.
SBMAX_l
;
++
r
,
++
n
){
for
(
var
o
=
e
.
bo_l
[
n
],
l
=
e
.
npart_l
,
f
=
o
<
l
?
o
:
l
;
r
<
f
;)
i
+=
t
[
r
],
_
+=
a
[
r
],
r
++
;
if
(
e
.
en
[
s
].
l
[
n
]
=
i
,
e
.
thm
[
s
].
l
[
n
]
=
_
,
l
<=
r
){
++
n
;
break
}
var
c
=
e
.
PSY
.
bo_l_weight
[
n
],
h
=
1
-
c
;
i
=
c
*
t
[
r
],
_
=
c
*
a
[
r
],
e
.
en
[
s
].
l
[
n
]
+=
i
,
e
.
thm
[
s
].
l
[
n
]
+=
_
,
i
=
h
*
t
[
r
],
_
=
h
*
a
[
r
]}
for
(;
n
<
Pe
.
SBMAX_l
;
++
n
)
e
.
en
[
s
].
l
[
n
]
=
0
,
e
.
thm
[
s
].
l
[
n
]
=
0
}
function
ve
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
,
_
,
o
=
e
.
internal_flags
;
for
(
_
=
i
=
0
;
_
<
o
.
npart_s
;
++
_
){
for
(
var
l
=
0
,
f
=
0
,
c
=
o
.
numlines_s
[
_
],
h
=
0
;
h
<
c
;
++
h
,
++
i
){
var
u
=
t
[
r
][
i
];
l
+=
u
,
f
<
u
&&
(
f
=
u
)}
a
[
_
]
=
l
}
for
(
i
=
_
=
0
;
_
<
o
.
npart_s
;
_
++
){
var
b
=
o
.
s3ind_s
[
_
][
0
],
m
=
o
.
s3_ss
[
i
++
]
*
a
[
b
];
for
(
++
b
;
b
<=
o
.
s3ind_s
[
_
][
1
];)
m
+=
o
.
s3_ss
[
i
]
*
a
[
b
],
++
i
,
++
b
;
var
p
=
d
*
o
.
nb_s1
[
n
][
_
];
if
(
s
[
_
]
=
Math
.
min
(
m
,
p
),
o
.
blocktype_old
[
1
&
n
]
==
Pe
.
SHORT_TYPE
){
p
=
g
*
o
.
nb_s2
[
n
][
_
];
var
v
=
s
[
_
];
s
[
_
]
=
Math
.
min
(
p
,
v
)}
o
.
nb_s2
[
n
][
_
]
=
o
.
nb_s1
[
n
][
_
],
o
.
nb_s1
[
n
][
_
]
=
m
}
for
(;
_
<=
Pe
.
CBANDS
;
++
_
)
a
[
_
]
=
0
,
s
[
_
]
=
0
}
function
de
(
e
,
t
,
a
){
return
1
<=
a
?
e
:
a
<=
0
?
t
:
0
<
t
?
Math
.
pow
(
e
/
t
,
a
)
*
t
:
0
}
var
o
=
[
11.8
,
13.6
,
17.2
,
32
,
46.5
,
51.3
,
57.5
,
67.1
,
71.5
,
84.6
,
97.6
,
130
];
function
ge
(
e
,
t
){
for
(
var
a
=
309.07
,
s
=
0
;
s
<
Pe
.
SBMAX_s
-
1
;
s
++
)
for
(
var
n
=
0
;
n
<
3
;
n
++
){
var
r
=
e
.
thm
.
s
[
s
][
n
];
if
(
0
<
r
){
var
i
=
r
*
t
,
_
=
e
.
en
.
s
[
s
][
n
];
i
<
_
&&
(
a
+=
1
e10
*
i
<
_
?
o
[
s
]
*
(
10
*
k
):
o
[
s
]
*
ee
.
FAST_LOG10
(
_
/
i
))}}
return
a
}
var
_
=
[
6.8
,
5.8
,
5.8
,
6.4
,
6.5
,
9.9
,
12.1
,
14.4
,
15
,
18.9
,
21.6
,
26.9
,
34.2
,
40.2
,
46.8
,
56.5
,
60.7
,
73.9
,
85.7
,
93.4
,
126.1
];
function
Se
(
e
,
t
){
for
(
var
a
=
281.0575
,
s
=
0
;
s
<
Pe
.
SBMAX_l
-
1
;
s
++
){
var
n
=
e
.
thm
.
l
[
s
];
if
(
0
<
n
){
var
r
=
n
*
t
,
i
=
e
.
en
.
l
[
s
];
r
<
i
&&
(
a
+=
1
e10
*
r
<
i
?
_
[
s
]
*
(
10
*
k
):
_
[
s
]
*
ee
.
FAST_LOG10
(
i
/
r
))}}
return
a
}
function
Me
(
e
,
t
,
a
,
s
,
n
){
var
r
,
i
;
for
(
r
=
i
=
0
;
r
<
e
.
npart_l
;
++
r
){
var
_
,
o
=
0
,
l
=
0
;
for
(
_
=
0
;
_
<
e
.
numlines_l
[
r
];
++
_
,
++
i
){
var
f
=
t
[
i
];
o
+=
f
,
l
<
f
&&
(
l
=
f
)}
a
[
r
]
=
o
,
s
[
r
]
=
l
,
n
[
r
]
=
o
*
e
.
rnumlines_l
[
r
]}}
function
we
(
e
,
t
,
a
,
s
){
var
n
=
ue
.
length
-
1
,
r
=
0
,
i
=
a
[
r
]
+
a
[
r
+
1
];
0
<
i
?((
_
=
t
[
r
])
<
t
[
r
+
1
]
&&
(
_
=
t
[
r
+
1
]),
n
<
(
o
=
0
|
(
i
=
20
*
(
2
*
_
-
i
)
/
(
i
*
(
e
.
numlines_l
[
r
]
+
e
.
numlines_l
[
r
+
1
]
-
1
))))
&&
(
o
=
n
),
s
[
r
]
=
o
):
s
[
r
]
=
0
;
for
(
r
=
1
;
r
<
e
.
npart_l
-
1
;
r
++
){
var
_
,
o
;
if
(
0
<
(
i
=
a
[
r
-
1
]
+
a
[
r
]
+
a
[
r
+
1
]))(
_
=
t
[
r
-
1
])
<
t
[
r
]
&&
(
_
=
t
[
r
]),
_
<
t
[
r
+
1
]
&&
(
_
=
t
[
r
+
1
]),
n
<
(
o
=
0
|
(
i
=
20
*
(
3
*
_
-
i
)
/
(
i
*
(
e
.
numlines_l
[
r
-
1
]
+
e
.
numlines_l
[
r
]
+
e
.
numlines_l
[
r
+
1
]
-
1
))))
&&
(
o
=
n
),
s
[
r
]
=
o
;
else
s
[
r
]
=
0
}
0
<
(
i
=
a
[
r
-
1
]
+
a
[
r
])?((
_
=
t
[
r
-
1
])
<
t
[
r
]
&&
(
_
=
t
[
r
]),
n
<
(
o
=
0
|
(
i
=
20
*
(
2
*
_
-
i
)
/
(
i
*
(
e
.
numlines_l
[
r
-
1
]
+
e
.
numlines_l
[
r
]
-
1
))))
&&
(
o
=
n
),
s
[
r
]
=
o
):
s
[
r
]
=
0
}
var
Re
=
[
-
1.730326
e
-
17
,
-
.
01703172
,
-
1.349528
e
-
17
,.
0418072
,
-
6.73278
e
-
17
,
-
.
0876324
,
-
3.0835
e
-
17
,.
1863476
,
-
1.104424
e
-
16
,
-
.
627638
];
function
D
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
){
var
o
=
e
.
internal_flags
;
if
(
s
<
2
)
A
.
fft_long
(
o
,
i
[
_
],
s
,
t
,
a
);
else
if
(
2
==
s
)
for
(
var
l
=
Pe
.
BLKSIZE
-
1
;
0
<=
l
;
--
l
){
var
f
=
i
[
_
+
0
][
l
],
c
=
i
[
_
+
1
][
l
];
i
[
_
+
0
][
l
]
=
(
f
+
c
)
*
ee
.
SQRT2
*
.
5
,
i
[
_
+
1
][
l
]
=
(
f
-
c
)
*
ee
.
SQRT2
*
.
5
}
r
[
0
]
=
M
(
i
[
_
+
0
][
0
]),
r
[
0
]
*=
r
[
0
];
for
(
l
=
Pe
.
BLKSIZE
/
2
-
1
;
0
<=
l
;
--
l
){
var
h
=
i
[
_
+
0
][
Pe
.
BLKSIZE
/
2
-
l
],
u
=
i
[
_
+
0
][
Pe
.
BLKSIZE
/
2
+
l
];
r
[
Pe
.
BLKSIZE
/
2
-
l
]
=
M
(.
5
*
(
h
*
h
+
u
*
u
))}
var
b
=
0
;
for
(
l
=
11
;
l
<
Pe
.
HBLKSIZE
;
l
++
)
b
+=
r
[
l
];
if
(
o
.
tot_ener
[
s
]
=
b
,
e
.
analysis
){
for
(
l
=
0
;
l
<
Pe
.
HBLKSIZE
;
l
++
)
o
.
pinfo
.
energy
[
n
][
s
][
l
]
=
o
.
pinfo
.
energy_save
[
s
][
l
],
o
.
pinfo
.
energy_save
[
s
][
l
]
=
r
[
l
];
o
.
pinfo
.
pe
[
n
][
s
]
=
o
.
pe
[
s
]}}
function
X
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
){
var
o
=
e
.
internal_flags
;
if
(
0
==
n
&&
s
<
2
&&
A
.
fft_short
(
o
,
i
[
_
],
s
,
t
,
a
),
2
==
s
)
for
(
var
l
=
Pe
.
BLKSIZE_s
-
1
;
0
<=
l
;
--
l
){
var
f
=
i
[
_
+
0
][
n
][
l
],
c
=
i
[
_
+
1
][
n
][
l
];
i
[
_
+
0
][
n
][
l
]
=
(
f
+
c
)
*
ee
.
SQRT2
*
.
5
,
i
[
_
+
1
][
n
][
l
]
=
(
f
-
c
)
*
ee
.
SQRT2
*
.
5
}
r
[
n
][
0
]
=
i
[
_
+
0
][
n
][
0
],
r
[
n
][
0
]
*=
r
[
n
][
0
];
for
(
l
=
Pe
.
BLKSIZE_s
/
2
-
1
;
0
<=
l
;
--
l
){
var
h
=
i
[
_
+
0
][
n
][
Pe
.
BLKSIZE_s
/
2
-
l
],
u
=
i
[
_
+
0
][
n
][
Pe
.
BLKSIZE_s
/
2
+
l
];
r
[
n
][
Pe
.
BLKSIZE_s
/
2
-
l
]
=
M
(.
5
*
(
h
*
h
+
u
*
u
))}}
this
.
L3psycho_anal_ns
=
function
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
,
l
){
var
f
,
c
,
h
,
u
,
b
,
m
,
p
,
v
,
d
,
g
,
S
=
e
.
internal_flags
,
M
=
ke
([
2
,
Pe
.
BLKSIZE
]),
w
=
ke
([
2
,
3
,
Pe
.
BLKSIZE_s
]),
R
=
Ae
(
Pe
.
CBANDS
+
1
),
B
=
Ae
(
Pe
.
CBANDS
+
1
),
A
=
Ae
(
Pe
.
CBANDS
+
2
),
k
=
Be
(
2
),
T
=
Be
(
2
),
x
=
ke
([
2
,
576
]),
y
=
Be
(
Pe
.
CBANDS
+
2
),
E
=
Be
(
Pe
.
CBANDS
+
2
);
for
(
Te
.
fill
(
E
,
0
),
f
=
S
.
channels_out
,
e
.
mode
==
Ee
.
JOINT_STEREO
&&
(
f
=
4
),
d
=
e
.
VBR
==
ye
.
vbr_off
?
0
==
S
.
ResvMax
?
0
:
S
.
ResvSize
/
S
.
ResvMax
*
.
5
:
e
.
VBR
==
ye
.
vbr_rh
||
e
.
VBR
==
ye
.
vbr_mtrh
||
e
.
VBR
==
ye
.
vbr_mt
?.
6
:
1
,
c
=
0
;
c
<
S
.
channels_out
;
c
++
){
var
P
=
t
[
c
],
H
=
a
+
576
-
350
-
ce
+
192
;
for
(
u
=
0
;
u
<
576
;
u
++
){
var
L
,
I
;
for
(
L
=
P
[
H
+
u
+
10
],
b
=
I
=
0
;
b
<
(
ce
-
1
)
/
2
-
1
;
b
+=
2
)
L
+=
Re
[
b
]
*
(
P
[
H
+
u
+
b
]
+
P
[
H
+
u
+
ce
-
b
]),
I
+=
Re
[
b
+
1
]
*
(
P
[
H
+
u
+
b
+
1
]
+
P
[
H
+
u
+
ce
-
b
-
1
]);
x
[
c
][
u
]
=
L
+
I
}
n
[
s
][
c
].
en
.
assign
(
S
.
en
[
c
]),
n
[
s
][
c
].
thm
.
assign
(
S
.
thm
[
c
]),
2
<
f
&&
(
r
[
s
][
c
].
en
.
assign
(
S
.
en
[
c
+
2
]),
r
[
s
][
c
].
thm
.
assign
(
S
.
thm
[
c
+
2
]))}
for
(
c
=
0
;
c
<
f
;
c
++
){
var
V
,
N
=
Ae
(
12
),
O
=
[
0
,
0
,
0
,
0
],
Y
=
Ae
(
12
),
D
=
1
,
X
=
Ae
(
Pe
.
CBANDS
),
q
=
Ae
(
Pe
.
CBANDS
),
j
=
[
0
,
0
,
0
,
0
],
C
=
Ae
(
Pe
.
HBLKSIZE
),
F
=
ke
([
3
,
Pe
.
HBLKSIZE_s
]);
for
(
u
=
0
;
u
<
3
;
u
++
)
N
[
u
]
=
S
.
nsPsy
.
last_en_subshort
[
c
][
u
+
6
],
Y
[
u
]
=
N
[
u
]
/
S
.
nsPsy
.
last_en_subshort
[
c
][
u
+
4
],
O
[
0
]
+=
N
[
u
];
if
(
2
==
c
)
for
(
u
=
0
;
u
<
576
;
u
++
){
var
z
,
Z
;
z
=
x
[
0
][
u
],
Z
=
x
[
1
][
u
],
x
[
0
][
u
]
=
z
+
Z
,
x
[
1
][
u
]
=
z
-
Z
}
var
K
=
x
[
1
&
c
],
G
=
0
;
for
(
u
=
0
;
u
<
9
;
u
++
){
for
(
var
Q
=
G
+
64
,
U
=
1
;
G
<
Q
;
G
++
)
U
<
Math
.
abs
(
K
[
G
])
&&
(
U
=
Math
.
abs
(
K
[
G
]));
S
.
nsPsy
.
last_en_subshort
[
c
][
u
]
=
N
[
u
+
3
]
=
U
,
O
[
1
+
u
/
3
]
+=
U
,
U
>
N
[
u
+
3
-
2
]?
U
/=
N
[
u
+
3
-
2
]:
U
=
N
[
u
+
3
-
2
]
>
10
*
U
?
N
[
u
+
3
-
2
]
/
(
10
*
U
):
0
,
Y
[
u
+
3
]
=
U
}
if
(
e
.
analysis
){
var
W
=
Y
[
0
];
for
(
u
=
1
;
u
<
12
;
u
++
)
W
<
Y
[
u
]
&&
(
W
=
Y
[
u
]);
S
.
pinfo
.
ers
[
s
][
c
]
=
S
.
pinfo
.
ers_save
[
c
],
S
.
pinfo
.
ers_save
[
c
]
=
W
}
for
(
V
=
3
==
c
?
S
.
nsPsy
.
attackthre_s
:
S
.
nsPsy
.
attackthre
,
u
=
0
;
u
<
12
;
u
++
)
0
==
j
[
u
/
3
]
&&
Y
[
u
]
>
V
&&
(
j
[
u
/
3
]
=
u
%
3
+
1
);
for
(
u
=
1
;
u
<
4
;
u
++
){(
O
[
u
-
1
]
>
O
[
u
]?
O
[
u
-
1
]
/
O
[
u
]:
O
[
u
]
/
O
[
u
-
1
])
<
1.7
&&
(
j
[
u
]
=
0
,
1
==
u
&&
(
j
[
0
]
=
0
))}
for
(
0
!=
j
[
0
]
&&
0
!=
S
.
nsPsy
.
lastAttacks
[
c
]
&&
(
j
[
0
]
=
0
),
3
!=
S
.
nsPsy
.
lastAttacks
[
c
]
&&
j
[
0
]
+
j
[
1
]
+
j
[
2
]
+
j
[
3
]
==
0
||
((
D
=
0
)
!=
j
[
1
]
&&
0
!=
j
[
0
]
&&
(
j
[
1
]
=
0
),
0
!=
j
[
2
]
&&
0
!=
j
[
1
]
&&
(
j
[
2
]
=
0
),
0
!=
j
[
3
]
&&
0
!=
j
[
2
]
&&
(
j
[
3
]
=
0
)),
c
<
2
?
T
[
c
]
=
D
:
0
==
D
&&
(
T
[
0
]
=
T
[
1
]
=
0
),
o
[
c
]
=
S
.
tot_ener
[
c
],
he
(
e
,
C
,
F
,
M
,
1
&
c
,
w
,
1
&
c
,
s
,
c
,
t
,
a
),
Me
(
S
,
C
,
R
,
X
,
q
),
we
(
S
,
X
,
q
,
y
),
v
=
0
;
v
<
3
;
v
++
){
var
J
,
$
;
for
(
ve
(
e
,
F
,
B
,
A
,
c
,
v
),
me
(
S
,
B
,
A
,
c
,
v
),
p
=
0
;
p
<
Pe
.
SBMAX_s
;
p
++
){
if
(
$
=
S
.
thm
[
c
].
s
[
p
][
v
],
$
*=
.
8
,
2
<=
j
[
v
]
||
1
==
j
[
v
+
1
]){
var
ee
=
0
!=
v
?
v
-
1
:
2
;
U
=
de
(
S
.
thm
[
c
].
s
[
p
][
ee
],
$
,.
6
*
d
);
$
=
Math
.
min
(
$
,
U
)}
if
(
1
==
j
[
v
]){
ee
=
0
!=
v
?
v
-
1
:
2
,
U
=
de
(
S
.
thm
[
c
].
s
[
p
][
ee
],
$
,
fe
*
d
);
$
=
Math
.
min
(
$
,
U
)}
else
if
(
0
!=
v
&&
3
==
j
[
v
-
1
]
||
0
==
v
&&
3
==
S
.
nsPsy
.
lastAttacks
[
c
]){
ee
=
2
!=
v
?
v
+
1
:
0
,
U
=
de
(
S
.
thm
[
c
].
s
[
p
][
ee
],
$
,
fe
*
d
);
$
=
Math
.
min
(
$
,
U
)}
J
=
N
[
3
*
v
+
3
]
+
N
[
3
*
v
+
4
]
+
N
[
3
*
v
+
5
],
6
*
N
[
3
*
v
+
5
]
<
J
&&
(
$
*=
.
5
,
6
*
N
[
3
*
v
+
4
]
<
J
&&
(
$
*=
.
5
)),
S
.
thm
[
c
].
s
[
p
][
v
]
=
$
}}
for
(
S
.
nsPsy
.
lastAttacks
[
c
]
=
j
[
2
],
h
=
m
=
0
;
h
<
S
.
npart_l
;
h
++
){
for
(
var
te
=
S
.
s3ind
[
h
][
0
],
ae
=
R
[
te
]
*
ue
[
y
[
te
]],
se
=
S
.
s3_ll
[
m
++
]
*
ae
;
++
te
<=
S
.
s3ind
[
h
][
1
];)
ae
=
R
[
te
]
*
ue
[
y
[
te
]],
se
=
be
(
se
,
S
.
s3_ll
[
m
++
]
*
ae
,
te
,
te
-
h
,
S
,
0
);
se
*=
.
158489319246111
,
S
.
blocktype_old
[
1
&
c
]
==
Pe
.
SHORT_TYPE
?
A
[
h
]
=
se
:
A
[
h
]
=
de
(
Math
.
min
(
se
,
Math
.
min
(
oe
*
S
.
nb_1
[
c
][
h
],
le
*
S
.
nb_2
[
c
][
h
])),
se
,
d
),
S
.
nb_2
[
c
][
h
]
=
S
.
nb_1
[
c
][
h
],
S
.
nb_1
[
c
][
h
]
=
se
}
for
(;
h
<=
Pe
.
CBANDS
;
++
h
)
R
[
h
]
=
0
,
A
[
h
]
=
0
;
pe
(
S
,
R
,
A
,
c
)}(
e
.
mode
!=
Ee
.
STEREO
&&
e
.
mode
!=
Ee
.
JOINT_STEREO
||
0
<
e
.
interChRatio
&&
function
(
e
,
t
){
var
a
=
e
.
internal_flags
;
if
(
1
<
a
.
channels_out
){
for
(
var
s
=
0
;
s
<
Pe
.
SBMAX_l
;
s
++
){
var
n
=
a
.
thm
[
0
].
l
[
s
],
r
=
a
.
thm
[
1
].
l
[
s
];
a
.
thm
[
0
].
l
[
s
]
+=
r
*
t
,
a
.
thm
[
1
].
l
[
s
]
+=
n
*
t
}
for
(
s
=
0
;
s
<
Pe
.
SBMAX_s
;
s
++
)
for
(
var
i
=
0
;
i
<
3
;
i
++
)
n
=
a
.
thm
[
0
].
s
[
s
][
i
],
r
=
a
.
thm
[
1
].
s
[
s
][
i
],
a
.
thm
[
0
].
s
[
s
][
i
]
+=
r
*
t
,
a
.
thm
[
1
].
s
[
s
][
i
]
+=
n
*
t
}}(
e
,
e
.
interChRatio
),
e
.
mode
==
Ee
.
JOINT_STEREO
)
&&
(
!
function
(
e
){
for
(
var
t
=
0
;
t
<
Pe
.
SBMAX_l
;
t
++
)
if
(
!
(
e
.
thm
[
0
].
l
[
t
]
>
1.58
*
e
.
thm
[
1
].
l
[
t
]
||
e
.
thm
[
1
].
l
[
t
]
>
1.58
*
e
.
thm
[
0
].
l
[
t
])){
var
a
=
e
.
mld_l
[
t
]
*
e
.
en
[
3
].
l
[
t
],
s
=
Math
.
max
(
e
.
thm
[
2
].
l
[
t
],
Math
.
min
(
e
.
thm
[
3
].
l
[
t
],
a
));
a
=
e
.
mld_l
[
t
]
*
e
.
en
[
2
].
l
[
t
];
var
n
=
Math
.
max
(
e
.
thm
[
3
].
l
[
t
],
Math
.
min
(
e
.
thm
[
2
].
l
[
t
],
a
));
e
.
thm
[
2
].
l
[
t
]
=
s
,
e
.
thm
[
3
].
l
[
t
]
=
n
}
for
(
t
=
0
;
t
<
Pe
.
SBMAX_s
;
t
++
)
for
(
var
r
=
0
;
r
<
3
;
r
++
)
e
.
thm
[
0
].
s
[
t
][
r
]
>
1.58
*
e
.
thm
[
1
].
s
[
t
][
r
]
||
e
.
thm
[
1
].
s
[
t
][
r
]
>
1.58
*
e
.
thm
[
0
].
s
[
t
][
r
]
||
(
a
=
e
.
mld_s
[
t
]
*
e
.
en
[
3
].
s
[
t
][
r
],
s
=
Math
.
max
(
e
.
thm
[
2
].
s
[
t
][
r
],
Math
.
min
(
e
.
thm
[
3
].
s
[
t
][
r
],
a
)),
a
=
e
.
mld_s
[
t
]
*
e
.
en
[
2
].
s
[
t
][
r
],
n
=
Math
.
max
(
e
.
thm
[
3
].
s
[
t
][
r
],
Math
.
min
(
e
.
thm
[
2
].
s
[
t
][
r
],
a
)),
e
.
thm
[
2
].
s
[
t
][
r
]
=
s
,
e
.
thm
[
3
].
s
[
t
][
r
]
=
n
)}(
S
),
g
=
e
.
msfix
,
0
<
Math
.
abs
(
g
)
&&
function
(
e
,
t
,
a
){
var
s
=
t
,
n
=
Math
.
pow
(
10
,
a
);
t
*=
2
,
s
*=
2
;
for
(
var
r
=
0
;
r
<
Pe
.
SBMAX_l
;
r
++
)
f
=
e
.
ATH
.
cb_l
[
e
.
bm_l
[
r
]]
*
n
,(
_
=
Math
.
min
(
Math
.
max
(
e
.
thm
[
0
].
l
[
r
],
f
),
Math
.
max
(
e
.
thm
[
1
].
l
[
r
],
f
)))
*
t
<
(
o
=
Math
.
max
(
e
.
thm
[
2
].
l
[
r
],
f
))
+
(
l
=
Math
.
max
(
e
.
thm
[
3
].
l
[
r
],
f
))
&&
(
o
*=
c
=
_
*
s
/
(
o
+
l
),
l
*=
c
),
e
.
thm
[
2
].
l
[
r
]
=
Math
.
min
(
o
,
e
.
thm
[
2
].
l
[
r
]),
e
.
thm
[
3
].
l
[
r
]
=
Math
.
min
(
l
,
e
.
thm
[
3
].
l
[
r
]);
for
(
n
*=
Pe
.
BLKSIZE_s
/
Pe
.
BLKSIZE
,
r
=
0
;
r
<
Pe
.
SBMAX_s
;
r
++
)
for
(
var
i
=
0
;
i
<
3
;
i
++
){
var
_
,
o
,
l
,
f
,
c
;
f
=
e
.
ATH
.
cb_s
[
e
.
bm_s
[
r
]]
*
n
,(
_
=
Math
.
min
(
Math
.
max
(
e
.
thm
[
0
].
s
[
r
][
i
],
f
),
Math
.
max
(
e
.
thm
[
1
].
s
[
r
][
i
],
f
)))
*
t
<
(
o
=
Math
.
max
(
e
.
thm
[
2
].
s
[
r
][
i
],
f
))
+
(
l
=
Math
.
max
(
e
.
thm
[
3
].
s
[
r
][
i
],
f
))
&&
(
o
*=
c
=
_
*
t
/
(
o
+
l
),
l
*=
c
),
e
.
thm
[
2
].
s
[
r
][
i
]
=
Math
.
min
(
e
.
thm
[
2
].
s
[
r
][
i
],
o
),
e
.
thm
[
3
].
s
[
r
][
i
]
=
Math
.
min
(
e
.
thm
[
3
].
s
[
r
][
i
],
l
)}}(
S
,
g
,
e
.
ATHlower
*
S
.
ATH
.
adjust
));
for
(
function
(
e
,
t
,
a
,
s
){
var
n
=
e
.
internal_flags
;
e
.
short_blocks
!=
xe
.
short_block_coupled
||
0
!=
t
[
0
]
&&
0
!=
t
[
1
]
||
(
t
[
0
]
=
t
[
1
]
=
0
);
for
(
var
r
=
0
;
r
<
n
.
channels_out
;
r
++
)
s
[
r
]
=
Pe
.
NORM_TYPE
,
e
.
short_blocks
==
xe
.
short_block_dispensed
&&
(
t
[
r
]
=
1
),
e
.
short_blocks
==
xe
.
short_block_forced
&&
(
t
[
r
]
=
0
),
0
!=
t
[
r
]?
n
.
blocktype_old
[
r
]
==
Pe
.
SHORT_TYPE
&&
(
s
[
r
]
=
Pe
.
STOP_TYPE
):(
s
[
r
]
=
Pe
.
SHORT_TYPE
,
n
.
blocktype_old
[
r
]
==
Pe
.
NORM_TYPE
&&
(
n
.
blocktype_old
[
r
]
=
Pe
.
START_TYPE
),
n
.
blocktype_old
[
r
]
==
Pe
.
STOP_TYPE
&&
(
n
.
blocktype_old
[
r
]
=
Pe
.
SHORT_TYPE
)),
a
[
r
]
=
n
.
blocktype_old
[
r
],
n
.
blocktype_old
[
r
]
=
s
[
r
]}(
e
,
T
,
l
,
k
),
c
=
0
;
c
<
f
;
c
++
){
var
ne
,
re
,
ie
,
_e
=
0
;
1
<
c
?(
ne
=
_
,
_e
=-
2
,
re
=
Pe
.
NORM_TYPE
,
l
[
0
]
!=
Pe
.
SHORT_TYPE
&&
l
[
1
]
!=
Pe
.
SHORT_TYPE
||
(
re
=
Pe
.
SHORT_TYPE
),
ie
=
r
[
s
][
c
-
2
]):(
ne
=
i
,
_e
=
0
,
re
=
l
[
c
],
ie
=
n
[
s
][
c
]),
ne
[
_e
+
c
]
=
re
==
Pe
.
SHORT_TYPE
?
ge
(
ie
,
S
.
masking_lower
):
Se
(
ie
,
S
.
masking_lower
),
e
.
analysis
&&
(
S
.
pinfo
.
pe
[
s
][
c
]
=
ne
[
_e
+
c
])}
return
0
};
var
q
=
[
-
1.730326
e
-
17
,
-
.
01703172
,
-
1.349528
e
-
17
,.
0418072
,
-
6.73278
e
-
17
,
-
.
0876324
,
-
3.0835
e
-
17
,.
1863476
,
-
1.104424
e
-
16
,
-
.
627638
];
function
j
(
e
,
t
,
a
){
if
(
0
==
a
)
for
(
var
s
=
0
;
s
<
e
.
npart_s
;
s
++
)
e
.
nb_s2
[
t
][
s
]
=
e
.
nb_s1
[
t
][
s
],
e
.
nb_s1
[
t
][
s
]
=
0
}
function
C
(
e
,
t
){
for
(
var
a
=
0
;
a
<
e
.
npart_l
;
a
++
)
e
.
nb_2
[
t
][
a
]
=
e
.
nb_1
[
t
][
a
],
e
.
nb_1
[
t
][
a
]
=
0
}
function
F
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
,
_
,
o
,
l
=
e
.
internal_flags
,
f
=
new
float
[
Pe
.
CBANDS
],
c
=
Ae
(
Pe
.
CBANDS
),
h
=
new
int
[
Pe
.
CBANDS
];
for
(
o
=
_
=
0
;
o
<
l
.
npart_s
;
++
o
){
var
u
=
0
,
b
=
0
,
m
=
l
.
numlines_s
[
o
];
for
(
i
=
0
;
i
<
m
;
++
i
,
++
_
){
var
p
=
t
[
r
][
_
];
u
+=
p
,
b
<
p
&&
(
b
=
p
)}
a
[
o
]
=
u
,
f
[
o
]
=
b
,
c
[
o
]
=
u
/
m
}
for
(;
o
<
Pe
.
CBANDS
;
++
o
)
f
[
o
]
=
0
,
c
[
o
]
=
0
;
for
(
function
(
e
,
t
,
a
,
s
){
var
n
=
ue
.
length
-
1
,
r
=
0
,
i
=
a
[
r
]
+
a
[
r
+
1
];
for
(
0
<
i
?((
_
=
t
[
r
])
<
t
[
r
+
1
]
&&
(
_
=
t
[
r
+
1
]),
n
<
(
o
=
0
|
(
i
=
20
*
(
2
*
_
-
i
)
/
(
i
*
(
e
.
numlines_s
[
r
]
+
e
.
numlines_s
[
r
+
1
]
-
1
))))
&&
(
o
=
n
),
s
[
r
]
=
o
):
s
[
r
]
=
0
,
r
=
1
;
r
<
e
.
npart_s
-
1
;
r
++
){
var
_
,
o
;
0
<
(
i
=
a
[
r
-
1
]
+
a
[
r
]
+
a
[
r
+
1
])?((
_
=
t
[
r
-
1
])
<
t
[
r
]
&&
(
_
=
t
[
r
]),
_
<
t
[
r
+
1
]
&&
(
_
=
t
[
r
+
1
]),
n
<
(
o
=
0
|
(
i
=
20
*
(
3
*
_
-
i
)
/
(
i
*
(
e
.
numlines_s
[
r
-
1
]
+
e
.
numlines_s
[
r
]
+
e
.
numlines_s
[
r
+
1
]
-
1
))))
&&
(
o
=
n
),
s
[
r
]
=
o
):
s
[
r
]
=
0
}
0
<
(
i
=
a
[
r
-
1
]
+
a
[
r
])?((
_
=
t
[
r
-
1
])
<
t
[
r
]
&&
(
_
=
t
[
r
]),
n
<
(
o
=
0
|
(
i
=
20
*
(
2
*
_
-
i
)
/
(
i
*
(
e
.
numlines_s
[
r
-
1
]
+
e
.
numlines_s
[
r
]
-
1
))))
&&
(
o
=
n
),
s
[
r
]
=
o
):
s
[
r
]
=
0
}(
l
,
f
,
c
,
h
),
_
=
o
=
0
;
o
<
l
.
npart_s
;
o
++
){
var
v
,
d
,
g
,
S
,
M
,
w
=
l
.
s3ind_s
[
o
][
0
],
R
=
l
.
s3ind_s
[
o
][
1
];
for
(
v
=
h
[
w
],
d
=
1
,
S
=
l
.
s3_ss
[
_
]
*
a
[
w
]
*
ue
[
h
[
w
]],
++
_
,
++
w
;
w
<=
R
;)
v
+=
h
[
w
],
d
+=
1
,
S
=
B
(
S
,
g
=
l
.
s3_ss
[
_
]
*
a
[
w
]
*
ue
[
h
[
w
]],
w
-
o
),
++
_
,
++
w
;
S
*=
M
=
.
5
*
ue
[
v
=
(
1
+
2
*
v
)
/
(
2
*
d
)],
s
[
o
]
=
S
,
l
.
nb_s2
[
n
][
o
]
=
l
.
nb_s1
[
n
][
o
],
l
.
nb_s1
[
n
][
o
]
=
S
,
g
=
f
[
o
],
g
*=
l
.
minval_s
[
o
],
g
*=
M
,
s
[
o
]
>
g
&&
(
s
[
o
]
=
g
),
1
<
l
.
masking_lower
&&
(
s
[
o
]
*=
l
.
masking_lower
),
s
[
o
]
>
a
[
o
]
&&
(
s
[
o
]
=
a
[
o
]),
l
.
masking_lower
<
1
&&
(
s
[
o
]
*=
l
.
masking_lower
)}
for
(;
o
<
Pe
.
CBANDS
;
++
o
)
a
[
o
]
=
0
,
s
[
o
]
=
0
}
function
z
(
e
,
t
,
a
,
s
,
n
){
var
r
,
i
=
Ae
(
Pe
.
CBANDS
),
_
=
Ae
(
Pe
.
CBANDS
),
o
=
Be
(
Pe
.
CBANDS
+
2
);
Me
(
e
,
t
,
a
,
i
,
_
),
we
(
e
,
i
,
_
,
o
);
var
l
=
0
;
for
(
r
=
0
;
r
<
e
.
npart_l
;
r
++
){
var
f
,
c
,
h
,
u
=
e
.
s3ind
[
r
][
0
],
b
=
e
.
s3ind
[
r
][
1
],
m
=
0
,
p
=
0
;
for
(
m
=
o
[
u
],
p
+=
1
,
c
=
e
.
s3_ll
[
l
]
*
a
[
u
]
*
ue
[
o
[
u
]],
++
l
,
++
u
;
u
<=
b
;)
m
+=
o
[
u
],
p
+=
1
,
c
=
B
(
c
,
f
=
e
.
s3_ll
[
l
]
*
a
[
u
]
*
ue
[
o
[
u
]],
u
-
r
),
++
l
,
++
u
;
if
(
c
*=
h
=
.
5
*
ue
[
m
=
(
1
+
2
*
m
)
/
(
2
*
p
)],
e
.
blocktype_old
[
1
&
n
]
==
Pe
.
SHORT_TYPE
){
var
v
=
oe
*
e
.
nb_1
[
n
][
r
];
s
[
r
]
=
0
<
v
?
Math
.
min
(
c
,
v
):
Math
.
min
(
c
,
a
[
r
]
*
fe
)}
else
{
var
d
=
le
*
e
.
nb_2
[
n
][
r
],
g
=
oe
*
e
.
nb_1
[
n
][
r
];
d
<=
0
&&
(
d
=
c
),
g
<=
0
&&
(
g
=
c
),
v
=
e
.
blocktype_old
[
1
&
n
]
==
Pe
.
NORM_TYPE
?
Math
.
min
(
g
,
d
):
g
,
s
[
r
]
=
Math
.
min
(
c
,
v
)}
e
.
nb_2
[
n
][
r
]
=
e
.
nb_1
[
n
][
r
],
e
.
nb_1
[
n
][
r
]
=
c
,
f
=
i
[
r
],
f
*=
e
.
minval_l
[
r
],
f
*=
h
,
s
[
r
]
>
f
&&
(
s
[
r
]
=
f
),
1
<
e
.
masking_lower
&&
(
s
[
r
]
*=
e
.
masking_lower
),
s
[
r
]
>
a
[
r
]
&&
(
s
[
r
]
=
a
[
r
]),
e
.
masking_lower
<
1
&&
(
s
[
r
]
*=
e
.
masking_lower
)}
for
(;
r
<
Pe
.
CBANDS
;
++
r
)
a
[
r
]
=
0
,
s
[
r
]
=
0
}
function
Z
(
e
,
t
,
a
,
s
,
n
,
r
,
i
){
for
(
var
_
,
o
,
l
=
2
*
r
,
f
=
0
<
r
?
Math
.
pow
(
10
,
n
):
1
,
c
=
0
;
c
<
i
;
++
c
){
var
h
=
e
[
2
][
c
],
u
=
e
[
3
][
c
],
b
=
t
[
0
][
c
],
m
=
t
[
1
][
c
],
p
=
t
[
2
][
c
],
v
=
t
[
3
][
c
];
if
(
b
<=
1.58
*
m
&&
m
<=
1.58
*
b
){
var
d
=
a
[
c
]
*
u
,
g
=
a
[
c
]
*
h
;
o
=
Math
.
max
(
p
,
Math
.
min
(
v
,
d
)),
_
=
Math
.
max
(
v
,
Math
.
min
(
p
,
g
))}
else
o
=
p
,
_
=
v
;
if
(
0
<
r
){
var
S
,
M
,
w
=
s
[
c
]
*
f
;
if
(
S
=
Math
.
min
(
Math
.
max
(
b
,
w
),
Math
.
max
(
m
,
w
)),
0
<
(
M
=
(
p
=
Math
.
max
(
o
,
w
))
+
(
v
=
Math
.
max
(
_
,
w
)))
&&
S
*
l
<
M
){
var
R
=
S
*
l
/
M
;
p
*=
R
,
v
*=
R
}
o
=
Math
.
min
(
p
,
o
),
_
=
Math
.
min
(
v
,
_
)}
h
<
o
&&
(
o
=
h
),
u
<
_
&&
(
_
=
u
),
t
[
2
][
c
]
=
o
,
t
[
3
][
c
]
=
_
}}
function
w
(
e
,
t
){
var
a
;
return
(
a
=
0
<=
e
?
27
*-
e
:
e
*
t
)
<=-
72
?
0
:
Math
.
exp
(
a
*
S
)}
function
R
(
e
){
var
t
,
a
,
s
=
0
;
for
(
s
=
0
;
1
e
-
20
<
w
(
s
,
e
);
s
-=
1
);
for
(
n
=
s
,
r
=
0
;
1
e
-
12
<
Math
.
abs
(
r
-
n
);)
0
<
w
(
s
=
(
r
+
n
)
/
2
,
e
)?
r
=
s
:
n
=
s
;
t
=
n
;
var
n
,
r
;
s
=
0
;
for
(
s
=
0
;
1
e
-
20
<
w
(
s
,
e
);
s
+=
1
);
for
(
n
=
0
,
r
=
s
;
1
e
-
12
<
Math
.
abs
(
r
-
n
);)
0
<
w
(
s
=
(
r
+
n
)
/
2
,
e
)?
n
=
s
:
r
=
s
;
a
=
r
;
var
i
,
_
=
0
;
for
(
i
=
0
;
i
<=
1
e3
;
++
i
){
_
+=
w
(
s
=
t
+
i
*
(
a
-
t
)
/
1
e3
,
e
)}
return
1001
/
(
_
*
(
a
-
t
))}
function
I
(
e
){
return
e
<
0
&&
(
e
=
0
),
e
*=
.
001
,
13
*
Math
.
atan
(.
76
*
e
)
+
3.5
*
Math
.
atan
(
e
*
e
/
56.25
)}
function
V
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
,
l
,
f
,
c
){
var
h
,
u
=
Ae
(
Pe
.
CBANDS
+
1
),
b
=
_
/
(
15
<
c
?
1152
:
384
),
m
=
Be
(
Pe
.
HBLKSIZE
);
_
/=
o
;
var
p
=
0
,
v
=
0
;
for
(
h
=
0
;
h
<
Pe
.
CBANDS
;
h
++
){
var
d
;
for
(
T
=
I
(
_
*
p
),
u
[
h
]
=
_
*
p
,
d
=
p
;
I
(
_
*
d
)
-
T
<
E
&&
d
<=
o
/
2
;
d
++
);
for
(
e
[
h
]
=
d
-
p
,
v
=
h
+
1
;
p
<
d
;)
m
[
p
++
]
=
h
;
if
(
o
/
2
<
p
){
p
=
o
/
2
,
++
h
;
break
}}
u
[
h
]
=
_
*
p
;
for
(
var
g
=
0
;
g
<
c
;
g
++
){
var
S
,
M
,
w
,
R
,
B
;
w
=
l
[
g
],
R
=
l
[
g
+
1
],(
S
=
0
|
Math
.
floor
(.
5
+
f
*
(
w
-
.
5
)))
<
0
&&
(
S
=
0
),
o
/
2
<
(
M
=
0
|
Math
.
floor
(.
5
+
f
*
(
R
-
.
5
)))
&&
(
M
=
o
/
2
),
a
[
g
]
=
(
m
[
S
]
+
m
[
M
])
/
2
,
t
[
g
]
=
m
[
M
];
var
A
=
b
*
R
;
i
[
g
]
=
(
A
-
u
[
t
[
g
]])
/
(
u
[
t
[
g
]
+
1
]
-
u
[
t
[
g
]]),
i
[
g
]
<
0
?
i
[
g
]
=
0
:
1
<
i
[
g
]
&&
(
i
[
g
]
=
1
),
B
=
I
(
_
*
l
[
g
]
*
f
),
B
=
Math
.
min
(
B
,
15.5
)
/
15.5
,
r
[
g
]
=
Math
.
pow
(
10
,
1.25
*
(
1
-
Math
.
cos
(
Math
.
PI
*
B
))
-
2.5
)}
for
(
var
k
=
p
=
0
;
k
<
v
;
k
++
){
var
T
,
x
,
y
=
e
[
k
];
T
=
I
(
_
*
p
),
x
=
I
(
_
*
(
p
+
y
-
1
)),
s
[
k
]
=
.
5
*
(
T
+
x
),
T
=
I
(
_
*
(
p
-
.
5
)),
x
=
I
(
_
*
(
p
+
y
-
.
5
)),
n
[
k
]
=
x
-
T
,
p
+=
y
}
return
v
}
function
N
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
,
_
,
o
,
l
,
f
,
c
,
h
=
ke
([
Pe
.
CBANDS
,
Pe
.
CBANDS
]),
u
=
0
;
if
(
r
)
for
(
var
b
=
0
;
b
<
t
;
b
++
)
for
(
i
=
0
;
i
<
t
;
i
++
){
var
m
=
(
_
=
a
[
b
]
-
a
[
i
],
c
=
f
=
l
=
o
=
void
0
,
o
=
_
,
l
=
.
5
<=
(
o
*=
0
<=
o
?
3
:
1.5
)
&&
o
<=
2.5
?
8
*
((
c
=
o
-
.
5
)
*
c
-
2
*
c
):
0
,((
f
=
15.811389
+
7.5
*
(
o
+=
.
474
)
-
17.5
*
Math
.
sqrt
(
1
+
o
*
o
))
<=-
60
?
0
:(
o
=
Math
.
exp
((
l
+
f
)
*
S
),
o
/=
.
6609193
))
*
s
[
i
]);
h
[
b
][
i
]
=
m
*
n
[
b
]}
else
for
(
i
=
0
;
i
<
t
;
i
++
){
var
p
=
15
+
Math
.
min
(
21
/
a
[
i
],
12
),
v
=
R
(
p
);
for
(
b
=
0
;
b
<
t
;
b
++
){
m
=
v
*
w
(
a
[
b
]
-
a
[
i
],
p
)
*
s
[
i
];
h
[
b
][
i
]
=
m
*
n
[
b
]}}
for
(
b
=
0
;
b
<
t
;
b
++
){
for
(
i
=
0
;
i
<
t
&&!
(
0
<
h
[
b
][
i
]);
i
++
);
for
(
e
[
b
][
0
]
=
i
,
i
=
t
-
1
;
0
<
i
&&!
(
0
<
h
[
b
][
i
]);
i
--
);
e
[
b
][
1
]
=
i
,
u
+=
e
[
b
][
1
]
-
e
[
b
][
0
]
+
1
}
var
d
=
Ae
(
u
),
g
=
0
;
for
(
b
=
0
;
b
<
t
;
b
++
)
for
(
i
=
e
[
b
][
0
];
i
<=
e
[
b
][
1
];
i
++
)
d
[
g
++
]
=
h
[
b
][
i
];
return
d
}
function
O
(
e
){
var
t
=
I
(
e
);
return
t
=
Math
.
min
(
t
,
15.5
)
/
15.5
,
Math
.
pow
(
10
,
1.25
*
(
1
-
Math
.
cos
(
Math
.
PI
*
t
))
-
2.5
)}
function
s
(
e
,
t
){
return
e
<-
.
3
&&
(
e
=
3410
),
e
/=
1
e3
,
e
=
Math
.
max
(.
1
,
e
),
3.64
*
Math
.
pow
(
e
,
-
.
8
)
-
6.8
*
Math
.
exp
(
-
.
6
*
Math
.
pow
(
e
-
3.4
,
2
))
+
6
*
Math
.
exp
(
-
.
15
*
Math
.
pow
(
e
-
8.7
,
2
))
+
.
001
*
(.
6
+
.
04
*
t
)
*
Math
.
pow
(
e
,
4
)}
this
.
L3psycho_anal_vbr
=
function
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
,
l
){
var
f
,
c
,
h
,
u
,
b
,
m
=
e
.
internal_flags
,
p
=
Ae
(
Pe
.
HBLKSIZE
),
v
=
ke
([
3
,
Pe
.
HBLKSIZE_s
]),
d
=
ke
([
2
,
Pe
.
BLKSIZE
]),
g
=
ke
([
2
,
3
,
Pe
.
BLKSIZE_s
]),
S
=
ke
([
4
,
Pe
.
CBANDS
]),
M
=
ke
([
4
,
Pe
.
CBANDS
]),
w
=
ke
([
4
,
3
]),
R
=
[[
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
]],
B
=
Be
(
2
),
A
=
e
.
mode
==
Ee
.
JOINT_STEREO
?
4
:
m
.
channels_out
;
!
function
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
,
l
){
for
(
var
f
=
ke
([
2
,
576
]),
c
=
e
.
internal_flags
,
h
=
c
.
channels_out
,
u
=
e
.
mode
==
Ee
.
JOINT_STEREO
?
4
:
h
,
b
=
0
;
b
<
h
;
b
++
){
firbuf
=
t
[
b
];
for
(
var
m
=
a
+
576
-
350
-
ce
+
192
,
p
=
0
;
p
<
576
;
p
++
){
var
v
,
d
;
v
=
firbuf
[
m
+
p
+
10
];
for
(
var
g
=
d
=
0
;
g
<
(
ce
-
1
)
/
2
-
1
;
g
+=
2
)
v
+=
q
[
g
]
*
(
firbuf
[
m
+
p
+
g
]
+
firbuf
[
m
+
p
+
ce
-
g
]),
d
+=
q
[
g
+
1
]
*
(
firbuf
[
m
+
p
+
g
+
1
]
+
firbuf
[
m
+
p
+
ce
-
g
-
1
]);
f
[
b
][
p
]
=
v
+
d
}
n
[
s
][
b
].
en
.
assign
(
c
.
en
[
b
]),
n
[
s
][
b
].
thm
.
assign
(
c
.
thm
[
b
]),
2
<
u
&&
(
r
[
s
][
b
].
en
.
assign
(
c
.
en
[
b
+
2
]),
r
[
s
][
b
].
thm
.
assign
(
c
.
thm
[
b
+
2
]))}
for
(
b
=
0
;
b
<
u
;
b
++
){
var
S
=
Ae
(
12
),
M
=
Ae
(
12
),
w
=
[
0
,
0
,
0
,
0
],
R
=
f
[
1
&
b
],
B
=
0
,
A
=
3
==
b
?
c
.
nsPsy
.
attackthre_s
:
c
.
nsPsy
.
attackthre
,
k
=
1
;
if
(
2
==
b
)
for
(
p
=
0
,
g
=
576
;
0
<
g
;
++
p
,
--
g
){
var
T
=
f
[
0
][
p
],
x
=
f
[
1
][
p
];
f
[
0
][
p
]
=
T
+
x
,
f
[
1
][
p
]
=
T
-
x
}
for
(
p
=
0
;
p
<
3
;
p
++
)
M
[
p
]
=
c
.
nsPsy
.
last_en_subshort
[
b
][
p
+
6
],
S
[
p
]
=
M
[
p
]
/
c
.
nsPsy
.
last_en_subshort
[
b
][
p
+
4
],
w
[
0
]
+=
M
[
p
];
for
(
p
=
0
;
p
<
9
;
p
++
){
for
(
var
y
=
B
+
64
,
E
=
1
;
B
<
y
;
B
++
)
E
<
Math
.
abs
(
R
[
B
])
&&
(
E
=
Math
.
abs
(
R
[
B
]));
c
.
nsPsy
.
last_en_subshort
[
b
][
p
]
=
M
[
p
+
3
]
=
E
,
w
[
1
+
p
/
3
]
+=
E
,
E
>
M
[
p
+
3
-
2
]?
E
/=
M
[
p
+
3
-
2
]:
E
=
M
[
p
+
3
-
2
]
>
10
*
E
?
M
[
p
+
3
-
2
]
/
(
10
*
E
):
0
,
S
[
p
+
3
]
=
E
}
for
(
p
=
0
;
p
<
3
;
++
p
){
var
P
=
M
[
3
*
p
+
3
]
+
M
[
3
*
p
+
4
]
+
M
[
3
*
p
+
5
],
H
=
1
;
6
*
M
[
3
*
p
+
5
]
<
P
&&
(
H
*=
.
5
,
6
*
M
[
3
*
p
+
4
]
<
P
&&
(
H
*=
.
5
)),
_
[
b
][
p
]
=
H
}
if
(
e
.
analysis
){
var
L
=
S
[
0
];
for
(
p
=
1
;
p
<
12
;
p
++
)
L
<
S
[
p
]
&&
(
L
=
S
[
p
]);
c
.
pinfo
.
ers
[
s
][
b
]
=
c
.
pinfo
.
ers_save
[
b
],
c
.
pinfo
.
ers_save
[
b
]
=
L
}
for
(
p
=
0
;
p
<
12
;
p
++
)
0
==
o
[
b
][
p
/
3
]
&&
S
[
p
]
>
A
&&
(
o
[
b
][
p
/
3
]
=
p
%
3
+
1
);
for
(
p
=
1
;
p
<
4
;
p
++
){
var
I
=
w
[
p
-
1
],
V
=
w
[
p
];
Math
.
max
(
I
,
V
)
<
4
e4
&&
I
<
1.7
*
V
&&
V
<
1.7
*
I
&&
(
1
==
p
&&
o
[
b
][
0
]
<=
o
[
b
][
p
]
&&
(
o
[
b
][
0
]
=
0
),
o
[
b
][
p
]
=
0
)}
o
[
b
][
0
]
<=
c
.
nsPsy
.
lastAttacks
[
b
]
&&
(
o
[
b
][
0
]
=
0
),
3
!=
c
.
nsPsy
.
lastAttacks
[
b
]
&&
o
[
b
][
0
]
+
o
[
b
][
1
]
+
o
[
b
][
2
]
+
o
[
b
][
3
]
==
0
||
((
k
=
0
)
!=
o
[
b
][
1
]
&&
0
!=
o
[
b
][
0
]
&&
(
o
[
b
][
1
]
=
0
),
0
!=
o
[
b
][
2
]
&&
0
!=
o
[
b
][
1
]
&&
(
o
[
b
][
2
]
=
0
),
0
!=
o
[
b
][
3
]
&&
0
!=
o
[
b
][
2
]
&&
(
o
[
b
][
3
]
=
0
)),
b
<
2
?
l
[
b
]
=
k
:
0
==
k
&&
(
l
[
0
]
=
l
[
1
]
=
0
),
i
[
b
]
=
c
.
tot_ener
[
b
]}}(
e
,
t
,
a
,
s
,
n
,
r
,
o
,
w
,
R
,
B
),
function
(
e
,
t
){
var
a
=
e
.
internal_flags
;
e
.
short_blocks
!=
xe
.
short_block_coupled
||
0
!=
t
[
0
]
&&
0
!=
t
[
1
]
||
(
t
[
0
]
=
t
[
1
]
=
0
);
for
(
var
s
=
0
;
s
<
a
.
channels_out
;
s
++
)
e
.
short_blocks
==
xe
.
short_block_dispensed
&&
(
t
[
s
]
=
1
),
e
.
short_blocks
==
xe
.
short_block_forced
&&
(
t
[
s
]
=
0
)}(
e
,
B
);
for
(
var
k
=
0
;
k
<
A
;
k
++
){
D
(
e
,
t
,
a
,
k
,
s
,
p
,
d
,
x
=
1
&
k
),
c
=
s
,
h
=
k
,
u
=
p
,
b
=
void
0
,
b
=
(
f
=
e
).
internal_flags
,
2
==
f
.
athaa_loudapprox
&&
h
<
2
&&
(
b
.
loudness_sq
[
c
][
h
]
=
b
.
loudness_sq_save
[
h
],
b
.
loudness_sq_save
[
h
]
=
Y
(
u
,
b
)),
0
!=
B
[
x
]?
z
(
m
,
p
,
S
[
k
],
M
[
k
],
k
):
C
(
m
,
k
)}
B
[
0
]
+
B
[
1
]
==
2
&&
e
.
mode
==
Ee
.
JOINT_STEREO
&&
Z
(
S
,
M
,
m
.
mld_cb_l
,
m
.
ATH
.
cb_l
,
e
.
ATHlower
*
m
.
ATH
.
adjust
,
e
.
msfix
,
m
.
npart_l
);
for
(
k
=
0
;
k
<
A
;
k
++
){
0
!=
B
[
x
=
1
&
k
]
&&
pe
(
m
,
S
[
k
],
M
[
k
],
k
)}
for
(
var
T
=
0
;
T
<
3
;
T
++
){
for
(
k
=
0
;
k
<
A
;
++
k
){
0
!=
B
[
x
=
1
&
k
]?
j
(
m
,
k
,
T
):(
X
(
e
,
t
,
a
,
k
,
T
,
v
,
g
,
x
),
F
(
e
,
v
,
S
[
k
],
M
[
k
],
k
,
T
))}
B
[
0
]
+
B
[
1
]
==
0
&&
e
.
mode
==
Ee
.
JOINT_STEREO
&&
Z
(
S
,
M
,
m
.
mld_cb_s
,
m
.
ATH
.
cb_s
,
e
.
ATHlower
*
m
.
ATH
.
adjust
,
e
.
msfix
,
m
.
npart_s
);
for
(
k
=
0
;
k
<
A
;
++
k
){
0
==
B
[
x
=
1
&
k
]
&&
me
(
m
,
S
[
k
],
M
[
k
],
k
,
T
)}}
for
(
k
=
0
;
k
<
A
;
k
++
){
var
x
;
if
(
0
==
B
[
x
=
1
&
k
])
for
(
var
y
=
0
;
y
<
Pe
.
SBMAX_s
;
y
++
){
var
E
=
Ae
(
3
);
for
(
T
=
0
;
T
<
3
;
T
++
){
var
P
=
m
.
thm
[
k
].
s
[
y
][
T
];
if
(
P
*=
.
8
,
2
<=
R
[
k
][
T
]
||
1
==
R
[
k
][
T
+
1
]){
var
H
=
0
!=
T
?
T
-
1
:
2
,
L
=
de
(
m
.
thm
[
k
].
s
[
y
][
H
],
P
,.
36
);
P
=
Math
.
min
(
P
,
L
)}
else
if
(
1
==
R
[
k
][
T
]){
H
=
0
!=
T
?
T
-
1
:
2
,
L
=
de
(
m
.
thm
[
k
].
s
[
y
][
H
],
P
,.
6
*
fe
);
P
=
Math
.
min
(
P
,
L
)}
else
if
(
0
!=
T
&&
3
==
R
[
k
][
T
-
1
]
||
0
==
T
&&
3
==
m
.
nsPsy
.
lastAttacks
[
k
]){
H
=
2
!=
T
?
T
+
1
:
0
,
L
=
de
(
m
.
thm
[
k
].
s
[
y
][
H
],
P
,.
6
*
fe
);
P
=
Math
.
min
(
P
,
L
)}
P
*=
w
[
k
][
T
],
E
[
T
]
=
P
}
for
(
T
=
0
;
T
<
3
;
T
++
)
m
.
thm
[
k
].
s
[
y
][
T
]
=
E
[
T
]}}
for
(
k
=
0
;
k
<
A
;
k
++
)
m
.
nsPsy
.
lastAttacks
[
k
]
=
R
[
k
][
2
];
!
function
(
e
,
t
,
a
){
for
(
var
s
=
e
.
internal_flags
,
n
=
0
;
n
<
s
.
channels_out
;
n
++
){
var
r
=
Pe
.
NORM_TYPE
;
0
!=
t
[
n
]?
s
.
blocktype_old
[
n
]
==
Pe
.
SHORT_TYPE
&&
(
r
=
Pe
.
STOP_TYPE
):(
r
=
Pe
.
SHORT_TYPE
,
s
.
blocktype_old
[
n
]
==
Pe
.
NORM_TYPE
&&
(
s
.
blocktype_old
[
n
]
=
Pe
.
START_TYPE
),
s
.
blocktype_old
[
n
]
==
Pe
.
STOP_TYPE
&&
(
s
.
blocktype_old
[
n
]
=
Pe
.
SHORT_TYPE
)),
a
[
n
]
=
s
.
blocktype_old
[
n
],
s
.
blocktype_old
[
n
]
=
r
}}(
e
,
B
,
l
);
for
(
k
=
0
;
k
<
A
;
k
++
){
var
I
,
V
,
N
,
O
;
1
<
k
?(
I
=
_
,
V
=-
2
,
N
=
Pe
.
NORM_TYPE
,
l
[
0
]
!=
Pe
.
SHORT_TYPE
&&
l
[
1
]
!=
Pe
.
SHORT_TYPE
||
(
N
=
Pe
.
SHORT_TYPE
),
O
=
r
[
s
][
k
-
2
]):(
I
=
i
,
V
=
0
,
N
=
l
[
k
],
O
=
n
[
s
][
k
]),
I
[
V
+
k
]
=
N
==
Pe
.
SHORT_TYPE
?
ge
(
O
,
m
.
masking_lower
):
Se
(
O
,
m
.
masking_lower
),
e
.
analysis
&&
(
m
.
pinfo
.
pe
[
s
][
k
]
=
I
[
V
+
k
])}
return
0
},
this
.
psymodel_init
=
function
(
e
){
var
t
,
a
=
e
.
internal_flags
,
s
=!
0
,
n
=
13
,
r
=
0
,
i
=
0
,
_
=-
8.25
,
o
=-
4.5
,
l
=
Ae
(
Pe
.
CBANDS
),
f
=
Ae
(
Pe
.
CBANDS
),
c
=
Ae
(
Pe
.
CBANDS
),
h
=
e
.
out_samplerate
;
switch
(
e
.
experimentalZ
){
default
:
case
0
:
s
=!
0
;
break
;
case
1
:
s
=
e
.
VBR
!=
ye
.
vbr_mtrh
&&
e
.
VBR
!=
ye
.
vbr_mt
;
break
;
case
2
:
s
=!
1
;
break
;
case
3
:
n
=
8
,
r
=-
1.75
,
i
=-
.
0125
,
_
=-
8.25
,
o
=-
2.25
}
for
(
a
.
ms_ener_ratio_old
=
.
25
,
a
.
blocktype_old
[
0
]
=
a
.
blocktype_old
[
1
]
=
Pe
.
NORM_TYPE
,
t
=
0
;
t
<
4
;
++
t
){
for
(
var
u
=
0
;
u
<
Pe
.
CBANDS
;
++
u
)
a
.
nb_1
[
t
][
u
]
=
1
e20
,
a
.
nb_2
[
t
][
u
]
=
1
e20
,
a
.
nb_s1
[
t
][
u
]
=
a
.
nb_s2
[
t
][
u
]
=
1
;
for
(
var
b
=
0
;
b
<
Pe
.
SBMAX_l
;
b
++
)
a
.
en
[
t
].
l
[
b
]
=
1
e20
,
a
.
thm
[
t
].
l
[
b
]
=
1
e20
;
for
(
u
=
0
;
u
<
3
;
++
u
){
for
(
b
=
0
;
b
<
Pe
.
SBMAX_s
;
b
++
)
a
.
en
[
t
].
s
[
b
][
u
]
=
1
e20
,
a
.
thm
[
t
].
s
[
b
][
u
]
=
1
e20
;
a
.
nsPsy
.
lastAttacks
[
t
]
=
0
}
for
(
u
=
0
;
u
<
9
;
u
++
)
a
.
nsPsy
.
last_en_subshort
[
t
][
u
]
=
10
}
for
(
a
.
loudness_sq_save
[
0
]
=
a
.
loudness_sq_save
[
1
]
=
0
,
a
.
npart_l
=
V
(
a
.
numlines_l
,
a
.
bo_l
,
a
.
bm_l
,
l
,
f
,
a
.
mld_l
,
a
.
PSY
.
bo_l_weight
,
h
,
Pe
.
BLKSIZE
,
a
.
scalefac_band
.
l
,
Pe
.
BLKSIZE
/
1152
,
Pe
.
SBMAX_l
),
t
=
0
;
t
<
a
.
npart_l
;
t
++
){
var
m
=
r
;
l
[
t
]
>=
n
&&
(
m
=
i
*
(
l
[
t
]
-
n
)
/
(
24
-
n
)
+
r
*
(
24
-
l
[
t
])
/
(
24
-
n
)),
c
[
t
]
=
Math
.
pow
(
10
,
m
/
10
),
0
<
a
.
numlines_l
[
t
]?
a
.
rnumlines_l
[
t
]
=
1
/
a
.
numlines_l
[
t
]:
a
.
rnumlines_l
[
t
]
=
0
}
a
.
s3_ll
=
N
(
a
.
s3ind
,
a
.
npart_l
,
l
,
f
,
c
,
s
);
var
p
;
u
=
0
;
for
(
t
=
0
;
t
<
a
.
npart_l
;
t
++
){
g
=
K
.
MAX_VALUE
;
for
(
var
v
=
0
;
v
<
a
.
numlines_l
[
t
];
v
++
,
u
++
){
var
d
=
h
*
u
/
(
1
e3
*
Pe
.
BLKSIZE
);
S
=
this
.
ATHformula
(
1
e3
*
d
,
e
)
-
20
,
S
=
Math
.
pow
(
10
,.
1
*
S
),(
S
*=
a
.
numlines_l
[
t
])
<
g
&&
(
g
=
S
)}
a
.
ATH
.
cb_l
[
t
]
=
g
,
6
<
(
g
=
20
*
l
[
t
]
/
10
-
20
)
&&
(
g
=
100
),
g
<-
15
&&
(
g
=-
15
),
g
-=
8
,
a
.
minval_l
[
t
]
=
Math
.
pow
(
10
,
g
/
10
)
*
a
.
numlines_l
[
t
]}
for
(
a
.
npart_s
=
V
(
a
.
numlines_s
,
a
.
bo_s
,
a
.
bm_s
,
l
,
f
,
a
.
mld_s
,
a
.
PSY
.
bo_s_weight
,
h
,
Pe
.
BLKSIZE_s
,
a
.
scalefac_band
.
s
,
Pe
.
BLKSIZE_s
/
384
,
Pe
.
SBMAX_s
),
t
=
u
=
0
;
t
<
a
.
npart_s
;
t
++
){
var
g
;
m
=
_
;
l
[
t
]
>=
n
&&
(
m
=
o
*
(
l
[
t
]
-
n
)
/
(
24
-
n
)
+
_
*
(
24
-
l
[
t
])
/
(
24
-
n
)),
c
[
t
]
=
Math
.
pow
(
10
,
m
/
10
),
g
=
K
.
MAX_VALUE
;
for
(
v
=
0
;
v
<
a
.
numlines_s
[
t
];
v
++
,
u
++
){
var
S
;
d
=
h
*
u
/
(
1
e3
*
Pe
.
BLKSIZE_s
);
S
=
this
.
ATHformula
(
1
e3
*
d
,
e
)
-
20
,
S
=
Math
.
pow
(
10
,.
1
*
S
),(
S
*=
a
.
numlines_s
[
t
])
<
g
&&
(
g
=
S
)}
a
.
ATH
.
cb_s
[
t
]
=
g
,
g
=
7
*
l
[
t
]
/
12
-
7
,
12
<
l
[
t
]
&&
(
g
*=
1
+
3.1
*
Math
.
log
(
1
+
g
)),
l
[
t
]
<
12
&&
(
g
*=
1
+
2.3
*
Math
.
log
(
1
-
g
)),
g
<-
15
&&
(
g
=-
15
),
g
-=
8
,
a
.
minval_s
[
t
]
=
Math
.
pow
(
10
,
g
/
10
)
*
a
.
numlines_s
[
t
]}
a
.
s3_ss
=
N
(
a
.
s3ind_s
,
a
.
npart_s
,
l
,
f
,
c
,
s
),
T
=
Math
.
pow
(
10
,(
P
+
1
)
/
16
),
x
=
Math
.
pow
(
10
,(
H
+
1
)
/
16
),
y
=
Math
.
pow
(
10
,
L
/
10
),
A
.
init_fft
(
a
),
a
.
decay
=
Math
.
exp
(
-
1
*
k
/
(.
01
*
h
/
192
)),
p
=
3.5
,
0
!=
(
2
&
e
.
exp_nspsytune
)
&&
(
p
=
1
),
0
<
Math
.
abs
(
e
.
msfix
)
&&
(
p
=
e
.
msfix
),
e
.
msfix
=
p
;
for
(
var
M
=
0
;
M
<
a
.
npart_l
;
M
++
)
a
.
s3ind
[
M
][
1
]
>
a
.
npart_l
-
1
&&
(
a
.
s3ind
[
M
][
1
]
=
a
.
npart_l
-
1
);
var
w
=
576
*
a
.
mode_gr
/
h
;
if
(
a
.
ATH
.
decay
=
Math
.
pow
(
10
,
-
1.2
*
w
),
a
.
ATH
.
adjust
=
.
01
,
-
(
a
.
ATH
.
adjustLimit
=
1
)
!=
e
.
ATHtype
){
var
R
=
e
.
out_samplerate
/
Pe
.
BLKSIZE
,
B
=
0
;
for
(
t
=
d
=
0
;
t
<
Pe
.
BLKSIZE
/
2
;
++
t
)
d
+=
R
,
a
.
ATH
.
eql_w
[
t
]
=
1
/
Math
.
pow
(
10
,
this
.
ATHformula
(
d
,
e
)
/
10
),
B
+=
a
.
ATH
.
eql_w
[
t
];
for
(
B
=
1
/
B
,
t
=
Pe
.
BLKSIZE
/
2
;
0
<=--
t
;)
a
.
ATH
.
eql_w
[
t
]
*=
B
}
for
(
M
=
u
=
0
;
M
<
a
.
npart_s
;
++
M
)
for
(
t
=
0
;
t
<
a
.
numlines_s
[
M
];
++
t
)
++
u
;
for
(
M
=
u
=
0
;
M
<
a
.
npart_l
;
++
M
)
for
(
t
=
0
;
t
<
a
.
numlines_l
[
M
];
++
t
)
++
u
;
for
(
t
=
u
=
0
;
t
<
a
.
npart_l
;
t
++
){
d
=
h
*
(
u
+
a
.
numlines_l
[
t
]
/
2
)
/
(
1
*
Pe
.
BLKSIZE
);
a
.
mld_cb_l
[
t
]
=
O
(
d
),
u
+=
a
.
numlines_l
[
t
]}
for
(;
t
<
Pe
.
CBANDS
;
++
t
)
a
.
mld_cb_l
[
t
]
=
1
;
for
(
t
=
u
=
0
;
t
<
a
.
npart_s
;
t
++
){
d
=
h
*
(
u
+
a
.
numlines_s
[
t
]
/
2
)
/
(
1
*
Pe
.
BLKSIZE_s
);
a
.
mld_cb_s
[
t
]
=
O
(
d
),
u
+=
a
.
numlines_s
[
t
]}
for
(;
t
<
Pe
.
CBANDS
;
++
t
)
a
.
mld_cb_s
[
t
]
=
1
;
return
0
},
this
.
ATHformula
=
function
(
e
,
t
){
var
a
;
switch
(
t
.
ATHtype
){
case
0
:
a
=
s
(
e
,
9
);
break
;
case
1
:
a
=
s
(
e
,
-
1
);
break
;
case
2
:
a
=
s
(
e
,
0
);
break
;
case
3
:
a
=
s
(
e
,
1
)
+
6
;
break
;
case
4
:
a
=
s
(
e
,
t
.
ATHcurve
);
break
;
default
:
a
=
s
(
e
,
0
)}
return
a
}}
function
Q
(){
var
_
=
this
;
Q
.
V9
=
410
,
Q
.
V8
=
420
,
Q
.
V7
=
430
,
Q
.
V6
=
440
,
Q
.
V5
=
450
,
Q
.
V4
=
460
,
Q
.
V3
=
470
,
Q
.
V2
=
480
,
Q
.
V1
=
490
,
Q
.
V0
=
500
,
Q
.
R3MIX
=
1
e3
,
Q
.
STANDARD
=
1001
,
Q
.
EXTREME
=
1002
,
Q
.
INSANE
=
1003
,
Q
.
STANDARD_FAST
=
1004
,
Q
.
EXTREME_FAST
=
1005
,
Q
.
MEDIUM
=
1006
,
Q
.
MEDIUM_FAST
=
1007
;
var
w
,
R
,
g
,
S
,
M
;
Q
.
LAME_MAXMP3BUFFER
=
147456
;
var
B
,
A
,
k
,
T
=
new
G
;
function
x
(){
this
.
lowerlimit
=
0
}
function
n
(
e
,
t
){
this
.
lowpass
=
t
}
this
.
enc
=
new
Pe
,
this
.
setModules
=
function
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
){
w
=
e
,
R
=
t
,
g
=
a
,
S
=
s
,
M
=
n
,
B
=
r
,
i
,
A
=
_
,
k
=
o
,
this
.
enc
.
setModules
(
R
,
T
,
S
,
B
)};
var
y
=
4294479419
;
function
E
(
e
){
return
1
<
e
?
0
:
e
<=
0
?
1
:
Math
.
cos
(
Math
.
PI
/
2
*
e
)}
function
P
(
e
,
t
){
switch
(
e
){
case
44100
:
return
t
.
version
=
1
,
0
;
case
48
e3
:
return
t
.
version
=
1
;
case
32
e3
:
return
t
.
version
=
1
,
2
;
case
22050
:
return
t
.
version
=
0
;
case
24
e3
:
return
t
.
version
=
0
,
1
;
case
16
e3
:
return
t
.
version
=
0
,
2
;
case
11025
:
return
t
.
version
=
0
;
case
12
e3
:
return
t
.
version
=
0
,
1
;
case
8
e3
:
return
t
.
version
=
0
,
2
;
default
:
return
t
.
version
=
0
,
-
1
}}
function
H
(
e
,
t
,
a
){
a
<
16
e3
&&
(
t
=
2
);
for
(
var
s
=
C
.
bitrate_table
[
t
][
1
],
n
=
2
;
n
<=
14
;
n
++
)
0
<
C
.
bitrate_table
[
t
][
n
]
&&
Math
.
abs
(
C
.
bitrate_table
[
t
][
n
]
-
e
)
<
Math
.
abs
(
s
-
e
)
&&
(
s
=
C
.
bitrate_table
[
t
][
n
]);
return
s
}
function
L
(
e
,
t
,
a
){
a
<
16
e3
&&
(
t
=
2
);
for
(
var
s
=
0
;
s
<=
14
;
s
++
)
if
(
0
<
C
.
bitrate_table
[
t
][
s
]
&&
C
.
bitrate_table
[
t
][
s
]
==
e
)
return
s
;
return
-
1
}
function
I
(
e
,
t
){
var
a
=
[
new
n
(
8
,
2
e3
),
new
n
(
16
,
3700
),
new
n
(
24
,
3900
),
new
n
(
32
,
5500
),
new
n
(
40
,
7
e3
),
new
n
(
48
,
7500
),
new
n
(
56
,
1
e4
),
new
n
(
64
,
11
e3
),
new
n
(
80
,
13500
),
new
n
(
96
,
15100
),
new
n
(
112
,
15600
),
new
n
(
128
,
17
e3
),
new
n
(
160
,
17500
),
new
n
(
192
,
18600
),
new
n
(
224
,
19400
),
new
n
(
256
,
19700
),
new
n
(
320
,
20500
)],
s
=
_
.
nearestBitrateFullIndex
(
t
);
e
.
lowerlimit
=
a
[
s
].
lowpass
}
function
V
(
e
){
var
t
=
Pe
.
BLKSIZE
+
e
.
framesize
-
Pe
.
FFTOFFSET
;
return
t
=
Math
.
max
(
t
,
512
+
e
.
framesize
-
32
)}
function
N
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
=
_
.
enc
.
lame_encode_mp3_frame
(
e
,
t
,
a
,
s
,
n
,
r
);
return
e
.
frameNum
++
,
i
}
function
O
(){
this
.
n_in
=
0
,
this
.
n_out
=
0
}
function
f
(){
this
.
num_used
=
0
}
function
Y
(
e
,
t
,
a
){
var
s
=
Math
.
PI
*
t
;(
e
/=
a
)
<
0
&&
(
e
=
0
),
1
<
e
&&
(
e
=
1
);
var
n
=
e
-
.
5
,
r
=
.
42
-
.
5
*
Math
.
cos
(
2
*
e
*
Math
.
PI
)
+
.
08
*
Math
.
cos
(
4
*
e
*
Math
.
PI
);
return
Math
.
abs
(
n
)
<
1
e
-
9
?
s
/
Math
.
PI
:
r
*
Math
.
sin
(
a
*
s
*
n
)
/
(
Math
.
PI
*
a
*
n
)}
function
c
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
){
var
l
,
f
,
c
=
e
.
internal_flags
,
h
=
0
,
u
=
e
.
out_samplerate
/
function
e
(
t
,
a
){
return
0
!=
a
?
e
(
a
,
t
%
a
):
t
}(
e
.
out_samplerate
,
e
.
in_samplerate
);
Z
.
BPC
<
u
&&
(
u
=
Z
.
BPC
);
var
b
=
Math
.
abs
(
c
.
resample_ratio
-
Math
.
floor
(.
5
+
c
.
resample_ratio
))
<
1
e
-
4
?
1
:
0
,
m
=
1
/
c
.
resample_ratio
;
1
<
m
&&
(
m
=
1
);
var
p
=
31
;
0
==
p
%
2
&&--
p
;
var
v
=
(
p
+=
b
)
+
1
;
if
(
0
==
c
.
fill_buffer_resample_init
){
for
(
c
.
inbuf_old
[
0
]
=
Ae
(
v
),
c
.
inbuf_old
[
1
]
=
Ae
(
v
),
l
=
0
;
l
<=
2
*
u
;
++
l
)
c
.
blackfilt
[
l
]
=
Ae
(
v
);
for
(
c
.
itime
[
0
]
=
0
,
h
=
c
.
itime
[
1
]
=
0
;
h
<=
2
*
u
;
h
++
){
var
d
=
0
,
g
=
(
h
-
u
)
/
(
2
*
u
);
for
(
l
=
0
;
l
<=
p
;
l
++
)
d
+=
c
.
blackfilt
[
h
][
l
]
=
Y
(
l
-
g
,
m
,
p
);
for
(
l
=
0
;
l
<=
p
;
l
++
)
c
.
blackfilt
[
h
][
l
]
/=
d
}
c
.
fill_buffer_resample_init
=
1
}
var
S
=
c
.
inbuf_old
[
o
];
for
(
f
=
0
;
f
<
s
;
f
++
){
var
M
,
w
;
if
(
M
=
f
*
c
.
resample_ratio
,
i
<=
p
+
(
h
=
0
|
Math
.
floor
(
M
-
c
.
itime
[
o
]))
-
p
/
2
)
break
;
g
=
M
-
c
.
itime
[
o
]
-
(
h
+
p
%
2
*
.
5
);
w
=
0
|
Math
.
floor
(
2
*
g
*
u
+
u
+
.
5
);
var
R
=
0
;
for
(
l
=
0
;
l
<=
p
;
++
l
){
var
B
=
l
+
h
-
p
/
2
;
R
+=
(
B
<
0
?
S
[
v
+
B
]:
n
[
r
+
B
])
*
c
.
blackfilt
[
w
][
l
]}
t
[
a
+
f
]
=
R
}
if
(
_
.
num_used
=
Math
.
min
(
i
,
p
+
h
-
p
/
2
),
c
.
itime
[
o
]
+=
_
.
num_used
-
f
*
c
.
resample_ratio
,
_
.
num_used
>=
v
)
for
(
l
=
0
;
l
<
v
;
l
++
)
S
[
l
]
=
n
[
r
+
_
.
num_used
+
l
-
v
];
else
{
var
A
=
v
-
_
.
num_used
;
for
(
l
=
0
;
l
<
A
;
++
l
)
S
[
l
]
=
S
[
l
+
_
.
num_used
];
for
(
h
=
0
;
l
<
v
;
++
l
,
++
h
)
S
[
l
]
=
n
[
r
+
h
]}
return
f
}
function
D
(
e
,
t
,
a
,
s
,
n
,
r
){
var
i
=
e
.
internal_flags
;
if
(
i
.
resample_ratio
<
.
9999
||
1.0001
<
i
.
resample_ratio
)
for
(
var
_
=
0
;
_
<
i
.
channels_out
;
_
++
){
var
o
=
new
f
;
r
.
n_out
=
c
(
e
,
t
[
_
],
i
.
mf_size
,
e
.
framesize
,
a
[
_
],
s
,
n
,
o
,
_
),
r
.
n_in
=
o
.
num_used
}
else
{
r
.
n_out
=
Math
.
min
(
e
.
framesize
,
n
),
r
.
n_in
=
r
.
n_out
;
for
(
var
l
=
0
;
l
<
r
.
n_out
;
++
l
)
t
[
0
][
i
.
mf_size
+
l
]
=
a
[
0
][
s
+
l
],
2
==
i
.
channels_out
&&
(
t
[
1
][
i
.
mf_size
+
l
]
=
a
[
1
][
s
+
l
])}}
this
.
lame_init
=
function
(){
var
e
,
t
,
a
=
new
function
(){
this
.
class_id
=
0
,
this
.
num_samples
=
0
,
this
.
num_channels
=
0
,
this
.
in_samplerate
=
0
,
this
.
out_samplerate
=
0
,
this
.
scale
=
0
,
this
.
scale_left
=
0
,
this
.
scale_right
=
0
,
this
.
analysis
=!
1
,
this
.
bWriteVbrTag
=!
1
,
this
.
decode_only
=!
1
,
this
.
quality
=
0
,
this
.
mode
=
Ee
.
STEREO
,
this
.
force_ms
=!
1
,
this
.
free_format
=!
1
,
this
.
findReplayGain
=!
1
,
this
.
decode_on_the_fly
=!
1
,
this
.
write_id3tag_automatic
=!
1
,
this
.
brate
=
0
,
this
.
compression_ratio
=
0
,
this
.
copyright
=
0
,
this
.
original
=
0
,
this
.
extension
=
0
,
this
.
emphasis
=
0
,
this
.
error_protection
=
0
,
this
.
strict_ISO
=!
1
,
this
.
disable_reservoir
=!
1
,
this
.
quant_comp
=
0
,
this
.
quant_comp_short
=
0
,
this
.
experimentalY
=!
1
,
this
.
experimentalZ
=
0
,
this
.
exp_nspsytune
=
0
,
this
.
preset
=
0
,
this
.
VBR
=
null
,
this
.
VBR_q_frac
=
0
,
this
.
VBR_q
=
0
,
this
.
VBR_mean_bitrate_kbps
=
0
,
this
.
VBR_min_bitrate_kbps
=
0
,
this
.
VBR_max_bitrate_kbps
=
0
,
this
.
VBR_hard_min
=
0
,
this
.
lowpassfreq
=
0
,
this
.
highpassfreq
=
0
,
this
.
lowpasswidth
=
0
,
this
.
highpasswidth
=
0
,
this
.
maskingadjust
=
0
,
this
.
maskingadjust_short
=
0
,
this
.
ATHonly
=!
1
,
this
.
ATHshort
=!
1
,
this
.
noATH
=!
1
,
this
.
ATHtype
=
0
,
this
.
ATHcurve
=
0
,
this
.
ATHlower
=
0
,
this
.
athaa_type
=
0
,
this
.
athaa_loudapprox
=
0
,
this
.
athaa_sensitivity
=
0
,
this
.
short_blocks
=
null
,
this
.
useTemporal
=!
1
,
this
.
interChRatio
=
0
,
this
.
msfix
=
0
,
this
.
tune
=!
1
,
this
.
tune_value_a
=
0
,
this
.
version
=
0
,
this
.
encoder_delay
=
0
,
this
.
encoder_padding
=
0
,
this
.
framesize
=
0
,
this
.
frameNum
=
0
,
this
.
lame_allocated_gfp
=
0
,
this
.
internal_flags
=
null
};
return
0
!=
((
e
=
a
).
class_id
=
y
,
t
=
e
.
internal_flags
=
new
Z
,
e
.
mode
=
Ee
.
NOT_SET
,
e
.
original
=
1
,
e
.
in_samplerate
=
44100
,
e
.
num_channels
=
2
,
e
.
num_samples
=-
1
,
e
.
bWriteVbrTag
=!
0
,
e
.
quality
=-
1
,
e
.
short_blocks
=
null
,
t
.
subblock_gain
=-
1
,
e
.
lowpassfreq
=
0
,
e
.
highpassfreq
=
0
,
e
.
lowpasswidth
=-
1
,
e
.
highpasswidth
=-
1
,
e
.
VBR
=
ye
.
vbr_off
,
e
.
VBR_q
=
4
,
e
.
ATHcurve
=-
1
,
e
.
VBR_mean_bitrate_kbps
=
128
,
e
.
VBR_min_bitrate_kbps
=
0
,
e
.
VBR_max_bitrate_kbps
=
0
,
e
.
VBR_hard_min
=
0
,
t
.
VBR_min_bitrate
=
1
,
t
.
VBR_max_bitrate
=
13
,
e
.
quant_comp
=-
1
,
e
.
quant_comp_short
=-
1
,
e
.
msfix
=-
1
,
t
.
resample_ratio
=
1
,
t
.
OldValue
[
0
]
=
180
,
t
.
OldValue
[
1
]
=
180
,
t
.
CurrentStep
[
0
]
=
4
,
t
.
CurrentStep
[
1
]
=
4
,
t
.
masking_lower
=
1
,
t
.
nsPsy
.
attackthre
=-
1
,
t
.
nsPsy
.
attackthre_s
=-
1
,
e
.
scale
=-
1
,
e
.
athaa_type
=-
1
,
e
.
ATHtype
=-
1
,
e
.
athaa_loudapprox
=-
1
,
e
.
athaa_sensitivity
=
0
,
e
.
useTemporal
=
null
,
e
.
interChRatio
=-
1
,
t
.
mf_samples_to_encode
=
Pe
.
ENCDELAY
+
Pe
.
POSTDELAY
,
e
.
encoder_padding
=
0
,
t
.
mf_size
=
Pe
.
ENCDELAY
-
Pe
.
MDCTDELAY
,
e
.
findReplayGain
=!
1
,
e
.
decode_on_the_fly
=!
1
,
t
.
decode_on_the_fly
=!
1
,
t
.
findReplayGain
=!
1
,
t
.
findPeakSample
=!
1
,
t
.
RadioGain
=
0
,
t
.
AudiophileGain
=
0
,
t
.
noclipGainChange
=
0
,
t
.
noclipScale
=-
1
,
e
.
preset
=
0
,
e
.
write_id3tag_automatic
=!
0
,
0
)?
null
:(
a
.
lame_allocated_gfp
=
1
,
a
)},
this
.
nearestBitrateFullIndex
=
function
(
e
){
var
t
=
[
8
,
16
,
24
,
32
,
40
,
48
,
56
,
64
,
80
,
96
,
112
,
128
,
160
,
192
,
224
,
256
,
320
],
a
=
0
,
s
=
0
,
n
=
0
,
r
=
0
;
r
=
t
[
16
],
s
=
t
[
n
=
16
],
a
=
16
;
for
(
var
i
=
0
;
i
<
16
;
i
++
)
if
(
Math
.
max
(
e
,
t
[
i
+
1
])
!=
e
){
r
=
t
[
i
+
1
],
n
=
i
+
1
,
s
=
t
[
i
],
a
=
i
;
break
}
return
e
-
s
<
r
-
e
?
a
:
n
},
this
.
lame_init_params
=
function
(
e
){
var
t
,
a
,
s
,
n
=
e
.
internal_flags
;
if
(
n
.
Class_ID
=
0
,
null
==
n
.
ATH
&&
(
n
.
ATH
=
new
function
(){
this
.
useAdjust
=
0
,
this
.
aaSensitivityP
=
0
,
this
.
adjust
=
0
,
this
.
adjustLimit
=
0
,
this
.
decay
=
0
,
this
.
floor
=
0
,
this
.
l
=
Ae
(
Pe
.
SBMAX_l
),
this
.
s
=
Ae
(
Pe
.
SBMAX_s
),
this
.
psfb21
=
Ae
(
Pe
.
PSFB21
),
this
.
psfb12
=
Ae
(
Pe
.
PSFB12
),
this
.
cb_l
=
Ae
(
Pe
.
CBANDS
),
this
.
cb_s
=
Ae
(
Pe
.
CBANDS
),
this
.
eql_w
=
Ae
(
Pe
.
BLKSIZE
/
2
)}),
null
==
n
.
PSY
&&
(
n
.
PSY
=
new
function
(){
this
.
mask_adjust
=
0
,
this
.
mask_adjust_short
=
0
,
this
.
bo_l_weight
=
Ae
(
Pe
.
SBMAX_l
),
this
.
bo_s_weight
=
Ae
(
Pe
.
SBMAX_s
)}),
null
==
n
.
rgdata
&&
(
n
.
rgdata
=
new
function
(){}),
n
.
channels_in
=
e
.
num_channels
,
1
==
n
.
channels_in
&&
(
e
.
mode
=
Ee
.
MONO
),
n
.
channels_out
=
e
.
mode
==
Ee
.
MONO
?
1
:
2
,
n
.
mode_ext
=
Pe
.
MPG_MD_MS_LR
,
e
.
mode
==
Ee
.
MONO
&&
(
e
.
force_ms
=!
1
),
e
.
VBR
==
ye
.
vbr_off
&&
128
!=
e
.
VBR_mean_bitrate_kbps
&&
0
==
e
.
brate
&&
(
e
.
brate
=
e
.
VBR_mean_bitrate_kbps
),
e
.
VBR
==
ye
.
vbr_off
||
e
.
VBR
==
ye
.
vbr_mtrh
||
e
.
VBR
==
ye
.
vbr_mt
||
(
e
.
free_format
=!
1
),
e
.
VBR
==
ye
.
vbr_off
&&
0
==
e
.
brate
&&
j
.
EQ
(
e
.
compression_ratio
,
0
)
&&
(
e
.
compression_ratio
=
11.025
),
e
.
VBR
==
ye
.
vbr_off
&&
0
<
e
.
compression_ratio
&&
(
0
==
e
.
out_samplerate
&&
(
e
.
out_samplerate
=
map2MP3Frequency
(
int
(.
97
*
e
.
in_samplerate
))),
e
.
brate
=
0
|
16
*
e
.
out_samplerate
*
n
.
channels_out
/
(
1
e3
*
e
.
compression_ratio
),
n
.
samplerate_index
=
P
(
e
.
out_samplerate
,
e
),
e
.
free_format
||
(
e
.
brate
=
H
(
e
.
brate
,
e
.
version
,
e
.
out_samplerate
))),
0
!=
e
.
out_samplerate
&&
(
e
.
out_samplerate
<
16
e3
?(
e
.
VBR_mean_bitrate_kbps
=
Math
.
max
(
e
.
VBR_mean_bitrate_kbps
,
8
),
e
.
VBR_mean_bitrate_kbps
=
Math
.
min
(
e
.
VBR_mean_bitrate_kbps
,
64
)):
e
.
out_samplerate
<
32
e3
?(
e
.
VBR_mean_bitrate_kbps
=
Math
.
max
(
e
.
VBR_mean_bitrate_kbps
,
8
),
e
.
VBR_mean_bitrate_kbps
=
Math
.
min
(
e
.
VBR_mean_bitrate_kbps
,
160
)):(
e
.
VBR_mean_bitrate_kbps
=
Math
.
max
(
e
.
VBR_mean_bitrate_kbps
,
32
),
e
.
VBR_mean_bitrate_kbps
=
Math
.
min
(
e
.
VBR_mean_bitrate_kbps
,
320
))),
0
==
e
.
lowpassfreq
){
var
r
=
16
e3
;
switch
(
e
.
VBR
){
case
ye
.
vbr_off
:
I
(
i
=
new
x
,
e
.
brate
),
r
=
i
.
lowerlimit
;
break
;
case
ye
.
vbr_abr
:
var
i
;
I
(
i
=
new
x
,
e
.
VBR_mean_bitrate_kbps
),
r
=
i
.
lowerlimit
;
break
;
case
ye
.
vbr_rh
:
var
_
=
[
19500
,
19
e3
,
18600
,
18
e3
,
17500
,
16
e3
,
15600
,
14900
,
12500
,
1
e4
,
3950
];
if
(
0
<=
e
.
VBR_q
&&
e
.
VBR_q
<=
9
){
var
o
=
_
[
e
.
VBR_q
],
l
=
_
[
e
.
VBR_q
+
1
],
f
=
e
.
VBR_q_frac
;
r
=
linear_int
(
o
,
l
,
f
)}
else
r
=
19500
;
break
;
default
:
_
=
[
19500
,
19
e3
,
18500
,
18
e3
,
17500
,
16500
,
15500
,
14500
,
12500
,
9500
,
3950
];
if
(
0
<=
e
.
VBR_q
&&
e
.
VBR_q
<=
9
){
o
=
_
[
e
.
VBR_q
],
l
=
_
[
e
.
VBR_q
+
1
],
f
=
e
.
VBR_q_frac
;
r
=
linear_int
(
o
,
l
,
f
)}
else
r
=
19500
}
e
.
mode
!=
Ee
.
MONO
||
e
.
VBR
!=
ye
.
vbr_off
&&
e
.
VBR
!=
ye
.
vbr_abr
||
(
r
*=
1.5
),
e
.
lowpassfreq
=
0
|
r
}
if
(
0
==
e
.
out_samplerate
&&
(
2
*
e
.
lowpassfreq
>
e
.
in_samplerate
&&
(
e
.
lowpassfreq
=
e
.
in_samplerate
/
2
),
e
.
out_samplerate
=
(
t
=
0
|
e
.
lowpassfreq
,
a
=
e
.
in_samplerate
,
s
=
44100
,
48
e3
<=
a
?
s
=
48
e3
:
44100
<=
a
?
s
=
44100
:
32
e3
<=
a
?
s
=
32
e3
:
24
e3
<=
a
?
s
=
24
e3
:
22050
<=
a
?
s
=
22050
:
16
e3
<=
a
?
s
=
16
e3
:
12
e3
<=
a
?
s
=
12
e3
:
11025
<=
a
?
s
=
11025
:
8
e3
<=
a
&&
(
s
=
8
e3
),
-
1
==
t
?
s
:(
t
<=
15960
&&
(
s
=
44100
),
t
<=
15250
&&
(
s
=
32
e3
),
t
<=
11220
&&
(
s
=
24
e3
),
t
<=
9970
&&
(
s
=
22050
),
t
<=
7230
&&
(
s
=
16
e3
),
t
<=
5420
&&
(
s
=
12
e3
),
t
<=
4510
&&
(
s
=
11025
),
t
<=
3970
&&
(
s
=
8
e3
),
a
<
s
?
44100
<
a
?
48
e3
:
32
e3
<
a
?
44100
:
24
e3
<
a
?
32
e3
:
22050
<
a
?
24
e3
:
16
e3
<
a
?
22050
:
12
e3
<
a
?
16
e3
:
11025
<
a
?
12
e3
:
8
e3
<
a
?
11025
:
8
e3
:
s
))),
e
.
lowpassfreq
=
Math
.
min
(
20500
,
e
.
lowpassfreq
),
e
.
lowpassfreq
=
Math
.
min
(
e
.
out_samplerate
/
2
,
e
.
lowpassfreq
),
e
.
VBR
==
ye
.
vbr_off
&&
(
e
.
compression_ratio
=
16
*
e
.
out_samplerate
*
n
.
channels_out
/
(
1
e3
*
e
.
brate
)),
e
.
VBR
==
ye
.
vbr_abr
&&
(
e
.
compression_ratio
=
16
*
e
.
out_samplerate
*
n
.
channels_out
/
(
1
e3
*
e
.
VBR_mean_bitrate_kbps
)),
e
.
bWriteVbrTag
||
(
e
.
findReplayGain
=!
1
,
e
.
decode_on_the_fly
=!
1
,
n
.
findPeakSample
=!
1
),
n
.
findReplayGain
=
e
.
findReplayGain
,
n
.
decode_on_the_fly
=
e
.
decode_on_the_fly
,
n
.
decode_on_the_fly
&&
(
n
.
findPeakSample
=!
0
),
n
.
findReplayGain
&&
w
.
InitGainAnalysis
(
n
.
rgdata
,
e
.
out_samplerate
)
==
q
.
INIT_GAIN_ANALYSIS_ERROR
)
return
e
.
internal_flags
=
null
,
-
6
;
switch
(
n
.
decode_on_the_fly
&&!
e
.
decode_only
&&
(
null
!=
n
.
hip
&&
k
.
hip_decode_exit
(
n
.
hip
),
n
.
hip
=
k
.
hip_decode_init
()),
n
.
mode_gr
=
e
.
out_samplerate
<=
24
e3
?
1
:
2
,
e
.
framesize
=
576
*
n
.
mode_gr
,
e
.
encoder_delay
=
Pe
.
ENCDELAY
,
n
.
resample_ratio
=
e
.
in_samplerate
/
e
.
out_samplerate
,
e
.
VBR
){
case
ye
.
vbr_mt
:
case
ye
.
vbr_rh
:
case
ye
.
vbr_mtrh
:
e
.
compression_ratio
=
[
5.7
,
6.5
,
7.3
,
8.2
,
10
,
11.9
,
13
,
14
,
15
,
16.5
][
e
.
VBR_q
];
break
;
case
ye
.
vbr_abr
:
e
.
compression_ratio
=
16
*
e
.
out_samplerate
*
n
.
channels_out
/
(
1
e3
*
e
.
VBR_mean_bitrate_kbps
);
break
;
default
:
e
.
compression_ratio
=
16
*
e
.
out_samplerate
*
n
.
channels_out
/
(
1
e3
*
e
.
brate
)}
if
(
e
.
mode
==
Ee
.
NOT_SET
&&
(
e
.
mode
=
Ee
.
JOINT_STEREO
),
0
<
e
.
highpassfreq
?(
n
.
highpass1
=
2
*
e
.
highpassfreq
,
0
<=
e
.
highpasswidth
?
n
.
highpass2
=
2
*
(
e
.
highpassfreq
+
e
.
highpasswidth
):
n
.
highpass2
=
2
*
e
.
highpassfreq
,
n
.
highpass1
/=
e
.
out_samplerate
,
n
.
highpass2
/=
e
.
out_samplerate
):(
n
.
highpass1
=
0
,
n
.
highpass2
=
0
),
0
<
e
.
lowpassfreq
?(
n
.
lowpass2
=
2
*
e
.
lowpassfreq
,
0
<=
e
.
lowpasswidth
?(
n
.
lowpass1
=
2
*
(
e
.
lowpassfreq
-
e
.
lowpasswidth
),
n
.
lowpass1
<
0
&&
(
n
.
lowpass1
=
0
)):
n
.
lowpass1
=
2
*
e
.
lowpassfreq
,
n
.
lowpass1
/=
e
.
out_samplerate
,
n
.
lowpass2
/=
e
.
out_samplerate
):(
n
.
lowpass1
=
0
,
n
.
lowpass2
=
0
),
function
(
e
){
var
t
=
e
.
internal_flags
,
a
=
32
,
s
=-
1
;
if
(
0
<
t
.
lowpass1
){
for
(
var
n
=
999
,
r
=
0
;
r
<=
31
;
r
++
)(
l
=
r
/
31
)
>=
t
.
lowpass2
&&
(
a
=
Math
.
min
(
a
,
r
)),
t
.
lowpass1
<
l
&&
l
<
t
.
lowpass2
&&
(
n
=
Math
.
min
(
n
,
r
));
t
.
lowpass1
=
999
==
n
?(
a
-
.
75
)
/
31
:(
n
-
.
75
)
/
31
,
t
.
lowpass2
=
a
/
31
}
if
(
0
<
t
.
highpass2
&&
t
.
highpass2
<
.
75
/
31
*
.
9
&&
(
t
.
highpass1
=
0
,
t
.
highpass2
=
0
,
$
.
err
.
println
(
"
Warning: highpass filter disabled. highpass frequency too small
\n
"
)),
0
<
t
.
highpass2
){
var
i
=-
1
;
for
(
r
=
0
;
r
<=
31
;
r
++
)(
l
=
r
/
31
)
<=
t
.
highpass1
&&
(
s
=
Math
.
max
(
s
,
r
)),
t
.
highpass1
<
l
&&
l
<
t
.
highpass2
&&
(
i
=
Math
.
max
(
i
,
r
));
t
.
highpass1
=
s
/
31
,
t
.
highpass2
=-
1
==
i
?(
s
+
.
75
)
/
31
:(
i
+
.
75
)
/
31
}
for
(
r
=
0
;
r
<
32
;
r
++
){
var
_
,
o
,
l
=
r
/
31
;
_
=
t
.
highpass2
>
t
.
highpass1
?
E
((
t
.
highpass2
-
l
)
/
(
t
.
highpass2
-
t
.
highpass1
+
1
e
-
20
)):
1
,
o
=
t
.
lowpass2
>
t
.
lowpass1
?
E
((
l
-
t
.
lowpass1
)
/
(
t
.
lowpass2
-
t
.
lowpass1
+
1
e
-
20
)):
1
,
t
.
amp_filter
[
r
]
=
_
*
o
}}(
e
),
n
.
samplerate_index
=
P
(
e
.
out_samplerate
,
e
),
n
.
samplerate_index
<
0
)
return
e
.
internal_flags
=
null
,
-
1
;
if
(
e
.
VBR
==
ye
.
vbr_off
){
if
(
e
.
free_format
)
n
.
bitrate_index
=
0
;
else
if
(
e
.
brate
=
H
(
e
.
brate
,
e
.
version
,
e
.
out_samplerate
),
n
.
bitrate_index
=
L
(
e
.
brate
,
e
.
version
,
e
.
out_samplerate
),
n
.
bitrate_index
<=
0
)
return
e
.
internal_flags
=
null
,
-
1
}
else
n
.
bitrate_index
=
1
;
e
.
analysis
&&
(
e
.
bWriteVbrTag
=!
1
),
null
!=
n
.
pinfo
&&
(
e
.
bWriteVbrTag
=!
1
),
R
.
init_bit_stream_w
(
n
);
for
(
var
c
,
h
,
u
,
b
=
n
.
samplerate_index
+
3
*
e
.
version
+
6
*
(
e
.
out_samplerate
<
16
e3
?
1
:
0
),
m
=
0
;
m
<
Pe
.
SBMAX_l
+
1
;
m
++
)
n
.
scalefac_band
.
l
[
m
]
=
S
.
sfBandIndex
[
b
].
l
[
m
];
for
(
m
=
0
;
m
<
Pe
.
PSFB21
+
1
;
m
++
){
var
p
=
(
n
.
scalefac_band
.
l
[
22
]
-
n
.
scalefac_band
.
l
[
21
])
/
Pe
.
PSFB21
,
v
=
n
.
scalefac_band
.
l
[
21
]
+
m
*
p
;
n
.
scalefac_band
.
psfb21
[
m
]
=
v
}
n
.
scalefac_band
.
psfb21
[
Pe
.
PSFB21
]
=
576
;
for
(
m
=
0
;
m
<
Pe
.
SBMAX_s
+
1
;
m
++
)
n
.
scalefac_band
.
s
[
m
]
=
S
.
sfBandIndex
[
b
].
s
[
m
];
for
(
m
=
0
;
m
<
Pe
.
PSFB12
+
1
;
m
++
){
p
=
(
n
.
scalefac_band
.
s
[
13
]
-
n
.
scalefac_band
.
s
[
12
])
/
Pe
.
PSFB12
,
v
=
n
.
scalefac_band
.
s
[
12
]
+
m
*
p
;
n
.
scalefac_band
.
psfb12
[
m
]
=
v
}
for
(
n
.
scalefac_band
.
psfb12
[
Pe
.
PSFB12
]
=
192
,
1
==
e
.
version
?
n
.
sideinfo_len
=
1
==
n
.
channels_out
?
21
:
36
:
n
.
sideinfo_len
=
1
==
n
.
channels_out
?
13
:
21
,
e
.
error_protection
&&
(
n
.
sideinfo_len
+=
2
),
h
=
(
c
=
e
).
internal_flags
,
c
.
frameNum
=
0
,
c
.
write_id3tag_automatic
&&
A
.
id3tag_write_v2
(
c
),
h
.
bitrate_stereoMode_Hist
=
X
([
16
,
5
]),
h
.
bitrate_blockType_Hist
=
X
([
16
,
6
]),
h
.
PeakSample
=
0
,
c
.
bWriteVbrTag
&&
B
.
InitVbrTag
(
c
),
n
.
Class_ID
=
y
,
u
=
0
;
u
<
19
;
u
++
)
n
.
nsPsy
.
pefirbuf
[
u
]
=
700
*
n
.
mode_gr
*
n
.
channels_out
;
switch
(
-
1
==
e
.
ATHtype
&&
(
e
.
ATHtype
=
4
),
e
.
VBR
){
case
ye
.
vbr_mt
:
e
.
VBR
=
ye
.
vbr_mtrh
;
case
ye
.
vbr_mtrh
:
null
==
e
.
useTemporal
&&
(
e
.
useTemporal
=!
1
),
g
.
apply_preset
(
e
,
500
-
10
*
e
.
VBR_q
,
0
),
e
.
quality
<
0
&&
(
e
.
quality
=
LAME_DEFAULT_QUALITY
),
e
.
quality
<
5
&&
(
e
.
quality
=
0
),
5
<
e
.
quality
&&
(
e
.
quality
=
5
),
n
.
PSY
.
mask_adjust
=
e
.
maskingadjust
,
n
.
PSY
.
mask_adjust_short
=
e
.
maskingadjust_short
,
e
.
experimentalY
?
n
.
sfb21_extra
=!
1
:
n
.
sfb21_extra
=
44
e3
<
e
.
out_samplerate
,
n
.
iteration_loop
=
new
VBRNewIterationLoop
(
M
);
break
;
case
ye
.
vbr_rh
:
g
.
apply_preset
(
e
,
500
-
10
*
e
.
VBR_q
,
0
),
n
.
PSY
.
mask_adjust
=
e
.
maskingadjust
,
n
.
PSY
.
mask_adjust_short
=
e
.
maskingadjust_short
,
e
.
experimentalY
?
n
.
sfb21_extra
=!
1
:
n
.
sfb21_extra
=
44
e3
<
e
.
out_samplerate
,
6
<
e
.
quality
&&
(
e
.
quality
=
6
),
e
.
quality
<
0
&&
(
e
.
quality
=
LAME_DEFAULT_QUALITY
),
n
.
iteration_loop
=
new
VBROldIterationLoop
(
M
);
break
;
default
:
var
d
;
n
.
sfb21_extra
=!
1
,
e
.
quality
<
0
&&
(
e
.
quality
=
LAME_DEFAULT_QUALITY
),(
d
=
e
.
VBR
)
==
ye
.
vbr_off
&&
(
e
.
VBR_mean_bitrate_kbps
=
e
.
brate
),
g
.
apply_preset
(
e
,
e
.
VBR_mean_bitrate_kbps
,
0
),
e
.
VBR
=
d
,
n
.
PSY
.
mask_adjust
=
e
.
maskingadjust
,
n
.
PSY
.
mask_adjust_short
=
e
.
maskingadjust_short
,
n
.
iteration_loop
=
d
==
ye
.
vbr_off
?
new
function
(
e
){
var
t
=
e
;
this
.
quantize
=
t
,
this
.
iteration_loop
=
function
(
e
,
t
,
a
,
s
){
var
n
,
r
=
e
.
internal_flags
,
i
=
Ae
(
z
.
SFBMAX
),
_
=
Ae
(
576
),
o
=
Be
(
2
),
l
=
0
,
f
=
r
.
l3_side
,
c
=
new
F
(
l
);
this
.
quantize
.
rv
.
ResvFrameBegin
(
e
,
c
),
l
=
c
.
bits
;
for
(
var
h
=
0
;
h
<
r
.
mode_gr
;
h
++
){
n
=
this
.
quantize
.
qupvt
.
on_pe
(
e
,
t
,
o
,
l
,
h
,
h
),
r
.
mode_ext
==
Pe
.
MPG_MD_MS_LR
&&
(
this
.
quantize
.
ms_convert
(
r
.
l3_side
,
h
),
this
.
quantize
.
qupvt
.
reduce_side
(
o
,
a
[
h
],
l
,
n
));
for
(
var
u
=
0
;
u
<
r
.
channels_out
;
u
++
){
var
b
,
m
,
p
=
f
.
tt
[
h
][
u
];
p
.
block_type
!=
Pe
.
SHORT_TYPE
?(
b
=
0
,
m
=
r
.
PSY
.
mask_adjust
-
b
):(
b
=
0
,
m
=
r
.
PSY
.
mask_adjust_short
-
b
),
r
.
masking_lower
=
Math
.
pow
(
10
,.
1
*
m
),
this
.
quantize
.
init_outer_loop
(
r
,
p
),
this
.
quantize
.
init_xrpow
(
r
,
p
,
_
)
&&
(
this
.
quantize
.
qupvt
.
calc_xmin
(
e
,
s
[
h
][
u
],
p
,
i
),
this
.
quantize
.
outer_loop
(
e
,
p
,
i
,
_
,
u
,
o
[
u
])),
this
.
quantize
.
iteration_finish_one
(
r
,
h
,
u
)}}
this
.
quantize
.
rv
.
ResvFrameEnd
(
r
,
l
)}}(
M
):
new
ABRIterationLoop
(
M
)}
if
(
e
.
VBR
!=
ye
.
vbr_off
){
if
(
n
.
VBR_min_bitrate
=
1
,
n
.
VBR_max_bitrate
=
14
,
e
.
out_samplerate
<
16
e3
&&
(
n
.
VBR_max_bitrate
=
8
),
0
!=
e
.
VBR_min_bitrate_kbps
&&
(
e
.
VBR_min_bitrate_kbps
=
H
(
e
.
VBR_min_bitrate_kbps
,
e
.
version
,
e
.
out_samplerate
),
n
.
VBR_min_bitrate
=
L
(
e
.
VBR_min_bitrate_kbps
,
e
.
version
,
e
.
out_samplerate
),
n
.
VBR_min_bitrate
<
0
))
return
-
1
;
if
(
0
!=
e
.
VBR_max_bitrate_kbps
&&
(
e
.
VBR_max_bitrate_kbps
=
H
(
e
.
VBR_max_bitrate_kbps
,
e
.
version
,
e
.
out_samplerate
),
n
.
VBR_max_bitrate
=
L
(
e
.
VBR_max_bitrate_kbps
,
e
.
version
,
e
.
out_samplerate
),
n
.
VBR_max_bitrate
<
0
))
return
-
1
;
e
.
VBR_min_bitrate_kbps
=
C
.
bitrate_table
[
e
.
version
][
n
.
VBR_min_bitrate
],
e
.
VBR_max_bitrate_kbps
=
C
.
bitrate_table
[
e
.
version
][
n
.
VBR_max_bitrate
],
e
.
VBR_mean_bitrate_kbps
=
Math
.
min
(
C
.
bitrate_table
[
e
.
version
][
n
.
VBR_max_bitrate
],
e
.
VBR_mean_bitrate_kbps
),
e
.
VBR_mean_bitrate_kbps
=
Math
.
max
(
C
.
bitrate_table
[
e
.
version
][
n
.
VBR_min_bitrate
],
e
.
VBR_mean_bitrate_kbps
)}
return
e
.
tune
&&
(
n
.
PSY
.
mask_adjust
+=
e
.
tune_value_a
,
n
.
PSY
.
mask_adjust_short
+=
e
.
tune_value_a
),
function
(
e
){
var
t
=
e
.
internal_flags
;
switch
(
e
.
quality
){
default
:
case
9
:
t
.
psymodel
=
0
,
t
.
noise_shaping
=
0
,
t
.
noise_shaping_amp
=
0
,
t
.
noise_shaping_stop
=
0
,
t
.
use_best_huffman
=
0
,
t
.
full_outer_loop
=
0
;
break
;
case
8
:
e
.
quality
=
7
;
case
7
:
t
.
psymodel
=
1
,
t
.
noise_shaping
=
0
,
t
.
noise_shaping_amp
=
0
,
t
.
noise_shaping_stop
=
0
,
t
.
use_best_huffman
=
0
,
t
.
full_outer_loop
=
0
;
break
;
case
6
:
case
5
:
t
.
psymodel
=
1
,
0
==
t
.
noise_shaping
&&
(
t
.
noise_shaping
=
1
),
t
.
noise_shaping_amp
=
0
,
t
.
noise_shaping_stop
=
0
,
-
1
==
t
.
subblock_gain
&&
(
t
.
subblock_gain
=
1
),
t
.
use_best_huffman
=
0
,
t
.
full_outer_loop
=
0
;
break
;
case
4
:
t
.
psymodel
=
1
,
0
==
t
.
noise_shaping
&&
(
t
.
noise_shaping
=
1
),
t
.
noise_shaping_amp
=
0
,
t
.
noise_shaping_stop
=
0
,
-
1
==
t
.
subblock_gain
&&
(
t
.
subblock_gain
=
1
),
t
.
use_best_huffman
=
1
,
t
.
full_outer_loop
=
0
;
break
;
case
3
:
t
.
psymodel
=
1
,
0
==
t
.
noise_shaping
&&
(
t
.
noise_shaping
=
1
),
t
.
noise_shaping_amp
=
1
,
-
(
t
.
noise_shaping_stop
=
1
)
==
t
.
subblock_gain
&&
(
t
.
subblock_gain
=
1
),
t
.
use_best_huffman
=
1
,
t
.
full_outer_loop
=
0
;
break
;
case
2
:
t
.
psymodel
=
1
,
0
==
t
.
noise_shaping
&&
(
t
.
noise_shaping
=
1
),
0
==
t
.
substep_shaping
&&
(
t
.
substep_shaping
=
2
),
t
.
noise_shaping_amp
=
1
,
-
(
t
.
noise_shaping_stop
=
1
)
==
t
.
subblock_gain
&&
(
t
.
subblock_gain
=
1
),
t
.
use_best_huffman
=
1
,
t
.
full_outer_loop
=
0
;
break
;
case
1
:
case
0
:
t
.
psymodel
=
1
,
0
==
t
.
noise_shaping
&&
(
t
.
noise_shaping
=
1
),
0
==
t
.
substep_shaping
&&
(
t
.
substep_shaping
=
2
),
t
.
noise_shaping_amp
=
2
,
-
(
t
.
noise_shaping_stop
=
1
)
==
t
.
subblock_gain
&&
(
t
.
subblock_gain
=
1
),
t
.
use_best_huffman
=
1
,
t
.
full_outer_loop
=
0
}}(
e
),
e
.
athaa_type
<
0
?
n
.
ATH
.
useAdjust
=
3
:
n
.
ATH
.
useAdjust
=
e
.
athaa_type
,
n
.
ATH
.
aaSensitivityP
=
Math
.
pow
(
10
,
e
.
athaa_sensitivity
/-
10
),
null
==
e
.
short_blocks
&&
(
e
.
short_blocks
=
xe
.
short_block_allowed
),
e
.
short_blocks
!=
xe
.
short_block_allowed
||
e
.
mode
!=
Ee
.
JOINT_STEREO
&&
e
.
mode
!=
Ee
.
STEREO
||
(
e
.
short_blocks
=
xe
.
short_block_coupled
),
e
.
quant_comp
<
0
&&
(
e
.
quant_comp
=
1
),
e
.
quant_comp_short
<
0
&&
(
e
.
quant_comp_short
=
0
),
e
.
msfix
<
0
&&
(
e
.
msfix
=
0
),
e
.
exp_nspsytune
=
1
|
e
.
exp_nspsytune
,
e
.
internal_flags
.
nsPsy
.
attackthre
<
0
&&
(
e
.
internal_flags
.
nsPsy
.
attackthre
=
G
.
NSATTACKTHRE
),
e
.
internal_flags
.
nsPsy
.
attackthre_s
<
0
&&
(
e
.
internal_flags
.
nsPsy
.
attackthre_s
=
G
.
NSATTACKTHRE_S
),
e
.
scale
<
0
&&
(
e
.
scale
=
1
),
e
.
ATHtype
<
0
&&
(
e
.
ATHtype
=
4
),
e
.
ATHcurve
<
0
&&
(
e
.
ATHcurve
=
4
),
e
.
athaa_loudapprox
<
0
&&
(
e
.
athaa_loudapprox
=
2
),
e
.
interChRatio
<
0
&&
(
e
.
interChRatio
=
0
),
null
==
e
.
useTemporal
&&
(
e
.
useTemporal
=!
0
),
n
.
slot_lag
=
n
.
frac_SpF
=
0
,
e
.
VBR
==
ye
.
vbr_off
&&
(
n
.
slot_lag
=
n
.
frac_SpF
=
72
e3
*
(
e
.
version
+
1
)
*
e
.
brate
%
e
.
out_samplerate
|
0
),
S
.
iteration_init
(
e
),
T
.
psymodel_init
(
e
),
0
},
this
.
lame_encode_flush
=
function
(
e
,
t
,
a
,
s
){
var
n
,
r
,
i
,
_
,
o
=
e
.
internal_flags
,
l
=
m
([
2
,
1152
]),
f
=
0
,
c
=
o
.
mf_samples_to_encode
-
Pe
.
POSTDELAY
,
h
=
V
(
e
);
if
(
o
.
mf_samples_to_encode
<
1
)
return
0
;
for
(
n
=
0
,
e
.
in_samplerate
!=
e
.
out_samplerate
&&
(
c
+=
16
*
e
.
out_samplerate
/
e
.
in_samplerate
),(
i
=
e
.
framesize
-
c
%
e
.
framesize
)
<
576
&&
(
i
+=
e
.
framesize
),
_
=
(
c
+
(
e
.
encoder_padding
=
i
))
/
e
.
framesize
;
0
<
_
&&
0
<=
f
;){
var
u
=
h
-
o
.
mf_size
,
b
=
e
.
frameNum
;
u
*=
e
.
in_samplerate
,
1152
<
(
u
/=
e
.
out_samplerate
)
&&
(
u
=
1152
),
u
<
1
&&
(
u
=
1
),
r
=
s
-
n
,
0
==
s
&&
(
r
=
0
),
a
+=
f
=
this
.
lame_encode_buffer
(
e
,
l
[
0
],
l
[
1
],
u
,
t
,
a
,
r
),
n
+=
f
,
_
-=
b
!=
e
.
frameNum
?
1
:
0
}
if
(
f
<
(
o
.
mf_samples_to_encode
=
0
))
return
f
;
if
(
r
=
s
-
n
,
0
==
s
&&
(
r
=
0
),
R
.
flush_bitstream
(
e
),(
f
=
R
.
copy_buffer
(
o
,
t
,
a
,
r
,
1
))
<
0
)
return
f
;
if
(
a
+=
f
,
r
=
s
-
(
n
+=
f
),
0
==
s
&&
(
r
=
0
),
e
.
write_id3tag_automatic
){
if
(
A
.
id3tag_write_v1
(
e
),(
f
=
R
.
copy_buffer
(
o
,
t
,
a
,
r
,
0
))
<
0
)
return
f
;
n
+=
f
}
return
n
},
this
.
lame_encode_buffer
=
function
(
e
,
t
,
a
,
s
,
n
,
r
,
i
){
var
_
,
o
,
l
=
e
.
internal_flags
,
f
=
[
null
,
null
];
if
(
l
.
Class_ID
!=
y
)
return
-
3
;
if
(
0
==
s
)
return
0
;
o
=
s
,(
null
==
(
_
=
l
).
in_buffer_0
||
_
.
in_buffer_nsamples
<
o
)
&&
(
_
.
in_buffer_0
=
Ae
(
o
),
_
.
in_buffer_1
=
Ae
(
o
),
_
.
in_buffer_nsamples
=
o
),
f
[
0
]
=
l
.
in_buffer_0
,
f
[
1
]
=
l
.
in_buffer_1
;
for
(
var
c
=
0
;
c
<
s
;
c
++
)
f
[
0
][
c
]
=
t
[
c
],
1
<
l
.
channels_in
&&
(
f
[
1
][
c
]
=
a
[
c
]);
return
function
(
e
,
t
,
a
,
s
,
n
,
r
,
i
){
var
_
,
o
,
l
,
f
,
c
,
h
=
e
.
internal_flags
,
u
=
0
,
b
=
[
null
,
null
],
m
=
[
null
,
null
];
if
(
h
.
Class_ID
!=
y
)
return
-
3
;
if
(
0
==
s
)
return
0
;
if
((
c
=
R
.
copy_buffer
(
h
,
n
,
r
,
i
,
0
))
<
0
)
return
c
;
if
(
r
+=
c
,
u
+=
c
,
m
[
0
]
=
t
,
m
[
1
]
=
a
,
j
.
NEQ
(
e
.
scale
,
0
)
&&
j
.
NEQ
(
e
.
scale
,
1
))
for
(
o
=
0
;
o
<
s
;
++
o
)
m
[
0
][
o
]
*=
e
.
scale
,
2
==
h
.
channels_out
&&
(
m
[
1
][
o
]
*=
e
.
scale
);
if
(
j
.
NEQ
(
e
.
scale_left
,
0
)
&&
j
.
NEQ
(
e
.
scale_left
,
1
))
for
(
o
=
0
;
o
<
s
;
++
o
)
m
[
0
][
o
]
*=
e
.
scale_left
;
if
(
j
.
NEQ
(
e
.
scale_right
,
0
)
&&
j
.
NEQ
(
e
.
scale_right
,
1
))
for
(
o
=
0
;
o
<
s
;
++
o
)
m
[
1
][
o
]
*=
e
.
scale_right
;
if
(
2
==
e
.
num_channels
&&
1
==
h
.
channels_out
)
for
(
o
=
0
;
o
<
s
;
++
o
)
m
[
0
][
o
]
=
.
5
*
(
m
[
0
][
o
]
+
m
[
1
][
o
]),
m
[
1
][
o
]
=
0
;
f
=
V
(
e
),
b
[
0
]
=
h
.
mfbuf
[
0
],
b
[
1
]
=
h
.
mfbuf
[
1
];
var
p
=
0
;
for
(;
0
<
s
;){
var
v
=
[
null
,
null
],
d
=
0
,
g
=
0
;
v
[
0
]
=
m
[
0
],
v
[
1
]
=
m
[
1
];
var
S
=
new
O
;
if
(
D
(
e
,
b
,
v
,
p
,
s
,
S
),
d
=
S
.
n_in
,
g
=
S
.
n_out
,
h
.
findReplayGain
&&!
h
.
decode_on_the_fly
&&
w
.
AnalyzeSamples
(
h
.
rgdata
,
b
[
0
],
h
.
mf_size
,
b
[
1
],
h
.
mf_size
,
g
,
h
.
channels_out
)
==
q
.
GAIN_ANALYSIS_ERROR
)
return
-
6
;
if
(
s
-=
d
,
p
+=
d
,
h
.
channels_out
,
h
.
mf_size
+=
g
,
h
.
mf_samples_to_encode
<
1
&&
(
h
.
mf_samples_to_encode
=
Pe
.
ENCDELAY
+
Pe
.
POSTDELAY
),
h
.
mf_samples_to_encode
+=
g
,
h
.
mf_size
>=
f
){
var
M
=
i
-
u
;
if
(
0
==
i
&&
(
M
=
0
),(
_
=
N
(
e
,
b
[
0
],
b
[
1
],
n
,
r
,
M
))
<
0
)
return
_
;
for
(
r
+=
_
,
u
+=
_
,
h
.
mf_size
-=
e
.
framesize
,
h
.
mf_samples_to_encode
-=
e
.
framesize
,
l
=
0
;
l
<
h
.
channels_out
;
l
++
)
for
(
o
=
0
;
o
<
h
.
mf_size
;
o
++
)
b
[
l
][
o
]
=
b
[
l
][
o
+
e
.
framesize
]}}
return
u
}(
e
,
f
[
0
],
f
[
1
],
s
,
n
,
r
,
i
)}}
z
.
SFBMAX
=
3
*
Pe
.
SBMAX_s
,
Pe
.
ENCDELAY
=
576
,
Pe
.
POSTDELAY
=
1152
,
Pe
.
FFTOFFSET
=
224
+
(
Pe
.
MDCTDELAY
=
48
),
Pe
.
DECDELAY
=
528
,
Pe
.
SBLIMIT
=
32
,
Pe
.
CBANDS
=
64
,
Pe
.
SBPSY_l
=
21
,
Pe
.
SBPSY_s
=
12
,
Pe
.
SBMAX_l
=
22
,
Pe
.
SBMAX_s
=
13
,
Pe
.
PSFB21
=
6
,
Pe
.
PSFB12
=
6
,
Pe
.
HBLKSIZE
=
(
Pe
.
BLKSIZE
=
1024
)
/
2
+
1
,
Pe
.
HBLKSIZE_s
=
(
Pe
.
BLKSIZE_s
=
256
)
/
2
+
1
,
Pe
.
NORM_TYPE
=
0
,
Pe
.
START_TYPE
=
1
,
Pe
.
SHORT_TYPE
=
2
,
Pe
.
STOP_TYPE
=
3
,
Pe
.
MPG_MD_LR_LR
=
0
,
Pe
.
MPG_MD_LR_I
=
1
,
Pe
.
MPG_MD_MS_LR
=
2
,
Pe
.
MPG_MD_MS_I
=
3
,
Pe
.
fircoef
=
[
-
.
1039435
,
-
.
1892065
,
5
*-
.
0432472
,
-
.
155915
,
3.898045
e
-
17
,.
0467745
*
5
,.
50455
,.
756825
,.
187098
*
5
],
Z
.
MFSIZE
=
3456
+
Pe
.
ENCDELAY
-
Pe
.
MDCTDELAY
,
Z
.
MAX_HEADER_BUF
=
256
,
Z
.
MAX_BITS_PER_CHANNEL
=
4095
,
Z
.
MAX_BITS_PER_GRANULE
=
7680
,
Z
.
BPC
=
320
,
z
.
SFBMAX
=
3
*
Pe
.
SBMAX_s
,
t
.
Mp3Encoder
=
function
(
s
,
e
,
t
){
3
!=
arguments
.
length
&&
(
console
.
error
(
"
WARN: Mp3Encoder(channels, samplerate, kbps) not specified
"
),
s
=
1
,
e
=
44100
,
t
=
128
);
var
n
=
new
Q
,
a
=
new
function
(){
this
.
setModules
=
function
(
e
,
t
){}},
r
=
new
q
,
i
=
new
j
,
_
=
new
function
(){
function
e
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
,
l
,
f
,
c
,
h
,
u
,
b
){
this
.
vbr_q
=
e
,
this
.
quant_comp
=
t
,
this
.
quant_comp_s
=
a
,
this
.
expY
=
s
,
this
.
st_lrm
=
n
,
this
.
st_s
=
r
,
this
.
masking_adj
=
i
,
this
.
masking_adj_short
=
_
,
this
.
ath_lower
=
o
,
this
.
ath_curve
=
l
,
this
.
ath_sensitivity
=
f
,
this
.
interch
=
c
,
this
.
safejoint
=
h
,
this
.
sfb21mod
=
u
,
this
.
msfix
=
b
}
function
t
(
e
,
t
,
a
,
s
,
n
,
r
,
i
,
_
,
o
,
l
,
f
,
c
,
h
,
u
){
this
.
quant_comp
=
t
,
this
.
quant_comp_s
=
a
,
this
.
safejoint
=
s
,
this
.
nsmsfix
=
n
,
this
.
st_lrm
=
r
,
this
.
st_s
=
i
,
this
.
nsbass
=
_
,
this
.
scale
=
o
,
this
.
masking_adj
=
l
,
this
.
ath_lower
=
f
,
this
.
ath_curve
=
c
,
this
.
interch
=
h
,
this
.
sfscale
=
u
}
var
i
;
this
.
setModules
=
function
(
e
){
i
=
e
};
var
f
=
[
new
e
(
0
,
9
,
9
,
0
,
5.2
,
125
,
-
4.2
,
-
6.3
,
4.8
,
1
,
0
,
0
,
2
,
21
,.
97
),
new
e
(
1
,
9
,
9
,
0
,
5.3
,
125
,
-
3.6
,
-
5.6
,
4.5
,
1.5
,
0
,
0
,
2
,
21
,
1.35
),
new
e
(
2
,
9
,
9
,
0
,
5.6
,
125
,
-
2.2
,
-
3.5
,
2.8
,
2
,
0
,
0
,
2
,
21
,
1.49
),
new
e
(
3
,
9
,
9
,
1
,
5.8
,
130
,
-
1.8
,
-
2.8
,
2.6
,
3
,
-
4
,
0
,
2
,
20
,
1.64
),
new
e
(
4
,
9
,
9
,
1
,
6
,
135
,
-
.
7
,
-
1.1
,
1.1
,
3.5
,
-
8
,
0
,
2
,
0
,
1.79
),
new
e
(
5
,
9
,
9
,
1
,
6.4
,
140
,.
5
,.
4
,
-
7.5
,
4
,
-
12
,
2
e
-
4
,
0
,
0
,
1.95
),
new
e
(
6
,
9
,
9
,
1
,
6.6
,
145
,.
67
,.
65
,
-
14.7
,
6.5
,
-
19
,
4
e
-
4
,
0
,
0
,
2.3
),
new
e
(
7
,
9
,
9
,
1
,
6.6
,
145
,.
8
,.
75
,
-
19.7
,
8
,
-
22
,
6
e
-
4
,
0
,
0
,
2.7
),
new
e
(
8
,
9
,
9
,
1
,
6.6
,
145
,
1.2
,
1.15
,
-
27.5
,
10
,
-
23
,
7
e
-
4
,
0
,
0
,
0
),
new
e
(
9
,
9
,
9
,
1
,
6.6
,
145
,
1.6
,
1.6
,
-
36
,
11
,
-
25
,
8
e
-
4
,
0
,
0
,
0
),
new
e
(
10
,
9
,
9
,
1
,
6.6
,
145
,
2
,
2
,
-
36
,
12
,
-
25
,
8
e
-
4
,
0
,
0
,
0
)],
c
=
[
new
e
(
0
,
9
,
9
,
0
,
4.2
,
25
,
-
7
,
-
4
,
7.5
,
1
,
0
,
0
,
2
,
26
,.
97
),
new
e
(
1
,
9
,
9
,
0
,
4.2
,
25
,
-
5.6
,
-
3.6
,
4.5
,
1.5
,
0
,
0
,
2
,
21
,
1.35
),
new
e
(
2
,
9
,
9
,
0
,
4.2
,
25
,
-
4.4
,
-
1.8
,
2
,
2
,
0
,
0
,
2
,
18
,
1.49
),
new
e
(
3
,
9
,
9
,
1
,
4.2
,
25
,
-
3.4
,
-
1.25
,
1.1
,
3
,
-
4
,
0
,
2
,
15
,
1.64
),
new
e
(
4
,
9
,
9
,
1
,
4.2
,
25
,
-
2.2
,.
1
,
0
,
3.5
,
-
8
,
0
,
2
,
0
,
1.79
),
new
e
(
5
,
9
,
9
,
1
,
4.2
,
25
,
-
1
,
1.65
,
-
7.7
,
4
,
-
12
,
2
e
-
4
,
0
,
0
,
1.95
),
new
e
(
6
,
9
,
9
,
1
,
4.2
,
25
,
-
0
,
2.47
,
-
7.7
,
6.5
,
-
19
,
4
e
-
4
,
0
,
0
,
2
),
new
e
(
7
,
9
,
9
,
1
,
4.2
,
25
,.
5
,
2
,
-
14.5
,
8
,
-
22
,
6
e
-
4
,
0
,
0
,
2
),
new
e
(
8
,
9
,
9
,
1
,
4.2
,
25
,
1
,
2.4
,
-
22
,
10
,
-
23
,
7
e
-
4
,
0
,
0
,
2
),
new
e
(
9
,
9
,
9
,
1
,
4.2
,
25
,
1.5
,
2.95
,
-
30
,
11
,
-
25
,
8
e
-
4
,
0
,
0
,
2
),
new
e
(
10
,
9
,
9
,
1
,
4.2
,
25
,
2
,
2.95
,
-
36
,
12
,
-
30
,
8
e
-
4
,
0
,
0
,
2
)];
function
s
(
e
,
t
,
a
){
var
s
,
n
,
r
=
e
.
VBR
==
ye
.
vbr_rh
?
f
:
c
,
i
=
e
.
VBR_q_frac
,
_
=
r
[
t
],
o
=
r
[
t
+
1
],
l
=
_
;
_
.
st_lrm
=
_
.
st_lrm
+
i
*
(
o
.
st_lrm
-
_
.
st_lrm
),
_
.
st_s
=
_
.
st_s
+
i
*
(
o
.
st_s
-
_
.
st_s
),
_
.
masking_adj
=
_
.
masking_adj
+
i
*
(
o
.
masking_adj
-
_
.
masking_adj
),
_
.
masking_adj_short
=
_
.
masking_adj_short
+
i
*
(
o
.
masking_adj_short
-
_
.
masking_adj_short
),
_
.
ath_lower
=
_
.
ath_lower
+
i
*
(
o
.
ath_lower
-
_
.
ath_lower
),
_
.
ath_curve
=
_
.
ath_curve
+
i
*
(
o
.
ath_curve
-
_
.
ath_curve
),
_
.
ath_sensitivity
=
_
.
ath_sensitivity
+
i
*
(
o
.
ath_sensitivity
-
_
.
ath_sensitivity
),
_
.
interch
=
_
.
interch
+
i
*
(
o
.
interch
-
_
.
interch
),
_
.
msfix
=
_
.
msfix
+
i
*
(
o
.
msfix
-
_
.
msfix
),
s
=
e
,(
n
=
l
.
vbr_q
)
<
0
&&
(
n
=
0
),
9
<
n
&&
(
n
=
9
),
s
.
VBR_q
=
n
,(
s
.
VBR_q_frac
=
0
)
!=
a
?
e
.
quant_comp
=
l
.
quant_comp
:
0
<
Math
.
abs
(
e
.
quant_comp
-
-
1
)
||
(
e
.
quant_comp
=
l
.
quant_comp
),
0
!=
a
?
e
.
quant_comp_short
=
l
.
quant_comp_s
:
0
<
Math
.
abs
(
e
.
quant_comp_short
-
-
1
)
||
(
e
.
quant_comp_short
=
l
.
quant_comp_s
),
0
!=
l
.
expY
&&
(
e
.
experimentalY
=
0
!=
l
.
expY
),
0
!=
a
?
e
.
internal_flags
.
nsPsy
.
attackthre
=
l
.
st_lrm
:
0
<
Math
.
abs
(
e
.
internal_flags
.
nsPsy
.
attackthre
-
-
1
)
||
(
e
.
internal_flags
.
nsPsy
.
attackthre
=
l
.
st_lrm
),
0
!=
a
?
e
.
internal_flags
.
nsPsy
.
attackthre_s
=
l
.
st_s
:
0
<
Math
.
abs
(
e
.
internal_flags
.
nsPsy
.
attackthre_s
-
-
1
)
||
(
e
.
internal_flags
.
nsPsy
.
attackthre_s
=
l
.
st_s
),
0
!=
a
?
e
.
maskingadjust
=
l
.
masking_adj
:
0
<
Math
.
abs
(
e
.
maskingadjust
-
0
)
||
(
e
.
maskingadjust
=
l
.
masking_adj
),
0
!=
a
?
e
.
maskingadjust_short
=
l
.
masking_adj_short
:
0
<
Math
.
abs
(
e
.
maskingadjust_short
-
0
)
||
(
e
.
maskingadjust_short
=
l
.
masking_adj_short
),
0
!=
a
?
e
.
ATHlower
=-
l
.
ath_lower
/
10
:
0
<
Math
.
abs
(
10
*-
e
.
ATHlower
-
0
)
||
(
e
.
ATHlower
=-
l
.
ath_lower
/
10
),
0
!=
a
?
e
.
ATHcurve
=
l
.
ath_curve
:
0
<
Math
.
abs
(
e
.
ATHcurve
-
-
1
)
||
(
e
.
ATHcurve
=
l
.
ath_curve
),
0
!=
a
?
e
.
athaa_sensitivity
=
l
.
ath_sensitivity
:
0
<
Math
.
abs
(
e
.
athaa_sensitivity
-
-
1
)
||
(
e
.
athaa_sensitivity
=
l
.
ath_sensitivity
),
0
<
l
.
interch
&&
(
0
!=
a
?
e
.
interChRatio
=
l
.
interch
:
0
<
Math
.
abs
(
e
.
interChRatio
-
-
1
)
||
(
e
.
interChRatio
=
l
.
interch
)),
0
<
l
.
safejoint
&&
(
e
.
exp_nspsytune
=
e
.
exp_nspsytune
|
l
.
safejoint
),
0
<
l
.
sfb21mod
&&
(
e
.
exp_nspsytune
=
e
.
exp_nspsytune
|
l
.
sfb21mod
<<
20
),
0
!=
a
?
e
.
msfix
=
l
.
msfix
:
0
<
Math
.
abs
(
e
.
msfix
-
-
1
)
||
(
e
.
msfix
=
l
.
msfix
),
0
==
a
&&
(
e
.
VBR_q
=
t
,
e
.
VBR_q_frac
=
i
)}
var
_
=
[
new
t
(
8
,
9
,
9
,
0
,
0
,
6.6
,
145
,
0
,.
95
,
0
,
-
30
,
11
,.
0012
,
1
),
new
t
(
16
,
9
,
9
,
0
,
0
,
6.6
,
145
,
0
,.
95
,
0
,
-
25
,
11
,.
001
,
1
),
new
t
(
24
,
9
,
9
,
0
,
0
,
6.6
,
145
,
0
,.
95
,
0
,
-
20
,
11
,.
001
,
1
),
new
t
(
32
,
9
,
9
,
0
,
0
,
6.6
,
145
,
0
,.
95
,
0
,
-
15
,
11
,.
001
,
1
),
new
t
(
40
,
9
,
9
,
0
,
0
,
6.6
,
145
,
0
,.
95
,
0
,
-
10
,
11
,
9
e
-
4
,
1
),
new
t
(
48
,
9
,
9
,
0
,
0
,
6.6
,
145
,
0
,.
95
,
0
,
-
10
,
11
,
9
e
-
4
,
1
),
new
t
(
56
,
9
,
9
,
0
,
0
,
6.6
,
145
,
0
,.
95
,
0
,
-
6
,
11
,
8
e
-
4
,
1
),
new
t
(
64
,
9
,
9
,
0
,
0
,
6.6
,
145
,
0
,.
95
,
0
,
-
2
,
11
,
8
e
-
4
,
1
),
new
t
(
80
,
9
,
9
,
0
,
0
,
6.6
,
145
,
0
,.
95
,
0
,
0
,
8
,
7
e
-
4
,
1
),
new
t
(
96
,
9
,
9
,
0
,
2.5
,
6.6
,
145
,
0
,.
95
,
0
,
1
,
5.5
,
6
e
-
4
,
1
),
new
t
(
112
,
9
,
9
,
0
,
2.25
,
6.6
,
145
,
0
,.
95
,
0
,
2
,
4.5
,
5
e
-
4
,
1
),
new
t
(
128
,
9
,
9
,
0
,
1.95
,
6.4
,
140
,
0
,.
95
,
0
,
3
,
4
,
2
e
-
4
,
1
),
new
t
(
160
,
9
,
9
,
1
,
1.79
,
6
,
135
,
0
,.
95
,
-
2
,
5
,
3.5
,
0
,
1
),
new
t
(
192
,
9
,
9
,
1
,
1.49
,
5.6
,
125
,
0
,.
97
,
-
4
,
7
,
3
,
0
,
0
),
new
t
(
224
,
9
,
9
,
1
,
1.25
,
5.2
,
125
,
0
,.
98
,
-
6
,
9
,
2
,
0
,
0
),
new
t
(
256
,
9
,
9
,
1
,.
97
,
5.2
,
125
,
0
,
1
,
-
8
,
10
,
1
,
0
,
0
),
new
t
(
320
,
9
,
9
,
1
,.
9
,
5.2
,
125
,
0
,
1
,
-
10
,
12
,
0
,
0
,
0
)];
function
n
(
e
,
t
,
a
){
var
s
=
t
,
n
=
i
.
nearestBitrateFullIndex
(
t
);
if
(
e
.
VBR
=
ye
.
vbr_abr
,
e
.
VBR_mean_bitrate_kbps
=
s
,
e
.
VBR_mean_bitrate_kbps
=
Math
.
min
(
e
.
VBR_mean_bitrate_kbps
,
320
),
e
.
VBR_mean_bitrate_kbps
=
Math
.
max
(
e
.
VBR_mean_bitrate_kbps
,
8
),
e
.
brate
=
e
.
VBR_mean_bitrate_kbps
,
320
<
e
.
VBR_mean_bitrate_kbps
&&
(
e
.
disable_reservoir
=!
0
),
0
<
_
[
n
].
safejoint
&&
(
e
.
exp_nspsytune
=
2
|
e
.
exp_nspsytune
),
0
<
_
[
n
].
sfscale
&&
(
e
.
internal_flags
.
noise_shaping
=
2
),
0
<
Math
.
abs
(
_
[
n
].
nsbass
)){
var
r
=
int
(
4
*
_
[
n
].
nsbass
);
r
<
0
&&
(
r
+=
64
),
e
.
exp_nspsytune
=
e
.
exp_nspsytune
|
r
<<
2
}
return
0
!=
a
?
e
.
quant_comp
=
_
[
n
].
quant_comp
:
0
<
Math
.
abs
(
e
.
quant_comp
-
-
1
)
||
(
e
.
quant_comp
=
_
[
n
].
quant_comp
),
0
!=
a
?
e
.
quant_comp_short
=
_
[
n
].
quant_comp_s
:
0
<
Math
.
abs
(
e
.
quant_comp_short
-
-
1
)
||
(
e
.
quant_comp_short
=
_
[
n
].
quant_comp_s
),
0
!=
a
?
e
.
msfix
=
_
[
n
].
nsmsfix
:
0
<
Math
.
abs
(
e
.
msfix
-
-
1
)
||
(
e
.
msfix
=
_
[
n
].
nsmsfix
),
0
!=
a
?
e
.
internal_flags
.
nsPsy
.
attackthre
=
_
[
n
].
st_lrm
:
0
<
Math
.
abs
(
e
.
internal_flags
.
nsPsy
.
attackthre
-
-
1
)
||
(
e
.
internal_flags
.
nsPsy
.
attackthre
=
_
[
n
].
st_lrm
),
0
!=
a
?
e
.
internal_flags
.
nsPsy
.
attackthre_s
=
_
[
n
].
st_s
:
0
<
Math
.
abs
(
e
.
internal_flags
.
nsPsy
.
attackthre_s
-
-
1
)
||
(
e
.
internal_flags
.
nsPsy
.
attackthre_s
=
_
[
n
].
st_s
),
0
!=
a
?
e
.
scale
=
_
[
n
].
scale
:
0
<
Math
.
abs
(
e
.
scale
-
-
1
)
||
(
e
.
scale
=
_
[
n
].
scale
),
0
!=
a
?
e
.
maskingadjust
=
_
[
n
].
masking_adj
:
0
<
Math
.
abs
(
e
.
maskingadjust
-
0
)
||
(
e
.
maskingadjust
=
_
[
n
].
masking_adj
),
0
<
_
[
n
].
masking_adj
?
0
!=
a
?
e
.
maskingadjust_short
=
.
9
*
_
[
n
].
masking_adj
:
0
<
Math
.
abs
(
e
.
maskingadjust_short
-
0
)
||
(
e
.
maskingadjust_short
=
.
9
*
_
[
n
].
masking_adj
):
0
!=
a
?
e
.
maskingadjust_short
=
1.1
*
_
[
n
].
masking_adj
:
0
<
Math
.
abs
(
e
.
maskingadjust_short
-
0
)
||
(
e
.
maskingadjust_short
=
1.1
*
_
[
n
].
masking_adj
),
0
!=
a
?
e
.
ATHlower
=-
_
[
n
].
ath_lower
/
10
:
0
<
Math
.
abs
(
10
*-
e
.
ATHlower
-
0
)
||
(
e
.
ATHlower
=-
_
[
n
].
ath_lower
/
10
),
0
!=
a
?
e
.
ATHcurve
=
_
[
n
].
ath_curve
:
0
<
Math
.
abs
(
e
.
ATHcurve
-
-
1
)
||
(
e
.
ATHcurve
=
_
[
n
].
ath_curve
),
0
!=
a
?
e
.
interChRatio
=
_
[
n
].
interch
:
0
<
Math
.
abs
(
e
.
interChRatio
-
-
1
)
||
(
e
.
interChRatio
=
_
[
n
].
interch
),
t
}
this
.
apply_preset
=
function
(
e
,
t
,
a
){
switch
(
t
){
case
Q
.
R3MIX
:
t
=
Q
.
V3
,
e
.
VBR
=
ye
.
vbr_mtrh
;
break
;
case
Q
.
MEDIUM
:
t
=
Q
.
V4
,
e
.
VBR
=
ye
.
vbr_rh
;
break
;
case
Q
.
MEDIUM_FAST
:
t
=
Q
.
V4
,
e
.
VBR
=
ye
.
vbr_mtrh
;
break
;
case
Q
.
STANDARD
:
t
=
Q
.
V2
,
e
.
VBR
=
ye
.
vbr_rh
;
break
;
case
Q
.
STANDARD_FAST
:
t
=
Q
.
V2
,
e
.
VBR
=
ye
.
vbr_mtrh
;
break
;
case
Q
.
EXTREME
:
t
=
Q
.
V0
,
e
.
VBR
=
ye
.
vbr_rh
;
break
;
case
Q
.
EXTREME_FAST
:
t
=
Q
.
V0
,
e
.
VBR
=
ye
.
vbr_mtrh
;
break
;
case
Q
.
INSANE
:
return
t
=
320
,
e
.
preset
=
t
,
n
(
e
,
t
,
a
),
e
.
VBR
=
ye
.
vbr_off
,
t
}
switch
(
e
.
preset
=
t
){
case
Q
.
V9
:
return
s
(
e
,
9
,
a
),
t
;
case
Q
.
V8
:
return
s
(
e
,
8
,
a
),
t
;
case
Q
.
V7
:
return
s
(
e
,
7
,
a
),
t
;
case
Q
.
V6
:
return
s
(
e
,
6
,
a
),
t
;
case
Q
.
V5
:
return
s
(
e
,
5
,
a
),
t
;
case
Q
.
V4
:
return
s
(
e
,
4
,
a
),
t
;
case
Q
.
V3
:
return
s
(
e
,
3
,
a
),
t
;
case
Q
.
V2
:
return
s
(
e
,
2
,
a
),
t
;
case
Q
.
V1
:
return
s
(
e
,
1
,
a
),
t
;
case
Q
.
V0
:
return
s
(
e
,
0
,
a
),
t
}
return
8
<=
t
&&
t
<=
320
?
n
(
e
,
t
,
a
):(
e
.
preset
=
0
,
t
)}},
o
=
new
y
,
l
=
new
w
,
f
=
new
M
,
c
=
new
function
(){
this
.
getLameVersion
=
function
(){
return
"
3.98.4
"
},
this
.
getLameShortVersion
=
function
(){
return
"
3.98.4
"
},
this
.
getLameVeryShortVersion
=
function
(){
return
"
LAME3.98r
"
},
this
.
getPsyVersion
=
function
(){
return
"
0.93
"
},
this
.
getLameUrl
=
function
(){
return
"
http://www.mp3dev.org/
"
},
this
.
getLameOsBitness
=
function
(){
return
"
32bits
"
}},
h
=
new
function
(){
this
.
setModules
=
function
(
e
,
t
){}},
u
=
new
function
(){
var
o
;
this
.
setModules
=
function
(
e
){
o
=
e
},
this
.
ResvFrameBegin
=
function
(
e
,
t
){
var
a
,
s
=
e
.
internal_flags
,
n
=
s
.
l3_side
,
r
=
o
.
getframebits
(
e
);
t
.
bits
=
(
r
-
8
*
s
.
sideinfo_len
)
/
s
.
mode_gr
;
var
i
=
2048
*
s
.
mode_gr
-
8
;
320
<
e
.
brate
?
a
=
8
*
int
(
1
e3
*
e
.
brate
/
(
e
.
out_samplerate
/
1152
)
/
8
+
.
5
):(
a
=
11520
,
e
.
strict_ISO
&&
(
a
=
8
*
int
(
32
e4
/
(
e
.
out_samplerate
/
1152
)
/
8
+
.
5
))),
s
.
ResvMax
=
a
-
r
,
s
.
ResvMax
>
i
&&
(
s
.
ResvMax
=
i
),(
s
.
ResvMax
<
0
||
e
.
disable_reservoir
)
&&
(
s
.
ResvMax
=
0
);
var
_
=
t
.
bits
*
s
.
mode_gr
+
Math
.
min
(
s
.
ResvSize
,
s
.
ResvMax
);
return
a
<
_
&&
(
_
=
a
),
n
.
resvDrain_pre
=
0
,
null
!=
s
.
pinfo
&&
(
s
.
pinfo
.
mean_bits
=
t
.
bits
/
2
,
s
.
pinfo
.
resvsize
=
s
.
ResvSize
),
_
},
this
.
ResvMaxBits
=
function
(
e
,
t
,
a
,
s
){
var
n
,
r
=
e
.
internal_flags
,
i
=
r
.
ResvSize
,
_
=
r
.
ResvMax
;
0
!=
s
&&
(
i
+=
t
),
0
!=
(
1
&
r
.
substep_shaping
)
&&
(
_
*=
.
9
),
a
.
bits
=
t
,
9
*
_
<
10
*
i
?(
n
=
i
-
9
*
_
/
10
,
a
.
bits
+=
n
,
r
.
substep_shaping
|=
128
):(
n
=
0
,
r
.
substep_shaping
&=
127
,
e
.
disable_reservoir
||
0
!=
(
1
&
r
.
substep_shaping
)
||
(
a
.
bits
-=
.
1
*
t
));
var
o
=
i
<
6
*
r
.
ResvMax
/
10
?
i
:
6
*
r
.
ResvMax
/
10
;
return
(
o
-=
n
)
<
0
&&
(
o
=
0
),
o
},
this
.
ResvAdjust
=
function
(
e
,
t
){
e
.
ResvSize
-=
t
.
part2_3_length
+
t
.
part2_length
},
this
.
ResvFrameEnd
=
function
(
e
,
t
){
var
a
,
s
=
e
.
l3_side
;
e
.
ResvSize
+=
t
*
e
.
mode_gr
;
var
n
=
0
;
s
.
resvDrain_post
=
0
,(
s
.
resvDrain_pre
=
0
)
!=
(
a
=
e
.
ResvSize
%
8
)
&&
(
n
+=
a
),
0
<
(
a
=
e
.
ResvSize
-
n
-
e
.
ResvMax
)
&&
(
n
+=
a
);
var
r
=
Math
.
min
(
8
*
s
.
main_data_begin
,
n
)
/
8
;
s
.
resvDrain_pre
+=
8
*
r
,
n
-=
8
*
r
,
e
.
ResvSize
-=
8
*
r
,
s
.
main_data_begin
-=
r
,
s
.
resvDrain_post
+=
n
,
e
.
ResvSize
-=
n
}},
b
=
new
k
,
m
=
new
function
(){
this
.
setModules
=
function
(
e
,
t
,
a
){}},
p
=
new
function
(){};
n
.
setModules
(
r
,
i
,
_
,
o
,
l
,
f
,
c
,
h
,
p
),
i
.
setModules
(
r
,
p
,
c
,
f
),
h
.
setModules
(
i
,
c
),
_
.
setModules
(
n
),
l
.
setModules
(
i
,
u
,
o
,
b
),
o
.
setModules
(
b
,
u
,
n
.
enc
.
psy
),
u
.
setModules
(
i
),
b
.
setModules
(
o
),
f
.
setModules
(
n
,
i
,
c
),
a
.
setModules
(
m
,
p
),
m
.
setModules
(
c
,
h
,
_
);
var
v
=
n
.
lame_init
();
v
.
num_channels
=
s
,
v
.
in_samplerate
=
e
,
v
.
out_samplerate
=
e
,
v
.
brate
=
t
,
v
.
mode
=
Ee
.
STEREO
,
v
.
quality
=
3
,
v
.
bWriteVbrTag
=!
1
,
v
.
disable_reservoir
=!
0
,
v
.
write_id3tag_automatic
=!
1
,
n
.
lame_init_params
(
v
);
var
d
=
1152
,
g
=
0
|
1.25
*
d
+
7200
,
S
=
B
(
g
);
this
.
encodeBuffer
=
function
(
e
,
t
){
1
==
s
&&
(
t
=
e
),
e
.
length
>
d
&&
(
d
=
e
.
length
,
S
=
B
(
g
=
0
|
1.25
*
d
+
7200
));
var
a
=
n
.
lame_encode_buffer
(
v
,
e
,
t
,
e
.
length
,
S
,
0
,
g
);
return
new
Int8Array
(
S
.
subarray
(
0
,
a
))},
this
.
flush
=
function
(){
var
e
=
n
.
lame_encode_flush
(
v
,
S
,
0
,
g
);
return
new
Int8Array
(
S
.
subarray
(
0
,
e
))}}}
t
(),
Recorder
.
lamejs
=
t
}();
\ No newline at end of file
paddlespeech/server/tests/asr/online/web/static/js/recorder/engine/pcm.js
0 → 100644
浏览文件 @
1dc02c72
/*
录音
https://github.com/xiangyuecn/Recorder
src: engine/pcm.js
*/
!
function
(){
"
use strict
"
;
Recorder
.
prototype
.
enc_pcm
=
{
stable
:
!
0
,
testmsg
:
"
pcm为未封装的原始音频数据,pcm数据文件无法直接播放;支持位数8位、16位(填在比特率里面),采样率取值无限制
"
},
Recorder
.
prototype
.
pcm
=
function
(
e
,
t
,
r
){
var
a
=
this
.
set
,
n
=
e
.
length
,
o
=
8
==
a
.
bitRate
?
8
:
16
,
c
=
new
ArrayBuffer
(
n
*
(
o
/
8
)),
s
=
new
DataView
(
c
),
l
=
0
;
if
(
8
==
o
)
for
(
var
p
=
0
;
p
<
n
;
p
++
,
l
++
){
var
i
=
128
+
(
e
[
p
]
>>
8
);
s
.
setInt8
(
l
,
i
,
!
0
)}
else
for
(
p
=
0
;
p
<
n
;
p
++
,
l
+=
2
)
s
.
setInt16
(
l
,
e
[
p
],
!
0
);
t
(
new
Blob
([
s
.
buffer
],{
type
:
"
audio/pcm
"
}))},
Recorder
.
pcm2wav
=
function
(
e
,
a
,
n
){
e
.
slice
&&
null
!=
e
.
type
&&
(
e
=
{
blob
:
e
});
var
o
=
e
.
sampleRate
||
16
e3
,
c
=
e
.
bitRate
||
16
;
if
(
e
.
sampleRate
&&
e
.
bitRate
||
console
.
warn
(
"
pcm2wav必须提供sampleRate和bitRate
"
),
Recorder
.
prototype
.
wav
){
var
s
=
new
FileReader
;
s
.
onloadend
=
function
(){
var
e
;
if
(
8
==
c
){
var
t
=
new
Uint8Array
(
s
.
result
);
e
=
new
Int16Array
(
t
.
length
);
for
(
var
r
=
0
;
r
<
t
.
length
;
r
++
)
e
[
r
]
=
t
[
r
]
-
128
<<
8
}
else
e
=
new
Int16Array
(
s
.
result
);
Recorder
({
type
:
"
wav
"
,
sampleRate
:
o
,
bitRate
:
c
}).
mock
(
e
,
o
).
stop
(
function
(
e
,
t
){
a
(
e
,
t
)},
n
)},
s
.
readAsArrayBuffer
(
e
.
blob
)}
else
n
(
"
pcm2wav必须先加载wav编码器wav.js
"
)}}();
\ No newline at end of file
paddlespeech/server/tests/asr/online/web/static/js/recorder/engine/wav.js
0 → 100644
浏览文件 @
1dc02c72
/*
录音
https://github.com/xiangyuecn/Recorder
src: engine/wav.js
*/
!
function
(){
"
use strict
"
;
Recorder
.
prototype
.
enc_wav
=
{
stable
:
!
0
,
testmsg
:
"
支持位数8位、16位(填在比特率里面),采样率取值无限制
"
},
Recorder
.
prototype
.
wav
=
function
(
t
,
e
,
n
){
var
r
=
this
.
set
,
a
=
t
.
length
,
o
=
r
.
sampleRate
,
f
=
8
==
r
.
bitRate
?
8
:
16
,
i
=
a
*
(
f
/
8
),
s
=
new
ArrayBuffer
(
44
+
i
),
c
=
new
DataView
(
s
),
u
=
0
,
v
=
function
(
t
){
for
(
var
e
=
0
;
e
<
t
.
length
;
e
++
,
u
++
)
c
.
setUint8
(
u
,
t
.
charCodeAt
(
e
))},
w
=
function
(
t
){
c
.
setUint16
(
u
,
t
,
!
0
),
u
+=
2
},
l
=
function
(
t
){
c
.
setUint32
(
u
,
t
,
!
0
),
u
+=
4
};
if
(
v
(
"
RIFF
"
),
l
(
36
+
i
),
v
(
"
WAVE
"
),
v
(
"
fmt
"
),
l
(
16
),
w
(
1
),
w
(
1
),
l
(
o
),
l
(
o
*
(
f
/
8
)),
w
(
f
/
8
),
w
(
f
),
v
(
"
data
"
),
l
(
i
),
8
==
f
)
for
(
var
p
=
0
;
p
<
a
;
p
++
,
u
++
){
var
d
=
128
+
(
t
[
p
]
>>
8
);
c
.
setInt8
(
u
,
d
,
!
0
)}
else
for
(
p
=
0
;
p
<
a
;
p
++
,
u
+=
2
)
c
.
setInt16
(
u
,
t
[
p
],
!
0
);
e
(
new
Blob
([
c
.
buffer
],{
type
:
"
audio/wav
"
}))}}();
\ No newline at end of file
paddlespeech/server/tests/asr/online/web/static/js/recorder/extensions/frequency.histogram.view.js
0 → 100644
浏览文件 @
1dc02c72
/*
录音
https://github.com/xiangyuecn/Recorder
src: extensions/frequency.histogram.view.js
*/
!
function
(){
"
use strict
"
;
var
t
=
function
(
t
){
return
new
e
(
t
)},
e
=
function
(
t
){
var
e
=
this
,
r
=
{
scale
:
2
,
fps
:
20
,
lineCount
:
30
,
widthRatio
:.
6
,
spaceWidth
:
0
,
minHeight
:
0
,
position
:
-
1
,
mirrorEnable
:
!
1
,
stripeEnable
:
!
0
,
stripeHeight
:
3
,
stripeMargin
:
6
,
fallDuration
:
1
e3
,
stripeFallDuration
:
3500
,
linear
:[
0
,
"
rgba(0,187,17,1)
"
,.
5
,
"
rgba(255,215,0,1)
"
,
1
,
"
rgba(255,102,0,1)
"
],
stripeLinear
:
null
,
shadowBlur
:
0
,
shadowColor
:
"
#bbb
"
,
stripeShadowBlur
:
-
1
,
stripeShadowColor
:
""
,
onDraw
:
function
(
t
,
e
){}};
for
(
var
a
in
t
)
r
[
a
]
=
t
[
a
];
e
.
set
=
t
=
r
;
var
i
=
t
.
elem
;
i
&&
(
"
string
"
==
typeof
i
?
i
=
document
.
querySelector
(
i
):
i
.
length
&&
(
i
=
i
[
0
])),
i
&&
(
t
.
width
=
i
.
offsetWidth
,
t
.
height
=
i
.
offsetHeight
);
var
o
=
t
.
scale
,
l
=
t
.
width
*
o
,
n
=
t
.
height
*
o
,
h
=
e
.
elem
=
document
.
createElement
(
"
div
"
),
s
=
[
""
,
"
transform-origin:0 0;
"
,
"
transform:scale(
"
+
1
/
o
+
"
);
"
];
h
.
innerHTML
=
'
<div style="width:
'
+
t
.
width
+
"
px;height:
"
+
t
.
height
+
'
px;overflow:hidden"><div style="width:
'
+
l
+
"
px;height:
"
+
n
+
"
px;
"
+
s
.
join
(
"
-webkit-
"
)
+
s
.
join
(
"
-ms-
"
)
+
s
.
join
(
"
-moz-
"
)
+
s
.
join
(
""
)
+
'
"><canvas/></div></div>
'
;
var
f
=
e
.
canvas
=
h
.
querySelector
(
"
canvas
"
);
e
.
ctx
=
f
.
getContext
(
"
2d
"
);
if
(
f
.
width
=
l
,
f
.
height
=
n
,
i
&&
(
i
.
innerHTML
=
""
,
i
.
appendChild
(
h
)),
!
Recorder
.
LibFFT
)
throw
new
Error
(
"
需要lib.fft.js支持
"
);
e
.
fft
=
Recorder
.
LibFFT
(
1024
),
e
.
lastH
=
[],
e
.
stripesH
=
[]};
e
.
prototype
=
t
.
prototype
=
{
genLinear
:
function
(
t
,
e
,
r
,
a
){
for
(
var
i
=
t
.
createLinearGradient
(
0
,
r
,
0
,
a
),
o
=
0
;
o
<
e
.
length
;)
i
.
addColorStop
(
e
[
o
++
],
e
[
o
++
]);
return
i
},
input
:
function
(
t
,
e
,
r
){
var
a
=
this
;
a
.
sampleRate
=
r
,
a
.
pcmData
=
t
,
a
.
pcmPos
=
0
,
a
.
inputTime
=
Date
.
now
(),
a
.
schedule
()},
schedule
:
function
(){
var
t
=
this
,
e
=
t
.
set
,
r
=
Math
.
floor
(
1
e3
/
e
.
fps
);
t
.
timer
||
(
t
.
timer
=
setInterval
(
function
(){
t
.
schedule
()},
r
));
var
a
=
Date
.
now
(),
i
=
t
.
drawTime
||
0
;
if
(
a
-
t
.
inputTime
>
1.3
*
e
.
stripeFallDuration
)
return
clearInterval
(
t
.
timer
),
void
(
t
.
timer
=
0
);
if
(
!
(
a
-
i
<
r
)){
t
.
drawTime
=
a
;
for
(
var
o
=
t
.
fft
.
bufferSize
,
l
=
t
.
pcmData
,
n
=
t
.
pcmPos
,
h
=
new
Int16Array
(
o
),
s
=
0
;
s
<
o
&&
n
<
l
.
length
;
s
++
,
n
++
)
h
[
s
]
=
l
[
n
];
t
.
pcmPos
=
n
;
var
f
=
t
.
fft
.
transform
(
h
);
t
.
draw
(
f
,
t
.
sampleRate
)}},
draw
:
function
(
t
,
e
){
var
r
=
this
,
a
=
r
.
set
,
i
=
r
.
ctx
,
o
=
a
.
scale
,
l
=
a
.
width
*
o
,
n
=
a
.
height
*
o
,
h
=
a
.
lineCount
,
s
=
r
.
fft
.
bufferSize
,
f
=
a
.
position
,
d
=
Math
.
abs
(
a
.
position
),
c
=
1
==
f
?
0
:
n
,
p
=
n
;
d
<
1
&&
(
c
=
p
/=
2
,
p
=
Math
.
floor
(
p
*
(
1
+
d
)),
c
=
Math
.
floor
(
0
<
f
?
c
*
(
1
-
d
):
c
*
(
1
+
d
)));
for
(
var
u
=
r
.
lastH
,
v
=
r
.
stripesH
,
w
=
Math
.
ceil
(
p
/
(
a
.
fallDuration
/
(
1
e3
/
a
.
fps
))),
g
=
Math
.
ceil
(
p
/
(
a
.
stripeFallDuration
/
(
1
e3
/
a
.
fps
))),
m
=
a
.
stripeMargin
*
o
,
M
=
1
<<
(
Math
.
round
(
Math
.
log
(
s
)
/
Math
.
log
(
2
)
+
3
)
<<
1
),
b
=
Math
.
log
(
M
)
/
Math
.
log
(
10
),
L
=
20
*
Math
.
log
(
32767
)
/
Math
.
log
(
10
),
y
=
s
/
2
,
S
=
Math
.
min
(
y
,
Math
.
floor
(
5
e3
*
y
/
(
e
/
2
))),
C
=
S
==
y
,
H
=
C
?
h
:
Math
.
round
(.
8
*
h
),
R
=
S
/
H
,
D
=
C
?
0
:(
y
-
S
)
/
(
h
-
H
),
x
=
0
,
F
=
0
;
F
<
h
;
F
++
){
var
T
=
Math
.
ceil
(
x
);
x
+=
F
<
H
?
R
:
D
;
for
(
var
B
=
Math
.
min
(
Math
.
ceil
(
x
),
y
),
E
=
0
,
j
=
T
;
j
<
B
;
j
++
)
E
=
Math
.
max
(
E
,
Math
.
abs
(
t
[
j
]));
var
I
=
M
<
E
?
Math
.
floor
(
17
*
(
Math
.
log
(
E
)
/
Math
.
log
(
10
)
-
b
)):
0
,
q
=
p
*
Math
.
min
(
I
/
L
,
1
);
u
[
F
]
=
(
u
[
F
]
||
0
)
-
w
,
q
<
u
[
F
]
&&
(
q
=
u
[
F
]),
q
<
0
&&
(
q
=
0
),
u
[
F
]
=
q
;
var
z
=
v
[
F
]
||
0
;
if
(
q
&&
z
<
q
+
m
)
v
[
F
]
=
q
+
m
;
else
{
var
P
=
z
-
g
;
P
<
0
&&
(
P
=
0
),
v
[
F
]
=
P
}}
i
.
clearRect
(
0
,
0
,
l
,
n
);
var
W
=
r
.
genLinear
(
i
,
a
.
linear
,
c
,
c
-
p
),
k
=
a
.
stripeLinear
&&
r
.
genLinear
(
i
,
a
.
stripeLinear
,
c
,
c
-
p
)
||
W
,
A
=
r
.
genLinear
(
i
,
a
.
linear
,
c
,
c
+
p
),
G
=
a
.
stripeLinear
&&
r
.
genLinear
(
i
,
a
.
stripeLinear
,
c
,
c
+
p
)
||
A
;
i
.
shadowBlur
=
a
.
shadowBlur
*
o
,
i
.
shadowColor
=
a
.
shadowColor
;
var
V
=
a
.
mirrorEnable
,
J
=
V
?
2
*
h
-
1
:
h
,
K
=
a
.
widthRatio
,
N
=
a
.
spaceWidth
*
o
;
0
!=
N
&&
(
K
=
(
l
-
N
*
(
J
+
1
))
/
l
);
for
(
var
O
=
Math
.
max
(
1
*
o
,
Math
.
floor
(
l
*
K
/
J
)),
Q
=
(
l
-
J
*
O
)
/
(
J
+
1
),
U
=
a
.
minHeight
*
o
,
X
=
V
?
l
/
2
-
(
Q
+
O
/
2
):
0
,
Y
=
(
F
=
0
,
X
);
F
<
h
;
F
++
)
Y
+=
Q
,
$
=
Math
.
floor
(
Y
),
q
=
Math
.
max
(
u
[
F
],
U
),
0
!=
c
&&
(
_
=
c
-
q
,
i
.
fillStyle
=
W
,
i
.
fillRect
(
$
,
_
,
O
,
q
)),
c
!=
n
&&
(
i
.
fillStyle
=
A
,
i
.
fillRect
(
$
,
c
,
O
,
q
)),
Y
+=
O
;
if
(
a
.
stripeEnable
){
var
Z
=
a
.
stripeShadowBlur
;
i
.
shadowBlur
=
(
-
1
==
Z
?
a
.
shadowBlur
:
Z
)
*
o
,
i
.
shadowColor
=
a
.
stripeShadowColor
||
a
.
shadowColor
;
var
$
,
_
,
tt
=
a
.
stripeHeight
*
o
;
for
(
F
=
0
,
Y
=
X
;
F
<
h
;
F
++
)
Y
+=
Q
,
$
=
Math
.
floor
(
Y
),
q
=
v
[
F
],
0
!=
c
&&
((
_
=
c
-
q
-
tt
)
<
0
&&
(
_
=
0
),
i
.
fillStyle
=
k
,
i
.
fillRect
(
$
,
_
,
O
,
tt
)),
c
!=
n
&&
(
n
<
(
_
=
c
+
q
)
+
tt
&&
(
_
=
n
-
tt
),
i
.
fillStyle
=
G
,
i
.
fillRect
(
$
,
_
,
O
,
tt
)),
Y
+=
O
}
if
(
V
){
var
et
=
Math
.
floor
(
l
/
2
);
i
.
save
(),
i
.
scale
(
-
1
,
1
),
i
.
drawImage
(
r
.
canvas
,
Math
.
ceil
(
l
/
2
),
0
,
et
,
n
,
-
et
,
0
,
et
,
n
),
i
.
restore
()}
a
.
onDraw
(
t
,
e
)}},
Recorder
.
FrequencyHistogramView
=
t
}();
\ No newline at end of file
paddlespeech/server/tests/asr/online/web/static/js/recorder/extensions/lib.fft.js
0 → 100644
浏览文件 @
1dc02c72
/*
录音
https://github.com/xiangyuecn/Recorder
src: extensions/lib.fft.js
*/
Recorder
.
LibFFT
=
function
(
r
){
"
use strict
"
;
var
s
,
v
,
d
,
l
,
F
,
b
,
g
,
m
;
return
function
(
r
){
var
o
,
t
,
a
,
f
;
for
(
s
=
Math
.
round
(
Math
.
log
(
r
)
/
Math
.
log
(
2
)),
d
=
((
v
=
1
<<
s
)
<<
2
)
*
Math
.
sqrt
(
2
),
l
=
[],
F
=
[],
b
=
[
0
],
g
=
[
0
],
m
=
[],
o
=
0
;
o
<
v
;
o
++
){
for
(
a
=
o
,
f
=
t
=
0
;
t
!=
s
;
t
++
)
f
<<=
1
,
f
|=
1
&
a
,
a
>>>=
1
;
m
[
o
]
=
f
}
var
n
,
u
=
2
*
Math
.
PI
/
v
;
for
(
o
=
(
v
>>
1
)
-
1
;
0
<
o
;
o
--
)
n
=
o
*
u
,
g
[
o
]
=
Math
.
cos
(
n
),
b
[
o
]
=
Math
.
sin
(
n
)}(
r
),{
transform
:
function
(
r
){
var
o
,
t
,
a
,
f
,
n
,
u
,
e
,
h
,
M
=
1
,
i
=
s
-
1
;
for
(
o
=
0
;
o
!=
v
;
o
++
)
l
[
o
]
=
r
[
m
[
o
]],
F
[
o
]
=
0
;
for
(
o
=
s
;
0
!=
o
;
o
--
){
for
(
t
=
0
;
t
!=
M
;
t
++
)
for
(
n
=
g
[
t
<<
i
],
u
=
b
[
t
<<
i
],
a
=
t
;
a
<
v
;
a
+=
M
<<
1
)
e
=
n
*
l
[
f
=
a
+
M
]
-
u
*
F
[
f
],
h
=
n
*
F
[
f
]
+
u
*
l
[
f
],
l
[
f
]
=
l
[
a
]
-
e
,
F
[
f
]
=
F
[
a
]
-
h
,
l
[
a
]
+=
e
,
F
[
a
]
+=
h
;
M
<<=
1
,
i
--
}
t
=
v
>>
1
;
var
c
=
new
Float64Array
(
t
);
for
(
n
=-
(
u
=
d
),
o
=
t
;
0
!=
o
;
o
--
)
e
=
l
[
o
],
h
=
F
[
o
],
c
[
o
-
1
]
=
n
<
e
&&
e
<
u
&&
n
<
h
&&
h
<
u
?
0
:
Math
.
round
(
e
*
e
+
h
*
h
);
return
c
},
bufferSize
:
v
}};
\ No newline at end of file
paddlespeech/server/tests/asr/online/web/static/js/recorder/recorder-core.js
0 → 100644
浏览文件 @
1dc02c72
/*
录音
https://github.com/xiangyuecn/Recorder
src: recorder-core.js
*/
!
function
(
y
){
"
use strict
"
;
var
h
=
function
(){},
A
=
function
(
e
){
return
new
t
(
e
)};
A
.
IsOpen
=
function
(){
var
e
=
A
.
Stream
;
if
(
e
){
var
t
=
e
.
getTracks
&&
e
.
getTracks
()
||
e
.
audioTracks
||
[],
n
=
t
[
0
];
if
(
n
){
var
r
=
n
.
readyState
;
return
"
live
"
==
r
||
r
==
n
.
LIVE
}}
return
!
1
},
A
.
BufferSize
=
4096
,
A
.
Destroy
=
function
(){
for
(
var
e
in
M
(
"
Recorder Destroy
"
),
g
(),
n
)
n
[
e
]()};
var
n
=
{};
A
.
BindDestroy
=
function
(
e
,
t
){
n
[
e
]
=
t
},
A
.
Support
=
function
(){
var
e
=
y
.
AudioContext
;
if
(
e
||
(
e
=
y
.
webkitAudioContext
),
!
e
)
return
!
1
;
var
t
=
navigator
.
mediaDevices
||
{};
return
t
.
getUserMedia
||
(
t
=
navigator
).
getUserMedia
||
(
t
.
getUserMedia
=
t
.
webkitGetUserMedia
||
t
.
mozGetUserMedia
||
t
.
msGetUserMedia
),
!!
t
.
getUserMedia
&&
(
A
.
Scope
=
t
,
A
.
Ctx
&&
"
closed
"
!=
A
.
Ctx
.
state
||
(
A
.
Ctx
=
new
e
,
A
.
BindDestroy
(
"
Ctx
"
,
function
(){
var
e
=
A
.
Ctx
;
e
&&
e
.
close
&&
(
e
.
close
(),
A
.
Ctx
=
0
)})),
!
0
)};
var
k
=
"
ConnectEnableWorklet
"
;
A
[
k
]
=!
1
;
var
d
=
function
(
e
){
var
t
=
(
e
=
e
||
A
).
BufferSize
||
A
.
BufferSize
,
r
=
A
.
Ctx
,
n
=
e
.
Stream
,
a
=
n
.
_m
=
r
.
createMediaStreamSource
(
n
),
u
=
n
.
_call
,
o
=
function
(
e
,
t
){
if
(
!
t
||
h
)
for
(
var
n
in
u
){
for
(
var
r
=
t
||
e
.
inputBuffer
.
getChannelData
(
0
),
a
=
r
.
length
,
o
=
new
Int16Array
(
a
),
s
=
0
,
i
=
0
;
i
<
a
;
i
++
){
var
c
=
Math
.
max
(
-
1
,
Math
.
min
(
1
,
r
[
i
]));
c
=
c
<
0
?
32768
*
c
:
32767
*
c
,
o
[
i
]
=
c
,
s
+=
Math
.
abs
(
c
)}
for
(
var
f
in
u
)
u
[
f
](
o
,
s
);
return
}
else
M
(
l
+
"
多余回调
"
,
3
)},
s
=
"
ScriptProcessor
"
,
l
=
"
audioWorklet
"
,
i
=
"
Recorder
"
,
c
=
i
+
"
"
+
l
,
f
=
"
RecProc
"
,
p
=
r
.
createScriptProcessor
||
r
.
createJavaScriptNode
,
v
=
"
。由于
"
+
l
+
"
内部1秒375次回调,在移动端可能会有性能问题导致回调丢失录音变短,PC端无影响,暂不建议开启
"
+
l
+
"
。
"
,
m
=
function
(){
h
=
n
.
isWorklet
=!
1
,
I
(
n
),
M
(
"
Connect采用老的
"
+
s
+
"
,
"
+
(
A
[
k
]?
"
但已
"
:
"
可
"
)
+
"
设置
"
+
i
+
"
.
"
+
k
+
"
=true尝试启用
"
+
l
+
v
,
3
);
var
e
=
n
.
_p
=
p
.
call
(
r
,
t
,
1
,
1
);
a
.
connect
(
e
),
e
.
connect
(
r
.
destination
),
e
.
onaudioprocess
=
function
(
e
){
o
(
e
)}},
h
=
n
.
isWorklet
=!
p
||
A
[
k
],
d
=
y
.
AudioWorkletNode
;
if
(
h
&&
r
[
l
]
&&
d
){
var
g
,
S
=
function
(){
return
h
&&
n
.
_na
},
_
=
n
.
_na
=
function
(){
""
!==
g
&&
(
clearTimeout
(
g
),
g
=
setTimeout
(
function
(){
g
=
0
,
M
(
l
+
"
未返回任何音频,恢复使用
"
+
s
,
3
),
S
()
&&
p
&&
m
()},
500
))},
C
=
function
(){
if
(
S
()){
var
e
=
n
.
_n
=
new
d
(
r
,
f
,{
processorOptions
:{
bufferSize
:
t
}});
a
.
connect
(
e
),
e
.
connect
(
r
.
destination
),
e
.
port
.
onmessage
=
function
(
e
){
g
&&
(
clearTimeout
(
g
),
g
=
""
),
o
(
0
,
e
.
data
.
val
)},
M
(
"
Connect采用
"
+
l
+
"
方式,设置
"
+
i
+
"
.
"
+
k
+
"
=false可恢复老式
"
+
s
+
v
,
3
)}};
r
.
resume
()[
u
&&
"
finally
"
](
function
(){
if
(
S
())
if
(
r
[
f
])
C
();
else
{
var
e
,
t
,
n
=
(
t
=
"
class
"
+
f
+
"
extends AudioWorkletProcessor{
"
,
t
+=
"
constructor
"
+
(
e
=
function
(
e
){
return
e
.
toString
().
replace
(
/^function|DEL_/g
,
""
).
replace
(
/
\$
RA/g
,
c
)})(
function
(
e
){
DEL_super
(
e
);
var
t
=
this
,
n
=
e
.
processorOptions
.
bufferSize
;
t
.
bufferSize
=
n
,
t
.
buffer
=
new
Float32Array
(
2
*
n
),
t
.
pos
=
0
,
t
.
port
.
onmessage
=
function
(
e
){
e
.
data
.
kill
&&
(
t
.
kill
=!
0
,
console
.
log
(
"
$RA kill call
"
))},
console
.
log
(
"
$RA .ctor call
"
,
e
)}),
t
+=
"
process
"
+
e
(
function
(
e
,
t
,
n
){
var
r
=
this
,
a
=
r
.
bufferSize
,
o
=
r
.
buffer
,
s
=
r
.
pos
;
if
((
e
=
(
e
[
0
]
||
[])[
0
]
||
[]).
length
){
o
.
set
(
e
,
s
);
var
i
=~~
((
s
+=
e
.
length
)
/
a
)
*
a
;
if
(
i
){
this
.
port
.
postMessage
({
val
:
o
.
slice
(
0
,
i
)});
var
c
=
o
.
subarray
(
i
,
s
);(
o
=
new
Float32Array
(
2
*
a
)).
set
(
c
),
s
=
c
.
length
,
r
.
buffer
=
o
}
r
.
pos
=
s
}
return
!
r
.
kill
}),
t
+=
'
}try{registerProcessor("
'
+
f
+
'
",
'
+
f
+
'
)}catch(e){console.error("
'
+
c
+
'
注册失败",e)}
'
,
"
data:text/javascript;base64,
"
+
btoa
(
unescape
(
encodeURIComponent
(
t
))));
r
[
l
].
addModule
(
n
).
then
(
function
(
e
){
S
()
&&
(
r
[
f
]
=
1
,
C
(),
g
&&
_
())})[
u
&&
"
catch
"
](
function
(
e
){
M
(
l
+
"
.addModule失败
"
,
1
,
e
),
S
()
&&
m
()})}})}
else
m
()},
I
=
function
(
e
){
e
.
_na
=
null
,
e
.
_n
&&
(
e
.
_n
.
port
.
postMessage
({
kill
:
!
0
}),
e
.
_n
.
disconnect
(),
e
.
_n
=
null
)},
g
=
function
(
e
){
var
t
=
(
e
=
e
||
A
)
==
A
,
n
=
e
.
Stream
;
if
(
n
&&
(
n
.
_m
&&
(
n
.
_m
.
disconnect
(),
n
.
_m
=
null
),
n
.
_p
&&
(
n
.
_p
.
disconnect
(),
n
.
_p
.
onaudioprocess
=
n
.
_p
=
null
),
I
(
n
),
t
)){
for
(
var
r
=
n
.
getTracks
&&
n
.
getTracks
()
||
n
.
audioTracks
||
[],
a
=
0
;
a
<
r
.
length
;
a
++
){
var
o
=
r
[
a
];
o
.
stop
&&
o
.
stop
()}
n
.
stop
&&
n
.
stop
()}
e
.
Stream
=
0
};
A
.
SampleData
=
function
(
e
,
t
,
n
,
r
,
a
){
r
||
(
r
=
{});
var
o
=
r
.
index
||
0
,
s
=
r
.
offset
||
0
,
i
=
r
.
frameNext
||
[];
a
||
(
a
=
{});
var
c
=
a
.
frameSize
||
1
;
a
.
frameType
&&
(
c
=
"
mp3
"
==
a
.
frameType
?
1152
:
1
);
for
(
var
f
=
0
,
u
=
o
;
u
<
e
.
length
;
u
++
)
f
+=
e
[
u
].
length
;
f
=
Math
.
max
(
0
,
f
-
Math
.
floor
(
s
));
var
l
=
t
/
n
;
1
<
l
?
f
=
Math
.
floor
(
f
/
l
):(
l
=
1
,
n
=
t
),
f
+=
i
.
length
;
for
(
var
p
=
new
Int16Array
(
f
),
v
=
0
,
u
=
0
;
u
<
i
.
length
;
u
++
)
p
[
v
]
=
i
[
u
],
v
++
;
for
(
var
m
=
e
.
length
;
o
<
m
;
o
++
){
for
(
var
h
=
e
[
o
],
u
=
s
,
d
=
h
.
length
;
u
<
d
;){
var
g
=
Math
.
floor
(
u
),
S
=
Math
.
ceil
(
u
),
_
=
u
-
g
,
C
=
h
[
g
],
y
=
S
<
d
?
h
[
S
]:(
e
[
o
+
1
]
||
[
C
])[
0
]
||
0
;
p
[
v
]
=
C
+
(
y
-
C
)
*
_
,
v
++
,
u
+=
l
}
s
=
u
-
d
}
i
=
null
;
var
k
=
p
.
length
%
c
;
if
(
0
<
k
){
var
I
=
2
*
(
p
.
length
-
k
);
i
=
new
Int16Array
(
p
.
buffer
.
slice
(
I
)),
p
=
new
Int16Array
(
p
.
buffer
.
slice
(
0
,
I
))}
return
{
index
:
o
,
offset
:
s
,
frameNext
:
i
,
sampleRate
:
n
,
data
:
p
}},
A
.
PowerLevel
=
function
(
e
,
t
){
var
n
=
e
/
t
||
0
;
return
n
<
1251
?
Math
.
round
(
n
/
1250
*
10
):
Math
.
round
(
Math
.
min
(
100
,
Math
.
max
(
0
,
100
*
(
1
+
Math
.
log
(
n
/
1
e4
)
/
Math
.
log
(
10
)))))};
var
M
=
function
(
e
,
t
){
var
n
=
new
Date
,
r
=
(
"
0
"
+
n
.
getMinutes
()).
substr
(
-
2
)
+
"
:
"
+
(
"
0
"
+
n
.
getSeconds
()).
substr
(
-
2
)
+
"
.
"
+
(
"
00
"
+
n
.
getMilliseconds
()).
substr
(
-
3
),
a
=
this
&&
this
.
envIn
&&
this
.
envCheck
&&
this
.
id
,
o
=
[
"
[
"
+
r
+
"
Recorder
"
+
(
a
?
"
:
"
+
a
:
""
)
+
"
]
"
+
e
],
s
=
arguments
,
i
=
y
.
console
||
{},
c
=
2
,
f
=
i
.
log
;
for
(
"
number
"
==
typeof
t
?
f
=
1
==
t
?
i
.
error
:
3
==
t
?
i
.
warn
:
f
:
c
=
1
;
c
<
s
.
length
;
c
++
)
o
.
push
(
s
[
c
]);
u
?
f
&&
f
(
"
[IsLoser]
"
+
o
[
0
],
1
<
o
.
length
?
o
:
""
):
f
.
apply
(
i
,
o
)},
u
=!
0
;
try
{
u
=!
console
.
log
.
apply
}
catch
(
e
){}
A
.
CLog
=
M
;
var
r
=
0
;
function
t
(
e
){
this
.
id
=++
r
,
A
.
Traffic
&&
A
.
Traffic
();
var
t
=
{
type
:
"
mp3
"
,
bitRate
:
16
,
sampleRate
:
16
e3
,
onProcess
:
h
};
for
(
var
n
in
e
)
t
[
n
]
=
e
[
n
];
this
.
set
=
t
,
this
.
_S
=
9
,
this
.
Sync
=
{
O
:
9
,
C
:
9
}}
A
.
Sync
=
{
O
:
9
,
C
:
9
},
A
.
prototype
=
t
.
prototype
=
{
CLog
:
M
,
_streamStore
:
function
(){
return
this
.
set
.
sourceStream
?
this
:
A
},
open
:
function
(
e
,
n
){
var
r
=
this
,
t
=
r
.
_streamStore
();
e
=
e
||
h
;
var
a
=
function
(
e
,
t
){
t
=!!
t
,
r
.
CLog
(
"
录音open失败:
"
+
e
+
"
,isUserNotAllow:
"
+
t
,
1
),
n
&&
n
(
e
,
t
)},
o
=
function
(){
r
.
CLog
(
"
open ok id:
"
+
r
.
id
),
e
(),
r
.
_SO
=
0
},
s
=
t
.
Sync
,
i
=++
s
.
O
,
c
=
s
.
C
;
r
.
_O
=
r
.
_O_
=
i
,
r
.
_SO
=
r
.
_S
;
var
f
=
function
(){
if
(
c
!=
s
.
C
||!
r
.
_O
){
var
e
=
"
open被取消
"
;
return
i
==
s
.
O
?
r
.
close
():
e
=
"
open被中断
"
,
a
(
e
),
!
0
}},
u
=
r
.
envCheck
({
envName
:
"
H5
"
,
canProcess
:
!
0
});
if
(
u
)
a
(
"
不能录音:
"
+
u
);
else
if
(
r
.
set
.
sourceStream
){
if
(
!
A
.
Support
())
return
void
a
(
"
不支持此浏览器从流中获取录音
"
);
g
(
t
),
r
.
Stream
=
r
.
set
.
sourceStream
,
r
.
Stream
.
_call
=
{};
try
{
d
(
t
)}
catch
(
e
){
return
void
a
(
"
从流中打开录音失败:
"
+
e
.
message
)}
o
()}
else
{
var
l
=
function
(
e
,
t
){
try
{
y
.
top
.
a
}
catch
(
e
){
return
void
a
(
'
无权录音(跨域,请尝试给iframe添加麦克风访问策略,如allow="camera;microphone")
'
)}
/Permission|Allow/i
.
test
(
e
)?
a
(
"
用户拒绝了录音权限
"
,
!
0
):
!
1
===
y
.
isSecureContext
?
a
(
"
无权录音(需https)
"
):
/Found/i
.
test
(
e
)?
a
(
t
+
"
,无可用麦克风
"
):
a
(
t
)};
if
(
A
.
IsOpen
())
o
();
else
if
(
A
.
Support
()){
var
p
=
function
(
e
){(
A
.
Stream
=
e
).
_call
=
{},
f
()
||
setTimeout
(
function
(){
f
()
||
(
A
.
IsOpen
()?(
d
(),
o
()):
a
(
"
录音功能无效:无音频流
"
))},
100
)},
v
=
function
(
e
){
var
t
=
e
.
name
||
e
.
message
||
e
.
code
+
"
:
"
+
e
;
r
.
CLog
(
"
请求录音权限错误
"
,
1
,
e
),
l
(
t
,
"
无法录音:
"
+
t
)},
m
=
A
.
Scope
.
getUserMedia
({
audio
:
r
.
set
.
audioTrackSet
||!
0
},
p
,
v
);
m
&&
m
.
then
&&
m
.
then
(
p
)[
e
&&
"
catch
"
](
v
)}
else
l
(
""
,
"
此浏览器不支持录音
"
)}},
close
:
function
(
e
){
e
=
e
||
h
;
var
t
=
this
,
n
=
t
.
_streamStore
();
t
.
_stop
();
var
r
=
n
.
Sync
;
if
(
t
.
_O
=
0
,
t
.
_O_
!=
r
.
O
)
return
t
.
CLog
(
"
close被忽略(因为同时open了多个rec,只有最后一个会真正close)
"
,
3
),
void
e
();
r
.
C
++
,
g
(
n
),
t
.
CLog
(
"
close
"
),
e
()},
mock
:
function
(
e
,
t
){
var
n
=
this
;
return
n
.
_stop
(),
n
.
isMock
=
1
,
n
.
mockEnvInfo
=
null
,
n
.
buffers
=
[
e
],
n
.
recSize
=
e
.
length
,
n
.
srcSampleRate
=
t
,
n
},
envCheck
:
function
(
e
){
var
t
,
n
=
this
.
set
;
return
t
||
(
this
[
n
.
type
+
"
_envCheck
"
]?
t
=
this
[
n
.
type
+
"
_envCheck
"
](
e
,
n
):
n
.
takeoffEncodeChunk
&&
(
t
=
n
.
type
+
"
类型不支持设置takeoffEncodeChunk
"
)),
t
||
""
},
envStart
:
function
(
e
,
t
){
var
n
=
this
,
r
=
n
.
set
;
if
(
n
.
isMock
=
e
?
1
:
0
,
n
.
mockEnvInfo
=
e
,
n
.
buffers
=
[],
n
.
recSize
=
0
,
n
.
envInLast
=
0
,
n
.
envInFirst
=
0
,
n
.
envInFix
=
0
,
n
.
envInFixTs
=
[],
r
.
sampleRate
=
Math
.
min
(
t
,
r
.
sampleRate
),
n
.
srcSampleRate
=
t
,
n
.
engineCtx
=
0
,
n
[
r
.
type
+
"
_start
"
]){
var
a
=
n
.
engineCtx
=
n
[
r
.
type
+
"
_start
"
](
r
);
a
&&
(
a
.
pcmDatas
=
[],
a
.
pcmSize
=
0
)}},
envResume
:
function
(){
this
.
envInFixTs
=
[]},
envIn
:
function
(
e
,
t
){
var
a
=
this
,
o
=
a
.
set
,
s
=
a
.
engineCtx
,
n
=
a
.
srcSampleRate
,
r
=
e
.
length
,
i
=
A
.
PowerLevel
(
t
,
r
),
c
=
a
.
buffers
,
f
=
c
.
length
;
c
.
push
(
e
);
var
u
=
c
,
l
=
f
,
p
=
Date
.
now
(),
v
=
Math
.
round
(
r
/
n
*
1
e3
);
a
.
envInLast
=
p
,
1
==
a
.
buffers
.
length
&&
(
a
.
envInFirst
=
p
-
v
);
var
m
=
a
.
envInFixTs
;
m
.
splice
(
0
,
0
,{
t
:
p
,
d
:
v
});
for
(
var
h
=
p
,
d
=
0
,
g
=
0
;
g
<
m
.
length
;
g
++
){
var
S
=
m
[
g
];
if
(
3
e3
<
p
-
S
.
t
){
m
.
length
=
g
;
break
}
h
=
S
.
t
,
d
+=
S
.
d
}
var
_
=
m
[
1
],
C
=
p
-
h
;
if
(
C
/
3
<
C
-
d
&&
(
_
&&
1
e3
<
C
||
6
<=
m
.
length
)){
var
y
=
p
-
_
.
t
-
v
;
if
(
v
/
5
<
y
){
var
k
=!
o
.
disableEnvInFix
;
if
(
a
.
CLog
(
"
[
"
+
p
+
"
]
"
+
(
k
?
""
:
"
未
"
)
+
"
补偿
"
+
y
+
"
ms
"
,
3
),
a
.
envInFix
+=
y
,
k
){
var
I
=
new
Int16Array
(
y
*
n
/
1
e3
);
r
+=
I
.
length
,
c
.
push
(
I
)}}}
var
M
=
a
.
recSize
,
x
=
r
,
b
=
M
+
x
;
if
(
a
.
recSize
=
b
,
s
){
var
R
=
A
.
SampleData
(
c
,
n
,
o
.
sampleRate
,
s
.
chunkInfo
);
s
.
chunkInfo
=
R
,
b
=
(
M
=
s
.
pcmSize
)
+
(
x
=
R
.
data
.
length
),
s
.
pcmSize
=
b
,
c
=
s
.
pcmDatas
,
f
=
c
.
length
,
c
.
push
(
R
.
data
),
n
=
R
.
sampleRate
}
var
L
=
Math
.
round
(
b
/
n
*
1
e3
),
w
=
c
.
length
,
T
=
u
.
length
,
z
=
function
(){
for
(
var
e
=
O
?
0
:
-
x
,
t
=
null
==
c
[
0
],
n
=
f
;
n
<
w
;
n
++
){
var
r
=
c
[
n
];
null
==
r
?
t
=
1
:(
e
+=
r
.
length
,
s
&&
r
.
length
&&
a
[
o
.
type
+
"
_encode
"
](
s
,
r
))}
if
(
t
&&
s
)
for
(
n
=
l
,
u
[
0
]
&&
(
n
=
0
);
n
<
T
;
n
++
)
u
[
n
]
=
null
;
t
&&
(
e
=
O
?
x
:
0
,
c
[
0
]
=
null
),
s
?
s
.
pcmSize
+=
e
:
a
.
recSize
+=
e
},
O
=
o
.
onProcess
(
c
,
i
,
L
,
n
,
f
,
z
);
if
(
!
0
===
O
){
var
D
=
0
;
for
(
g
=
f
;
g
<
w
;
g
++
)
null
==
c
[
g
]?
D
=
1
:
c
[
g
]
=
new
Int16Array
(
0
);
D
?
a
.
CLog
(
"
未进入异步前不能清除buffers
"
,
3
):
s
?
s
.
pcmSize
-=
x
:
a
.
recSize
-=
x
}
else
z
()},
start
:
function
(){
var
e
=
this
,
t
=
A
.
Ctx
,
n
=
1
;
if
(
e
.
set
.
sourceStream
?
e
.
Stream
||
(
n
=
0
):
A
.
IsOpen
()
||
(
n
=
0
),
n
)
if
(
e
.
CLog
(
"
开始录音
"
),
e
.
_stop
(),
e
.
state
=
0
,
e
.
envStart
(
null
,
t
.
sampleRate
),
e
.
_SO
&&
e
.
_SO
+
1
!=
e
.
_S
)
e
.
CLog
(
"
start被中断
"
,
3
);
else
{
e
.
_SO
=
0
;
var
r
=
function
(){
e
.
state
=
1
,
e
.
resume
()};
"
suspended
"
==
t
.
state
?(
e
.
CLog
(
"
wait ctx resume...
"
),
e
.
state
=
3
,
t
.
resume
().
then
(
function
(){
e
.
CLog
(
"
ctx resume
"
),
3
==
e
.
state
&&
r
()})):
r
()}
else
e
.
CLog
(
"
未open
"
,
1
)},
pause
:
function
(){
var
e
=
this
;
e
.
state
&&
(
e
.
state
=
2
,
e
.
CLog
(
"
pause
"
),
delete
e
.
_streamStore
().
Stream
.
_call
[
e
.
id
])},
resume
:
function
(){
var
e
,
n
=
this
;
if
(
n
.
state
){
n
.
state
=
1
,
n
.
CLog
(
"
resume
"
),
n
.
envResume
();
var
t
=
n
.
_streamStore
();
t
.
Stream
.
_call
[
n
.
id
]
=
function
(
e
,
t
){
1
==
n
.
state
&&
n
.
envIn
(
e
,
t
)},(
e
=
(
t
||
A
).
Stream
).
_na
&&
e
.
_na
()}},
_stop
:
function
(
e
){
var
t
=
this
,
n
=
t
.
set
;
t
.
isMock
||
t
.
_S
++
,
t
.
state
&&
(
t
.
pause
(),
t
.
state
=
0
),
!
e
&&
t
[
n
.
type
+
"
_stop
"
]
&&
(
t
[
n
.
type
+
"
_stop
"
](
t
.
engineCtx
),
t
.
engineCtx
=
0
)},
stop
:
function
(
n
,
t
,
e
){
var
r
,
a
=
this
,
o
=
a
.
set
;
a
.
CLog
(
"
stop
"
+
(
a
.
envInLast
?
a
.
envInLast
-
a
.
envInFirst
+
"
ms 补
"
+
a
.
envInFix
+
"
ms
"
:
"
-
"
));
var
s
=
function
(){
a
.
_stop
(),
e
&&
a
.
close
()},
i
=
function
(
e
){
a
.
CLog
(
"
结束录音失败:
"
+
e
,
1
),
t
&&
t
(
e
),
s
()},
c
=
function
(
e
,
t
){
if
(
a
.
CLog
(
"
结束录音 编码
"
+
(
Date
.
now
()
-
r
)
+
"
ms 音频
"
+
t
+
"
ms/
"
+
e
.
size
+
"
b
"
),
o
.
takeoffEncodeChunk
)
a
.
CLog
(
"
启用takeoffEncodeChunk后stop返回的blob长度为0不提供音频数据
"
,
3
);
else
if
(
e
.
size
<
Math
.
max
(
100
,
t
/
2
))
return
void
i
(
"
生成的
"
+
o
.
type
+
"
无效
"
);
n
&&
n
(
e
,
t
),
s
()};
if
(
!
a
.
isMock
){
var
f
=
3
==
a
.
state
;
if
(
!
a
.
state
||
f
)
return
void
i
(
"
未开始录音
"
+
(
f
?
"
,开始录音前无用户交互导致AudioContext未运行
"
:
""
));
a
.
_stop
(
!
0
)}
var
u
=
a
.
recSize
;
if
(
u
)
if
(
a
.
buffers
[
0
])
if
(
a
[
o
.
type
]){
if
(
a
.
isMock
){
var
l
=
a
.
envCheck
(
a
.
mockEnvInfo
||
{
envName
:
"
mock
"
,
canProcess
:
!
1
});
if
(
l
)
return
void
i
(
"
录音错误:
"
+
l
)}
var
p
=
a
.
engineCtx
;
if
(
a
[
o
.
type
+
"
_complete
"
]
&&
p
){
var
v
=
Math
.
round
(
p
.
pcmSize
/
o
.
sampleRate
*
1
e3
);
return
r
=
Date
.
now
(),
void
a
[
o
.
type
+
"
_complete
"
](
p
,
function
(
e
){
c
(
e
,
v
)},
i
)}
r
=
Date
.
now
();
var
m
=
A
.
SampleData
(
a
.
buffers
,
a
.
srcSampleRate
,
o
.
sampleRate
);
o
.
sampleRate
=
m
.
sampleRate
;
var
h
=
m
.
data
;
v
=
Math
.
round
(
h
.
length
/
o
.
sampleRate
*
1
e3
),
a
.
CLog
(
"
采样
"
+
u
+
"
->
"
+
h
.
length
+
"
花:
"
+
(
Date
.
now
()
-
r
)
+
"
ms
"
),
setTimeout
(
function
(){
r
=
Date
.
now
(),
a
[
o
.
type
](
h
,
function
(
e
){
c
(
e
,
v
)},
function
(
e
){
i
(
e
)})})}
else
i
(
"
未加载
"
+
o
.
type
+
"
编码器
"
);
else
i
(
"
音频buffers被释放
"
);
else
i
(
"
未采集到录音
"
)}},
y
.
Recorder
&&
y
.
Recorder
.
Destroy
(),(
y
.
Recorder
=
A
).
LM
=
"
2022-03-05 11:53:19
"
,
A
.
TrafficImgUrl
=
"
//ia.51.la/go1?id=20469973&pvFlag=1
"
,
A
.
Traffic
=
function
(){
var
e
=
A
.
TrafficImgUrl
;
if
(
e
){
var
t
=
A
.
Traffic
,
n
=
location
.
href
.
replace
(
/#.*/
,
""
);
if
(
0
==
e
.
indexOf
(
"
//
"
)
&&
(
e
=
/^https:/i
.
test
(
n
)?
"
https:
"
+
e
:
"
http:
"
+
e
),
!
t
[
n
]){
t
[
n
]
=
1
;
var
r
=
new
Image
;
r
.
src
=
e
,
M
(
"
Traffic Analysis Image: Recorder.TrafficImgUrl=
"
+
A
.
TrafficImgUrl
)}}}}(
window
),
"
function
"
==
typeof
define
&&
define
.
amd
&&
define
(
function
(){
return
Recorder
}),
"
object
"
==
typeof
module
&&
module
.
exports
&&
(
module
.
exports
=
Recorder
);
\ No newline at end of file
paddlespeech/server/tests/asr/online/web/static/paddle.ico
0 → 100644
浏览文件 @
1dc02c72
4.2 KB
paddlespeech/server/tests/asr/online/web/templates/index.html
0 → 100644
浏览文件 @
1dc02c72
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title>
PaddleSpeech Serving-语音实时转写
</title>
<link
rel=
"shortcut icon"
href=
"./static/paddle.ico"
>
<script
src=
"../static/js/jquery-3.2.1.min.js"
></script>
<script
src=
"../static/js/recorder/recorder-core.js"
></script>
<script
src=
"../static/js/recorder/extensions/lib.fft.js"
></script>
<script
src=
"../static/js/recorder/extensions/frequency.histogram.view.js"
></script>
<script
src=
"../static/js/recorder/engine/pcm.js"
></script>
<script
src=
"../static/js/SoundRecognizer.js"
></script>
<link
rel=
"stylesheet"
href=
"../static/css/style.css"
>
<link
rel=
"stylesheet"
href=
"../static/css/font-awesome.min.css"
>
</head>
<body>
<div
class=
"asr-content"
>
<div
class=
"audio-banner"
>
<div
class=
"weaper"
>
<div
class=
"text-content"
>
<p><span
class=
"title"
>
PaddleSpeech Serving简介
</span></p>
<p
class=
"con-container"
>
<span
class=
"con"
>
PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发。PaddleSpeech Serving是基于python + fastapi 的语音算法模型的C/S类型后端服务,旨在统一paddle speech下的各语音算子来对外提供后端服务。
</span>
</p>
</div>
<div
class=
"img-con"
>
<img
src=
"../static/image/PaddleSpeech_logo.png"
alt=
""
/>
</div>
</div>
</div>
<div
class=
"audio-experience"
>
<div
class=
"asr-box"
>
<h2>
产品体验
</h2>
<div
id=
"client-word-recorder"
style=
"position: relative;"
>
<div
class=
"pd"
>
<div
style=
"text-align:center;height:20px;width:100%;
border:0px solid #bcbcbc;color:#000;box-sizing: border-box;display:inline-block"
class=
"recwave"
>
</div>
</div>
</div>
<div
class=
"voice-container"
>
<div
class=
"voice-input"
>
<span>
WebSocket URL:
</span>
<input
type=
"text"
id=
"socketUrl"
class=
"websocket-url"
value=
"ws://127.0.0.1:8091/ws/asr"
placeholder=
"请输入服务器地址,如:ws://127.0.0.1:8091/ws/asr"
>
<div
class=
"start-voice"
>
<button
type=
"primary"
id=
"beginBtn"
class=
"voice-btn"
>
<span
class=
"fa fa-microphone"
>
开始识别
</span>
</button>
<button
type=
"primary"
id=
"endBtn"
class=
"voice-btn end"
>
<span
class=
"fa fa-microphone-slash"
>
结束识别
</span>
</button>
<div
id=
"timeBox"
class=
"time-box flex-display-1"
>
<span
class=
"total-time"
>
识别中,
<i
id=
"timeCount"
></i>
秒后自动停止识别
</span>
</div>
</div>
</div>
<div
class=
"voice"
>
<div
class=
"result-text"
id=
"resultPanel"
>
此处显示识别结果
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var
wenetWs
=
null
var
timeLoop
=
null
var
result
=
""
$
(
document
).
ready
(
function
()
{
$
(
'
#beginBtn
'
).
on
(
'
click
'
,
startRecording
)
$
(
'
#endBtn
'
).
on
(
'
click
'
,
stopRecording
)
})
function
openWebSocket
(
url
)
{
if
(
"
WebSocket
"
in
window
)
{
wenetWs
=
new
WebSocket
(
url
)
wenetWs
.
onopen
=
function
()
{
console
.
log
(
"
Websocket 连接成功,开始识别
"
)
wenetWs
.
send
(
JSON
.
stringify
({
"
signal
"
:
"
start
"
}))
}
wenetWs
.
onmessage
=
function
(
_msg
)
{
parseResult
(
_msg
.
data
)
}
wenetWs
.
onclose
=
function
()
{
console
.
log
(
"
WebSocket 连接断开
"
)
}
wenetWs
.
onerror
=
function
()
{
console
.
log
(
"
WebSocket 连接失败
"
)
}
}
}
function
parseResult
(
data
)
{
var
data
=
JSON
.
parse
(
data
)
var
result
=
data
.
asr_results
console
.
log
(
result
)
$
(
"
#resultPanel
"
).
html
(
result
)
}
function
TransferUpload
(
number
,
blobOrNull
,
duration
,
blobRec
,
isClose
)
{
if
(
blobOrNull
)
{
var
blob
=
blobOrNull
var
encTime
=
blob
.
encTime
var
reader
=
new
FileReader
()
reader
.
onloadend
=
function
()
{
wenetWs
.
send
(
reader
.
result
)
}
reader
.
readAsArrayBuffer
(
blob
)
}
}
function
startRecording
()
{
// Check socket url
var
socketUrl
=
$
(
'
#socketUrl
'
).
val
()
if
(
!
socketUrl
.
trim
())
{
alert
(
'
请输入 WebSocket 服务器地址,如:ws://127.0.0.1:8091/ws/asr
'
)
$
(
'
#socketUrl
'
).
focus
()
return
}
// init recorder
SoundRecognizer
.
init
({
soundType
:
'
pcm
'
,
sampleRate
:
16000
,
recwaveElm
:
'
.recwave
'
,
translerCallBack
:
TransferUpload
})
openWebSocket
(
socketUrl
)
// Change button state
$
(
'
#beginBtn
'
).
hide
()
$
(
'
#endBtn, #timeBox
'
).
addClass
(
'
show
'
)
// Start countdown
var
seconds
=
180
$
(
'
#timeCount
'
).
text
(
seconds
)
timeLoop
=
setInterval
(
function
()
{
seconds
--
$
(
'
#timeCount
'
).
text
(
seconds
)
if
(
seconds
===
0
)
{
stopRecording
()
}
},
1000
)
}
function
stopRecording
()
{
wenetWs
.
send
(
JSON
.
stringify
({
"
signal
"
:
"
end
"
}))
SoundRecognizer
.
recordClose
()
$
(
'
#endBtn
'
).
add
(
$
(
'
#timeBox
'
)).
removeClass
(
'
show
'
)
$
(
'
#beginBtn
'
).
show
()
$
(
'
#timeCount
'
).
text
(
''
)
clearInterval
(
timeLoop
)
}
</script>
</body>
</html>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录